using HospitalClientApp.Models; using HospitalContracts.BindingModels; using HospitalContracts.SearchModels; using HospitalContracts.ViewModels; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Hosting; using System.Diagnostics; using System.Diagnostics.Metrics; using System.Reflection; using System.Xml.Linq; namespace HospitalClientApp.Controllers { public class HomeController : Controller { private readonly ILogger _logger; public HomeController(ILogger logger) { _logger = logger; } public IActionResult Index() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(); } [HttpGet] public IActionResult Enter() { return View(); } [HttpPost] public void Enter(string login, string password) { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password)) { throw new Exception("Введите логин и пароль"); } APIClient.Client = APIClient.GetRequest($"api/client/login?login={login}&password={password}"); if (APIClient.Client == null) { throw new Exception("Неверный логин/пароль"); } Response.Redirect("Index"); } [HttpGet] public IActionResult Privacy() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(APIClient.Client); } [HttpPost] public void Privacy(string login, string password, string fio) { if (APIClient.Client == null) { throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); } if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(fio)) { throw new Exception("Введите логин, пароль и ФИО"); } APIClient.PostRequest("api/client/updatedata", new ClientBindingModel { Id = APIClient.Client.Id, ClientFIO = fio, Email = login, Password = password }); APIClient.Client.ClientFIO = fio; APIClient.Client.Email = login; APIClient.Client.Password = password; Response.Redirect("Index"); } [HttpGet] public IActionResult Register() { return View(); } [HttpPost] public void Register(string login, string password, string fio) { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(fio)) { throw new Exception("Введите логин, пароль и ФИО"); } APIClient.PostRequest("api/client/register", new ClientBindingModel { ClientFIO = fio, Email = login, Password = password }); Response.Redirect("Enter"); return; } //ОТЧЕТ// [HttpGet] public IActionResult ReportWordExel() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(APIClient.GetRequest>($"api/main/getmedicineslist?clientId={APIClient.Client.Id}")); } [HttpPost] public void ReportWordExel(int[] Ids, string type) { if (APIClient.Client == null) { throw new Exception("Вы как суда попали? Суда вход только авторизованным"); } if (Ids.Length <= 0) { throw new Exception("Количество должно быть больше 0"); } if (string.IsNullOrEmpty(type)) { throw new Exception("Неверный тип отчета"); } List res = new List(); foreach (var item in Ids) { res.Add(item); } if (type == "docx") { APIClient.PostRequest("api/report/createreporttowordfile", new ReportBindingModel { Ids = res, FileName = "E:\\ReportsCourseWork\\wordfile.docx" }); Response.Redirect("GetWordFile"); } else { APIClient.PostRequest("api/report/createreporttoexcelfile", new ReportBindingModel { Ids = res, FileName = "E:\\ReportsCourseWork\\excelfile.xlsx" }); Response.Redirect("GetExcelFile"); } } [HttpGet] public IActionResult GetWordFile() { return new PhysicalFileResult("E:\\ReportsCourseWork\\wordfile.docx", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"); } public IActionResult GetPdfFile() { return new PhysicalFileResult("E:\\ReportsCourseWork\\pdffile.pdf", "application/pdf"); } public IActionResult GetExcelFile() { return new PhysicalFileResult("E:\\ReportsCourseWork\\excelfile.xlsx", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); } /// /// ПРОЦЕДУРЫ /// /// public IActionResult ListProcedures() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(APIClient.GetRequest>($"api/main/GetProcedureList?ClientId={APIClient.Client.Id}")); } public IActionResult CreateProcedure(int? id) { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Medicines = APIClient.GetRequest>("api/main/getmedicineslist"); if (!id.HasValue) { return View(new ProceduresViewModel()); } var model = APIClient.GetRequest($"api/main/getprocedure?id={id}"); return View(model); } [HttpPost] public void CreateProcedure(ProceduresBindingModel model, int? id, string procedurename, string proceduretype ) { if (APIClient.Client == null) { throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); } if (model.Id != 0) { APIClient.PostRequest("api/main/updateprocedure", new ProceduresBindingModel { Id = id.Value, ProceduresName = procedurename, Type = proceduretype }); } else { APIClient.PostRequest("api/main/createprocedure", new ProceduresBindingModel { ClientId = APIClient.Client.Id, ProceduresName = procedurename, Type = proceduretype }); } Response.Redirect("ListProcedures"); } [HttpGet] public Tuple? GetProcedure(int procedureId) { if (APIClient.Client == null) { throw new Exception("Необходима авторизация"); } var result = APIClient.GetRequest>>>($"api/main/getprocedure?procedureId={procedureId}"); if (result == null) { return default; } string table = ""; for (int i = 0; i < result.Item2.Count; i++) { var medicinesName = result.Item2[i].Item1; table += ""; table += $"{medicinesName}"; table += ""; } return Tuple.Create(result.Item1, table); } public IActionResult AddMedicineToProcedure() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(Tuple.Create(APIClient.GetRequest>($"api/main/getprocedurelist?clientId={APIClient.Client.Id}"), APIClient.GetRequest>($"api/main/getmedicinelist?clientId={APIClient.Client.Id}"))); } [HttpPost] public void AddMedicineToProcedure(int procedure, int[] medicine) { if (APIClient.Client == null) { throw new Exception("Необходима авторизация"); } for (int i = 0; i < medicine.Length; i++) { APIClient.PostRequest("api/main/AddMedicineToProcedure", Tuple.Create( new ProceduresSearchModel() { Id = procedure }, new MedicinesViewModel() { Id = medicine[i] } )); } Response.Redirect("ListConferences"); } [HttpPost] public void DeleteProcedure(int procedure) { if (APIClient.Client == null) { throw new Exception("Доступно только авторизованным пользователям"); } APIClient.PostRequest($"api/main/DeleteProcedure", new ProceduresBindingModel { Id = procedure }); Response.Redirect("ListProcedures"); } public IActionResult DeleteProcedure() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Procedures = APIClient.GetRequest>($"api/main/getprocedurelist?clientId={APIClient.Client.Id}"); return View(); } public IActionResult UpdateProcedure() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Procedures = APIClient.GetRequest>($"api/main/getprocedurelist?clientId={APIClient.Client.Id}"); return View(); } [HttpPost] public void UpdateProcedure(int procedure, string procedurename, string type) { if (APIClient.Client == null) { throw new Exception("Необходима авторизация"); } if (string.IsNullOrEmpty(procedurename)) { throw new Exception("Название не может быть пустым"); } if (string.IsNullOrEmpty(type)) { throw new Exception("Тип не может быть пустым"); } APIClient.PostRequest("api/main/UpdateProcedure", new ProceduresBindingModel { Id = procedure, ProceduresName = procedurename, Type = type, ClientId = APIClient.Client.Id }); Response.Redirect("ListProcedures"); } /// /// ЛЕКАРСТВА /// /// public IActionResult ListMedicines() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(APIClient.GetRequest>($"api/main/getmedicineslist?clientId={APIClient.Client.Id}")); } public IActionResult CreateMedicine() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(); } [HttpPost] public void CreateMedicine(string namemedicine, string group) { if (APIClient.Client == null) { throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); } APIClient.PostRequest("api/main/createmedicine", new MedicinesBindingModel { ClientId = APIClient.Client.Id, MedicinesName = namemedicine, Group = group }); Response.Redirect("ListMedicines"); } [HttpGet] public MedicinesViewModel? GetMedicine(int medicineId) { if (APIClient.Client == null) { throw new Exception("Необходима авторизация"); } var result = APIClient.GetRequest($"api/main/getmedicine?medicineid={medicineId}"); if (result == null) { return default; } var medicinename = result.MedicinesName; var group = result.Group; return result; } [HttpPost] public void DeleteMedicine(int medicine) { if (APIClient.Client == null) { throw new Exception("Доступно только авторизованным пользователям"); } APIClient.PostRequest($"api/main/DeleteMedicine", new ProceduresBindingModel { Id = medicine }); Response.Redirect("ListMedicines"); } public IActionResult DeleteMedicine() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Medicines = APIClient.GetRequest>($"api/main/GetMedicinesList?clientId={APIClient.Client.Id}"); return View(); } public IActionResult UpdateMedicine() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Medicines = APIClient.GetRequest>($"api/main/getmedicineslist?clientId={APIClient.Client.Id}"); return View(); } [HttpPost] public void UpdateMedicine(int medicine, string medicinename, string group) { if (APIClient.Client == null) { throw new Exception("Необходима авторизация"); } if (string.IsNullOrEmpty(medicinename)) { throw new Exception("Название не может быть пустым"); } if (string.IsNullOrEmpty(group)) { throw new Exception("Группа не может быть пустой"); } APIClient.PostRequest("api/main/UpdateMedicine", new MedicinesBindingModel { Id = medicine, MedicinesName = medicinename, Group = group, ClientId = APIClient.Client.Id }); Response.Redirect("ListMedicines"); } /// /// РЕЦЕПТЫ /// /// public IActionResult ListRecipes() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } return View(APIClient.GetRequest>($"api/main/getrecipeslist?clientId={APIClient.Client.Id}")); } public IActionResult CreateRecipe(int? id) { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Symptomses = APIClient.GetRequest>("api/main/getsymptoms"); ViewBag.Procedures = APIClient.GetRequest>("api/main/getprocedurelist"); if (!id.HasValue) { return View(new RecipesViewModel()); } var model = APIClient.GetRequest($"api/main/getprocedure?id={id}"); return View(model); } [HttpPost] public void CreateRecipe(RecipesBindingModel model, int? id, int symptoms, string dose, string modeofapplication) { if (APIClient.Client == null) { throw new Exception("Вы как сюда попали? Сюда вход только авторизованным"); } model.ClientId = APIClient.Client.Id; if (model.Id != 0) { APIClient.PostRequest("api/main/updaterecipe", model); } else { APIClient.PostRequest("api/main/createrecipe", new RecipesBindingModel { ClientId = APIClient.Client.Id, Dose = dose, SymptomsId = symptoms, ModeOfApplication = modeofapplication }); } Response.Redirect("ListRecipes"); } [HttpGet] public Tuple? GetRecipe(int recipeId) { if (APIClient.Client == null) { throw new Exception("Необходима авторизация"); } var result = APIClient.GetRequest>>>($"api/main/getrecipe?recipeId={recipeId}"); if (result == null) { return default; } string table = ""; for (int i = 0; i < result.Item2.Count; i++) { var proceduresName = result.Item2[i].Item1; table += ""; table += $"{proceduresName}"; table += ""; } return Tuple.Create(result.Item1, table); } [HttpPost] public void DeleteRecipe(int recipe) { if (APIClient.Client == null) { throw new Exception("Доступно только авторизованным пользователям"); } APIClient.PostRequest($"api/main/DeleteRecipe", new RecipesBindingModel { Id = recipe }); Response.Redirect("ListRecipes"); } public IActionResult DeleteRecipe() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Recipes = APIClient.GetRequest>($"api/main/GetRecipesList?clientId={APIClient.Client.Id}"); return View(); } public IActionResult UpdateRecipe() { if (APIClient.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Recipes = APIClient.GetRequest>($"api/main/GetRecipesList?clientId={APIClient.Client.Id}"); ViewBag.Symptomses = APIClient.GetRequest>("api/main/getsymptoms"); return View(); } [HttpPost] public void UpdateRecipe(int recipe, string dose, string modeofapplication) { if (APIClient.Client == null) { throw new Exception("Необходима авторизация"); } if (string.IsNullOrEmpty(dose)) { throw new Exception("Поле не может быть пустым"); } if (string.IsNullOrEmpty(modeofapplication)) { throw new Exception("Способ применения не может быть пустым"); } APIClient.PostRequest("api/main/updaterecipe", new RecipesBindingModel { Id = recipe, Dose = dose, ModeOfApplication = modeofapplication, ClientId = APIClient.Client.Id }); Response.Redirect("ListRecipes"); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } } }