diff --git a/back/Services/Domain/SpendingGroupService.cs b/back/Services/Domain/SpendingGroupService.cs new file mode 100644 index 0000000..005ee40 --- /dev/null +++ b/back/Services/Domain/SpendingGroupService.cs @@ -0,0 +1,63 @@ +using Contracts.DTO; +using Contracts.Mappers; +using Contracts.Repositories; +using Contracts.SearchModels; +using Contracts.ViewModels; +using Services.Support.Exceptions; + +namespace Contracts.Services; + +public class SpendingGroupService : ISpendingGroupService +{ + private readonly ISpendingGroupRepo _spendingGroupRepo; + + public SpendingGroupService(ISpendingGroupRepo spendingGroupRepo) + { + _spendingGroupRepo = spendingGroupRepo; + } + + public async Task Create(SpendingGroupDto model) + { + var group = await _spendingGroupRepo.Create(model); + return group.ToView(); + } + + public async Task Delete(SpendingGroupSearch search) + { + var group = await _spendingGroupRepo.Delete(search); + if (group == null) + { + throw new EntityNotFoundException("При удалении не получилось найти группу"); + } + + return group.ToView(); + } + + public async Task GetDetails(SpendingGroupSearch search) + { + var group = await _spendingGroupRepo.Get(search); + if (group == null) + { + throw new EntityNotFoundException("Не удалось найти группу по таким параметрам"); + } + + return group.ToView(); + } + + public async Task> GetList(SpendingGroupSearch search) + { + var groups = await _spendingGroupRepo.GetList(search); + return groups.Select(x => x.ToView()); + } + + public async Task Update(SpendingGroupDto model) + { + var group = await _spendingGroupRepo.Update(model); + if (group == null) + { + throw new EntityNotFoundException("При обновлении не получилось найти группу"); + } + + return group.ToView(); + } +} diff --git a/back/Services/Support/Exceptions/EntityNotFoundException.cs b/back/Services/Support/Exceptions/EntityNotFoundException.cs new file mode 100644 index 0000000..957b0b3 --- /dev/null +++ b/back/Services/Support/Exceptions/EntityNotFoundException.cs @@ -0,0 +1,10 @@ +namespace Services.Support.Exceptions; + +public class EntityNotFoundException : Exception +{ + public EntityNotFoundException(string message) + : base(message) { } + public EntityNotFoundException(string message, Exception innerException) + : base(message, innerException) { } + +} \ No newline at end of file diff --git a/back/Services/Support/Exceptions/UserNotFoundException.cs b/back/Services/Support/Exceptions/UserNotFoundException.cs index df152a1..77b2297 100644 --- a/back/Services/Support/Exceptions/UserNotFoundException.cs +++ b/back/Services/Support/Exceptions/UserNotFoundException.cs @@ -2,10 +2,11 @@ using Contracts.SearchModels; namespace Services.Support.Exceptions; -public class UserNotFoundException : Exception +public class UserNotFoundException : EntityNotFoundException { public UserNotFoundException(string message) : base(message) { } public UserNotFoundException(string message, Exception innerException) : base(message, innerException) { } + } \ No newline at end of file