CourseWork_KPO/CandidateReviewClientApp/Controllers/CriterionController.cs

80 lines
2.8 KiB
C#

using CandidateReviewClientApp.Models;
using CandidateReviewContracts.BindingModels;
using CandidateReviewContracts.ViewModels;
using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using System.Diagnostics;
namespace CandidateReviewClientApp.Controllers
{
public class CriterionController : Controller
{
private readonly ILogger<CriterionController> _logger;
public CriterionController(ILogger<CriterionController> logger)
{
_logger = logger;
}
[HttpPost]
public async Task<IActionResult> AddCriterion(string name)
{
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
try
{
if (string.IsNullOrEmpty(name))
{
throw new Exception("Название критерия не может быть пустым");
}
await APIClient.PostRequestAsynchron("api/criterion/create", new CriterionBindingModel
{
Name = name
});
return Redirect("/Criterion/ManageCriterions");
}
catch (Exception ex)
{
return RedirectToAction("Error", new { errorMessage = $"{ex.Message}", returnUrl });
}
}
[HttpGet]
public async Task<IActionResult> ManageCriterions()
{
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
try
{
var criterions = await APIClient.GetRequestAsync<List<CriterionViewModel>>("api/criterion/list");
return View(criterions);
}
catch (Exception ex)
{
return RedirectToAction("Error", new { errorMessage = $"{ex.Message}", returnUrl });
}
}
public IActionResult Delete(int id)
{
string returnUrl = HttpContext.Request.Headers["Referer"].ToString();
try
{
APIClient.PostRequest($"api/criterion/delete", new CriterionBindingModel { Id = id });
return Redirect("~/Criterion/ManageCriterions");
}
catch (Exception ex)
{
return RedirectToAction("Error", new { errorMessage = $"{ex.Message}", returnUrl });
}
}
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error(string errorMessage, string returnUrl)
{
ViewBag.ErrorMessage = errorMessage ?? "Произошла непредвиденная ошибка.";
ViewBag.ReturnUrl = returnUrl;
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}