144 lines
5.1 KiB
C#

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<Cheque>
{
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<DateTime>(5),
Price = reader.GetDouble(2),
};
}
return null;
}
public override List<Cheque> GetObjects()
{
var cheques = new List<Cheque>();
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<DateTime>(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<Client> 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<Master> 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> service = db.GetObjects();
foreach (Service s in service)
{
if (s.ServiceId == serviceId) return s.ServiceName.ToString();
}
return string.Empty;
}
}
}