diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Accounting-Time-It-Company.csproj b/Accounting-Time-It-Company/Accounting-Time-It-Company/Accounting-Time-It-Company.csproj
index 0fedd00..e869823 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Accounting-Time-It-Company.csproj
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Accounting-Time-It-Company.csproj
@@ -15,6 +15,7 @@
+
diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Forms/FormTypeJob.cs b/Accounting-Time-It-Company/Accounting-Time-It-Company/Forms/FormTypeJob.cs
index 8c1e723..d040b24 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Forms/FormTypeJob.cs
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Forms/FormTypeJob.cs
@@ -38,7 +38,7 @@ namespace Accounting_Time_It_Company.Forms
throw new Exception("Имеются незаполненные поля");
}
- _typeJobRepositories.CreateTypeJob(TypeJob.CreateOperation(0, (int)comboBoxProduct.SelectedIndex!, textBoxDescriptoin.Text,
+ _typeJobRepositories.CreateTypeJob(TypeJob.CreateOperation(0, (int)comboBoxProduct.SelectedValue!, textBoxDescriptoin.Text,
(int)numericUpDownAllowanceForJob.Value, CreateListWorkTimeFromDataGrid(dataGridViewDevelops),
CreateListWorkTimeFromDataGrid(dataGridViewManagers)));
diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Forms/FormVacation.cs b/Accounting-Time-It-Company/Accounting-Time-It-Company/Forms/FormVacation.cs
index 7a49b4f..86adb0f 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Forms/FormVacation.cs
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Forms/FormVacation.cs
@@ -26,7 +26,7 @@ namespace Accounting_Time_It_Company.Forms
throw new Exception("Имеются незаполненные поля");
}
- _vacationRepositories.CreateVacation(Vacation.CreateOpeartion(0, (int)comboBoxEmployee.SelectedIndex!,
+ _vacationRepositories.CreateVacation(Vacation.CreateOpeartion(0, (int)comboBoxEmployee.SelectedValue!,
dateTimePickerStartDate.Value, dateTimePickerEndDate.Value));
Close();
diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ClientRepositories.cs b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ClientRepositories.cs
index 31bc27c..ee6f8e0 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ClientRepositories.cs
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ClientRepositories.cs
@@ -2,6 +2,7 @@
using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
+using Npgsql;
using System.Data.SqlClient;
#pragma warning disable CS0618
@@ -25,10 +26,11 @@ internal class ClientRepositories : IClientRepositories
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(client));
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryInsert = @"
- INSERT INTO Client (NameClient, Phone)
- VALUES (@NameClient, @Phone)";
+ INSERT INTO Client
+ VALUES (DEFAULT, @NameClient, @Phone)";
connection.Execute(queryInsert, client);
}
catch (Exception ex)
@@ -44,8 +46,8 @@ internal class ClientRepositories : IClientRepositories
JsonConvert.SerializeObject(client));
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
-
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryUpdate = @"
UPDATE Client
SET
@@ -67,7 +69,8 @@ internal class ClientRepositories : IClientRepositories
_logger.LogDebug("Объект: {id}", id);
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryDelete = @"
DELETE FROM Client
WHERE Id=@id";
@@ -86,7 +89,8 @@ internal class ClientRepositories : IClientRepositories
_logger.LogDebug("Объект: {id}", id);
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var querySelect = @"
SELECT * FROM Client
WHERE Id=@id";
@@ -106,7 +110,8 @@ internal class ClientRepositories : IClientRepositories
_logger.LogInformation("Получение всех объектов");
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var querySelect = "SELECT * FROM Client";
var clients = connection.Query(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ConnectionString.cs b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ConnectionString.cs
index d526f56..701384c 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ConnectionString.cs
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ConnectionString.cs
@@ -3,5 +3,5 @@ namespace Accounting_Time_It_Company.Repositories.Implementations;
public class ConnectionString : IConnectionString
{
- string IConnectionString.ConnectionString => "";
+ string IConnectionString.ConnectionString => "Server=localhost:5432;Database=workTime;User Id=postgres;Password=postgres;";
}
diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/EmployeeRepositories.cs b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/EmployeeRepositories.cs
index 12538f8..74346cb 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/EmployeeRepositories.cs
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/EmployeeRepositories.cs
@@ -2,7 +2,7 @@
using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
-using System.Data.SqlClient;
+using Npgsql;
namespace Accounting_Time_It_Company.Repositories.Implementations;
@@ -24,10 +24,11 @@ public class EmployeeRepositories : IEmployeeRepositories
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(employee));
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryInsert = @"
- INSERT INTO Employee (PostId, Name, Phone, Allowance)
- VALUES (@PostId, @Name, @Phone, @Allowance)";
+ INSERT INTO Employee
+ VALUES (DEFAULT, @PostId, @Name, @Phone, @Allowance)";
connection.Execute(queryInsert, employee);
}
catch (Exception ex)
@@ -44,8 +45,8 @@ public class EmployeeRepositories : IEmployeeRepositories
JsonConvert.SerializeObject(employee));
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
-
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryUpdate = @"
UPDATE Employee
SET
@@ -69,7 +70,8 @@ public class EmployeeRepositories : IEmployeeRepositories
_logger.LogDebug("Объект: {id}", id);
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryDelete = @"
DELETE FROM Employee
WHERE Id=@id";
@@ -88,7 +90,8 @@ public class EmployeeRepositories : IEmployeeRepositories
_logger.LogDebug("Объект: {id}", id);
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var querySelect = @"
SELECT * FROM Employee
WHERE [Id]=@id";
@@ -108,7 +111,8 @@ public class EmployeeRepositories : IEmployeeRepositories
_logger.LogInformation("Получение всех объектов");
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var querySelect = "SELECT * FROM Employee";
var employees = connection.Query(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/PostRepositories.cs b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/PostRepositories.cs
index f9b8302..0071c48 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/PostRepositories.cs
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/PostRepositories.cs
@@ -2,7 +2,7 @@
using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
-using System.Data.SqlClient;
+using Npgsql;
namespace Accounting_Time_It_Company.Repositories.Implementations;
@@ -24,10 +24,11 @@ public class PostRepositories : IPostRepositories
_logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(post));
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryInsert = @"
- INSERT INTO Post (NamePost, LevelPost, Wage)
- VALUES (@NamePost, @LevelPost, @Wage)";
+ INSERT INTO Post
+ VALUES (DEFAULT, @NamePost, @LevelPost, @Wage)";
connection.Execute(queryInsert, post);
}
catch (Exception ex)
@@ -44,8 +45,8 @@ public class PostRepositories : IPostRepositories
JsonConvert.SerializeObject(post));
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
-
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryUpdate = @"
UPDATE Post
SET
@@ -68,7 +69,8 @@ public class PostRepositories : IPostRepositories
_logger.LogDebug("Объект: {id}", id);
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryDelete = @"
DELETE FROM Post
WHERE Id=@id";
@@ -87,7 +89,8 @@ public class PostRepositories : IPostRepositories
_logger.LogDebug("Объект: {id}", id);
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var querySelect = @"
SELECT * FROM Post
WHERE Id=@id";
@@ -107,7 +110,8 @@ public class PostRepositories : IPostRepositories
_logger.LogInformation("Получение всех объектов");
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var querySelect = "SELECT * FROM Post";
var posts = connection.Query(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ProductRepositories.cs b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ProductRepositories.cs
index 0c30431..1903ff8 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ProductRepositories.cs
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/ProductRepositories.cs
@@ -2,7 +2,7 @@
using Dapper;
using Microsoft.Extensions.Logging;
using Newtonsoft.Json;
-using System.Data.SqlClient;
+using Npgsql;
namespace Accounting_Time_It_Company.Repositories.Implementations;
@@ -21,13 +21,14 @@ public class ProductRepositories : IProductRepositories
public void CreateProduct(Product product)
{
_logger.LogInformation("Добавление объекта");
- _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(post));
+ _logger.LogDebug("Объект: {json}", JsonConvert.SerializeObject(product));
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryInsert = @"
- INSERT INTO Product (ClientId, Name, Type)
- VALUES (@ClientId, @Name, @Type)";
+ INSERT INTO Product
+ VALUES (DEFAULT, @ClientId, @Name, @Type)";
connection.Execute(queryInsert, product);
}
catch (Exception ex)
@@ -44,8 +45,8 @@ public class ProductRepositories : IProductRepositories
JsonConvert.SerializeObject(product));
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
-
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryUpdate = @"
UPDATE Product
SET
@@ -68,7 +69,8 @@ public class ProductRepositories : IProductRepositories
_logger.LogDebug("Объект: {id}", id);
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var queryDelete = @"
DELETE FROM Product
WHERE Id=@id";
@@ -87,7 +89,8 @@ public class ProductRepositories : IProductRepositories
_logger.LogDebug("Объект: {id}", id);
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var querySelect = @"
SELECT * FROM Product
WHERE [Id]=@id";
@@ -107,7 +110,8 @@ public class ProductRepositories : IProductRepositories
_logger.LogInformation("Получение всех объектов");
try
{
- using var connection = new SqlConnection(_connectionString.ConnectionString);
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
var querySelect = "SELECT * FROM Product";
var products = connection.Query(querySelect);
_logger.LogDebug("Полученные объекты: {json}",
diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/TypeJobRepositories.cs b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/TypeJobRepositories.cs
index 9d64613..99754fb 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/TypeJobRepositories.cs
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/TypeJobRepositories.cs
@@ -1,19 +1,107 @@
using Accounting_Time_It_Company.Entities;
+using Dapper;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using Npgsql;
namespace Accounting_Time_It_Company.Repositories.Implementations;
public class TypeJobRepositories : ITypeJobRepositories
{
+ private readonly IConnectionString _connectionString;
+
+ private readonly ILogger _logger;
+
+ public TypeJobRepositories(IConnectionString connectionString, ILogger logger)
+ {
+ _connectionString = connectionString;
+ _logger = logger;
+ }
+
public void CreateTypeJob(TypeJob typeJob)
{
+ _logger.LogInformation("Добавление объекта");
+ _logger.LogDebug("Объект: {json}",
+ JsonConvert.SerializeObject(typeJob));
+ try
+ {
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
+ using var transaction = connection.BeginTransaction();
+ var queryInsert = @"
+ INSERT INTO TypeJob
+ VALUES (DEFAULT, @ProductId, @Description, @AllowanceForJob, @Date, @WorkTimesDevelop, @WorkTimesManager);
+ SELECT MAX(Id) FROM TypeJob";
+ var typeJobId = connection.QueryFirst(queryInsert, typeJob, transaction);
+ var querySubInsert = @"
+ INSERT INTO WorkTime
+ VALUES (DEFAULT, @TypeJobId, @EmployeeId, @Hours)";
+ foreach (var elem in typeJob.WorkTimesDevelop)
+ {
+ connection.Execute(querySubInsert, new
+ {
+ typeJobId,
+ elem.EmployeeId,
+ elem.Hours
+ }, transaction);
+ }
+
+ foreach (var elem in typeJob.WorkTimesManager)
+ {
+ connection.Execute(querySubInsert, new
+ {
+ typeJobId,
+ elem.EmployeeId,
+ elem.Hours
+ }, transaction);
+ }
+
+ transaction.Commit();
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Ошибка при добавлении объекта");
+ throw;
+ }
}
public void DeleteTypeJob(int id)
{
+ _logger.LogInformation("Удаление объекта");
+ _logger.LogDebug("Объект: {id}", id);
+ try
+ {
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
+ var queryDelete = @"
+ DELETE FROM TypeJob
+ WHERE Id=@id";
+ connection.Execute(queryDelete, new { id });
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Ошибка при удалении объекта");
+ throw;
+ }
}
public IEnumerable ReadTypeJobs(int? productId = null, int? developId = null, int? managerId = null)
{
- return [];
+ _logger.LogInformation("Получение всех объектов");
+ try
+ {
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
+ var querySelect = @"SELECT * FROM TypeJob";
+ var typeJobs = connection.Query(querySelect);
+ _logger.LogDebug("Полученные объекты: {json}",
+ JsonConvert.SerializeObject(typeJobs));
+ return typeJobs;
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Ошибка при чтении объектов");
+ throw;
+ }
}
}
diff --git a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/VacationRepositories.cs b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/VacationRepositories.cs
index f05654f..55a4544 100644
--- a/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/VacationRepositories.cs
+++ b/Accounting-Time-It-Company/Accounting-Time-It-Company/Repositories/Implementations/VacationRepositories.cs
@@ -1,16 +1,62 @@
using Accounting_Time_It_Company.Entities;
+using Dapper;
+using Microsoft.Extensions.Logging;
+using Newtonsoft.Json;
+using Npgsql;
namespace Accounting_Time_It_Company.Repositories.Implementations;
public class VacationRepositories : IVacationRepositories
{
+ private readonly IConnectionString _connectionString;
+
+ private readonly ILogger _logger;
+
+ public VacationRepositories(IConnectionString connectionString, ILogger logger)
+ {
+ _connectionString = connectionString;
+ _logger = logger;
+ }
+
public void CreateVacation(Vacation vacation)
{
+ _logger.LogInformation("Добавление объекта");
+ _logger.LogDebug("Объект: {json}",
+ JsonConvert.SerializeObject(vacation));
+ try
+ {
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
+ var queryInsert = @"
+ INSERT INTO Vacation
+ VALUES (DEFAULT, @EmployeeId, @StartDate, @EndDate)";
+ connection.Execute(queryInsert, vacation);
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Ошибка при добавлении объекта");
+ throw;
+ }
}
public IEnumerable ReadVacations(DateTime? startDateFrom = null, DateTime? startDateTo = null,
DateTime? endDateFrom = null, DateTime? endtDateTo = null, int? employeeId = null)
{
- return [];
+ _logger.LogInformation("Получение всех объектов");
+ try
+ {
+ using var connection = new NpgsqlConnection(_connectionString.ConnectionString);
+ connection.Open();
+ var querySelect = "SELECT * FROM Vacation";
+ var vacations = connection.Query(querySelect);
+ _logger.LogDebug("Полученные объекты: {json}",
+ JsonConvert.SerializeObject(vacations));
+ return vacations;
+ }
+ catch (Exception ex)
+ {
+ _logger.LogError(ex, "Ошибка при чтении объектов");
+ throw;
+ }
}
}