use ztbd124942; // 1. Kolekcja: Goście db.guests.insertMany([ { firstName: "Jan", lastName: "Kowalski", email: "jan.kowalski@email.com", phoneNumber: "+48123456789", address: { street: "Kwiatowa 12", city: "Warszawa", postalCode: "01-234", country: "Polska" }, dateOfBirth: new Date("1985-05-15"), loyaltyPoints: 120, registrationDate: new Date("2020-03-10") }, { firstName: "Anna", lastName: "Nowak", email: "anna.nowak@email.com", phoneNumber: "+48234567891", address: { street: "Polna 7", city: "Kraków", postalCode: "30-001", country: "Polska" }, dateOfBirth: new Date("1990-11-22"), loyaltyPoints: 45, registrationDate: new Date("2021-01-15") }, { firstName: "Thomas", lastName: "Schmidt", email: "thomas.schmidt@email.com", phoneNumber: "+49123456789", address: { street: "Hauptstrasse 8", city: "Berlin", postalCode: "10115", country: "Niemcy" }, dateOfBirth: new Date("1978-07-30"), loyaltyPoints: 230, registrationDate: new Date("2019-06-20") }, { firstName: "Maria", lastName: "Garcia", email: "maria.garcia@email.com", phoneNumber: "+34612345678", address: { street: "Calle Mayor 15", city: "Barcelona", postalCode: "08001", country: "Hiszpania" }, dateOfBirth: new Date("1992-03-12"), loyaltyPoints: 85, registrationDate: new Date("2021-09-05") }, { firstName: "John", lastName: "Smith", email: "john.smith@email.com", phoneNumber: "+441234567890", address: { street: "High Street 42", city: "London", postalCode: "SW1A 1AA", country: "Wielka Brytania" }, dateOfBirth: new Date("1980-12-05"), loyaltyPoints: 175, registrationDate: new Date("2020-07-18") } ]); // 2. Kolekcja: Pokoje hotelowe db.rooms.insertMany([ { roomNumber: "101", floor: 1, type: "Standard", capacity: 2, pricePerNight: 250.00, amenities: ["TV", "WiFi", "Minibar", "Klimatyzacja"], status: "Dostępny", lastRenovation: new Date("2021-03-15") }, { roomNumber: "102", floor: 1, type: "Standard", capacity: 2, pricePerNight: 250.00, amenities: ["TV", "WiFi", "Minibar", "Klimatyzacja"], status: "Dostępny", lastRenovation: new Date("2021-03-20") }, { roomNumber: "201", floor: 2, type: "Deluxe", capacity: 3, pricePerNight: 400.00, amenities: ["TV", "WiFi", "Minibar", "Klimatyzacja", "Sejf", "Ekspres do kawy"], status: "Zajęty", lastRenovation: new Date("2022-01-10") }, { roomNumber: "301", floor: 3, type: "Suite", capacity: 4, pricePerNight: 600.00, amenities: ["TV", "WiFi", "Minibar", "Klimatyzacja", "Sejf", "Ekspres do kawy", "Jacuzzi"], status: "Dostępny", lastRenovation: new Date("2022-02-15") }, { roomNumber: "302", floor: 3, type: "Apartament", capacity: 5, pricePerNight: 900.00, amenities: ["TV", "WiFi", "Minibar", "Klimatyzacja", "Sejf", "Ekspres do kawy", "Jacuzzi", "Sauna"], status: "Dostępny", lastRenovation: new Date("2022-02-20") } ]); // 3. Kolekcja: Usługi dodatkowe db.services.insertMany([ { name: "Śniadanie", description: "Bufet śniadaniowy w godzinach 7:00-10:00", price: 50.00, category: "Gastronomia", availability: ["Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"], location: "Restauracja hotelowa", requiresReservation: false }, { name: "Masaż relaksacyjny", description: "60-minutowy masaż relaksacyjny", price: 200.00, category: "SPA", availability: ["Poniedziałek", "Środa", "Piątek", "Sobota"], location: "Hotelowe SPA", requiresReservation: true }, { name: "Transfer z lotniska", description: "Transport z lotniska do hotelu", price: 120.00, category: "Transport", availability: ["Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"], location: "Lotnisko", requiresReservation: true }, { name: "Wynajem roweru", description: "Wypożyczenie roweru na cały dzień", price: 50.00, category: "Rekreacja", availability: ["Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"], location: "Recepcja", requiresReservation: false }, { name: "Kolacja przy świecach", description: "Romantyczna kolacja dla dwojga", price: 300.00, category: "Gastronomia", availability: ["Piątek", "Sobota"], location: "Taras widokowy", requiresReservation: true } ]); // 4. Kolekcja: Pracownicy db.employees.insertMany([ { firstName: "Piotr", lastName: "Wiśniewski", position: "Recepcjonista", email: "piotr.wisniewski@hotel.com", phoneNumber: "+48765432109", dateOfBirth: new Date("1988-10-15"), hireDate: new Date("2019-04-01"), salary: 4500.00, department: "Recepcja", workSchedule: ["Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek"], address: { street: "Jaśminowa 5", city: "Warszawa", postalCode: "02-123", country: "Polska" } }, { firstName: "Marta", lastName: "Kowalczyk", position: "Pokojówka", email: "marta.kowalczyk@hotel.com", phoneNumber: "+48654321098", dateOfBirth: new Date("1992-05-22"), hireDate: new Date("2020-02-15"), salary: 3800.00, department: "Housekeeping", workSchedule: ["Wtorek", "Środa", "Czwartek", "Piątek", "Sobota"], address: { street: "Leśna 12", city: "Warszawa", postalCode: "03-456", country: "Polska" } }, { firstName: "Tomasz", lastName: "Nowicki", position: "Szef kuchni", email: "tomasz.nowicki@hotel.com", phoneNumber: "+48567890123", dateOfBirth: new Date("1975-03-10"), hireDate: new Date("2018-06-01"), salary: 7500.00, department: "Restauracja", workSchedule: ["Poniedziałek", "Wtorek", "Środa", "Niedziela"], address: { street: "Słoneczna 8", city: "Pruszków", postalCode: "05-800", country: "Polska" } }, { firstName: "Katarzyna", lastName: "Zielińska", position: "Manager", email: "katarzyna.zielinska@hotel.com", phoneNumber: "+48678901234", dateOfBirth: new Date("1982-11-28"), hireDate: new Date("2017-01-10"), salary: 9000.00, department: "Zarząd", workSchedule: ["Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek"], address: { street: "Złota 20", city: "Warszawa", postalCode: "00-120", country: "Polska" } }, { firstName: "Marek", lastName: "Jankowski", position: "Konserwator", email: "marek.jankowski@hotel.com", phoneNumber: "+48789012345", dateOfBirth: new Date("1970-07-15"), hireDate: new Date("2019-09-01"), salary: 4200.00, department: "Utrzymanie", workSchedule: ["Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek"], address: { street: "Brzozowa 7", city: "Piaseczno", postalCode: "05-500", country: "Polska" } } ]); // 5. Kolekcja: Rezerwacje const jan_id = db.guests.findOne({firstName: "Jan", lastName: "Kowalski"})._id; const anna_id = db.guests.findOne({firstName: "Anna", lastName: "Nowak"})._id; const thomas_id = db.guests.findOne({firstName: "Thomas", lastName: "Schmidt"})._id; const maria_id = db.guests.findOne({firstName: "Maria", lastName: "Garcia"})._id; const john_id = db.guests.findOne({firstName: "John", lastName: "Smith"})._id; const room101_id = db.rooms.findOne({roomNumber: "101"})._id; const room102_id = db.rooms.findOne({roomNumber: "102"})._id; const room201_id = db.rooms.findOne({roomNumber: "201"})._id; const room301_id = db.rooms.findOne({roomNumber: "301"})._id; const room302_id = db.rooms.findOne({roomNumber: "302"})._id; db.reservations.insertMany([ { guestId: jan_id, roomId: room101_id, checkInDate: new Date("2023-05-10"), checkOutDate: new Date("2023-05-15"), numberOfGuests: 2, totalPrice: 1250.00, paymentStatus: "Opłacone", specialRequests: ["Późne zameldowanie", "Dodatkowa poduszka"], bookingDate: new Date("2023-04-15"), status: "Potwierdzona" }, { guestId: anna_id, roomId: room201_id, checkInDate: new Date("2023-06-01"), checkOutDate: new Date("2023-06-10"), numberOfGuests: 3, totalPrice: 3600.00, paymentStatus: "Zaliczka", specialRequests: [], bookingDate: new Date("2023-05-01"), status: "Potwierdzona" }, { guestId: thomas_id, roomId: room301_id, checkInDate: new Date("2023-05-20"), checkOutDate: new Date("2023-05-23"), numberOfGuests: 2, totalPrice: 1800.00, paymentStatus: "Oczekuje na płatność", specialRequests: ["Widok na miasto"], bookingDate: new Date("2023-05-05"), status: "Oczekująca" }, { guestId: maria_id, roomId: room102_id, checkInDate: new Date("2023-07-15"), checkOutDate: new Date("2023-07-20"), numberOfGuests: 1, totalPrice: 1250.00, paymentStatus: "Opłacone", specialRequests: [], bookingDate: new Date("2023-05-20"), status: "Potwierdzona" }, { guestId: john_id, roomId: room302_id, checkInDate: new Date("2023-06-15"), checkOutDate: new Date("2023-06-20"), numberOfGuests: 4, totalPrice: 4500.00, paymentStatus: "Zaliczka", specialRequests: ["Łóżeczko dla dziecka", "Późne wymeldowanie"], bookingDate: new Date("2023-05-10"), status: "Potwierdzona" } ]); // 6. Kolekcja: Zamówienia usług const breakfast_id = db.services.findOne({name: "Śniadanie"})._id; const massage_id = db.services.findOne({name: "Masaż relaksacyjny"})._id; const transfer_id = db.services.findOne({name: "Transfer z lotniska"})._id; const bike_id = db.services.findOne({name: "Wynajem roweru"})._id; const dinner_id = db.services.findOne({name: "Kolacja przy świecach"})._id; const jan_res_id = db.reservations.findOne({guestId: jan_id})._id; const anna_res_id = db.reservations.findOne({guestId: anna_id})._id; const thomas_res_id = db.reservations.findOne({guestId: thomas_id})._id; const maria_res_id = db.reservations.findOne({guestId: maria_id})._id; const john_res_id = db.reservations.findOne({guestId: john_id})._id; db.serviceOrders.insertMany([ { guestId: jan_id, reservationId: jan_res_id, serviceId: breakfast_id, orderDate: new Date("2023-05-11"), quantity: 2, totalPrice: 100.00, status: "Zrealizowane", comments: "Śniadanie do pokoju" }, { guestId: thomas_id, reservationId: thomas_res_id, serviceId: massage_id, orderDate: new Date("2023-05-21"), quantity: 1, totalPrice: 200.00, status: "Potwierdzone", comments: "Masaż na godzinę 15:00" }, { guestId: anna_id, reservationId: anna_res_id, serviceId: transfer_id, orderDate: new Date("2023-06-01"), quantity: 1, totalPrice: 120.00, status: "Potwierdzone", comments: "Odbiór z lotniska o 14:30" }, { guestId: maria_id, reservationId: maria_res_id, serviceId: bike_id, orderDate: new Date("2023-07-16"), quantity: 2, totalPrice: 100.00, status: "Oczekujące", comments: "Dwa rowery na cały dzień" }, { guestId: john_id, reservationId: john_res_id, serviceId: dinner_id, orderDate: new Date("2023-06-18"), quantity: 1, totalPrice: 300.00, status: "Potwierdzone", comments: "Kolacja na 20:00, rocznica ślubu" } ]); db.rooms.createIndex({ roomNumber: 1 }, { unique: true }) db.guests.createIndex({ lastName: 1, firstName: 1 }) db.reservations.createIndex({ checkInDate: 1, checkOutDate: 1 }) db.reservations.createIndex({ roomId: 1 }) db.reservations.createIndex({ guestId: 1 }) db.services.createIndex({ category: 1, price: 1 }) db.serviceOrders.createIndex({ serviceId: 1 })