100 lines
3.5 KiB
C#
Raw Normal View History

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<Master>
{
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<Master> GetObjects()
{
var masters = new List<Master>();
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<Specialisation> specialisations = db.GetObjects();
foreach (Specialisation specialisation in specialisations)
{
if (specialisation.SpecialisationId == specId) return specialisation.Name.ToString();
}
return string.Empty;
}
}
}