Begun integration of models and managers

The HotelManager class now has been connected to some aspects of the
command line interface and is functioning for a few cases such as
logging in as a specific guest via email, chaging a guests information
and creating a new guest account. This was implemented first over the
reservation system to test and implement something on a smaller scale.
Furthermore, the reservation depends on an existing guest account since
a Guest ID needs to be linked to the reservation that is created.
Other changes include redesigning, tweaking/ adjusting, and/ or fixing
of other modules that have not yet been implemented or are partially
implemented.
This commit is contained in:
雲華
2022-04-13 23:53:17 -04:00
parent 306ac411b3
commit 8764c2e57c
7 changed files with 673 additions and 281 deletions

View File

@@ -31,6 +31,7 @@ namespace Ophelias.Managers
[Multiplier] INTEGER NOT NULL,
[RefundAmount] INTEGER NOT NULL,
[PayBy] TEXT NOT NULL,
[LastPaid] TEXXT NULL,
[PaidOn] TEXT NULL);
CREATE TABLE IF NOT EXISTS [reservations] (
@@ -55,8 +56,8 @@ namespace Ophelias.Managers
[ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[Fname] TEXT NOT NULL,
[Lname] TEXT NOT NULL,
[Email] TEXT NOT NULL,
[CreditCard] TEXT NULL,
[Email] TEXT NOT NULL UNIQUE,
[CreditCard] TEXT NULL UNIQUE,
[Expiration] TEXT NULL,
[CCV] TEXT NULL);
@@ -67,7 +68,8 @@ namespace Ophelias.Managers
CREATE TABLE IF NOT EXISTS [rates] (
[ID] INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
[Rate] INTEGER NOT NULL,
[DateSet] TEXT NOT NULL);";
[DateSet] TEXT NOT NULL UNIQUE,
[DefaultRate] INTEGER NULL UNIQUE CHECK ([DefaultRate] IN (1)));";
using (SQLiteCommand cmd = con.CreateCommand())
{
@@ -103,10 +105,10 @@ namespace Ophelias.Managers
internal static class QueryBuilder
{
internal static string? UpdateTransaction(int id,
internal static string? UpdateTransaction(int Id,
double? Rate = null, double? Owed = null, double? Penalty = null,
double? Multiplier = null, double? Refund = null,
DateTime? PayBy = null, DateTime? PaidOn = null)
DateTime? PayBy = null, DateTime? LastPaid = null, DateTime? PaidOn = null)
{
List<string> queryComponents = new List<string>();
string query = "UPDATE transactions SET";
@@ -122,82 +124,110 @@ namespace Ophelias.Managers
if (Refund.HasValue)
queryComponents.Add($"Refund = {Refund}");
if (PayBy.HasValue)
queryComponents.Add($"PaidBy = {PayBy.Value.ToString("yyyy-MM-dd")}");
queryComponents.Add($"PayBy = {PayBy.Value.Date.ToString("yyyy-MM-dd")}");
if (LastPaid.HasValue)
queryComponents.Add($"LastPaid = {LastPaid.Value.Date.ToString("yyyy-MM-dd")}");
if (PaidOn.HasValue)
queryComponents.Add($"PaidOn = {PaidOn.Value.ToString("yyyy-MM-dd")}");
queryComponents.Add($"PaidOn = {PaidOn.Value.Date.ToString("yyyy-MM-dd")}");
if (queryComponents.Count == 0)
query += " " + string.Join(", ", queryComponents) + " " + $"WHERE ID = {id};";
if (queryComponents.Count > 0)
query += " " + string.Join(", ", queryComponents) + " " + $"WHERE ID = {Id};";
else
return null;
return query;
}
internal static string? UpdateReservation(int id,
int? roomid = null, int? guestid = null, int? transactionid = null, bool? isnoshow = null, ReservationType? type = null,
ReservationStatus? status = null, DateTime? creationdate = null, DateTime? startdate = null, DateTime? enddate = null,
DateTime? checkin = null, DateTime? checkout = null, DateTime? datechanged = null)
internal static string? UpdateReservation(int Id,
int? RoomID = null, int? GuestID = null, int? TransactionID = null, bool? IsNoShow = null, ReservationType? Type = null,
ReservationStatus? Status = null, DateTime? CreationDate = null, DateTime? StartDate = null, DateTime? EndDate = null,
DateTime? CheckIn = null, DateTime? CheckOut = null, DateTime? DateChanged = null)
{
List<string> queryComponents = new List<string>();
List<string> QueryParts = new List<string>();
string query = "UPDATE reservations SET";
if (roomid.HasValue)
queryComponents.Add($"RoomID = {roomid}");
if (guestid.HasValue)
queryComponents.Add($"GuestID = {guestid}");
if (transactionid.HasValue)
queryComponents.Add($"TransactionID = {transactionid}");
if (isnoshow.HasValue)
queryComponents.Add($"IsNoShow = {Convert.ToInt32(isnoshow)}");
if (type.HasValue)
queryComponents.Add($"Type = {(int)type}");
if (status.HasValue)
queryComponents.Add($"Type = {(int)status}");
if (creationdate.HasValue)
queryComponents.Add($"CreationDate = {creationdate.Value.ToString("yyyy-MM-dd")}");
if (startdate.HasValue)
queryComponents.Add($"StartDate = {startdate.Value.ToString("yyyy-MM-dd")}");
if (enddate.HasValue)
queryComponents.Add($"EndDate = {enddate.Value.ToString("yyyy-MM-dd")}");
if (checkin.HasValue)
queryComponents.Add($"CheckIn = {checkin.Value.ToString("yyyy-MM-dd")}");
if (checkout.HasValue)
queryComponents.Add($"CheckOut = {checkout.Value.ToString("yyyy-MM-dd")}");
if (datechanged.HasValue)
queryComponents.Add($"CheckOut = {datechanged.Value.ToString("yyyy-MM-dd")}");
if (RoomID.HasValue)
QueryParts.Add($"RoomID = {RoomID}");
if (GuestID.HasValue)
QueryParts.Add($"GuestID = {GuestID}");
if (TransactionID.HasValue)
QueryParts.Add($"TransactionID = {TransactionID}");
if (IsNoShow.HasValue)
QueryParts.Add($"IsNoShow = {Convert.ToInt32(IsNoShow)}");
if (Type.HasValue)
QueryParts.Add($"Type = {(int)Type}");
if (Status.HasValue)
QueryParts.Add($"Status = {(int)Status}");
if (CreationDate.HasValue)
QueryParts.Add($"CreationDate = {CreationDate.Value.Date.ToString("yyyy-MM-dd")}");
if (StartDate.HasValue)
QueryParts.Add($"StartDate = {StartDate.Value.Date.ToString("yyyy-MM-dd")}");
if (EndDate.HasValue)
QueryParts.Add($"EndDate = {EndDate.Value.Date.ToString("yyyy-MM-dd")}");
if (CheckIn.HasValue)
QueryParts.Add($"CheckIn = {CheckIn.Value.Date.ToString("yyyy-MM-dd")}");
if (CheckOut.HasValue)
QueryParts.Add($"CheckOut = {CheckOut.Value.Date.ToString("yyyy-MM-dd")}");
if (DateChanged.HasValue)
QueryParts.Add($"DateChanged = {DateChanged.Value.Date.ToString("yyyy-MM-dd")}");
if (queryComponents.Count == 0)
query += " " + string.Join(", ", queryComponents) + " " + $"WHERE ID = {id};";
if (QueryParts.Count > 0)
query += " " + string.Join(", ", QueryParts) + " " + $"WHERE ID = {Id};";
else
return null;
return query;
}
internal static string CreateTransaction(double Rate, double Owed, double Penalty,
double Multiplier, double Refund, bool isLate,
bool PaidOff, DateTime PaidBy, DateTime? PaidOn = null)
internal static string CreateTransaction(double Rate, double Owed,
double Multiplier, DateTime PayBy, DateTime? LastPaid = null,
DateTime? PaidOn = null, double Refund = 0, double Penalty = 0)
{
return @$"INSERT INTO transactions (Rate, Owed, Penalty, Multiplier, Refund, IsLate, PaidOff, PaidBy, PaidOn)
VALUES ({Rate}, {Owed}, {Penalty}, {Multiplier}, {Refund}, {isLate}, {PaidOff}, {PaidBy}, {PaidOn});";
return @$"INSERT INTO transactions (Rate, Owed, Penalty, Multiplier, RefundAmount, PayBy, LastPaid, PaidOn)
VALUES ({Rate}, {Owed}, {Penalty}, {Multiplier}, {Refund}, {PayBy}, {PayBy}, {PaidOn});";
}
internal static string CreateReservation(int roomid, int guestid, int transactionid, bool isnoshow, ReservationType type,
internal static string CreateReservation(int guestid, int transactionid, ReservationType type,
ReservationStatus status, DateTime creationdate, DateTime startdate, DateTime enddate,
DateTime checkin, DateTime checkout, DateTime datechanged)
DateTime? checkin = null, DateTime? checkout = null, DateTime? datechanged = null, bool? isnoshow = false)
{
return @$"INSERT INTO reservations (RoomID, GuestID, TransactionID, IsNoShow, Type, Status, CreationDate, StartDate, EndDate, CheckIn, CheckOut, DateChanged)
VALUES ({roomid}, {guestid}, {transactionid}, {isnoshow}, {status}, {creationdate}, {startdate}, {enddate}, {checkin}, {checkout}, {datechanged});";
return @$"INSERT INTO reservations (GuestID, TransactionID, IsNoShow, Type, Status, CreationDate, StartDate, EndDate, CheckIn, CheckOut, DateChanged)
VALUES ({guestid}, {transactionid}, {isnoshow}, {status}, {creationdate}, {startdate}, {enddate}, {checkin}, {checkout}, {datechanged});";
}
internal static string CreateGuest(string FirstName, string LastName, string Email, string? CreditCard, string? Expiration, string? CCV)
{
if (CreditCard != null && Expiration != null && CCV != null)
return $@"INSERT INTO guests (Fname, Lname, Email) VALUES ({FirstName}, {LastName}, {Email});";
return $@"INSERT INTO guests (Fname, Lname, Email, CreditCard, Expiration, CCV) VALUES ('{FirstName}', '{LastName}', '{Email}', '{CreditCard}', '{Expiration}', '{CCV}');";
else
return $@"INSERT INTO guests (Fname, Lname, Email, CreditCard, Expiration, CCV) VALUES ({FirstName}, {LastName}, {Email}, {CreditCard}, {Expiration}, {CCV});";
return $@"INSERT INTO guests (Fname, Lname, Email) VALUES ('{FirstName}', '{LastName}', '{Email}');";
}
internal static string? UpdateGuest(int Id, string? FirstName = null, string? LastName = null, string? Email = null, string? CreditCard = null, string? Expiration = null, string? CCV = null)
{
List<string> QueryParts = new List<string>();
string query = "UPDATE guests SET";
if (!string.IsNullOrEmpty(FirstName))
QueryParts.Add($"Fname = '{FirstName}'");
if (!string.IsNullOrEmpty(LastName))
QueryParts.Add($"Lname = '{LastName}'");
if (!string.IsNullOrEmpty(LastName))
QueryParts.Add($"Email = '{Email}'");
if (!string.IsNullOrEmpty(CreditCard))
QueryParts.Add($"CreditCard = '{CreditCard}'");
if (!string.IsNullOrEmpty(Expiration))
QueryParts.Add($"Expiration = '{Expiration}'");
if (!string.IsNullOrEmpty(CCV))
QueryParts.Add($"CCV = '{CCV}'");
if (QueryParts.Count > 0)
query += " " + string.Join(", ", QueryParts) + " " + $"WHERE ID = {Id};";
else
return null;
return query;
}
}
}