Добавил гидов и музеи
This commit is contained in:
parent
577fa15fd7
commit
53661c3b55
@ -1,4 +1,6 @@
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using FichaBackend.Models.DTO;
|
||||||
|
using FichaBackend.Services;
|
||||||
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
namespace FichaBackend.Controllers;
|
namespace FichaBackend.Controllers;
|
||||||
|
|
||||||
@ -7,9 +9,61 @@ namespace FichaBackend.Controllers;
|
|||||||
public class AdminController : ControllerBase
|
public class AdminController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly ILogger<MainController> _logger;
|
private readonly ILogger<MainController> _logger;
|
||||||
|
private readonly IPublicDataService _publicDataService;
|
||||||
|
private readonly IAdminService _adminService;
|
||||||
|
|
||||||
public AdminController(ILogger<MainController> logger)
|
public AdminController(ILogger<MainController> logger, IPublicDataService publicDataService, IAdminService adminService)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
_publicDataService = publicDataService;
|
||||||
|
_adminService = adminService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Добавляет музей
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="museumDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("AddMuseum")]
|
||||||
|
public async Task<ActionResult> AddMuseum(MuseumDto museumDto)
|
||||||
|
{
|
||||||
|
await _adminService.AddMuseum(museumDto);
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Добавляет гида
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="guideDto"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpPost("AddGuide")]
|
||||||
|
public async Task<ActionResult> AddGuide(GuideDto guideDto)
|
||||||
|
{
|
||||||
|
await _adminService.AddGuidePerson(guideDto);
|
||||||
|
return Ok();
|
||||||
|
}
|
||||||
|
|
||||||
|
// GET
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получаем всех гидов
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("GetAllGuides")]
|
||||||
|
public async Task<ActionResult> GetAllGuides()
|
||||||
|
{
|
||||||
|
return Ok(await _publicDataService.GetAllGuides());
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получаем все музеи
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("GetAllMuseum")]
|
||||||
|
public async Task<ActionResult> GetAllMuseum()
|
||||||
|
{
|
||||||
|
return Ok(await _publicDataService.GetAllMuseum());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
@ -1,4 +1,5 @@
|
|||||||
using FichaBackend.Models;
|
using FichaBackend.Models;
|
||||||
|
using FichaBackend.Models.DTO;
|
||||||
using FichaBackend.Services;
|
using FichaBackend.Services;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
@ -24,12 +25,20 @@ public class MainController : ControllerBase
|
|||||||
return await _publicDataService.GetAllCity();
|
return await _publicDataService.GetAllCity();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получаем карточки с вопросами
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
[HttpGet("GetAllCards")]
|
[HttpGet("GetAllCards")]
|
||||||
public async Task<IEnumerable<CardQuestion>> GetAllCards()
|
public async Task<IEnumerable<CardQuestion>> GetAllCards()
|
||||||
{
|
{
|
||||||
return await _publicDataService.GetAllCards();
|
return await _publicDataService.GetAllCards();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получаем все фильмы в городе по пушкинской карте
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
[HttpGet("GetAllFilmsInCity/{cityName}")]
|
[HttpGet("GetAllFilmsInCity/{cityName}")]
|
||||||
public async Task<ActionResult<IEnumerable<FilmDto>>> GetAllFilmsInCityWithPuskinCard(string cityName)
|
public async Task<ActionResult<IEnumerable<FilmDto>>> GetAllFilmsInCityWithPuskinCard(string cityName)
|
||||||
{
|
{
|
||||||
@ -39,13 +48,30 @@ public class MainController : ControllerBase
|
|||||||
return Ok(await _publicDataService.GetAllFilmsInCity(cityName));
|
return Ok(await _publicDataService.GetAllFilmsInCity(cityName));
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("GetAllMuseumsInCity/{cityName}")]
|
/// <summary>
|
||||||
public async Task<ActionResult<IEnumerable<Museum>>> GetAllMuseumsInCity(string cityName)
|
/// Получаем всех гидов, которые работают в определённом городе
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("GetAllGuides/{cityName}")]
|
||||||
|
public async Task<ActionResult> GetAllGuides(string cityName)
|
||||||
{
|
{
|
||||||
if (!_publicDataService.CityExsist(cityName))
|
if(!_publicDataService.CityExsist(cityName))
|
||||||
return BadRequest("City does not exsist");
|
return BadRequest("City does not exsist");
|
||||||
|
|
||||||
return Ok(await _publicDataService.GetAllMuseumsInCity(cityName));
|
return Ok(await _publicDataService.GetAllGuides(cityName));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Получаем все музеи из одного города
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[HttpGet("GetAllMuseum/{cityName}")]
|
||||||
|
public async Task<ActionResult> GetAllMuseumFromCity(string cityName)
|
||||||
|
{
|
||||||
|
if(!_publicDataService.CityExsist(cityName))
|
||||||
|
return BadRequest("City does not exsist");
|
||||||
|
|
||||||
|
return Ok(await _publicDataService.GetAllMuseum(cityName));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -1,4 +1,4 @@
|
|||||||
using FichaBackend.Models;
|
using FichaBackend.Models.DTO;
|
||||||
using FichaBackend.Services;
|
using FichaBackend.Services;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
@ -17,6 +17,11 @@ public class ParserController : ControllerBase
|
|||||||
_publicDataService = publicDataService;
|
_publicDataService = publicDataService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Удаляет старые фильмы во всём городе и добавляет новые
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="films"></param>
|
||||||
|
/// <returns></returns>
|
||||||
[HttpPost("UpdateFilms")]
|
[HttpPost("UpdateFilms")]
|
||||||
public async Task<ActionResult> UpdateFilmsInCity(List<FilmDto> films)
|
public async Task<ActionResult> UpdateFilmsInCity(List<FilmDto> films)
|
||||||
{
|
{
|
||||||
|
@ -9,6 +9,7 @@ namespace FichaBackend
|
|||||||
public DbSet<Film> Films { get; set; } = null!;
|
public DbSet<Film> Films { get; set; } = null!;
|
||||||
public DbSet<CardQuestion> CardQuestions { get; set; } = null!;
|
public DbSet<CardQuestion> CardQuestions { get; set; } = null!;
|
||||||
public DbSet<Museum> Museums { get; set; } = null!;
|
public DbSet<Museum> Museums { get; set; } = null!;
|
||||||
|
public DbSet<Guide> Guides { get; set; } = null!;
|
||||||
|
|
||||||
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
protected override void OnModelCreating(ModelBuilder modelBuilder)
|
||||||
{
|
{
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
<Content Include="..\.dockerignore">
|
<Content Include="..\.dockerignore">
|
||||||
<Link>.dockerignore</Link>
|
<Link>.dockerignore</Link>
|
||||||
</Content>
|
</Content>
|
||||||
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
namespace FichaBackend.Models;
|
namespace FichaBackend.Models.DTO;
|
||||||
|
|
||||||
public class FilmDto
|
public class FilmDto
|
||||||
{
|
{
|
10
FichaBackend/Models/DTO/GuideDto.cs
Normal file
10
FichaBackend/Models/DTO/GuideDto.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
namespace FichaBackend.Models.DTO;
|
||||||
|
|
||||||
|
public class GuideDto
|
||||||
|
{
|
||||||
|
public IEnumerable<string> City { get; set; }
|
||||||
|
public string FullName { get; set; }
|
||||||
|
public string PhoneNumber { get; set; }
|
||||||
|
public string? ContactUrl { get; set; }
|
||||||
|
public float Rating { get; set; } = 0;
|
||||||
|
}
|
@ -1,12 +1,13 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
namespace FichaBackend.Models;
|
namespace FichaBackend.Models.DTO;
|
||||||
|
|
||||||
public class MuseumDto
|
public class MuseumDto
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
public string City { get; set; }
|
public string City { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
public string? Address { get; set; }
|
||||||
public double Longtitude { get; set; }
|
public double Longtitude { get; set; }
|
||||||
public double Latitude { get; set; }
|
public double Latitude { get; set; }
|
||||||
public float? Price { get; set; }
|
public float? Price { get; set; }
|
14
FichaBackend/Models/Guide.cs
Normal file
14
FichaBackend/Models/Guide.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
|
||||||
|
namespace FichaBackend.Models;
|
||||||
|
|
||||||
|
public class Guide
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
public long Id { get; set; }
|
||||||
|
public IEnumerable<City> City { get; set; }
|
||||||
|
public string FullName { get; set; }
|
||||||
|
public string PhoneNumber { get; set; }
|
||||||
|
public string? ContactUrl { get; set; }
|
||||||
|
public float Rating { get; set; } = 0;
|
||||||
|
}
|
@ -8,6 +8,7 @@ public class Museum
|
|||||||
public long Id { get; set; }
|
public long Id { get; set; }
|
||||||
public City City { get; set; }
|
public City City { get; set; }
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
|
public string? Address { get; set; }
|
||||||
public double Longtitude { get; set; }
|
public double Longtitude { get; set; }
|
||||||
public double Latitude { get; set; }
|
public double Latitude { get; set; }
|
||||||
public float? Price { get; set; }
|
public float? Price { get; set; }
|
||||||
|
@ -44,6 +44,7 @@ builder.Services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
|
|||||||
|
|
||||||
// Services
|
// Services
|
||||||
builder.Services.AddScoped<IPublicDataService, PublicDataService>();
|
builder.Services.AddScoped<IPublicDataService, PublicDataService>();
|
||||||
|
builder.Services.AddScoped<IAdminService, AdminService>();
|
||||||
|
|
||||||
// cors
|
// cors
|
||||||
builder.Services.AddCors(options =>
|
builder.Services.AddCors(options =>
|
||||||
|
61
FichaBackend/Services/IAdminService.cs
Normal file
61
FichaBackend/Services/IAdminService.cs
Normal file
@ -0,0 +1,61 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using FichaBackend.Models;
|
||||||
|
using FichaBackend.Models.DTO;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
|
namespace FichaBackend.Services;
|
||||||
|
|
||||||
|
public interface IAdminService
|
||||||
|
{
|
||||||
|
public Task AddMuseum(MuseumDto museumDto);
|
||||||
|
public Task<string> AddGuidePerson(GuideDto guideDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
public class AdminService : IAdminService
|
||||||
|
{
|
||||||
|
private readonly DatabaseContext _databaseContext;
|
||||||
|
private readonly IMapper _mapper;
|
||||||
|
|
||||||
|
public AdminService(DatabaseContext databaseContext, IMapper mapper)
|
||||||
|
{
|
||||||
|
_databaseContext = databaseContext;
|
||||||
|
_mapper = mapper;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task AddMuseum(MuseumDto museumDto)
|
||||||
|
{
|
||||||
|
Museum m = new();
|
||||||
|
m.Name = museumDto.Name;
|
||||||
|
City c = await _databaseContext.Cities.FirstOrDefaultAsync(x => x.Name.ToLower() == museumDto.City.ToLower());
|
||||||
|
if (c==null)
|
||||||
|
return;
|
||||||
|
m.City = c;
|
||||||
|
m.Price = museumDto.Price;
|
||||||
|
m.Latitude = museumDto.Latitude;
|
||||||
|
m.Longtitude = museumDto.Longtitude;
|
||||||
|
m.Address = museumDto.Address;
|
||||||
|
await _databaseContext.Museums.AddAsync(m);
|
||||||
|
await _databaseContext.SaveChangesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string> AddGuidePerson(GuideDto guideDto)
|
||||||
|
{
|
||||||
|
Guide g = new();
|
||||||
|
g.City = new List<City>();
|
||||||
|
foreach (var city in guideDto.City)
|
||||||
|
{
|
||||||
|
var c = await _databaseContext.Cities.FirstOrDefaultAsync(x => x.Name.ToLower() == city.ToLower());
|
||||||
|
if (c==null)
|
||||||
|
return $"City {city} not exist";
|
||||||
|
g.City.Append(c);
|
||||||
|
}
|
||||||
|
g.Rating = guideDto.Rating;
|
||||||
|
g.PhoneNumber = guideDto.PhoneNumber;
|
||||||
|
g.ContactUrl = guideDto.ContactUrl;
|
||||||
|
g.FullName = guideDto.FullName;
|
||||||
|
|
||||||
|
await _databaseContext.Guides.AddAsync(g);
|
||||||
|
await _databaseContext.SaveChangesAsync();
|
||||||
|
return "OK";
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,6 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using FichaBackend.Models;
|
using FichaBackend.Models;
|
||||||
|
using FichaBackend.Models.DTO;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
|
||||||
namespace FichaBackend.Services;
|
namespace FichaBackend.Services;
|
||||||
@ -12,6 +13,8 @@ public interface IPublicDataService
|
|||||||
public Task<IEnumerable<Museum>> GetAllMuseumsInCity(string cityName);
|
public Task<IEnumerable<Museum>> GetAllMuseumsInCity(string cityName);
|
||||||
public Task UpdateFilmsInCity(IEnumerable<FilmDto> films);
|
public Task UpdateFilmsInCity(IEnumerable<FilmDto> films);
|
||||||
public bool CityExsist(string cityName);
|
public bool CityExsist(string cityName);
|
||||||
|
public Task<IEnumerable<MuseumDto>> GetAllMuseum(string cityName = "");
|
||||||
|
public Task<IEnumerable<GuideDto>> GetAllGuides(string cityName = "");
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PublicDataService : IPublicDataService
|
public class PublicDataService : IPublicDataService
|
||||||
@ -72,4 +75,18 @@ public class PublicDataService : IPublicDataService
|
|||||||
{
|
{
|
||||||
return _databaseContext.Cities.Any(x => x.Name.ToLower() == cityName.ToLower());
|
return _databaseContext.Cities.Any(x => x.Name.ToLower() == cityName.ToLower());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<IEnumerable<MuseumDto>> GetAllMuseum(string cityName = "")
|
||||||
|
{
|
||||||
|
IEnumerable<Museum> museum = cityName == "" ? await _databaseContext.Museums.ToListAsync() :
|
||||||
|
_databaseContext.Museums.Where(x => x.City.Name.ToLower() == cityName.ToLower());
|
||||||
|
return _mapper.Map<IEnumerable<Museum>, IEnumerable<MuseumDto>>(museum);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IEnumerable<GuideDto>> GetAllGuides(string cityName = "")
|
||||||
|
{
|
||||||
|
IEnumerable<Guide> guides = cityName == "" ? await _databaseContext.Guides.ToListAsync() :
|
||||||
|
_databaseContext.Guides.Where(x => x.City.Any(y => y.Name.ToLower() == cityName.ToLower()));
|
||||||
|
return _mapper.Map<IEnumerable<Guide>, IEnumerable<GuideDto>>(guides);
|
||||||
|
}
|
||||||
}
|
}
|
@ -1,5 +1,6 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using FichaBackend.Models;
|
using FichaBackend.Models;
|
||||||
|
using FichaBackend.Models.DTO;
|
||||||
|
|
||||||
namespace FichaBackend.Utils;
|
namespace FichaBackend.Utils;
|
||||||
|
|
||||||
@ -11,5 +12,7 @@ public class MappingProfiles : Profile
|
|||||||
CreateMap<Film, FilmDto>();
|
CreateMap<Film, FilmDto>();
|
||||||
CreateMap<Museum, MuseumDto>();
|
CreateMap<Museum, MuseumDto>();
|
||||||
CreateMap<MuseumDto, Museum>();
|
CreateMap<MuseumDto, Museum>();
|
||||||
|
CreateMap<Guide, GuideDto>();
|
||||||
|
CreateMap<GuideDto, Guide>();
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user