using BeautySalonDBModels.Models; using Npgsql; namespace BeautySalonDBModels.Implements { public class ReceptionDatabase : AbstractWorkWithStorage { public override void Add(Reception reception) { using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("INSERT INTO receptions (reception_id, master_id, service_id, date_reception) " + "VALUES ((nextval('seq_reception')), @MasterId, @ServiceId, @DateReception)", conn); cmd.Parameters.AddWithValue("@MasterId", reception.MasterId); cmd.Parameters.AddWithValue("@ServiceId", reception.ServiceId); cmd.Parameters.AddWithValue("@DateReception", reception.DateReception); cmd.ExecuteNonQuery(); } public override Reception? GetObject(int id) { using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("SELECT * FROM receptions WHERE reception_id = @id", conn); cmd.Parameters.AddWithValue("@id", id); using var reader = cmd.ExecuteReader(); if (reader.Read()) { return new Reception { ReceptionId = reader.GetInt32(0), MasterId = reader.GetInt32(1), ServiceId = reader.GetInt32(2), DateReception = reader.GetDateTime(3) }; } return null; } public override List GetObjects() { var receptions = new List(); using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("SELECT * FROM receptions order by reception_id", conn); using var reader = cmd.ExecuteReader(); while (reader.Read()) { receptions.Add(new Reception { ReceptionId = reader.GetInt32(0), MasterId = reader.GetInt32(1), ServiceId = reader.GetInt32(2), DateReception = reader.GetDateTime(3) }); } return receptions; } public override Reception? Remove(int id) { var reception = GetObject(id); using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("delete from receptions where reception_id = @id", conn); cmd.Parameters.AddWithValue("@id", id); cmd.ExecuteNonQuery(); return reception; } public override void Update(Reception reception) { using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("update receptions set master_id = @MasterId, " + "service_id = @ServiceId, date_reception = @DateReception where reception_id = @ReceptionId", conn); cmd.Parameters.AddWithValue("@MasterId", reception.MasterId); cmd.Parameters.AddWithValue("@ServiceId", reception.ServiceId); cmd.Parameters.AddWithValue("@DateReception", reception.DateReception); cmd.Parameters.AddWithValue("@ReceptionId", reception.ReceptionId); cmd.ExecuteNonQuery(); } public string GetMasterFio(Reception reception) { MasterDatabase db = new MasterDatabase(); int masterId = reception.MasterId; List masters = db.GetObjects(); foreach (Master master in masters) { if (master.MasterId == masterId) return master.FIO.ToString(); } return string.Empty; } public string GetServiceName(Reception reception) { ServiceDatabase db = new ServiceDatabase(); int serviceId = reception.ServiceId; List services = db.GetObjects(); foreach (Service service in services) { if (service.ServiceId == serviceId) return service.ServiceName.ToString(); } return string.Empty; } } }