Добавил подключение парсера
This commit is contained in:
parent
21461cc298
commit
02459d03f8
15
FichaBackend/Controllers/AdminController.cs
Normal file
15
FichaBackend/Controllers/AdminController.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace FichaBackend.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("v1/admin")]
|
||||
public class AdminController : ControllerBase
|
||||
{
|
||||
private readonly ILogger<MainController> _logger;
|
||||
|
||||
public AdminController(ILogger<MainController> logger)
|
||||
{
|
||||
_logger = logger;
|
||||
}
|
||||
}
|
@ -1,17 +1,31 @@
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using FichaBackend.Models;
|
||||
using FichaBackend.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace FichaBackend.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("[controller]")]
|
||||
[Route("v1/")]
|
||||
public class MainController : ControllerBase
|
||||
{
|
||||
|
||||
private readonly ILogger<MainController> _logger;
|
||||
private readonly IPublicDataService _publicDataService;
|
||||
|
||||
public MainController(ILogger<MainController> logger)
|
||||
public MainController(ILogger<MainController> logger, IPublicDataService publicDataService)
|
||||
{
|
||||
_logger = logger;
|
||||
_publicDataService = publicDataService;
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<City>> GetAllCity()
|
||||
{
|
||||
return await _publicDataService.GetAllCity();
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<Film>> GetAllMoviesInCityWithPuskinCard(string cityName)
|
||||
{
|
||||
return await _publicDataService.GetAllFilmsInCity(cityName);
|
||||
}
|
||||
|
||||
}
|
30
FichaBackend/Controllers/ParserController.cs
Normal file
30
FichaBackend/Controllers/ParserController.cs
Normal file
@ -0,0 +1,30 @@
|
||||
using FichaBackend.Models;
|
||||
using FichaBackend.Services;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace FichaBackend.Controllers;
|
||||
|
||||
[ApiController]
|
||||
[Route("v1/parser")]
|
||||
public class ParserController : ControllerBase
|
||||
{
|
||||
private readonly ILogger<MainController> _logger;
|
||||
private readonly IPublicDataService _publicDataService;
|
||||
|
||||
public ParserController(ILogger<MainController> logger, IPublicDataService publicDataService)
|
||||
{
|
||||
_logger = logger;
|
||||
_publicDataService = publicDataService;
|
||||
}
|
||||
|
||||
[HttpPost("UpdateFilms")]
|
||||
public async Task<ActionResult> UpdateFilmsInCity(List<FilmDto> films)
|
||||
{
|
||||
var val = films.First().City;
|
||||
if (films.Any(x => x.City != val))
|
||||
return BadRequest("All films must be in the same city");
|
||||
|
||||
await _publicDataService.UpdateFilmsInCity(films);
|
||||
return Ok("Films updated");
|
||||
}
|
||||
}
|
@ -1,9 +1,12 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using FichaBackend.Models;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace FichaBackend
|
||||
{
|
||||
public class DatabaseContext : DbContext
|
||||
{
|
||||
public DbSet<City> Cities { get; set; } = null!;
|
||||
public DbSet<Film> Films { get; set; } = null!;
|
||||
|
||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||
{
|
||||
|
@ -35,4 +35,6 @@
|
||||
</Content>
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
|
||||
</Project>
|
||||
|
11
FichaBackend/Models/City.cs
Normal file
11
FichaBackend/Models/City.cs
Normal file
@ -0,0 +1,11 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace FichaBackend.Models;
|
||||
|
||||
public class City
|
||||
{
|
||||
[Key]
|
||||
public long Id { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string ImageURL { get; set; }
|
||||
}
|
15
FichaBackend/Models/Film.cs
Normal file
15
FichaBackend/Models/Film.cs
Normal file
@ -0,0 +1,15 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
namespace FichaBackend.Models;
|
||||
|
||||
public class Film
|
||||
{
|
||||
[Key]
|
||||
public long Id { get; set; }
|
||||
public string FilmName { get; set; }
|
||||
public string Cinema { get; set; }
|
||||
public string Genre { get; set; }
|
||||
public string Time { get; set; }
|
||||
public float Price { get; set; }
|
||||
public City City { get; set; }
|
||||
}
|
11
FichaBackend/Models/FilmDto.cs
Normal file
11
FichaBackend/Models/FilmDto.cs
Normal file
@ -0,0 +1,11 @@
|
||||
namespace FichaBackend.Models;
|
||||
|
||||
public class FilmDto
|
||||
{
|
||||
public string City { get; set; }
|
||||
public string Cinema { get; set; }
|
||||
public string FilmName { get; set; }
|
||||
public string? Genre { get; set; }
|
||||
public string? Time { get; set; }
|
||||
public float? Price { get; set; }
|
||||
}
|
@ -1,4 +1,5 @@
|
||||
using FichaBackend;
|
||||
using FichaBackend.Services;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.OpenApi.Models;
|
||||
|
||||
@ -39,6 +40,8 @@ builder.Services.AddHealthChecks()
|
||||
.AddNpgSql(dbConString);
|
||||
|
||||
// Services
|
||||
builder.Services.AddScoped<IPublicDataService, PublicDataService>();
|
||||
|
||||
// cors
|
||||
builder.Services.AddCors(options =>
|
||||
{
|
||||
|
48
FichaBackend/Services/IPublicDataService.cs
Normal file
48
FichaBackend/Services/IPublicDataService.cs
Normal file
@ -0,0 +1,48 @@
|
||||
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 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.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.City = await _databaseContext.Cities.FirstOrDefaultAsync(x => x.Name == filmDto.City);
|
||||
await _databaseContext.Films.AddAsync(film);
|
||||
}
|
||||
|
||||
await _databaseContext.SaveChangesAsync();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user