/// <summary> /// Список постояльцев за последний месяц /// </summary> /// <param name="hotel"></param> /// <returns></returns> public Report GetClientsByLastMonth(Hotel hotel) { var report = new Report { Caption = "Список постояльцев за последний месяц" }; report.ReportColumns.Add("Фамилия клиента", "Номер комнаты", "Въезд", "Выезд"); var last = DateTime.Now; var first = new DateTime(last.Year, last.Month, 1); // заполнение строк отчёта foreach (var item in hotel.Reservations .Where(item => item.ArrivalDate >= first && item.ArrivalDate <= last || item.DepartureDate >= first && item.DepartureDate <= last) .OrderBy(item => hotel.GetClient(item.IdClient).Surname)) { var client = hotel.GetClient(item.IdClient); var room = hotel.GetRoom(item.IdRoom); var category = hotel.Categories[room.IdCategory]; report.ReportRows.Add($"{client.Surname} {client.Name} {client.LastName}", $"{room.RoomNumber} ({category})", item.ArrivalDate.ToShortDateString(), item.DepartureDate.ToShortDateString()); } return(report); }
/// <summary> /// Список постояльцев за указанную дату /// </summary> /// <param name="hotel"></param> /// <returns></returns> public Report GetClientsByDate(Hotel hotel, DateTime first, DateTime last) { var caption = string.Format("Список постояльцев за период с {0} по {1}", first.ToShortDateString(), last.ToShortDateString()); var report = new Report { Caption = caption }; report.ReportColumns.Add("Фамилия клиента", "Номер комнаты", "Въезд", "Выезд"); // заполнение строк отчёта foreach (var item in hotel.Reservations .Where(item => item.ArrivalDate >= first && item.ArrivalDate <= last || item.DepartureDate >= first && item.DepartureDate <= last) .OrderBy(item => item.ArrivalDate)) { var client = hotel.GetClient(item.IdClient); var room = hotel.GetRoom(item.IdRoom); var category = hotel.Categories[room.IdCategory]; report.ReportRows.Add($"{client.Surname} {client.Name} {client.LastName}", $"{room.RoomNumber} ({category})", item.ArrivalDate.ToShortDateString(), item.DepartureDate.ToShortDateString()); } return(report); }
} // ссылка на сотрудника public override string ToString() { var client = _hotel.GetClient(IdClient); var room = _hotel.GetRoom(IdRoom); var category = _hotel.Categories[room.IdCategory].NameCategory; return(string.Format($"{category} №{room.RoomNumber}, {client.Surname} {client.Name}, заезд c {ArrivalDate.ToShortDateString()}")); }
/// <summary> /// Формирование отчёта по клиентам на указанную дату /// </summary> /// <param name="hotel"></param> /// <param name="date"></param> /// <returns></returns> public Report GetClientsByDate(Hotel hotel, DateTime date) { var report = new Report { Caption = string.Format($"Список постоятельцев на {date.ToShortDateString()}") }; report.ReportColumns.Add("Фамилия клиента", "Номер комнаты"); // заполнение строк отчёта foreach (var item in hotel.Reservations .Where(item => date >= item.ArrivalDate && date < item.DepartureDate.AddDays(1)) .OrderBy(item => hotel.GetClient(item.IdClient).Surname)) { var client = hotel.GetClient(item.IdClient); var room = hotel.GetRoom(item.IdRoom); var category = hotel.Categories[room.IdCategory]; report.ReportRows.Add($"{client.Surname} {client.Name} {client.LastName}", $"{room.RoomNumber} ({category})"); } return(report); }
/// <summary> /// Формирование отчёта по занятым номерам на указанную дату /// </summary> /// <param name="hotel"></param> /// <param name="date"></param> /// <returns></returns> public Report GetBusyRoomsByDate(Hotel hotel, DateTime date) { var report = new Report { Caption = string.Format($"Список занятых номеров на {date.ToShortDateString()}") }; report.ReportColumns.Add("Номер комнаты", "Примечание"); // заполнение строк отчёта foreach (var room in hotel.Reservations.Where(item => date >= item.ArrivalDate && date < item.DepartureDate.AddDays(1)) .Select(item => hotel.GetRoom(item.IdRoom)) .Distinct() .OrderBy(item => item.RoomNumber)) { // подсчет занятых мест в номере для заданного диапазона var count = hotel.Reservations.Where(item => date >= item.ArrivalDate && date < item.DepartureDate.AddDays(1)) .Count(item => item.IdRoom == room.IdRoom); var status = room.NumberSeat - count != 0 ? string.Format($"ещё свободно мест: {room.NumberSeat - count}") : ""; var category = hotel.Categories[room.IdCategory]; report.ReportRows.Add($"{room.RoomNumber} ({category})", status); } return(report); }