начало crud работ

This commit is contained in:
Мк Игорь 2023-05-23 00:33:16 +04:00
parent 6073dbda35
commit c7cb372280
7 changed files with 185 additions and 35 deletions

View File

@ -1,5 +1,7 @@
using CarServiceBusinessLogic.BusinessLogics; using CarServiceContracts.BindingModels;
using CarServiceContracts.BusinessLogicsContracts; using CarServiceContracts.BusinessLogicsContracts;
using CarServiceContracts.SearchModels;
using CarServiceDatabase.Models;
using CarServiceWebApp.Models; using CarServiceWebApp.Models;
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using System.Diagnostics; using System.Diagnostics;
@ -10,13 +12,18 @@ namespace CarServiceWebApp.Controllers
{ {
private readonly ILogger<HomeController> _logger; private readonly ILogger<HomeController> _logger;
private readonly IWorkLogic _workLogic; private readonly IWorkLogic _workLogic;
private readonly IWorkerLogic _workerLogic;
public HomeController(ILogger<HomeController> logger, IWorkLogic workLogic) public HomeController(ILogger<HomeController> logger, IWorkLogic workLogic, IWorkerLogic workerLogic)
{ {
_logger = logger; _logger = logger;
_workLogic = workLogic; _workLogic = workLogic;
_workerLogic = workerLogic;
} }
/// <summary>
/// Главная страница
/// </summary>
/// <returns></returns>
public IActionResult Index() public IActionResult Index()
{ {
if (CurrentUser.UserId < 1) if (CurrentUser.UserId < 1)
@ -25,18 +32,119 @@ namespace CarServiceWebApp.Controllers
} }
return View(); return View();
} }
/// <summary>
/// Отображение формы для входа
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult Enter() public IActionResult Enter()
{ {
return View(); return View();
} }
/// <summary>
/// Ввод данных в форму для входа
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
[HttpPost]
public IActionResult Enter(WorkerSearchModel model)
{
var existingWorker = _workerLogic.ReadElement(new() { Login = model.Login, Password = model.Password });
if (existingWorker != null)
{
CurrentUser.UserId = existingWorker.Id;
return Redirect("~/Home/Index");
}
else
{
ViewBag.Exception = "Неверный логин или пароль";
return View();
}
}
/// <summary>
/// Список работ
/// </summary>
/// <returns></returns>
public IActionResult Works() public IActionResult Works()
{ {
ViewBag.Works = _workLogic.ReadList(new() { Id = 1 }); if (CurrentUser.UserId < 1)
{
return Redirect("~/Home/Index");
}
var Works = _workLogic.ReadList(new() { Id = CurrentUser.UserId });
ViewBag.Works = Works;
if (Works?.Count == 0)
{
ViewBag.Exception = "Пока нет работ";
}
return View();
}
/// <summary>
/// Выход из учётной записи
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult Logout()
{
CurrentUser.UserId = 0;
return Redirect("~/Home/Index");
}
/// <summary>
/// Отображение формы для регистрации
/// </summary>
/// <returns></returns>
[HttpGet]
public IActionResult Register()
{
return View();
}
/// <summary>
/// Ввод данных при регистрации пользователя
/// </summary>
/// <returns></returns>
[HttpPost]
public IActionResult Register(WorkerBindingModel model)
{
try
{
_workerLogic.Create(model);
}
catch (Exception ex)
{
ViewBag.Exception = ex.Message;
return View();
}
return Redirect("~/Home/Enter");
}
[HttpGet]
public IActionResult Work(int Id)
{
ViewBag.Work = _workLogic.ReadElement(new() { Id = Id });
return View();
}
[HttpPost]
public IActionResult UpdateWork(Work work)
{
//ViewBag.Work = _workLogic.ReadElement(new() { Id = Id });
return View();
}
[HttpPost]
public IActionResult DeleteWork(int Id)
{
ViewBag.Work = _workLogic.ReadElement(new() { Id = Id });
return View(); return View();
} }
/// <summary>
/// Вывод ошибок
/// </summary>
/// <returns></returns>
[ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)] [ResponseCache(Duration = 0, Location = ResponseCacheLocation.None, NoStore = true)]
public IActionResult Error() public IActionResult Error()
{ {

View File

@ -11,6 +11,8 @@ builder.Logging.AddLog4Net("log4net.config");
builder.Services.AddControllersWithViews(); builder.Services.AddControllersWithViews();
builder.Services.AddTransient<IWorkLogic, WorkLogic>(); builder.Services.AddTransient<IWorkLogic, WorkLogic>();
builder.Services.AddTransient<IWorkStorage, WorkStorage>(); builder.Services.AddTransient<IWorkStorage, WorkStorage>();
builder.Services.AddTransient<IWorkerLogic, WorkerLogic>();
builder.Services.AddTransient<IWorkerStorage, WorkerStorage>();
var app = builder.Build(); var app = builder.Build();

View File

@ -8,14 +8,19 @@
<form method="post"> <form method="post">
<div class="row"> <div class="row">
<div class="col-4">Логин:</div> <div class="col-4">Логин:</div>
<div class="col-8"><input type="text" name="login" /></div> <div class="col-8"><input type="text" name="Login" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-4">Пароль:</div> <div class="col-4">Пароль:</div>
<div class="col-8"><input type="password" name="password" /></div> <div class="col-8"><input type="password" name="Password" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-8"></div> <div><button asp-controller="Home" asp-action="Enter" type="submit" class="btn btn-primary">Вход</button></div>
<div class="col-4"><input type="submit" value="Вход" class="btn btn-primary" /></div>
</div> </div>
</form> </form>
<form method="get">
<div><button asp-controller="Home" asp-action="Register" class="btn btn-primary">Регистрация</button></div>
</form>
<div>
<div>@ViewBag.Exception</div>
</div>

View File

@ -1,5 +1,5 @@
@{ @{
ViewData["Title"] = "Register"; ViewData["Title"] = "Регистрация";
} }
<div class="text-center"> <div class="text-center">
@ -8,22 +8,25 @@
<form method="post"> <form method="post">
<div class="row"> <div class="row">
<div class="col-4">Логин:</div> <div class="col-4">Логин:</div>
<div class="col-8"><input type="text" name="login" /></div> <div class="col-8"><input type="text" name="Login" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-4">Пароль:</div> <div class="col-4">Пароль:</div>
<div class="col-8"><input type="password" name="password" /></div> <div class="col-8"><input type="password" name="Password" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-4">Имя:</div> <div class="col-4">Имя:</div>
<div class="col-8"><input type="text" name="fio" /></div> <div class="col-8"><input type="text" name="Name" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-4">Фамилия:</div> <div class="col-4">Фамилия:</div>
<div class="col-8"><input type="text" name="fio" /></div> <div class="col-8"><input type="text" name="Surname" /></div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-8"></div> <div class="col-8"></div>
<div class="col-4"><input type="submit" value="Регистрация" class="btn btn-primary" /></div> <div class="col-4"><input type="submit" value="Регистрация" class="btn btn-primary" /></div>
</div> </div>
</form> </form>
<div>
<div>@ViewBag.Exception</div>
</div>

View File

@ -0,0 +1,24 @@
<form method="post">
<div hidden><input type="text" name="Id" value="@ViewBag.Work.Id" /></div>
<div class="row">
<div class="col-4">Название:</div>
<div class="col-8"><input type="text" name="Name" value="@ViewBag.Work.Name" /></div>
</div>
<div class="row">
<div class="col-4">Цена:</div>
<div class="col-8"><input type="text" name="Price" value="@ViewBag.Work.Price" /></div>
</div>
<div class="row">
<div class="col-4">Длительность:</div>
<div class="col-8"><input type="text" name="Duration" value="@ViewBag.Work.Duration" /></div>
</div>
<div class="row">
<div><button asp-controller="Home" asp-action="UpdateWork"class="btn btn-primary">Изменить</button></div>
</div>
<div class="row">
<div><button asp-controller="Home" asp-action="DeleteWork"class="btn btn-primary">Удалить</button></div>
</div>
<div class="row">
<div><button asp-controller="Home" asp-action="Works" type="submit" class="btn btn-primary">Отмена</button></div>
</div>
</form>

View File

@ -4,6 +4,8 @@
<div class="text-center"> <div class="text-center">
<h1 class="display-4">Работы</h1> <h1 class="display-4">Работы</h1>
@if (ViewBag.Works.Count != 0)
{
<table> <table>
<thead> <thead>
<tr> <tr>
@ -19,8 +21,11 @@
<td>@work.Name</td> <td>@work.Name</td>
<td>@work.Price</td> <td>@work.Price</td>
<td>@work.Duration</td> <td>@work.Duration</td>
<td><a href="/Home/Work/@work.Id">Изменить</a></td>
</tr> </tr>
} }
</tbody> </tbody>
</table> </table>
}
<div>@ViewBag.Exception</div>
</div> </div>

View File

@ -3,7 +3,7 @@
<head> <head>
<meta charset="utf-8" /> <meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>@ViewData["Title"] - CarServiceWebApp</title> <title>@ViewData["Title"]</title>
<link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" /> <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
<link rel="stylesheet" href="~/css/site.css" asp-append-version="true" /> <link rel="stylesheet" href="~/css/site.css" asp-append-version="true" />
<link rel="stylesheet" href="~/CarServiceWebApp.styles.css" asp-append-version="true" /> <link rel="stylesheet" href="~/CarServiceWebApp.styles.css" asp-append-version="true" />
@ -31,6 +31,9 @@
<li class="nav-item"> <li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Отчет</a> <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Отчет</a>
</li> </li>
<li class="nav-item">
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Logout">Выход</a>
</li>
</ul> </ul>
</div> </div>
</div> </div>