Работает!!!!!!

This commit is contained in:
maxnes3 2023-05-19 18:09:36 +04:00
parent f03bb241c0
commit 39bc95794b
10 changed files with 114 additions and 7 deletions

View File

@ -1,4 +1,6 @@
using CaseAccountingDataModels.Models;
using CaseAccountingContracts.ViewModels;
using CaseAccountingDataModels.Models;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
@ -20,5 +22,15 @@ namespace CaseAccountingContracts.BindingModels
public int Id { get; set; }
public Dictionary<int, ICaseModel> Cases { get; set; } = new();
public List<CaseViewModel> CaseViewModels { get; set; } = new();
public DealBindingModel() { }
[JsonConstructor]
public DealBindingModel(Dictionary<int, CaseViewModel> Cases)
{
this.Cases = Cases.ToDictionary(x => x.Key, x => (ICaseModel)x.Value);
}
}
}

View File

@ -6,6 +6,10 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\CaseAccountingDataModels\CaseAccountingDataModels.csproj" />
</ItemGroup>

View File

@ -64,7 +64,11 @@ namespace CaseAccountingDataBaseImplement.Models
Responsibilities = model.Responsibilities,
Date = model.Date,
UserId = model.UserId,
User = context.Users.FirstOrDefault(x => x.Id == model.UserId) ?? throw new Exception("User не существует")
User = context.Users.FirstOrDefault(x => x.Id == model.UserId) ?? throw new Exception("User не существует"),
CaseDeals = model.Cases.Select(x => new CaseDeal
{
Case = context.Cases.First(y => y.Id == x.Key)
}).ToList()
};
}

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
@ -12,6 +12,7 @@
<ItemGroup>
<ProjectReference Include="..\CaseAccountingContracts\CaseAccountingContracts.csproj" />
<ProjectReference Include="..\CaseAccountingDataModels\CaseAccountingDataModels.csproj" />
</ItemGroup>
<ItemGroup>

View File

@ -1,5 +1,6 @@
using CaseAccountingContracts.BindingModels;
using CaseAccountingContracts.ViewModels;
using CaseAccountingDataModels.Models;
using Microsoft.AspNetCore.Mvc;
namespace CaseAccountingProviderView.Controllers
@ -23,7 +24,14 @@ namespace CaseAccountingProviderView.Controllers
throw new Exception("403");
}
dealModel.UserId = APIUser.User.Id;
APIUser.PostRequest("api/deal/create", dealModel);
var dict = new Dictionary<int, ICaseModel>();
foreach (var element in dealModel.CaseViewModels)
{
var caseModel = APIUser.GetRequest<CaseViewModel>($"api/case/get?id={element.Id}");
dict.Add(element.Id, caseModel);
}
dealModel.Cases = dict;
APIUser.PostRequest("api/deal/create", dealModel);
Response.Redirect("/Home/Deals");
}

View File

@ -17,6 +17,25 @@
<p class="mb-0">Дата составления:</p>
<input type="date" id="date-input" name="date" class="form-control mb-3" />
<div>
<div class="scrollable-table">
<table class="table table-bordered">
<thead class="thead-light">
<tr>
<th>Номер дела:</th>
<th>Истец:</th>
<th>Ответчик:</th>
<th>Дата составления:</th>
<th>Примечание:</th>
<th>Специализация:</th>
</tr>
</thead>
<tbody id="scrollable-table__tbody">
</tbody>
</table>
</div>
</div>
<button id="create-button" type="button" class="btn btn-primary text-button">
Создать
</button>

View File

@ -15,4 +15,13 @@ html {
body {
margin-bottom: 60px;
}
.scrollable-table {
max-height: 400px;
overflow-y: auto;
}
.scrollable-table tr {
transition: background-color 0.3s ease;
}

View File

@ -2,6 +2,37 @@
const subjectInput = document.getElementById("subject-input");
const responsibilitiesInput = document.getElementById("responsibilities-input");
const dateInput = document.getElementById("date-input");
const tbody = document.getElementById("scrollable-table__tbody")
var cases = [];
var dataArray = [];
window.addEventListener("load", async () => {
try {
await $.ajax({
url: `/case/getallbyuser`,
type: "GET",
contentType: "json"
}).done((result) => {
cases = result;
cases.forEach((caseModel) => {
const { id, name, applicant, defendant, annotation, date, specialization } = caseModel;
const row = tbody.insertRow();
row.setAttribute("data-id", id);
const cells = [name, applicant, defendant, annotation, date, specialization];
cells.forEach((value) => {
const cell = row.insertCell();
cell.textContent = value;
});
row.addEventListener('click', () => addAndRemoveFromList(row));
});
});
} catch (error) {
console.error(error);
}
});
createBtn.addEventListener("click", () => {
if (!correctData()) {
@ -26,7 +57,8 @@ createBtn.addEventListener("click", () => {
let dealModel = {
"Subject": subjectInput.value,
"Responsibilities": responsibilitiesInput.value,
"Date": new Date(dateInput.value)
"Date": new Date(dateInput.value),
"CaseViewModels": dataArray
};
console.log(dealModel)
$.ajax({
@ -37,4 +69,18 @@ createBtn.addEventListener("click", () => {
}).done(() => {
window.location.href = "/Home/Deals";
});
});
});
const addAndRemoveFromList = (row) => {
var id = parseInt(row.dataset.id);
console.log(cases.find(x => x.id === id))
var index = dataArray.indexOf(cases.find(x => x.id === id));
if (index === -1) {
dataArray.push(cases.find(x => x.id === id));
row.classList.add("bg-primary");
} else {
dataArray.splice(index, 1);
row.classList.remove("bg-primary");
}
console.log(dataArray);
}

View File

@ -1,4 +1,4 @@
<Project Sdk="Microsoft.NET.Sdk.Web">
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
@ -7,6 +7,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="6.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.5">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
@ -19,6 +20,7 @@
<ProjectReference Include="..\CaseAccountingBusinessLogics\CaseAccountingBusinessLogic.csproj" />
<ProjectReference Include="..\CaseAccountingContracts\CaseAccountingContracts.csproj" />
<ProjectReference Include="..\CaseAccountingDataBaseImplement\CaseAccountingDataBaseImplement.csproj" />
<ProjectReference Include="..\CaseAccountingDataModels\CaseAccountingDataModels.csproj" />
</ItemGroup>
</Project>

View File

@ -26,6 +26,8 @@ builder.Services.AddTransient<ILawyerLogic, LawyerLogic>();
builder.Services.AddTransient<ISpecializationLogic, SpecializationLogic>();
builder.Services.AddTransient<IUserLogic, UserLogic>();
builder.Services.AddControllers().AddNewtonsoftJson();
builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();