diff --git a/EmployeeManagmentBusinessLogic/BusinessLogic/EmployeeLogic.cs b/EmployeeManagmentBusinessLogic/BusinessLogic/EmployeeLogic.cs index 0414beb..9041537 100644 --- a/EmployeeManagmentBusinessLogic/BusinessLogic/EmployeeLogic.cs +++ b/EmployeeManagmentBusinessLogic/BusinessLogic/EmployeeLogic.cs @@ -1,19 +1,14 @@ -using System.Collections.Generic; -using System.Linq; -using EmployeeManagmentContracts.BindingModels; -using EmployeeManagmentContracts.BusinessLogicContracts; +using EmployeeManagmentContracts.BusinessLogicContracts; using EmployeeManagmentContracts.SearchModels; using EmployeeManagmentContracts.StoragesContracts; using EmployeeManagmentContracts.ViewModels; -using EmployeeManagmentDataBaseImplement; -using EmployeeManagmentDataBaseImplement.Models; using Microsoft.Extensions.Logging; namespace EmployeeManagmentBusinessLogic.BusinessLogic { public class EmployeeLogic : IEmployeeLogic { - private readonly ILogger _logger; + private readonly ILogger _logger; private readonly IEmployeeStorage _employeeStorage; public EmployeeLogic(ILogger logger, IEmployeeStorage employeeStorage) @@ -22,34 +17,51 @@ namespace EmployeeManagmentBusinessLogic.BusinessLogic _employeeStorage = employeeStorage; } - public void Delete(int id) + public List GetFullList() { - throw new NotImplementedException(); - } - - public EmployeeViewModel? GetElement(int id) - { - throw new NotImplementedException(); + return _employeeStorage.GetFullList(); } public List GetFilteredList(EmployeeSearchModel model) { - throw new NotImplementedException(); + return _employeeStorage.GetFilteredList(model); } - public List GetFullList() + public EmployeeViewModel? GetElement(int id) { - throw new NotImplementedException(); + return _employeeStorage.GetElement(id); } public void Insert(EmployeeViewModel model) { - throw new NotImplementedException(); + if (string.IsNullOrWhiteSpace(model.NameJob)) + { + throw new ArgumentException("Название должности обязательно для заполнения."); + } + + _employeeStorage.Insert(model); } public void Update(EmployeeViewModel model) { - throw new NotImplementedException(); + var element = _employeeStorage.GetElement(model.Id); + if (element == null) + { + throw new ArgumentException("Сотрудник не найден."); + } + + _employeeStorage.Update(model); + } + + public void Delete(int id) + { + var element = _employeeStorage.GetElement(id); + if (element == null) + { + throw new ArgumentException("Сотрудник не найден."); + } + + _employeeStorage.Delete(id); } } } diff --git a/EmployeeManagmentContracts/ViewModels/EmployeeViewModel.cs b/EmployeeManagmentContracts/ViewModels/EmployeeViewModel.cs index bdd967e..4bf5bef 100644 --- a/EmployeeManagmentContracts/ViewModels/EmployeeViewModel.cs +++ b/EmployeeManagmentContracts/ViewModels/EmployeeViewModel.cs @@ -14,7 +14,7 @@ namespace EmployeeManagmentContracts.ViewModels public DateTime? EndJob { get; set; } public string? PartTimeJob { get; set; } public float Bid { get; set; } - public int PhysicalPersonsId { get; set; } + public int? PhysicalPersonsId { get; set; } public string? PhysicalPersonName { get; set; } } diff --git a/EmployeeManagmentDataBaseImplement/Implements/EmployeeStorage.cs b/EmployeeManagmentDataBaseImplement/Implements/EmployeeStorage.cs index f3b66dd..dfcbeb2 100644 --- a/EmployeeManagmentDataBaseImplement/Implements/EmployeeStorage.cs +++ b/EmployeeManagmentDataBaseImplement/Implements/EmployeeStorage.cs @@ -7,34 +7,124 @@ namespace EmployeeManagmentDataBaseImplement.Implements { public class EmployeeStorage : IEmployeeStorage { - public void Delete(int id) - { - throw new NotImplementedException(); - } - - public EmployeeViewModel? GetElement(int id) - { - throw new NotImplementedException(); - } - - public List GetFilteredList(EmployeeSearchModel model) - { - throw new NotImplementedException(); - } - + // Получить полный список сотрудников public List GetFullList() { - throw new NotImplementedException(); + using var context = new EmployeeManagementDbContext(); + + return context.Employees + .Select(e => new EmployeeViewModel + { + Id = e.Id, + NameJob = e.NameJob, + StartJob = e.StartJob, + EndJob = e.EndJob, + PartTimeJob = e.PartTimeJob, + Bid = e.Bid, + PhysicalPersonsId = e.PhisicalPersonsId, + PhysicalPersonName = $"{e.PhisicalPerson.Surname} {e.PhisicalPerson.Name}" + }) + .ToList(); } + // Получить отфильтрованный список сотрудников + public List GetFilteredList(EmployeeSearchModel model) + { + using var context = new EmployeeManagementDbContext(); + + if (model == null) return new List(); + + return context.Employees + .Where(e => + (string.IsNullOrEmpty(model.NameJob) || e.NameJob.Contains(model.NameJob)) && + (!model.StartDateFrom.HasValue || e.StartJob >= model.StartDateFrom) && + (!model.StartDateTo.HasValue || e.EndJob <= model.StartDateTo)) + .Select(e => new EmployeeViewModel + { + Id = e.Id, + NameJob = e.NameJob, + StartJob = e.StartJob, + EndJob = e.EndJob, + PartTimeJob = e.PartTimeJob, + Bid = e.Bid, + PhysicalPersonsId = e.PhisicalPersonsId, + PhysicalPersonName = $"{e.PhisicalPerson.Surname} {e.PhisicalPerson.Name}" + }) + .ToList(); + } + + // Получить сотрудника по ID + public EmployeeViewModel? GetElement(int id) + { + using var context = new EmployeeManagementDbContext(); + + var entity = context.Employees + .FirstOrDefault(e => e.Id == id); + + return entity == null ? null : new EmployeeViewModel + { + Id = entity.Id, + NameJob = entity.NameJob, + StartJob = entity.StartJob, + EndJob = entity.EndJob, + PartTimeJob = entity.PartTimeJob, + Bid = entity.Bid, + PhysicalPersonsId = entity.PhisicalPersonsId, + PhysicalPersonName = $"{entity.PhisicalPerson.Surname} {entity.PhisicalPerson.Name}" + }; + } + + // Добавить нового сотрудника public void Insert(EmployeeViewModel model) { - throw new NotImplementedException(); + using var context = new EmployeeManagementDbContext(); + + var newEmployee = new Employee + { + NameJob = model.NameJob, + StartJob = model.StartJob, + EndJob = model.EndJob, + PartTimeJob = model.PartTimeJob, + Bid = model.Bid, + PhisicalPersonsId = model.PhysicalPersonsId + }; + + context.Employees.Add(newEmployee); + context.SaveChanges(); } + // Обновить сотрудника public void Update(EmployeeViewModel model) { - throw new NotImplementedException(); + using var context = new EmployeeManagementDbContext(); + + var entity = context.Employees.FirstOrDefault(e => e.Id == model.Id); + + if (entity != null) + { + entity.NameJob = model.NameJob; + entity.StartJob = model.StartJob; + entity.EndJob = model.EndJob; + entity.PartTimeJob = model.PartTimeJob; + entity.Bid = model.Bid; + entity.PhisicalPersonsId = model.PhysicalPersonsId; + + context.SaveChanges(); + } + } + + // Удалить сотрудника + public void Delete(int id) + { + using var context = new EmployeeManagementDbContext(); + + var entity = context.Employees.FirstOrDefault(e => e.Id == id); + + if (entity != null) + { + context.Employees.Remove(entity); + context.SaveChanges(); + } } } }