57 lines
1.8 KiB
C#
57 lines
1.8 KiB
C#
using FichaBackend.Models;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace FichaBackend.Services;
|
|
|
|
public interface IPublicDataService
|
|
{
|
|
public Task<IEnumerable<City>> GetAllCity();
|
|
public Task<IEnumerable<Film>> GetAllFilmsInCity(string cityName);
|
|
public Task UpdateFilmsInCity(IEnumerable<FilmDto> films);
|
|
public bool CityExsist(string cityName);
|
|
}
|
|
|
|
public class PublicDataService : IPublicDataService
|
|
{
|
|
private readonly DatabaseContext _databaseContext;
|
|
|
|
public PublicDataService(DatabaseContext databaseContext)
|
|
{
|
|
_databaseContext = databaseContext;
|
|
}
|
|
|
|
public async Task<IEnumerable<City>> GetAllCity()
|
|
{
|
|
return await _databaseContext.Cities.ToListAsync();
|
|
}
|
|
|
|
public async Task<IEnumerable<Film>> GetAllFilmsInCity(string cityName)
|
|
{
|
|
return await _databaseContext.Films.Where(x => x.City.Name.ToLower() == cityName.ToLower()).ToListAsync();
|
|
}
|
|
|
|
public async Task UpdateFilmsInCity(IEnumerable<FilmDto> films)
|
|
{
|
|
await _databaseContext.Films.Where(x => x.City.Name == films.First().City).ForEachAsync(x => _databaseContext.Films.Remove(x));
|
|
|
|
foreach (var filmDto in films)
|
|
{
|
|
var film = new Film();
|
|
film.FilmName = filmDto.FilmName;
|
|
film.Cinema = filmDto.Cinema;
|
|
film.Price = filmDto.Price ?? 0;
|
|
film.Genre = filmDto.Genre;
|
|
film.Time = filmDto.Time;
|
|
film.ImageURL = filmDto.ImageURL;
|
|
film.City = await _databaseContext.Cities.FirstOrDefaultAsync(x => x.Name == filmDto.City);
|
|
await _databaseContext.Films.AddAsync(film);
|
|
}
|
|
|
|
await _databaseContext.SaveChangesAsync();
|
|
}
|
|
|
|
public bool CityExsist(string cityName)
|
|
{
|
|
return _databaseContext.Cities.Any(x => x.Name.ToLower() == cityName.ToLower());
|
|
}
|
|
} |