From 6e000e9b6225536f6e4f6b9a3078fc49e11b7105 Mon Sep 17 00:00:00 2001 From: 1234 <1234@LAPTOP-4FV9MDDA> Date: Wed, 1 May 2024 02:25:19 +0400 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=203=20=D0=BA=D0=BE=D0=BC=D0=BC=D0=B8=D1=82=D0=B0?= =?UTF-8?q?=20=D0=B1=D1=8B=D0=BB=D0=B8=20=D1=81=D1=82=D1=80=D0=B0=D1=88?= =?UTF-8?q?=D0=BD=D1=8B=D0=B5=20=D0=B2=D0=B5=D0=B1=D1=8B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/HomeController.cs | 265 ++++++++++++++++++ .../Models/ErrorViewModel.cs | 9 + .../Pages/Error.cshtml.cs | 28 -- .../UniversityDirectorApp/Pages/Index.cshtml | 10 - .../Pages/Index.cshtml.cs | 20 -- .../Pages/Privacy.cshtml | 8 - .../Pages/Privacy.cshtml.cs | 20 -- .../Views/Home/BindDiscipline.cshtml | 61 ++++ .../Views/Home/Client.cshtml | 39 +++ .../Views/Home/Clients.cshtml | 33 +++ .../Views/Home/Disciplines.cshtml | 87 ++++++ .../Views/Home/Index.cshtml | 7 + .../Views/Home/Privacy.cshtml | 36 +++ .../Views/Home/ReportFromClients.cshtml | 57 ++++ .../Views/Home/Requirement.cshtml | 39 +++ .../Views/Home/Requirements.cshtml | 37 +++ .../{Pages => Views/Shared}/Error.cshtml | 5 +- .../{Pages => Views}/Shared/_Layout.cshtml | 0 .../Shared/_Layout.cshtml.css | 0 .../Shared/_ValidationScriptsPartial.cshtml | 0 .../{Pages => Views}/_ViewImports.cshtml | 0 .../{Pages => Views}/_ViewStart.cshtml | 0 22 files changed, 672 insertions(+), 89 deletions(-) create mode 100644 University/UniversityDirectorApp/Controllers/HomeController.cs create mode 100644 University/UniversityDirectorApp/Models/ErrorViewModel.cs delete mode 100644 University/UniversityDirectorApp/Pages/Error.cshtml.cs delete mode 100644 University/UniversityDirectorApp/Pages/Index.cshtml delete mode 100644 University/UniversityDirectorApp/Pages/Index.cshtml.cs delete mode 100644 University/UniversityDirectorApp/Pages/Privacy.cshtml delete mode 100644 University/UniversityDirectorApp/Pages/Privacy.cshtml.cs create mode 100644 University/UniversityDirectorApp/Views/Home/BindDiscipline.cshtml create mode 100644 University/UniversityDirectorApp/Views/Home/Client.cshtml create mode 100644 University/UniversityDirectorApp/Views/Home/Clients.cshtml create mode 100644 University/UniversityDirectorApp/Views/Home/Disciplines.cshtml create mode 100644 University/UniversityDirectorApp/Views/Home/Index.cshtml create mode 100644 University/UniversityDirectorApp/Views/Home/Privacy.cshtml create mode 100644 University/UniversityDirectorApp/Views/Home/ReportFromClients.cshtml create mode 100644 University/UniversityDirectorApp/Views/Home/Requirement.cshtml create mode 100644 University/UniversityDirectorApp/Views/Home/Requirements.cshtml rename University/UniversityDirectorApp/{Pages => Views/Shared}/Error.cshtml (82%) rename University/UniversityDirectorApp/{Pages => Views}/Shared/_Layout.cshtml (100%) rename University/UniversityDirectorApp/{Pages => Views}/Shared/_Layout.cshtml.css (100%) rename University/UniversityDirectorApp/{Pages => Views}/Shared/_ValidationScriptsPartial.cshtml (100%) rename University/UniversityDirectorApp/{Pages => Views}/_ViewImports.cshtml (100%) rename University/UniversityDirectorApp/{Pages => Views}/_ViewStart.cshtml (100%) diff --git a/University/UniversityDirectorApp/Controllers/HomeController.cs b/University/UniversityDirectorApp/Controllers/HomeController.cs new file mode 100644 index 0000000..fbd8ed8 --- /dev/null +++ b/University/UniversityDirectorApp/Controllers/HomeController.cs @@ -0,0 +1,265 @@ +using System.Diagnostics; +using HospitalDirectorApp; +using HospitalDirectorApp.Models; +using Microsoft.AspNetCore.Mvc; +using UniversityContracts.BindingModels; +using UniversityContracts.BusinessLogicContracts; +using UniversityContracts.ViewModels; +using UniversityDirectorApp.Filters; + +namespace UniversityDirectorApp.Controllers +{ + [AuthorizationFilter] + public class HomeController : Controller + { + private readonly ILogger _logger; + private readonly IDirectorLogic _employeeLogic; + private readonly IClientLogic _clientLogic; + private readonly IRequirementLogic _requirementLogic; + private readonly IDisciplineLogic _disciplineLogic; + private readonly IAccountLogic _accountLogic; + private readonly IReportLogic _reportLogic; + + private DirectorViewModel? _director; + + public HomeController(ILogger logger, + IDirectorLogic directorLogic, IClientLogic clientLogic, IRequirementLogic requirementLogic, + IDisciplineLogic disciplineLogic, IAccountLogic accountLogic, IReportLogic reportLogic) + { + _reportLogic = reportLogic; + _accountLogic = accountLogic; + _disciplineLogic = disciplineLogic; + _requirementLogic = requirementLogic; + _clientLogic = clientLogic; + _employeeLogic = directorLogic; + _logger = logger; + } + + private DirectorViewModel Director { + get + { + if (_director == null) + { + try + { + _director = _employeeLogic.ReadElement(new() + { + Login = HttpContext.Session.GetString(SessionKeys.DirectorLogin), + Password = HttpContext.Session.GetString(SessionKeys.DirectorPassword), + }); + } + catch (Exception e) + { + _logger.LogError(e, "Не удалось получить пользователя, хотя был пройден фильтр авторизации"); + throw; + } + } + return _director; + } + } + + public IActionResult Index() + { + _logger.LogInformation("Переход на главную страницу"); + return View(); + } + + public IActionResult Privacy() + { + return View(Director); + } + + [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] + public IActionResult Error() + { + return View(new ErrorViewModel { RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier }); + } + + public IActionResult Clients() + { + return View(_clientLogic.ReadList(new() { DirectorId = Director.Id })); + } + + public IActionResult Disciplines() + { + return View(_clientLogic.ReadList(new() { DirectorId = Director.Id })); + } + + public IActionResult Requirements() + { + return View(_requirementLogic.ReadList(new() { DirectorId = Director.Id })); + } + + public IActionResult ReportFromClients(string? getReport, string? sendToMail, DateTime startDate, DateTime endDate) + { + _logger.LogInformation("Попытка получить отчет: {@getReport}; {@sendToMail} Период: {0}---{1}", getReport, sendToMail, startDate, endDate); + if (startDate > endDate) + { + throw new Exception("Дата начала больше даты конца периода"); + } + if (getReport != null) + { + return View(_accountLogic.ReadList(new() + { + DateFrom = DateOnly.FromDateTime(startDate), + DateTo = DateOnly.FromDateTime(endDate) + })); + } + if (sendToMail != null) + { + _reportLogic.SendAccountsToEmail( + option: new() + { + DateFrom = DateOnly.FromDateTime(startDate), + DateTo = DateOnly.FromDateTime(endDate) + }, + email: Director.Login + ); + } + return View(); + } + + [HttpGet] + public IActionResult Client(int? id) + { + if (id.HasValue) + { + return View(_clientLogic.ReadElement(new() {Id = id})); + } + return View(); + } + + [HttpPost] + public void Client(string name, int course) + { + var isOperationUpdate = Request.RouteValues.TryGetValue("id", out var identValue); + isOperationUpdate &= int.TryParse((string?)identValue, out var id); + + _logger.LogInformation("При изменении клиента были получены данные: {name}; {course}; {idUpdated}", name, course, identValue); + ClientBindingModel model = new() + { + Name = name, + Course = course, + }; + if (isOperationUpdate) + { + model.Id = id; + _clientLogic.Update(model); + Response.Redirect("../Clients"); + } + else + { + model.DirectorId = Director.Id; + _clientLogic.Create(model); + Response.Redirect("Clients"); + } + } + + public IActionResult RemoveClient(int id) + { + _clientLogic.Delete(new() { Id = id }); + return Redirect("~/Home/Clients"); + } + + [HttpGet] + public FileResult ReportDisciplinesInWord(int[] ids) + { + _logger.LogInformation("Запрошен отчет в формате word"); + _logger.LogInformation("Получено {count} клиентов для отчета", ids.Length); + + MemoryStream mstream = new(); + _reportLogic.SaveDisciplinesToWord(new() + { + Ids = ids, + Stream = mstream, + }); + return File(mstream.ToArray(), System.Net.Mime.MediaTypeNames.Application.Octet, "reportWord.docx"); + } + + [HttpGet] + public FileResult ReportDisciplinesInExcel(int[] ids) + { + _logger.LogInformation("Запрошен отчет в формате excel"); + _logger.LogInformation("Получено {count} клиентов для отчета", ids.Length); + + MemoryStream mstream = new(); + _reportLogic.SaveDisciplinesToExcel(new() + { + Ids = ids, + Stream = mstream + }); + return File(mstream.ToArray(), System.Net.Mime.MediaTypeNames.Application.Octet, "reportExcel.xlsx"); + } + + + public IActionResult Requirement(int? id) + { + if (id.HasValue) + { + return View(_requirementLogic.ReadElement(new() { Id = id })); + } + return View(); + } + + [HttpPost] + public void Requirement(string name, double price) + { + var isOperationUpdate = Request.RouteValues.TryGetValue("id", out var identValue); + isOperationUpdate &= int.TryParse((string?)identValue, out var id); + + _logger.LogInformation("При изменении требований были получены данные: {name}; {price}; {idUpdated}", name, price, identValue); + RequirementBindingModel model = new() + { + NameOfRequirement = name, + Price = price, + }; + if (isOperationUpdate) + { + model.Id = id; + _requirementLogic.Update(model); + Response.Redirect("../Requirements"); + } + else + { + model.DirectorId = Director.Id; + _requirementLogic.Create(model); + Response.Redirect("Requirements"); + } + } + + public IActionResult RemoveRequirement(int id) + { + _requirementLogic.Delete(new() { Id = id }); + return Redirect("~/Home/Requirements"); + } + + public IActionResult BindDiscipline(int id) + { + ViewBag.Requirements = _requirementLogic.ReadList(new() { DirectorId = Director.Id }); + ViewBag.SelectedId = id; + ViewBag.Disciplines = _disciplineLogic.ReadList(); + return View(); + } + + [HttpPost] + public void BindDiscipline(int requirement, int discipline, int count) + { + var disciplineModel = _disciplineLogic.ReadElement(new() { Id = discipline }); + _requirementLogic.Update(new() + { + Id = requirement, + Price = _requirementLogic.ReadElement(new() {Id = requirement}).Price, + DisciplinesModels = + { + [discipline] = new() { Count = count, DisciplineId = discipline } + } + }); + Response.Redirect("/Home/Requirements"); + } + + public double CalcRequirementSum(int requirement, int count) + { + return _requirementLogic.ReadElement(new() {Id = requirement}).Price * count; + } + } +} \ No newline at end of file diff --git a/University/UniversityDirectorApp/Models/ErrorViewModel.cs b/University/UniversityDirectorApp/Models/ErrorViewModel.cs new file mode 100644 index 0000000..4153fb4 --- /dev/null +++ b/University/UniversityDirectorApp/Models/ErrorViewModel.cs @@ -0,0 +1,9 @@ +namespace HospitalDirectorApp.Models +{ + public class ErrorViewModel + { + public string? RequestId { get; set; } + + public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); + } +} \ No newline at end of file diff --git a/University/UniversityDirectorApp/Pages/Error.cshtml.cs b/University/UniversityDirectorApp/Pages/Error.cshtml.cs deleted file mode 100644 index e0505bd..0000000 --- a/University/UniversityDirectorApp/Pages/Error.cshtml.cs +++ /dev/null @@ -1,28 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; -using System.Diagnostics; - -namespace UniversityDirectorApp.Pages -{ - [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] - [IgnoreAntiforgeryToken] - public class ErrorModel : PageModel - { - public string? RequestId { get; set; } - - public bool ShowRequestId => !string.IsNullOrEmpty(RequestId); - - private readonly ILogger _logger; - - public ErrorModel(ILogger logger) - { - _logger = logger; - } - - public void OnGet() - { - RequestId = Activity.Current?.Id ?? HttpContext.TraceIdentifier; - } - } - -} diff --git a/University/UniversityDirectorApp/Pages/Index.cshtml b/University/UniversityDirectorApp/Pages/Index.cshtml deleted file mode 100644 index f9ff8d4..0000000 --- a/University/UniversityDirectorApp/Pages/Index.cshtml +++ /dev/null @@ -1,10 +0,0 @@ -@page -@model IndexModel -@{ - ViewData["Title"] = "Home page"; -} - -
-

Welcome

-

Learn about building Web apps with ASP.NET Core.

-
diff --git a/University/UniversityDirectorApp/Pages/Index.cshtml.cs b/University/UniversityDirectorApp/Pages/Index.cshtml.cs deleted file mode 100644 index 9c8e9a4..0000000 --- a/University/UniversityDirectorApp/Pages/Index.cshtml.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace UniversityDirectorApp.Pages -{ - public class IndexModel : PageModel - { - private readonly ILogger _logger; - - public IndexModel(ILogger logger) - { - _logger = logger; - } - - public void OnGet() - { - - } - } -} diff --git a/University/UniversityDirectorApp/Pages/Privacy.cshtml b/University/UniversityDirectorApp/Pages/Privacy.cshtml deleted file mode 100644 index 46ba966..0000000 --- a/University/UniversityDirectorApp/Pages/Privacy.cshtml +++ /dev/null @@ -1,8 +0,0 @@ -@page -@model PrivacyModel -@{ - ViewData["Title"] = "Privacy Policy"; -} -

@ViewData["Title"]

- -

Use this page to detail your site's privacy policy.

diff --git a/University/UniversityDirectorApp/Pages/Privacy.cshtml.cs b/University/UniversityDirectorApp/Pages/Privacy.cshtml.cs deleted file mode 100644 index a5f80cf..0000000 --- a/University/UniversityDirectorApp/Pages/Privacy.cshtml.cs +++ /dev/null @@ -1,20 +0,0 @@ -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Mvc.RazorPages; - -namespace UniversityDirectorApp.Pages -{ - public class PrivacyModel : PageModel - { - private readonly ILogger _logger; - - public PrivacyModel(ILogger logger) - { - _logger = logger; - } - - public void OnGet() - { - } - } - -} diff --git a/University/UniversityDirectorApp/Views/Home/BindDiscipline.cshtml b/University/UniversityDirectorApp/Views/Home/BindDiscipline.cshtml new file mode 100644 index 0000000..eb03707 --- /dev/null +++ b/University/UniversityDirectorApp/Views/Home/BindDiscipline.cshtml @@ -0,0 +1,61 @@ +@{ + ViewData["Title"] = "Привязка требований к дисциплине"; + + var requirements = new SelectList(ViewBag.Requirements, "Id", "NameOfRequirement"); + requirements.Where(x => Convert.ToInt32(x.Value) == ViewBag.SelectedId).ToList().ForEach(x => x.Selected = true); +} +
+

@ViewData["Title"]

+
+
+
+
Требования:
+
+ +
+
+
+
Дисциплины:
+
+ +
+
+
+
Количество:
+
+ +
+
+
+
Итоговая сумма:
+
+ +
+
+
+ +
+
+ +@section Scripts +{ + +} \ No newline at end of file diff --git a/University/UniversityDirectorApp/Views/Home/Client.cshtml b/University/UniversityDirectorApp/Views/Home/Client.cshtml new file mode 100644 index 0000000..bd37b94 --- /dev/null +++ b/University/UniversityDirectorApp/Views/Home/Client.cshtml @@ -0,0 +1,39 @@ +@using Microsoft.AspNetCore.Mvc.TagHelpers +@model UniversityContracts.ViewModels.ClientViewModel? + +@{ + ViewData["Title"] = Model == null ? "Создание клиента" : "Изменение клиента"; +} + +
+

@ViewData["Title"]

+
+
+
+
ФИО:
+
+ +
+
+
+
Номер курса:
+
+ +
+
+
+ +
+
+@if (Model != null) +{ + @section Scripts + { + + } +} diff --git a/University/UniversityDirectorApp/Views/Home/Clients.cshtml b/University/UniversityDirectorApp/Views/Home/Clients.cshtml new file mode 100644 index 0000000..88ca208 --- /dev/null +++ b/University/UniversityDirectorApp/Views/Home/Clients.cshtml @@ -0,0 +1,33 @@ +@using UniversityContracts.ViewModels; + +@model List + +@{ + ViewData["Title"] = "Клиенты"; +} +

@ViewData["Title"]

+ +
+ Создать нового клиента + + + + + + + + + + + @foreach (var client in Model) + { + + + + + + + } + +
Фио студентаКурсИзменитьУдалить
@Html.DisplayFor(modelItem => client.Name)@Html.DisplayFor(modelItem => client.Course)ИзменитьУдалить
+
diff --git a/University/UniversityDirectorApp/Views/Home/Disciplines.cshtml b/University/UniversityDirectorApp/Views/Home/Disciplines.cshtml new file mode 100644 index 0000000..2e67c87 --- /dev/null +++ b/University/UniversityDirectorApp/Views/Home/Disciplines.cshtml @@ -0,0 +1,87 @@ +@using UniversityContracts.ViewModels; + +@model List + +@{ + ViewData["Title"] = "Отчет по дисциплинам"; +} +

@ViewData["Title"]

+
Выбрать клиентов, по которым будут включены в отчет дисциплины
+
+ Отчет в word + Отчет в excel + + + + + + + + + + @foreach (var client in Model) + { + + + + + + } + +
Включить в отчетФИОКурс
+
+ +
+
@client.Name@client.Course
+
+@section Scripts +{ + +} \ No newline at end of file diff --git a/University/UniversityDirectorApp/Views/Home/Index.cshtml b/University/UniversityDirectorApp/Views/Home/Index.cshtml new file mode 100644 index 0000000..99fc941 --- /dev/null +++ b/University/UniversityDirectorApp/Views/Home/Index.cshtml @@ -0,0 +1,7 @@ +@{ + ViewData["Title"] = "Home Page"; +} + +
+

Добро пожаловать в университет "Все отчислены"

+
diff --git a/University/UniversityDirectorApp/Views/Home/Privacy.cshtml b/University/UniversityDirectorApp/Views/Home/Privacy.cshtml new file mode 100644 index 0000000..8a6bda3 --- /dev/null +++ b/University/UniversityDirectorApp/Views/Home/Privacy.cshtml @@ -0,0 +1,36 @@ +@using UniversityContracts.ViewModels; + +@model DirectorViewModel + +@{ + ViewData["Title"] = "Личные данные руководителя"; +} +
+

@ViewData["Title"]

+
+
+
+
Логин:
+
+ +
+
+
+
Имя:
+
+ +
+
+
+
Отчество:
+
+ +
+
+
+
Пароль:
+
+ +
+
+
\ No newline at end of file diff --git a/University/UniversityDirectorApp/Views/Home/ReportFromClients.cshtml b/University/UniversityDirectorApp/Views/Home/ReportFromClients.cshtml new file mode 100644 index 0000000..7a6e5f8 --- /dev/null +++ b/University/UniversityDirectorApp/Views/Home/ReportFromClients.cshtml @@ -0,0 +1,57 @@ +@model List? + +@{ + ViewData["Title"] = "Список клиентов с их накопительными счетами"; +} +

@ViewData["Title"]

+ +
+
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+ +
+ + + + + + + + + + + + @if (Model != null) { + foreach (var account in Model) + { + + + + + + + + } + } + +
ФИО клиентаДисциплинаДата прохождения дисциплины клиентомДата внесенияВнесенная сумма
@(account.Client?.Name ?? string.Empty)@(account.Discipline?.Name ?? string.Empty)@(account.ClientByDiscipline?.DateOfClient.ToShortDateString() ?? string.Empty)@account.DateOfAccount@account.Price
+
\ No newline at end of file diff --git a/University/UniversityDirectorApp/Views/Home/Requirement.cshtml b/University/UniversityDirectorApp/Views/Home/Requirement.cshtml new file mode 100644 index 0000000..824aab6 --- /dev/null +++ b/University/UniversityDirectorApp/Views/Home/Requirement.cshtml @@ -0,0 +1,39 @@ +@using Microsoft.AspNetCore.Mvc.TagHelpers +@model UniversityContracts.ViewModels.RequirementViewModel? + +@{ + ViewData["Title"] = Model == null ? "Создание требований" : "Изменение требований"; +} + +
+

@ViewData["Title"]

+
+
+
+
Название:
+
+ +
+
+
+
Стоимость:
+
+ +
+
+
+ +
+
+@section Scripts +{ + @if (Model != null) + { + + } +} \ No newline at end of file diff --git a/University/UniversityDirectorApp/Views/Home/Requirements.cshtml b/University/UniversityDirectorApp/Views/Home/Requirements.cshtml new file mode 100644 index 0000000..2a3c2e1 --- /dev/null +++ b/University/UniversityDirectorApp/Views/Home/Requirements.cshtml @@ -0,0 +1,37 @@ +@using Microsoft.AspNetCore.Mvc.TagHelpers + +@model List + +@{ + ViewData["Title"] = "Требования"; +} +

@ViewData["Title"]

+ +
+ Создать новое требование + + + + + + + + + + + + + @foreach (var requirement in Model) + { + + + + + + + + + } + +
Логин сотрудникаНазваниеСтоимостьИзменитьУдалитьПривязка
@Html.DisplayFor(x => requirement.DirectorLogin)@Html.DisplayFor(x => requirement.NameOfRequirement)@Html.DisplayFor(x => requirement.Price)ИзменитьУдалитьПривязать дисциплину
+
\ No newline at end of file diff --git a/University/UniversityDirectorApp/Pages/Error.cshtml b/University/UniversityDirectorApp/Views/Shared/Error.cshtml similarity index 82% rename from University/UniversityDirectorApp/Pages/Error.cshtml rename to University/UniversityDirectorApp/Views/Shared/Error.cshtml index 6f92b95..a1e0478 100644 --- a/University/UniversityDirectorApp/Pages/Error.cshtml +++ b/University/UniversityDirectorApp/Views/Shared/Error.cshtml @@ -1,5 +1,4 @@ -@page -@model ErrorModel +@model ErrorViewModel @{ ViewData["Title"] = "Error"; } @@ -16,7 +15,7 @@

Development Mode

- Swapping to the Development environment displays detailed information about the error that occurred. + Swapping to Development environment will display more detailed information about the error that occurred.

The Development environment shouldn't be enabled for deployed applications. diff --git a/University/UniversityDirectorApp/Pages/Shared/_Layout.cshtml b/University/UniversityDirectorApp/Views/Shared/_Layout.cshtml similarity index 100% rename from University/UniversityDirectorApp/Pages/Shared/_Layout.cshtml rename to University/UniversityDirectorApp/Views/Shared/_Layout.cshtml diff --git a/University/UniversityDirectorApp/Pages/Shared/_Layout.cshtml.css b/University/UniversityDirectorApp/Views/Shared/_Layout.cshtml.css similarity index 100% rename from University/UniversityDirectorApp/Pages/Shared/_Layout.cshtml.css rename to University/UniversityDirectorApp/Views/Shared/_Layout.cshtml.css diff --git a/University/UniversityDirectorApp/Pages/Shared/_ValidationScriptsPartial.cshtml b/University/UniversityDirectorApp/Views/Shared/_ValidationScriptsPartial.cshtml similarity index 100% rename from University/UniversityDirectorApp/Pages/Shared/_ValidationScriptsPartial.cshtml rename to University/UniversityDirectorApp/Views/Shared/_ValidationScriptsPartial.cshtml diff --git a/University/UniversityDirectorApp/Pages/_ViewImports.cshtml b/University/UniversityDirectorApp/Views/_ViewImports.cshtml similarity index 100% rename from University/UniversityDirectorApp/Pages/_ViewImports.cshtml rename to University/UniversityDirectorApp/Views/_ViewImports.cshtml diff --git a/University/UniversityDirectorApp/Pages/_ViewStart.cshtml b/University/UniversityDirectorApp/Views/_ViewStart.cshtml similarity index 100% rename from University/UniversityDirectorApp/Pages/_ViewStart.cshtml rename to University/UniversityDirectorApp/Views/_ViewStart.cshtml