114 lines
4.2 KiB
C#
Raw Normal View History

using BeautySalonDBModels.Models;
using Npgsql;
namespace BeautySalonDBModels.Implements
{
public class ReceptionDatabase : AbstractWorkWithStorage<Reception>
{
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<Reception> GetObjects()
{
var receptions = new List<Reception>();
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<Master> 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<Service> services = db.GetObjects();
foreach (Service service in services)
{
if (service.ServiceId == serviceId) return service.ServiceName.ToString();
}
return string.Empty;
}
}
}