using BeautySalonDBModels.Models; using Npgsql; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BeautySalonDBModels.Implements { public class ChequeDatabase : AbstractWorkWithStorage { public override void Add(Cheque cheque) { using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("INSERT INTO cheques (cheque_id, client_id, service_id, master_id, date_reception, price)" + " VALUES (nextval('seq_cheque'), @ClientId, @service_id, @master_id, @DateReception, @Price)", conn); cmd.Parameters.AddWithValue("@ClientId", cheque.ClientId); cmd.Parameters.AddWithValue("@master_id", cheque.MasterId); cmd.Parameters.AddWithValue("@service_id", cheque.ServiceId); cmd.Parameters.AddWithValue("@Price", cheque.Price); cmd.Parameters.AddWithValue("@DateReception", cheque.DateReception); cmd.ExecuteNonQuery(); } public override Cheque? GetObject(int id) { using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("SELECT * FROM cheques WHERE cheque_id = @id", conn); cmd.Parameters.AddWithValue("@id", id); using var reader = cmd.ExecuteReader(); if (reader.Read()) { return new Cheque { ChequeId = reader.GetInt32(0), ClientId = reader.GetInt32(1), ServiceId = reader.GetInt32(4), MasterId = reader.GetInt32(3), DateReception = reader.GetFieldValue(5), Price = reader.GetDouble(2), }; } return null; } public override List GetObjects() { var cheques = new List(); using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("SELECT * FROM cheques order by cheque_id", conn); using var reader = cmd.ExecuteReader(); while (reader.Read()) { cheques.Add(new Cheque { ChequeId = reader.GetInt32(0), ClientId = reader.GetInt32(1), ServiceId = reader.GetInt32(4), MasterId = reader.GetInt32(3), DateReception = reader.GetFieldValue(5), Price = reader.GetDouble(2), }); } return cheques; } public override Cheque? Remove(int id) { var cheque = GetObject(id); using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("delete from cheques where cheque_id = @id", conn); cmd.Parameters.AddWithValue("@id", id); cmd.ExecuteNonQuery(); return cheque; } public override void Update(Cheque cheque) { using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("update cheques set client_id = @ClientId, " + "master_id = @MasterId, service_id = @ServiceId, price = @Price, date_reception = @DateReception where cheque_id = @ChequeId", conn); cmd.Parameters.AddWithValue("@ClientId", cheque.ClientId); cmd.Parameters.AddWithValue("@MasterId", cheque.MasterId); cmd.Parameters.AddWithValue("@ServiceId", cheque.ServiceId); cmd.Parameters.AddWithValue("@ChequeId", cheque.ChequeId); cmd.Parameters.AddWithValue("@Price", cheque.Price); cmd.Parameters.AddWithValue("@DateReception", cheque.DateReception); cmd.ExecuteNonQuery(); } public string GetClientFIO(Cheque cheque) { ClientDatabase db = new ClientDatabase(); int clientId = cheque.ClientId; List clients = db.GetObjects(); foreach (Client c in clients) { if (c.ClientId == clientId) return c.FIO.ToString(); } return string.Empty; } public string GetMasterFIO(Cheque cheque) { MasterDatabase db = new MasterDatabase(); int masterId = cheque.MasterId; List masters = db.GetObjects(); foreach (Master c in masters) { if (c.MasterId == masterId) return c.FIO.ToString(); } return string.Empty; } public string GetServiceName(Cheque cheque) { ServiceDatabase db = new ServiceDatabase(); int serviceId = cheque.ServiceId; List service = db.GetObjects(); foreach (Service s in service) { if (s.ServiceId == serviceId) return s.ServiceName.ToString(); } return string.Empty; } } }