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 = null) { var groups = await _spendingGroupRepo.GetList(search); return groups.Select(x => x.ToView()).ToList(); } public async Task Update(SpendingGroupDto model) { var group = await _spendingGroupRepo.Update(model); if (group == null) { throw new EntityNotFoundException("При обновлении не получилось найти группу"); } return group.ToView(); } }