CRUD для изделий
This commit is contained in:
parent
524ef743f3
commit
61758e5737
@ -4,6 +4,7 @@ using SchoolAgainStudyContracts.BindingModel;
|
|||||||
using SchoolAgainStudyContracts.BusinessLogicContracts;
|
using SchoolAgainStudyContracts.BusinessLogicContracts;
|
||||||
using SchoolAgainStudyContracts.SearchModel;
|
using SchoolAgainStudyContracts.SearchModel;
|
||||||
using SchoolAgainStudyContracts.ViewModel;
|
using SchoolAgainStudyContracts.ViewModel;
|
||||||
|
using SchoolAgainStudyDataBaseImplements.Models;
|
||||||
using SchoolAgainStudyDataModels.Models;
|
using SchoolAgainStudyDataModels.Models;
|
||||||
using StudentWebClient.Models;
|
using StudentWebClient.Models;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
@ -223,7 +224,7 @@ namespace StudentWebClient.Controllers
|
|||||||
{
|
{
|
||||||
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
|
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
|
||||||
}
|
}
|
||||||
if (string.IsNullOrEmpty(title) && string.IsNullOrEmpty(description) || string.IsNullOrEmpty(dateCreate) && task <=0 || interests.Length==0)
|
if (string.IsNullOrEmpty(title) && string.IsNullOrEmpty(description) || string.IsNullOrEmpty(dateCreate) || task <=0 || interests.Length==0)
|
||||||
{
|
{
|
||||||
throw new Exception("Введите название и описане");
|
throw new Exception("Введите название и описане");
|
||||||
}
|
}
|
||||||
@ -244,7 +245,7 @@ namespace StudentWebClient.Controllers
|
|||||||
DiyInterests = diyInterests
|
DiyInterests = diyInterests
|
||||||
|
|
||||||
}) ;
|
}) ;
|
||||||
Response.Redirect("Interests");
|
Response.Redirect("Diyes");
|
||||||
}
|
}
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public IActionResult DiySetting(int id)
|
public IActionResult DiySetting(int id)
|
||||||
@ -312,6 +313,109 @@ namespace StudentWebClient.Controllers
|
|||||||
});
|
});
|
||||||
Response.Redirect("/Home/Diyes");
|
Response.Redirect("/Home/Diyes");
|
||||||
}
|
}
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult Products()
|
||||||
|
{
|
||||||
|
if (APIClient.Student == null)
|
||||||
|
{
|
||||||
|
return Redirect("~/Home/Enter");
|
||||||
|
}
|
||||||
|
return View(_product.ReadList(new ProductSearchModel { StudentId = APIClient.Student.Id }));
|
||||||
|
}
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult CreateProduct()
|
||||||
|
{
|
||||||
|
var list = _interest.ReadList(new InterestSearchModel { StudentId = APIClient.Student.Id });
|
||||||
|
var simpInterest = list.Select(x => new { InterestId = x.Id, InterestName = x.Title });
|
||||||
|
ViewBag.Interests = new MultiSelectList(simpInterest, "InterestId", "InterestName");
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public void CreateProduct(string title, string description, string dateCreate, int[] interests)
|
||||||
|
{
|
||||||
|
if (APIClient.Student == null)
|
||||||
|
{
|
||||||
|
throw new Exception("Вы как суда попали? Суда вход только авторизованным");
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(title) && string.IsNullOrEmpty(description) || string.IsNullOrEmpty(dateCreate)|| interests.Length == 0)
|
||||||
|
{
|
||||||
|
throw new Exception("Введите название и описане");
|
||||||
|
}
|
||||||
|
Dictionary<int, IInterest> productInterests = new Dictionary<int, IInterest>();
|
||||||
|
foreach (int id in interests)
|
||||||
|
{
|
||||||
|
productInterests.Add(id, _interest.ReadElement(new InterestSearchModel { Id = id }));
|
||||||
|
}
|
||||||
|
_product.Create(new ProductBindingModel
|
||||||
|
{
|
||||||
|
StudentId = APIClient.Student.Id,
|
||||||
|
StudentName = APIClient.Student.Name,
|
||||||
|
Title = title,
|
||||||
|
Description = description,
|
||||||
|
DateCreate = DateTime.SpecifyKind(DateTime.Parse(dateCreate), DateTimeKind.Utc),
|
||||||
|
ProductInterests = productInterests
|
||||||
|
|
||||||
|
});
|
||||||
|
Response.Redirect("Products");
|
||||||
|
}
|
||||||
|
[HttpGet]
|
||||||
|
public IActionResult ProductSetting(int id)
|
||||||
|
{
|
||||||
|
var product = _product.ReadElement(new ProductSearchModel { Id = id });
|
||||||
|
var interests = _interest.ReadList(new InterestSearchModel { StudentId = APIClient.Student.Id }).Select(x => new { InterestId = x.Id, InterestName = x.Title }).ToList();
|
||||||
|
var selectedInterests = product.ProductInterests.Select(x => x.Key).ToArray();
|
||||||
|
ViewBag.Interests = new MultiSelectList(interests, "InterestId", "InterestName", selectedInterests);
|
||||||
|
return View(product);
|
||||||
|
}
|
||||||
|
[HttpPost]
|
||||||
|
public void UpdateProduct(int idDiy, string title, string description, string dateCreate, int[] interests)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(title))
|
||||||
|
{
|
||||||
|
throw new Exception("Нет названия");
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(description))
|
||||||
|
{
|
||||||
|
throw new Exception("Нет описания");
|
||||||
|
}
|
||||||
|
if (string.IsNullOrEmpty(dateCreate))
|
||||||
|
{
|
||||||
|
throw new Exception("Нет даты");
|
||||||
|
}
|
||||||
|
if (interests.Length == 0)
|
||||||
|
{
|
||||||
|
throw new Exception("Нет интересов");
|
||||||
|
}
|
||||||
|
|
||||||
|
Dictionary<int, IInterest> productInterests = new Dictionary<int, IInterest>();
|
||||||
|
foreach (int id in interests)
|
||||||
|
{
|
||||||
|
productInterests.Add(id, _interest.ReadElement(new InterestSearchModel { Id = id }));
|
||||||
|
}
|
||||||
|
_product.Update(new ProductBindingModel
|
||||||
|
{
|
||||||
|
Id = idDiy,
|
||||||
|
StudentId = APIClient.Student.Id,
|
||||||
|
StudentName = APIClient.Student.Name,
|
||||||
|
Title = title,
|
||||||
|
Description = description,
|
||||||
|
DateCreate = DateTime.SpecifyKind(DateTime.Parse(dateCreate), DateTimeKind.Utc),
|
||||||
|
ProductInterests = productInterests
|
||||||
|
|
||||||
|
});
|
||||||
|
Response.Redirect("/Home/Products");
|
||||||
|
}
|
||||||
|
|
||||||
|
public void DeleteProduct(int id)
|
||||||
|
{
|
||||||
|
|
||||||
|
_product.Delete(new ProductBindingModel
|
||||||
|
{
|
||||||
|
Id = id,
|
||||||
|
});
|
||||||
|
Response.Redirect("/Home/Products");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -0,0 +1,32 @@
|
|||||||
|
@{
|
||||||
|
ViewData["Title"] = "CreateProduct";
|
||||||
|
}
|
||||||
|
<div class="text-center">
|
||||||
|
<h2 class="display-4">Создание изделия</h2>
|
||||||
|
</div>
|
||||||
|
<form method="post">
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Название:</div>
|
||||||
|
<div class="col-8"><input type="text" name="title" id="title" /></div>
|
||||||
|
</div>
|
||||||
|
<div class="row m-3">
|
||||||
|
<div class="col-4">Описание:</div>
|
||||||
|
<div class="col-8"><textarea cols="50" id="description" name="description" rows="5"></textarea>:</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Дата создания:</div>
|
||||||
|
<div class="col-8">@Html.TextBox("dateCreate" ,"" ,new {type="Date"})</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Интересы:</div>
|
||||||
|
<div class="col-8">
|
||||||
|
@Html.ListBox("interests", (MultiSelectList)ViewBag.Interests)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-8"></div>
|
||||||
|
<div class="col-4"><input type="submit" value="Создать" class="btn btn-primary" /></div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
@ -19,11 +19,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="row m-3">
|
<div class="row m-3">
|
||||||
<div class="col-4">Описание:</div>
|
<div class="col-4">Описание:</div>
|
||||||
<div class="col-8"><textarea cols="50" id="description" name="description" rows="5">@Model.Description</textarea>:</div>
|
<div class="col-8"><textarea cols="50" id="description" name="description" rows="5">@Model.Description</textarea></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-4">Дата создания:</div>
|
<div class="col-4">Дата создания:</div>
|
||||||
<div class="col-8">@Html.TextBox("dateCreate" ,"" ,new {type="Date"})</div>
|
<div class="col-8">@Html.TextBox("dateCreate", Model.DateCreate.Date.ToString("yyyy-MM-dd"),new {type="Date"})</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-4">Задание:</div>
|
<div class="col-4">Задание:</div>
|
||||||
|
@ -34,6 +34,9 @@
|
|||||||
<th>
|
<th>
|
||||||
Задание
|
Задание
|
||||||
</th>
|
</th>
|
||||||
|
<th>
|
||||||
|
Интересы
|
||||||
|
</th>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
@ -50,6 +53,9 @@
|
|||||||
<td>
|
<td>
|
||||||
@Html.DisplayFor(modelItem => item.TaskName)
|
@Html.DisplayFor(modelItem => item.TaskName)
|
||||||
</td>
|
</td>
|
||||||
|
<td>
|
||||||
|
<select asp-items="@(new SelectList(item.DiyInterests,"Key", "Value.Title"))"></select>
|
||||||
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<a href="@Url.Action("DiySetting","Home", new {id=item.Id })"
|
<a href="@Url.Action("DiySetting","Home", new {id=item.Id })"
|
||||||
class="btn btn-primary btn-lg">U</a>
|
class="btn btn-primary btn-lg">U</a>
|
||||||
|
@ -0,0 +1,35 @@
|
|||||||
|
@using SchoolAgainStudyContracts.ViewModel;
|
||||||
|
@model ProductViewModel
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Setting";
|
||||||
|
}
|
||||||
|
<div class="text-center">
|
||||||
|
<h2 class="display-4">@Model.Title</h2>
|
||||||
|
</div>
|
||||||
|
<form method="post" action="@Url.Action("UpdateProduct", "Home", new{idDiy=Model.Id,title="#title",description="#description", dateCreate="#dateCreate",interests="#interests"})">
|
||||||
|
<div class="row m-3">
|
||||||
|
<div class="col-8">
|
||||||
|
<input type="submit" value="Обновить" class="col-md-4 btn btn-primary" />
|
||||||
|
<input type="button" class="col-md-4 ms-auto btn btn-danger" value="Удалить" onclick="location.href='@Url.Action("DeleteProduct","Home", new {id=Model.Id })'" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row m-3">
|
||||||
|
<div class="col-4">Название:</div>
|
||||||
|
<div class="col-8"><input type="text" name="title" id="title" value="@Model.Title" /></div>
|
||||||
|
</div>
|
||||||
|
<div class="row m-3">
|
||||||
|
<div class="col-4">Описание:</div>
|
||||||
|
<div class="col-8"><textarea cols="50" id="description" name="description" rows="5">@Model.Description</textarea>:</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Дата создания:</div>
|
||||||
|
<div class="col-8">@Html.TextBox("dateCreate" ,Model.DateCreate.Date.ToString("yyyy-MM-dd") ,new {type="Date"})</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4">Интересы:</div>
|
||||||
|
<div class="col-8">
|
||||||
|
@Html.ListBox("interests", (MultiSelectList)ViewBag.Interests)
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
62
SchoolAgainStudy/StudentWebClient/Views/Home/Products.cshtml
Normal file
62
SchoolAgainStudy/StudentWebClient/Views/Home/Products.cshtml
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
@using SchoolAgainStudyContracts.ViewModel;
|
||||||
|
|
||||||
|
@model List<ProductViewModel>
|
||||||
|
|
||||||
|
@{
|
||||||
|
ViewData["Title"] = "Home Page";
|
||||||
|
}
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<h1 class="display-4">Изделия</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
@{
|
||||||
|
if (Model == null)
|
||||||
|
{
|
||||||
|
<h3 class="display-4">Авторизируйтесь</h3>
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a asp-action="CreateProduct">Создать изделие</a>
|
||||||
|
</p>
|
||||||
|
<table class="table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>
|
||||||
|
Название
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Дата создания
|
||||||
|
</th>
|
||||||
|
<th>
|
||||||
|
Интересы
|
||||||
|
</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
@foreach (var item in Model)
|
||||||
|
{
|
||||||
|
<tr>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.Title)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
@Html.DisplayFor(modelItem => item.DateCreate)
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<select asp-items="@(new SelectList(item.ProductInterests,"Key", "Value.Title"))"></select>
|
||||||
|
</td>
|
||||||
|
<td>
|
||||||
|
<a href="@Url.Action("ProductSetting","Home", new {id=item.Id })"
|
||||||
|
class="btn btn-primary btn-lg">U</a>
|
||||||
|
</td>
|
||||||
|
|
||||||
|
</tr>
|
||||||
|
}
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
}
|
||||||
|
</div>
|
@ -38,6 +38,9 @@
|
|||||||
<li class="nav-item">
|
<li class="nav-item">
|
||||||
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Diyes">Поделки</a>
|
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Diyes">Поделки</a>
|
||||||
</li>
|
</li>
|
||||||
|
<li class="nav-item">
|
||||||
|
<a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Products">Изделия</a>
|
||||||
|
</li>
|
||||||
|
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
Loading…
Reference in New Issue
Block a user