Files
hotell777_260507/config/index.js
2026-05-11 01:48:56 +05:00

73 lines
2.9 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
const ROOM_TYPES = {
economy: { id: '2x-местный', name: '2x-местный', pricePerGuest: 1500 },
standard: { id: '3х-местный', name: '3х-местный', pricePerGuest: 2000 },
family: { id: 'Семейный', name: 'Семейный', pricePerGuest: 3000 },
vip: { id: 'Люкс', name: 'Люкс', pricePerGuest: 4500 }
};
const BOOKING_STATUSES = {
NEW: 'новая',
PAID: 'оплачена',
RESERVED: 'зарезервирована',
CHECKED_IN: 'заселена',
CHECKED_OUT: 'выехала',
CANCELLED: 'отменена'
};
const DEFAULT_ROOMS = [
{ type: ROOM_TYPES.economy.id, name: '2x-местный 1', description: 'Номер на двоих', rooms_count: 15, single_beds: 0, double_beds: 1, has_sofa: 0, has_ac: 1, has_wifi: 1, has_shower: 1, max_guests: 2, price_per_guest: ROOM_TYPES.economy.pricePerGuest },
{ type: ROOM_TYPES.standard.id, name: '3х-местный 1', description: 'Номер на троих', rooms_count: 8, single_beds: 0, double_beds: 1, has_sofa: 0, has_ac: 1, has_wifi: 1, has_shower: 1, max_guests: 3, price_per_guest: ROOM_TYPES.standard.pricePerGuest },
{ type: ROOM_TYPES.family.id, name: 'Семейный 1', description: 'Семейный номер', rooms_count: 4, single_beds: 0, double_beds: 2, has_sofa: 0, has_ac: 1, has_wifi: 1, has_shower: 1, max_guests: 4, price_per_guest: ROOM_TYPES.family.pricePerGuest },
{ type: ROOM_TYPES.vip.id, name: 'Люкс 1', description: 'Люкс', rooms_count: 3, single_beds: 0, double_beds: 1, has_sofa: 1, has_ac: 1, has_wifi: 1, has_shower: 1, max_guests: 4, price_per_guest: ROOM_TYPES.vip.pricePerGuest }
];
const ROOM_PRICES = {
[ROOM_TYPES.economy.id]: ROOM_TYPES.economy.pricePerGuest,
[ROOM_TYPES.standard.id]: ROOM_TYPES.standard.pricePerGuest,
[ROOM_TYPES.family.id]: ROOM_TYPES.family.pricePerGuest,
[ROOM_TYPES.vip.id]: ROOM_TYPES.vip.pricePerGuest
};
const STATUS_LIST = [
BOOKING_STATUSES.NEW,
BOOKING_STATUSES.PAID,
BOOKING_STATUSES.RESERVED,
BOOKING_STATUSES.CHECKED_IN,
BOOKING_STATUSES.CHECKED_OUT,
BOOKING_STATUSES.CANCELLED
];
const ROOM_TYPE_LIST = [
'2x-местный',
'3х-местный',
'Семейный',
'Люкс'
];
function getRoomPrice(roomType) {
return ROOM_PRICES[roomType] || 0;
}
function calculateNights(checkin, checkout) {
const ci = new Date(checkin);
const co = new Date(checkout);
return Math.ceil((co - ci) / (1000 * 60 * 60 * 24));
}
function calculateBasePrice(roomType, checkin, checkout) {
const pricePerNight = getRoomPrice(roomType);
const nights = calculateNights(checkin, checkout);
return pricePerNight * nights;
}
module.exports = {
ROOM_TYPES,
BOOKING_STATUSES,
DEFAULT_ROOMS,
ROOM_PRICES,
STATUS_LIST,
ROOM_TYPE_LIST,
getRoomPrice,
calculateNights,
calculateBasePrice
};