KPO_Course_Work/Address Directory/Services/StreetService.cs

74 lines
2.2 KiB
C#
Raw Permalink Normal View History

2024-12-09 03:27:18 +04:00
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<StreetDto> CreateAsync(StreetDtoForCreate streetDto)
{
var street = _mapper.Map<Street>(streetDto);
await _streetRepository.AddAsync(street);
return _mapper.Map<StreetDto>(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<List<StreetDto>> GetAllAsync()
{
var streets = await _streetRepository.GetAllAsync();
return _mapper.Map<List<StreetDto>>(streets);
}
public async Task<StreetDto> GetByIdAsync(Guid id)
{
var street = await _streetRepository.GetByIdAsync(id);
if (street == null)
{
throw new KeyNotFoundException("Street not found.");
}
return _mapper.Map<StreetDto>(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);
}
}
}