Mikołaj Kaczmarek 4b3b7f97d9
1.0
2025-06-22 10:22:08 +02:00

442 lines
13 KiB
JavaScript

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 })