74 lines
2.2 KiB
C#
74 lines
2.2 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|