72 lines
1.8 KiB
C#
Raw Normal View History

2023-05-19 17:52:18 +04:00
using System.ComponentModel.DataAnnotations.Schema;
using HotelContracts.BindingModels;
2023-04-07 13:15:55 +04:00
using HotelContracts.ViewModels;
using HotelDataModels.Models;
namespace HotelDatabaseImplement.Models;
public class Room : IRoomModel
{
public int Id { get; set; }
2023-05-19 17:52:18 +04:00
public string Type { get; set; } = string.Empty;
2023-04-07 13:15:55 +04:00
public double Cost { get; set; }
2023-05-19 17:52:18 +04:00
public bool IsReserved { get; set; }
[ForeignKey("RoomId")]
public virtual List<ReservationRoom> Reservation { get; set; } = new();
private Dictionary<int, IReservationModel>? _reservationsRooms = null;
public Dictionary<int, IReservationModel> ReservationsRooms
{
get
{
_reservationsRooms ??= Reservation
.ToDictionary(record => record.ReservationId,
room => room.Reservation as IReservationModel);
return _reservationsRooms;
}
}
2023-04-07 13:15:55 +04:00
public static Room? Create(RoomBindingModel? model)
{
if (model == null) return null;
return new Room
{
Id = model.Id,
Type = model.Type,
Cost = model.Cost
};
}
public static Room Create(RoomViewModel model)
{
return new Room
{
Id = model.Id,
Type = model.Type,
Cost = model.Cost
};
}
public void Update(RoomBindingModel? model)
{
if (model == null) return;
Type = model.Type;
Cost = model.Cost;
2023-05-19 17:52:18 +04:00
IsReserved = model.IsReserved;
}
public void CheckReservations()
{
IsReserved = ReservationsRooms.Any(x => x.Value.EndDate > DateTime.Now);
2023-04-07 13:15:55 +04:00
}
public RoomViewModel GetView => new RoomViewModel
{
Id = Id,
Type = Type,
2023-05-19 17:52:18 +04:00
Cost = Cost,
Reservation = ReservationsRooms,
IsReserved = IsReserved
2023-04-07 13:15:55 +04:00
};
}