using Microsoft.AspNetCore.Mvc; using System.Diagnostics; using System.Reflection.Metadata; using UniversityClientApp.Models; using UniversityClientAppStorekeeper; using UniversityContracts.BindingModels; using UniversityContracts.ViewModels; using UniversityDatabaseImplement.Models; using UniversityDatabaseImplement; using UniversityDataModels.Enums; using UniversityDataModels.Models; namespace UniversityClientApp.Controllers { public class HomeController : Controller { private readonly ILogger<HomeController> _logger; public HomeController(ILogger<HomeController> logger) { _logger = logger; } public IActionResult Index() { if (APIStorekeeper.Client == null) { return Redirect("~/Home/Enter"); } //return View(APIStorekeeper.GetRequest<List<OrderViewModel>>($"api/main/getorders?clientId={APIClient.Client.Id}")); return View(); } public IActionResult Privacy() { 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("������� ����� � ������"); } APIStorekeeper.Client = APIStorekeeper.GetRequest<UserViewModel>($"api/user/loginstorekeeper?login={login}&password={password}"); if (APIStorekeeper.Client == null) { throw new Exception("�������� �����/������"); } Response.Redirect("Index"); } [HttpGet] public IActionResult Register() { return View(); } [HttpPost] public void Register(string login, string password, string email) { if (string.IsNullOrEmpty(login) || string.IsNullOrEmpty(password) || string.IsNullOrEmpty(email)) { throw new Exception("������� �����, ������ � ���"); } APIStorekeeper.PostRequest("api/user/registerstorekeeper", new UserBindingModel { Login = login, Email = email, Password = password, Role = UserRole.��������� }); Response.Redirect("Enter"); return; } [HttpGet] public async Task<IActionResult> Disciplines() { if (APIStorekeeper.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Teachers = APIStorekeeper.GetRequest<List<TeacherViewModel>>($"api/teacher/getteachers?userId={APIStorekeeper.Client.Id}"); ViewBag.Students = APIStorekeeper.GetRequest<List<StudentViewModel>>($"api/student/getstudents?userId={APIStorekeeper.Client.Id}"); // ������� ���������� ����������� �������� var disciplines = await APIStorekeeper.GetRequestDisciplineAsync<List<DisciplineViewModel>>($"api/discipline/getdisciplines?teacherId={0}"); // ������ �� ����� �������� ��������� � ������������� return View(disciplines); } [HttpPost] public void Disciplines(string name, string description, DateOnly date, int teacher, List<int> studentIds) { if (APIStorekeeper.Client == null) { Redirect("~/Home/Enter"); } var disciplineModel = new DisciplineBindingModel { UserId = APIStorekeeper.Client.Id, Name = name, Description = description, Date = date, TeacherId = teacher, StudentDisciplines = studentIds.ToDictionary(id => id, id => (IStudentModel)null) // �� ��������� }; APIStorekeeper.PostRequest("api/discipline/creatediscipline", disciplineModel); Response.Redirect("Disciplines"); } [HttpGet] public IActionResult Statements() { if (APIStorekeeper.Client == null) { return Redirect("~/Home/Enter"); } ViewBag.Teachers = APIStorekeeper.GetRequest<List<TeacherViewModel>>($"api/teacher/getteachers?userId={APIStorekeeper.Client.Id}"); return View(APIStorekeeper.GetRequest<List<StatementViewModel>>($"api/statement/getstatements?teacherId={0}")); } [HttpPost] public void Statements(string name, DateTime date, int teacher) { if (APIStorekeeper.Client == null) { Redirect("~/Home/Enter"); } APIStorekeeper.PostRequest("api/statement/createstatement", new StatementBindingModel { UserId = APIStorekeeper.Client.Id, Name = name, Date = date, TeacherId = teacher, }); Response.Redirect("Statements"); } [HttpGet] public IActionResult Teachers() { if (APIStorekeeper.Client == null) { return Redirect("~/Home/Enter"); } //ViewBag.Documents = APIStorekeeper.GetRequest<List<DisciplineViewModel>>("api/main/getdiscipline"); return View(APIStorekeeper.GetRequest<List<TeacherViewModel>>($"api/teacher/getteachers?userId={APIStorekeeper.Client.Id}")); } [HttpPost] public void Teachers(string name, string position, string academicDegree) { if (APIStorekeeper.Client == null) { Redirect("~/Home/Enter"); } APIStorekeeper.PostRequest("api/teacher/createteacher", new TeacherBindingModel { UserId = APIStorekeeper.Client.Id, Name = name, Position = position, AcademicDegree = academicDegree }); Response.Redirect("Teachers"); } public IActionResult Report() { return View(); } [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] public IActionResult Error() { return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); } } }