PIbd-21_Afanasev_S.S_SUBD_C.../ComputerFirm/database/Implementation.cs
2024-05-06 22:17:29 +04:00

476 lines
19 KiB
C#

using Npgsql;
using System.Data;
namespace database
{
public class Implementation : Abstractions
{
private NpgsqlConnection GetConnection()
{
return new NpgsqlConnection("Host=localhost;Username=postgres;Password=1234;Database=Computerfirmbd;");
}
// CDUD операции для каждой сущности
// Device
public override void AddDevice(Device device)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("INSERT INTO device (typedevice, model, serialnumber, clientid, orderid) VALUES (@TypeDevice, @Model, @SerialNumber, @ClientId, @OrderId)", conn);
cmd.Parameters.AddWithValue("@TypeDevice", device.TypeDevice);
cmd.Parameters.AddWithValue("@Model", device.Model);
cmd.Parameters.AddWithValue("@SerialNumber", device.SerialNumber);
cmd.Parameters.AddWithValue("@ClientId", device.ClientId);
cmd.Parameters.AddWithValue("@OrderId", device.OrderId);
cmd.ExecuteNonQuery();
}
public override List<Device> GetDevices()
{
var devices = new List<Device>();
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM device", conn);
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
devices.Add(new Device
{
Id = reader.GetInt32(0),
TypeDevice = reader.GetString(1),
Model = reader.GetString(2),
SerialNumber = reader.GetString(3),
ClientId = reader.GetInt32(4),
OrderId = reader.GetInt32(5),
});
}
return devices;
}
public override Device GetDeviceById(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"SELECT * FROM device WHERE id = {id}", conn);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return new Device
{
Id = reader.GetInt32(0),
TypeDevice = reader.GetString(1),
Model = reader.GetString(2),
SerialNumber = reader.GetString(3),
ClientId = reader.GetInt32(4),
OrderId = reader.GetInt32(5),
};
}
return null;
}
public override void UpdateDevice(Device device)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("UPDATE device SET typedevice = @TypeDevice, model = @Model, serialnumber = @SerialNumber, clientid = @ClientId, orderid = @OrderId WHERE id = @Id", conn);
cmd.Parameters.AddWithValue("@TypeDevice", device.TypeDevice);
cmd.Parameters.AddWithValue("@Model", device.Model);
cmd.Parameters.AddWithValue("@SerialNumber", device.SerialNumber);
cmd.Parameters.AddWithValue("@ClientId", device.ClientId);
cmd.Parameters.AddWithValue("@OrderId", device.OrderId);
cmd.Parameters.AddWithValue("@Id", device.Id);
cmd.ExecuteNonQuery();
}
public override void DeleteDevice(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"DELETE FROM device WHERE id = {id}", conn);
cmd.ExecuteNonQuery();
}
//Employee
public override void AddEmployee(Employee employee)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("INSERT INTO employee (name, surname, position, timework, seniority, costperhour) VALUES (@Name, @Surname, @Position, @Timework, @Seniority, @CostPerHour)");
cmd.Parameters.AddWithValue("@Name", employee.Name);
cmd.Parameters.AddWithValue("@Surname", employee.Surname);
cmd.Parameters.AddWithValue("@Position", employee.Position);
cmd.Parameters.AddWithValue("@Timework", employee.Timework);
cmd.Parameters.AddWithValue("@Seniority", employee.Seniority);
cmd.Parameters.AddWithValue("@CostPerHour", employee.CostPerHour);
cmd.Connection = conn;
cmd.ExecuteNonQuery();
}
public override List<Employee> GetEmployees()
{
var employee = new List<Employee>();
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM employee", conn);
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
employee.Add(new Employee()
{
Id = reader.GetInt32(0),
Name = reader.GetString(1),
Surname = reader.GetString(2),
Position = reader.GetString(3),
Timework = reader.GetString(4),
Seniority = reader.GetString(5),
CostPerHour = reader.GetDecimal(6)
});
}
return employee;
}
public override Employee GetEmployeeById(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"SELECT * FROM employee WHERE id = {id}", conn);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return new Employee
{
Id = reader.GetInt32(0),
Name = reader.GetString(1),
Surname = reader.GetString(2),
Position = reader.GetString(3),
Timework = reader.GetString(4),
Seniority = reader.GetString(5),
CostPerHour = reader.GetDecimal(6)
};
}
return null;
}
public override void UpdateEmployee(Employee employee)
{
using var conn = GetConnection();
conn.Open(); // добавил открытие соединения
using var cmd = new NpgsqlCommand("UPDATE employee SET name = @Name, surname = @Surname, position = @Position, timework = @Timework, seniority = @Seniority, costperhour = @CostPerHour WHERE id = @Id", conn);
cmd.Parameters.AddWithValue("@Name", employee.Name);
cmd.Parameters.AddWithValue("@Surname", employee.Surname);
cmd.Parameters.AddWithValue("@Position", employee.Position);
cmd.Parameters.AddWithValue("@Timework", employee.Timework);
cmd.Parameters.AddWithValue("@Seniority", employee.Seniority);
cmd.Parameters.AddWithValue("@CostPerHour", employee.CostPerHour);
cmd.Parameters.AddWithValue("@Id", employee.Id);
cmd.ExecuteNonQuery();
}
public override void DeleteEmployee(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"DELETE FROM employee WHERE id = {id}", conn);
cmd.ExecuteNonQuery();
}
// Client
public override void AddClient(Client client)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("INSERT INTO client (name, surname, email, phone) VALUES (@Name, @Surname, @Email, @Phone)", conn);
cmd.Parameters.AddWithValue("@Name", client.Name);
cmd.Parameters.AddWithValue("@Surname", client.Surname);
cmd.Parameters.AddWithValue("@Email", client.Email);
cmd.Parameters.AddWithValue("@Phone", client.Phone);
cmd.ExecuteNonQuery();
}
public override List<Client> GetClients()
{
var client = new List<Client>();
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM client", conn);
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
client.Add(new Client
{
Id = reader.GetInt32(0),
Name = reader.GetString(1),
Surname = reader.GetString(2),
Email = reader.GetString(3),
Phone = reader.GetString(4),
});
}
return client;
}
public override Client GetClientById(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"SELECT * FROM client WHERE id = {id}", conn);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return new Client
{
Id = reader.GetInt32(0),
Name = reader.GetString(1),
Surname = reader.GetString(2),
Email = reader.GetString(3),
Phone = reader.GetString(4)
};
}
return null;
}
public override void UpdateClient(Client client)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"UPDATE client SET name = '{client.Name}', surname = '{client.Surname}', email = '{client.Email}', phone = '{client.Phone}' WHERE id = {client.Id}", conn);
cmd.ExecuteNonQuery();
}
public override void DeleteClient(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"DELETE FROM client WHERE id = {id}", conn);
cmd.ExecuteNonQuery();
}
// Order
public override void AddOrder(Order order)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("INSERT INTO orders (datestart, dateend, endcost, clientid, componentid, serviceid) VALUES (@DateStart, @DateEnd, @EndCost, @ClientId, @ComponentId, @ServiceId)", conn);
cmd.Parameters.AddWithValue("@DateStart", order.DateStart);
cmd.Parameters.AddWithValue("@DateEnd", order.DateEnd);
cmd.Parameters.AddWithValue("@EndCost", order.EndCost);
cmd.Parameters.AddWithValue("@ClientId", order.ClientId);
cmd.Parameters.AddWithValue("@ComponentId", order.ComponentId);
cmd.Parameters.AddWithValue("@ServiceId", order.ServiceId);
cmd.ExecuteNonQuery();
}
public override List<Order> GetOrders()
{
var orders = new List<Order>();
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM orders", conn);
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
orders.Add(new Order
{
Id = reader.GetInt32(0),
DateStart = reader.GetString(1),
DateEnd = reader.GetString(2),
EndCost = reader.GetDecimal(3),
ClientId = reader.GetInt32(4),
ComponentId = reader.GetInt32(5),
ServiceId = reader.GetInt32(6),
});
}
return orders;
}
public override Order GetOrderById(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"SELECT * FROM orders WHERE id = {id}", conn);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return new Order
{
Id = reader.GetInt32(0),
DateStart = reader.GetString(1),
DateEnd = reader.GetString(2),
EndCost = reader.GetDecimal(3),
ClientId = reader.GetInt32(4),
ComponentId = reader.GetInt32(5),
ServiceId = reader.GetInt32(6),
};
}
return null;
}
public override void UpdateOrder(Order order)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("UPDATE orders SET datestart = @DateStart, dateend = @DateEnd, endcost = @EndCost, clientid = @ClientId, componentid = @ComponentId, serviceid = @ServiceId WHERE id = @Id", conn);
cmd.Parameters.AddWithValue("@DateStart", order.DateStart);
cmd.Parameters.AddWithValue("@DateEnd", order.DateEnd);
cmd.Parameters.AddWithValue("@EndCost", order.EndCost);
cmd.Parameters.AddWithValue("@ClientId", order.ClientId);
cmd.Parameters.AddWithValue("@ComponentId", order.ComponentId);
cmd.Parameters.AddWithValue("@ServiceId", order.ServiceId);
cmd.Parameters.AddWithValue("@Id", order.Id);
cmd.ExecuteNonQuery();
}
public override void DeleteOrder(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"DELETE FROM orders WHERE id = {id}", conn);
cmd.ExecuteNonQuery();
}
// Service
public override void AddService(Service service)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("INSERT INTO service (title, cost, employeesid) VALUES (@Title, @Cost, @EmployeesId)", conn);
cmd.Parameters.AddWithValue("@Title", service.Title);
cmd.Parameters.AddWithValue("@Cost", service.Cost);
cmd.Parameters.AddWithValue("@EmployeesId", service.EmployeesId);
cmd.ExecuteNonQuery();
}
public override List<Service> GetServices()
{
var services = new List<Service>();
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM service", conn);
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
services.Add(new Service
{
Id = reader.GetInt32(0),
Title = reader.GetString(1),
Cost = reader.GetDecimal(2),
EmployeesId = reader.GetInt32(3),
});
}
return services;
}
public override Service GetServiceById(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"SELECT * FROM service WHERE id = {id}", conn);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return new Service
{
Id = reader.GetInt32(0),
Title = reader.GetString(1),
Cost = reader.GetDecimal(2),
EmployeesId = reader.GetInt32(3),
};
}
return null;
}
public override void UpdateService(Service service)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("UPDATE service SET title = @Title, cost = @Cost, employeesid = @EmployeesId WHERE id = @Id", conn);
cmd.Parameters.AddWithValue("@Title", service.Title);
cmd.Parameters.AddWithValue("@Cost", service.Cost);
cmd.Parameters.AddWithValue("@EmployeesId", service.EmployeesId);
cmd.Parameters.AddWithValue("@Id", service.Id);
cmd.ExecuteNonQuery();
}
public override void DeleteService(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"DELETE FROM service WHERE id = {id}", conn);
cmd.ExecuteNonQuery();
}
// Component
public override void AddComponent(Component component)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("INSERT INTO component (title, countsklad, manufacturer, price) VALUES (@Title, @CountSklad, @Manufacturer, @Price)", conn);
cmd.Parameters.AddWithValue("@Title", component.Title);
cmd.Parameters.AddWithValue("@CountSklad", component.CountSklad);
cmd.Parameters.AddWithValue("@Manufacturer", component.Manufacturer);
cmd.Parameters.AddWithValue("@Price", component.Price);
cmd.ExecuteNonQuery();
}
public override List<Component> GetComponents()
{
var components = new List<Component>();
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand("SELECT * FROM component", conn);
using var reader = cmd.ExecuteReader();
while (reader.Read())
{
components.Add(new Component
{
Id = reader.GetInt32(0),
Title = reader.GetString(1),
CountSklad = reader.GetString(2),
Manufacturer = reader.GetString(3),
Price = reader.GetDouble(4)
});
}
return components;
}
public override Component GetComponentById(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"SELECT * FROM component WHERE id = {id}", conn);
using var reader = cmd.ExecuteReader();
if (reader.Read())
{
return new Component
{
Id = reader.GetInt32(0),
Title = reader.GetString(1),
CountSklad = reader.GetString(2),
Manufacturer = reader.GetString(3),
Price = reader.GetDouble(4)
};
}
return null;
}
public override void UpdateComponent(Component component)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"UPDATE component SET title = '{component.Title}', countsklad = '{component.CountSklad}', manufacturer = '{component.Manufacturer}', price = '{component.Price}' WHERE id = {component.Id}", conn);
cmd.ExecuteNonQuery();
}
public override void DeleteComponent(int id)
{
using var conn = GetConnection();
conn.Open();
using var cmd = new NpgsqlCommand($"DELETE FROM component WHERE id = {id}", conn);
cmd.ExecuteNonQuery();
}
}
}