using BeautySalonDBModels.Models; using Npgsql; using System; using System.Collections.Generic; using System.Diagnostics.Metrics; using System.Linq; using System.Text; using System.Threading.Tasks; namespace BeautySalonDBModels.Implements { public class MasterDatabase : AbstractWorkWithStorage { public override void Add(Master master) { using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("INSERT INTO masters (master_id, specialisation_id, fio) VALUES (nextval('seq_master'), @SpecialisationId, @FIO)", conn); cmd.Parameters.AddWithValue("@SpecialisationId", master.SpecialisationId); cmd.Parameters.AddWithValue("@FIO", master.FIO); cmd.ExecuteNonQuery(); } public override Master? GetObject(int id) { using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("SELECT * FROM masters WHERE master_id = @id", conn); cmd.Parameters.AddWithValue("@id", id); using var reader = cmd.ExecuteReader(); if (reader.Read()) { return new Master { MasterId = reader.GetInt32(0), SpecialisationId = reader.GetInt32(1), FIO = reader.GetString(2) }; } return null; } public override List GetObjects() { var masters = new List(); using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("SELECT * FROM masters order by master_id", conn); using var reader = cmd.ExecuteReader(); while (reader.Read()) { masters.Add(new Master { MasterId = reader.GetInt32(0), SpecialisationId = reader.GetInt32(1), FIO = reader.GetString(2) }); } return masters; } public override Master? Remove(int id) { var master = GetObject(id); using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("delete from masters where master_id = @id", conn); cmd.Parameters.AddWithValue("@id", id); cmd.ExecuteNonQuery(); return master; } public override void Update(Master master) { using var conn = GetConnection(); conn.Open(); using var cmd = new NpgsqlCommand("update master set specialisation_id = @specId, " + "fio = @fio where master_id = @id", conn); cmd.Parameters.AddWithValue("@specId", master.SpecialisationId); cmd.Parameters.AddWithValue("@fio", master.FIO); cmd.Parameters.AddWithValue("@id", master.MasterId); cmd.ExecuteNonQuery(); } public string GetNameSpecialisation(Master master) { SpecialisationDatabase db = new SpecialisationDatabase(); int specId = master.SpecialisationId; List specialisations = db.GetObjects(); foreach (Specialisation specialisation in specialisations) { if (specialisation.SpecialisationId == specId) return specialisation.Name.ToString(); } return string.Empty; } } }