using Ophelias.Models; namespace Ophelias.Models { internal class Reservation { internal int Id; internal int RoomId; internal int GuestId; internal int TransactionId; internal bool IsNoShow; internal ReservationType Type; internal ReservationStatus Status; internal DateTime CreationDate; internal DateTime StartDate; internal DateTime EndDate; internal DateTime? CheckIn; internal DateTime? CheckOut; internal DateTime? DateChanged; internal Reservation(int id, int gid, int tid, int room, ReservationType type, ReservationStatus status, DateTime startdate, DateTime enddate) { Id = id; RoomId = room; GuestId = gid; TransactionId = tid; IsNoShow = false; Type = type; Status = status; CreationDate = DateTime.Now; StartDate = startdate; EndDate = enddate; CheckIn = null; CheckOut = null; DateChanged = null; } internal void ChangeReservation(ReservationType type, Transaction t, BaseRate b) { Status = ReservationStatus.Changed; Type = type; t.Penalize(this, b.Rate); } internal void CancelReservation(Transaction t) { Status = ReservationStatus.Cancelled; t.Penalize(this); } } internal enum ReservationStatus { Active, Changed, Cancelled, Ended, } internal enum ReservationType { Conventional, Prepaid, Incentive, SixtyDayAdvance, } internal class ReservationList { internal List Reservations; internal ReservationList() { Reservations = new List(); } } }