using CandidateReviewContracts.BindingModels; using CandidateReviewContracts.ViewModels; using Microsoft.AspNetCore.Mvc; namespace CandidateReviewClientApp.Controllers { public class VacancyController : Controller { private readonly ILogger _logger; public VacancyController(ILogger logger) { _logger = logger; } [HttpGet] public IActionResult Vacancy(int? id) { if (APIClient.User == null) { return Redirect("~/Home/Enter"); } if (id.HasValue) { APIClient.Vacancy = APIClient.GetRequest($"api/vacancy/details?id={id}"); } var model = APIClient.Vacancy; return View(model); } [HttpGet] public IActionResult EditVacancy(int? id) { if (APIClient.User == null) { return Redirect("~/Home/Enter"); } if (!id.HasValue) { return View(new VacancyViewModel()); } var model = APIClient.GetRequest($"api/vacancy/details?id={id}"); return View(model); } [HttpPost] public void EditVacancy(VacancyBindingModel model) { if (APIClient.User == null) { throw new Exception("Доступно только авторизованным пользователям"); } if (model.Id != 0) { APIClient.PostRequest("api/vacancy/update", model); } else { APIClient.PostRequest("api/vacancy/create", model); if (APIClient.Company != null) { APIClient.Company?.Vacancies.Add(new VacancyViewModel { Id = model.Id, CompanyId = model.CompanyId, CreatedAt = model.CreatedAt, Description = model.Description, JobTitle = model.JobTitle, JobType = model.JobType, Requirements = model.Requirements, Responsibilities = model.Responsibilities, Salary = model.Salary, Status = model.Status, Tags = model.Tags }); } } Response.Redirect($"/Company/CompanyProfile/{model.CompanyId}"); } [HttpPost] public void Delete(int id) { if (APIClient.User == null) { throw new Exception("Доступно только авторизованным пользователям"); } APIClient.PostRequest($"api/vacancy/delete", new VacancyBindingModel { Id = id }); Response.Redirect("/Home/Index"); } } }