589 lines
21 KiB
C#
Raw Normal View History

2023-04-07 01:21:27 +04:00
using HospitalClientApp.Models;
2023-05-20 06:49:33 +04:00
using HospitalContracts.BindingModels;
using HospitalContracts.SearchModels;
using HospitalContracts.ViewModels;
2023-04-07 01:21:27 +04:00
using Microsoft.AspNetCore.Mvc;
2023-05-20 06:49:33 +04:00
using Microsoft.Extensions.Hosting;
2023-04-07 01:21:27 +04:00
using System.Diagnostics;
2023-05-20 06:49:33 +04:00
using System.Diagnostics.Metrics;
using System.Reflection;
2023-05-20 06:49:33 +04:00
using System.Xml.Linq;
2023-04-07 01:21:27 +04:00
namespace HospitalClientApp.Controllers
{
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
2023-05-20 06:49:33 +04:00
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
2023-04-07 01:21:27 +04:00
return View();
}
2023-05-20 06:49:33 +04:00
[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<ClientViewModel>($"api/client/login?login={login}&password={password}");
if (APIClient.Client == null)
{
throw new Exception("Неверный логин/пароль");
}
Response.Redirect("Index");
}
[HttpGet]
2023-04-07 01:21:27 +04:00
public IActionResult Privacy()
{
2023-05-20 06:49:33 +04:00
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<List<MedicinesViewModel>>($"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<int> res = new List<int>();
2023-05-20 06:49:33 +04:00
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");
}
2023-05-20 06:49:33 +04:00
/// <summary>
/// ПРОЦЕДУРЫ
/// </summary>
/// <returns></returns>
public IActionResult ListProcedures()
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<ProceduresViewModel>>($"api/main/GetProcedureList?ClientId={APIClient.Client.Id}"));
}
public IActionResult CreateProcedure(int? id)
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Medicines = APIClient.GetRequest<List<MedicinesViewModel>>("api/main/getmedicineslist");
2023-05-20 06:49:33 +04:00
if (!id.HasValue)
{
return View(new ProceduresViewModel());
2023-05-20 06:49:33 +04:00
}
var model = APIClient.GetRequest<ProceduresViewModel?>($"api/main/getprocedure?id={id}");
return View(model);
}
[HttpPost]
public void CreateProcedure(ProceduresBindingModel model, int? id, string procedurename, string proceduretype )
2023-05-20 06:49:33 +04:00
{
if (APIClient.Client == null)
{
throw new Exception("Вы как сюда попали? Сюда вход только авторизованным");
}
if (model.Id != 0)
2023-05-20 06:49:33 +04:00
{
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");
}
2023-05-20 06:49:33 +04:00
[HttpGet]
public Tuple<ProceduresViewModel, string>? GetProcedure(int procedureId)
2023-05-20 06:49:33 +04:00
{
if (APIClient.Client == null)
{
throw new Exception("Необходима авторизация");
}
var result = APIClient.GetRequest<Tuple<ProceduresViewModel, List<Tuple<string>>>>($"api/main/getprocedure?procedureId={procedureId}");
2023-05-20 06:49:33 +04:00
if (result == null)
{
return default;
}
string table = "";
for (int i = 0; i < result.Item2.Count; i++)
{
var medicinesName = result.Item2[i].Item1;
table += "<tr style=\"height: 44px\">";
table += $"<td class=\"u-border-1 u-border-grey-30 u-table-cell\">{medicinesName}</td>";
table += "</tr>";
}
return Tuple.Create(result.Item1, table);
}
2023-05-20 06:49:33 +04:00
public IActionResult AddMedicineToProcedure()
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
return View(Tuple.Create(APIClient.GetRequest<List<ProceduresViewModel>>($"api/main/getprocedurelist?clientId={APIClient.Client.Id}"),
APIClient.GetRequest<List<MedicinesViewModel>>($"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");
2023-05-20 06:49:33 +04:00
}
[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<List<ProceduresViewModel>>($"api/main/getprocedurelist?clientId={APIClient.Client.Id}");
2023-04-07 01:21:27 +04:00
return View();
}
public IActionResult UpdateProcedure()
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Procedures = APIClient.GetRequest<List<ProceduresViewModel>>($"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");
}
2023-05-20 06:49:33 +04:00
/// <summary>
/// ЛЕКАРСТВА
/// </summary>
/// <returns></returns>
public IActionResult ListMedicines()
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<MedicinesViewModel>>($"api/main/getmedicineslist?clientId={APIClient.Client.Id}"));
}
public IActionResult CreateMedicine()
2023-05-20 06:49:33 +04:00
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
return View();
2023-05-20 06:49:33 +04:00
}
[HttpPost]
public void CreateMedicine(string namemedicine, string group)
2023-05-20 06:49:33 +04:00
{
if (APIClient.Client == null)
{
throw new Exception("Вы как сюда попали? Сюда вход только авторизованным");
}
APIClient.PostRequest("api/main/createmedicine", new MedicinesBindingModel
2023-05-20 06:49:33 +04:00
{
ClientId = APIClient.Client.Id,
MedicinesName = namemedicine,
Group = group
});
2023-05-20 06:49:33 +04:00
Response.Redirect("ListMedicines");
}
[HttpGet]
public MedicinesViewModel? GetMedicine(int medicineId)
{
if (APIClient.Client == null)
{
throw new Exception("Необходима авторизация");
}
var result = APIClient.GetRequest<MedicinesViewModel>($"api/main/getmedicine?medicineid={medicineId}");
if (result == null)
{
return default;
}
var medicinename = result.MedicinesName;
2023-05-20 06:49:33 +04:00
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<List<MedicinesViewModel>>($"api/main/GetMedicinesList?clientId={APIClient.Client.Id}");
return View();
}
public IActionResult UpdateMedicine()
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Medicines = APIClient.GetRequest<List<MedicinesViewModel>>($"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");
}
2023-05-20 06:49:33 +04:00
/// <summary>
/// РЕЦЕПТЫ
/// </summary>
/// <returns></returns>
public IActionResult ListRecipes()
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
return View(APIClient.GetRequest<List<RecipesViewModel>>($"api/main/getrecipeslist?clientId={APIClient.Client.Id}"));
}
public IActionResult CreateRecipe(int? id)
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Symptomses = APIClient.GetRequest<List<SymptomsViewModel>>("api/main/getsymptoms");
2023-05-20 06:49:33 +04:00
ViewBag.Procedures = APIClient.GetRequest<List<ProceduresViewModel>>("api/main/getprocedurelist");
if (!id.HasValue)
{
return View(new RecipesViewModel());
}
var model = APIClient.GetRequest<ProceduresViewModel?>($"api/main/getprocedure?id={id}");
2023-05-20 06:49:33 +04:00
return View(model);
}
[HttpPost]
public void CreateRecipe(RecipesBindingModel model, int? id, int symptoms, string dose, string modeofapplication)
2023-05-20 06:49:33 +04:00
{
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
});
2023-05-20 06:49:33 +04:00
}
Response.Redirect("ListRecipes");
}
[HttpGet]
public Tuple<RecipesViewModel, string>? GetRecipe(int recipeId)
{
if (APIClient.Client == null)
{
throw new Exception("Необходима авторизация");
}
var result = APIClient.GetRequest<Tuple<RecipesViewModel, List<Tuple<string>>>>($"api/main/getrecipe?recipeId={recipeId}");
2023-05-20 06:49:33 +04:00
if (result == null)
{
return default;
}
string table = "";
for (int i = 0; i < result.Item2.Count; i++)
{
var proceduresName = result.Item2[i].Item1;
table += "<tr style=\"height: 44px\">";
table += $"<td class=\"u-border-1 u-border-grey-30 u-table-cell\">{proceduresName}</td>";
table += "</tr>";
}
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<List<RecipesViewModel>>($"api/main/GetRecipesList?clientId={APIClient.Client.Id}");
return View();
}
2023-04-07 01:21:27 +04:00
public IActionResult UpdateRecipe()
{
if (APIClient.Client == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Recipes = APIClient.GetRequest<List<RecipesViewModel>>($"api/main/GetRecipesList?clientId={APIClient.Client.Id}");
ViewBag.Symptomses = APIClient.GetRequest<List<SymptomsViewModel>>("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");
}
2023-04-07 01:21:27 +04:00
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error()
{
return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier });
}
}
}