Добавил автомаппер

This commit is contained in:
Sergey Karmanov 2023-08-25 09:54:28 +03:00
parent e5cc147bfa
commit 4d62eafccb
Signed by: serega404
GPG Key ID: B6AD49C8C835460C
5 changed files with 31 additions and 7 deletions

View File

@ -31,7 +31,7 @@ public class MainController : ControllerBase
} }
[HttpGet("GetAllMoviesInCity/{cityName}")] [HttpGet("GetAllMoviesInCity/{cityName}")]
public async Task<IEnumerable<Film>> GetAllMoviesInCityWithPuskinCard(string cityName) public async Task<IEnumerable<FilmDto>> GetAllMoviesInCityWithPuskinCard(string cityName)
{ {
return await _publicDataService.GetAllFilmsInCity(cityName); return await _publicDataService.GetAllFilmsInCity(cityName);
} }

View File

@ -18,6 +18,8 @@
<ItemGroup> <ItemGroup>
<PackageReference Include="AspNetCore.HealthChecks.NpgSql" Version="6.0.2" /> <PackageReference Include="AspNetCore.HealthChecks.NpgSql" Version="6.0.2" />
<PackageReference Include="AutoMapper" Version="12.0.1" />
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.9" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9"> <PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.9">
<PrivateAssets>all</PrivateAssets> <PrivateAssets>all</PrivateAssets>
@ -37,4 +39,5 @@
</Project> </Project>

View File

@ -39,6 +39,9 @@ builder.Services.AddDbContext<DatabaseContext>(options =>
builder.Services.AddHealthChecks() builder.Services.AddHealthChecks()
.AddNpgSql(dbConString); .AddNpgSql(dbConString);
// AutoMapper
builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
// Services // Services
builder.Services.AddScoped<IPublicDataService, PublicDataService>(); builder.Services.AddScoped<IPublicDataService, PublicDataService>();

View File

@ -1,4 +1,5 @@
using FichaBackend.Models; using AutoMapper;
using FichaBackend.Models;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
namespace FichaBackend.Services; namespace FichaBackend.Services;
@ -6,7 +7,7 @@ namespace FichaBackend.Services;
public interface IPublicDataService public interface IPublicDataService
{ {
public Task<IEnumerable<City>> GetAllCity(); public Task<IEnumerable<City>> GetAllCity();
public Task<IEnumerable<Film>> GetAllFilmsInCity(string cityName); public Task<IEnumerable<FilmDto>> GetAllFilmsInCity(string cityName);
public Task<IEnumerable<CardQuestion>> GetAllCards(); public Task<IEnumerable<CardQuestion>> GetAllCards();
public Task UpdateFilmsInCity(IEnumerable<FilmDto> films); public Task UpdateFilmsInCity(IEnumerable<FilmDto> films);
public bool CityExsist(string cityName); public bool CityExsist(string cityName);
@ -15,10 +16,12 @@ public interface IPublicDataService
public class PublicDataService : IPublicDataService public class PublicDataService : IPublicDataService
{ {
private readonly DatabaseContext _databaseContext; private readonly DatabaseContext _databaseContext;
public readonly IMapper _mapper;
public PublicDataService(DatabaseContext databaseContext) public PublicDataService(DatabaseContext databaseContext, IMapper mapper)
{ {
_databaseContext = databaseContext; _databaseContext = databaseContext;
_mapper = mapper;
} }
public async Task<IEnumerable<City>> GetAllCity() public async Task<IEnumerable<City>> GetAllCity()
@ -26,9 +29,11 @@ public class PublicDataService : IPublicDataService
return await _databaseContext.Cities.ToListAsync(); return await _databaseContext.Cities.ToListAsync();
} }
public async Task<IEnumerable<Film>> GetAllFilmsInCity(string cityName) public async Task<IEnumerable<FilmDto>> GetAllFilmsInCity(string cityName)
{ {
return await _databaseContext.Films.Where(x => x.City.Name.ToLower() == cityName.ToLower()).ToListAsync(); var films = await _databaseContext.Films.Where(x => x.City.Name.ToLower() == cityName.ToLower()).ToListAsync();
var destinations = _mapper.Map<List<Film>, List<FilmDto>>(films);
return destinations;
} }
public async Task<IEnumerable<CardQuestion>> GetAllCards() public async Task<IEnumerable<CardQuestion>> GetAllCards()
@ -50,7 +55,7 @@ public class PublicDataService : IPublicDataService
film.Time = filmDto.Time; film.Time = filmDto.Time;
film.ImageURL = filmDto.ImageURL; film.ImageURL = filmDto.ImageURL;
film.Url = filmDto.Url; film.Url = filmDto.Url;
film.City = await _databaseContext.Cities.FirstOrDefaultAsync(x => x.Name == filmDto.City); film.City = await _databaseContext.Cities.FirstAsync(x => x.Name.ToLower() == filmDto.City.ToLower());
await _databaseContext.Films.AddAsync(film); await _databaseContext.Films.AddAsync(film);
} }

View File

@ -0,0 +1,13 @@
using AutoMapper;
using FichaBackend.Models;
namespace FichaBackend.Utils;
public class MappingProfiles : Profile
{
public MappingProfiles()
{
CreateMap<FilmDto, Film>();
CreateMap<Film, FilmDto>();
}
}