PIbd-21_Anisin_R.S._CourseW.../TravelAgency/TravelAgencyWebApp/Controllers/TourController.cs
2024-05-28 18:32:51 +04:00

127 lines
3.5 KiB
C#

using Microsoft.AspNetCore.Mvc;
using TravelAgencyContracts.BindingModels;
using TravelAgencyContracts.BusinessLogicsContracts;
using TravelAgencyContracts.SearchModels;
namespace TravelAgencyWebApp.Controllers
{
public class TourController : Controller
{
private readonly ILogger<TourController> _logger;
private readonly ITourLogic _tourLogic;
public TourController(ILogger<TourController> logger, ITourLogic tourLogic)
{
_logger = logger;
_tourLogic = tourLogic;
}
[HttpGet]
public IActionResult Tours()
{
if (LoggedinUser.User == null)
{
return Redirect("~/Home/Enter");
}
return View(_tourLogic.ReadList(new TourSearchModel
{
UserId = LoggedinUser.User.Id,
}));
}
[HttpGet]
public IActionResult CreateTour()
{
if (LoggedinUser.User == null)
{
return Redirect("~/Home/Enter");
}
return View();
}
[HttpPost]
public void CreateTour(string tourName, string tourDescription, double price, DateTime tourDate)
{
if (LoggedinUser.User == null)
{
throw new Exception("Необходимо авторизоваться!");
}
if (string.IsNullOrEmpty(tourName) || string.IsNullOrEmpty(tourDescription) || price <= 0 || tourDate == DateTime.MinValue)
{
throw new Exception("Введены не все данные!");
}
_tourLogic.Create(new TourBindingModel
{
TourName = tourName,
TourDescription = tourDescription,
Price = price,
TourDate = tourDate,
UserId = LoggedinUser.User.Id
});
Response.Redirect("/Tour/Tours");
}
[HttpGet]
public IActionResult UpdateTour(int id)
{
if (LoggedinUser.User == null)
{
return Redirect("~/Home/Enter");
}
return View(_tourLogic.ReadElement(new TourSearchModel
{
Id = id
}));
}
[HttpPost]
public void UpdateTour(int id, string tourName, string tourDescription, double price, DateTime tourDate)
{
if (LoggedinUser.User == null)
{
throw new Exception("Необходимо авторизоваться!");
}
if (string.IsNullOrEmpty(tourName) || string.IsNullOrEmpty(tourDescription) || price <= 0 || tourDate == DateTime.MinValue)
{
throw new Exception("Введены не все данные!");
}
_tourLogic.Update(new TourBindingModel
{
Id = id,
TourName = tourName,
TourDescription = tourDescription,
Price = price,
TourDate = tourDate,
UserId = LoggedinUser.User.Id
});
Response.Redirect("/Tour/Tours");
}
[HttpPost]
public void DeleteTour(int id)
{
if (LoggedinUser.User == null)
{
throw new Exception("Необходимо авторизоваться!");
}
_tourLogic.Delete(new TourBindingModel
{
Id = id
});
Response.Redirect("/Tour/Tours");
}
}
}