Files
ophelias-oasis/OpheliasOasis/Models/Guest.cs
雲華 989a4dd65c IO format fixes and implemented res payment
This is a small commit to include the feature for paying for a
reservation, specifically only the 60-day-in-advance reservation type as
the others are paid for at specific periods. Other fixes include just
some formatting for reports.
2022-04-16 13:59:27 -04:00

124 lines
4.3 KiB
C#

using Ophelias.Managers;
using System.Data.SQLite;
namespace Ophelias.Models
{
internal class Guest
{
internal int Id;
internal string FirstName;
internal string LastName;
internal string Email;
internal string? CreditCard;
internal string? CCV;
internal string? Expiration;
internal Guest(string FirstName, string LastName, string Email, string? CreditCard = null, string? Expiration = null, string? CCV = null)
{
int Id;
using (Database Manager = new())
{
using (SQLiteCommand cmd = Manager.con.CreateCommand())
{
cmd.CommandText = "INSERT INTO guests (Fname, Lname, Email, CreditCard, Expiration, CCV) " +
"VALUES (@Fname, @Lname, @Email, @CreditCard, @Expiry, @CCV);";
cmd.Parameters.AddWithValue("@Fname", FirstName);
cmd.Parameters.AddWithValue("@Lname", LastName);
cmd.Parameters.AddWithValue("@Email", Email);
cmd.Parameters.AddWithValue("@CreditCard", CreditCard);
cmd.Parameters.AddWithValue("@Expiry", Expiration);
cmd.Parameters.AddWithValue("@CCV", CCV);
cmd.ExecuteNonQuery();
}
Id = (int)Manager.con.LastInsertRowId;
}
if (CreditCard != null && Expiration != null && CCV != null)
{
this.Id = Id;
this.FirstName = FirstName;
this.LastName = LastName;
this.Email = Email;
this.CreditCard = CreditCard;
this.Expiration = Expiration;
this.CCV = CCV;
}
else
{
this.Id = Id;
this.FirstName = FirstName;
this.LastName = LastName;
this.Email = Email;
}
}
internal Guest(int Id, string FirstName, string LastName, string Email, string? CreditCard = null, string? Expiration = null, string? CCV = null)
{
this.Id = Id;
this.FirstName = FirstName;
this.LastName = LastName;
this.Email = Email;
this.CreditCard = CreditCard;
this.Expiration = Expiration;
this.CCV = CCV;
}
internal void UpdateGuest(int Id, string? FirstName = null, string? LastName = null, string? Email = null, string? CreditCard = null, string? Expiration = null, string? CCV = null)
{
using (Database Manager = new())
{
using SQLiteCommand cmd = Manager.con.CreateCommand();
cmd.CommandText = QueryBuilder.UpdateGuest(Id, FirstName, LastName, Email, CreditCard, Expiration, CCV);
cmd.Parameters.AddWithValue("@Fname", FirstName);
cmd.Parameters.AddWithValue("@Lname", LastName);
cmd.Parameters.AddWithValue("@Email", Email);
cmd.Parameters.AddWithValue("@CreditCard", CreditCard);
cmd.Parameters.AddWithValue("@Expiry", Expiration);
cmd.Parameters.AddWithValue("@CCV", CCV);
cmd.ExecuteNonQuery();
}
if (FirstName != null)
{
this.FirstName = FirstName;
}
if (LastName != null)
{
this.LastName = LastName;
}
if (Email != null)
{
this.Email = Email;
}
if (CreditCard != null)
{
this.CreditCard = CreditCard;
}
if (Expiration != null)
{
this.Expiration = Expiration;
}
if (CCV != null)
{
this.CCV = CCV;
}
}
internal void SetCreditCardInformation(string CreditCard, string Expiration, string CCV)
{
this.CreditCard = CreditCard;
this.Expiration = Expiration;
this.CCV = CCV;
}
}
internal class GuestList
{
internal List<Guest> Guests;
internal GuestList()
{
Guests = new();
}
}
}