Files
2024-08-31 12:07:21 +03:00

144 lines
3.8 KiB
C#

using Lab9.Models;
using Lab9.Repositories;
using Microsoft.AspNetCore.Mvc;
namespace Lab9.Controllers
{
[Route("/")]
public class MainController : Controller
{
private readonly IRepository _repository;
public MainController(IRepository repository)
{
_repository = repository;
}
public IActionResult Index()
{
return View("Views/Index.cshtml");
}
[Route("login")]
[HttpGet]
public IActionResult Login()
{
return View("Views/Login.cshtml");
}
[Route("login")]
[HttpPost]
public IActionResult Login(string username, string password)
{
if (_repository.ValidateUser(username, password))
{
HttpContext.Session.SetString("username", username);
return RedirectToAction("admin");
}
ViewBag.Error = "Invalid username or password";
return View("Views/Login.cshtml");
}
[Route("logout")]
[HttpGet]
public IActionResult Logout()
{
HttpContext.Session.Remove("username");
return Redirect("/");
}
[Route("view")]
[HttpGet]
public IActionResult News()
{
return View("Views/View.cshtml", _repository.GetAllNews());
}
[Route("admin")]
[HttpGet]
public IActionResult Admin()
{
if (HttpContext.Session.GetString("username") == null)
{
return Redirect("/login");
}
return View("Views/Admin.cshtml",_repository.GetAllNews());
}
[Route("add")]
[HttpGet]
public IActionResult Add()
{
if (HttpContext.Session.GetString("username") == null)
{
return Redirect("/login");
}
return View("Views/Add.cshtml");
}
[Route("edit/{id}")]
[HttpGet]
public IActionResult Edit(int id)
{
if (HttpContext.Session.GetString("username") == null)
{
return Redirect("/login");
}
return View("Views/Edit.cshtml", _repository.GetNewsById(id));
}
[Route("edit")]
[HttpPost]
public IActionResult Edit(News news)
{
if (HttpContext.Session.GetString("username") == null)
{
return Redirect("/login");
}
if (_repository.UpdateNews(news))
{
return RedirectToAction("Admin");
}
ViewBag.Error = "Failed to update news";
return View("Views/Edit.cshtml", news);
}
[Route("add")]
[HttpPost]
public IActionResult Add(News news)
{
if (HttpContext.Session.GetString("username") == null)
{
return Redirect("/login");
}
if (_repository.InsertNews(news))
{
return RedirectToAction("Admin");
}
ViewBag.Error = "Failed to add news";
return View("Views/Add.cshtml", news);
}
[Route("getnews")]
[HttpPost]
public IActionResult GetNews(string category, string date)
{
if (category != null && date != null)
{
return Ok(_repository.GetAllNewsByCategoryAndDate(category, DateTime.Parse(date)));
}
if (category != null)
{
return Ok(_repository.GetAllNewsByCategory(category));
}
if (date != null)
{
return Ok(_repository.GetAllNewsByDate(DateTime.Parse(date)));
}
return Ok(_repository.GetAllNews());
}
}
}