using AutoMapper; using Contracts; using Domain.Entities; using Domain.Repository; using Services.Abstractions; namespace Services { public class StreetService : IStreetService { private readonly IStreetRepository _streetRepository; private readonly IMapper _mapper; public StreetService(IStreetRepository streetRepository, IMapper mapper) { _streetRepository = streetRepository; _mapper = mapper; } public async Task CreateAsync(StreetDtoForCreate streetDto) { var street = _mapper.Map(streetDto); await _streetRepository.AddAsync(street); return _mapper.Map(street); } public async Task DeleteAsync(Guid streetId) { var street = await _streetRepository.GetByIdAsync(streetId); if (street == null) { throw new KeyNotFoundException("Street not found"); } await _streetRepository.DeleteAsync(street); } public async Task> GetAllAsync() { var streets = await _streetRepository.GetAllAsync(); return _mapper.Map>(streets); } public async Task GetByIdAsync(Guid id) { var street = await _streetRepository.GetByIdAsync(id); if (street == null) { throw new KeyNotFoundException("Street not found."); } return _mapper.Map(street); } public async Task UpdateAsync(Guid streetId, StreetDtoForUpdate streetDto) { var street = await _streetRepository.GetByIdAsync(streetId); if (street == null) { throw new KeyNotFoundException("Street not found."); } street.Name = streetDto.Name; street.Index = streetDto.Index; street.TaxCode = streetDto.TaxCode; street.OkatoCode = streetDto.OkatoCode; street.CityId = streetDto.CityId; await _streetRepository.UpdateAsync(street); } } }