Добавил диаграмму
This commit is contained in:
parent
636af51602
commit
db5681fc25
@ -76,6 +76,11 @@ namespace CaseAccountingBusinessLogic.BusinessLogics
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<SpecializationCasesViewModel> GetSpecializationCases()
|
||||||
|
{
|
||||||
|
return _caseStorage.GetSpecializationCases() ?? new List<SpecializationCasesViewModel>();
|
||||||
|
}
|
||||||
|
|
||||||
public bool Update(CaseBindingModel model)
|
public bool Update(CaseBindingModel model)
|
||||||
{
|
{
|
||||||
CheckModel(model);
|
CheckModel(model);
|
||||||
|
@ -16,5 +16,6 @@ namespace CaseAccountingContracts.BusinessLogicContracts
|
|||||||
bool Create(CaseBindingModel model);
|
bool Create(CaseBindingModel model);
|
||||||
bool Update(CaseBindingModel model);
|
bool Update(CaseBindingModel model);
|
||||||
bool Delete(CaseBindingModel model);
|
bool Delete(CaseBindingModel model);
|
||||||
|
List<SpecializationCasesViewModel> GetSpecializationCases();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,5 +19,6 @@ namespace CaseAccountingContracts.StoragesContracts
|
|||||||
CaseViewModel? Delete(CaseBindingModel model);
|
CaseViewModel? Delete(CaseBindingModel model);
|
||||||
|
|
||||||
List<HearingViewModel> GetCaseHearings(CaseSearchModel model);
|
List<HearingViewModel> GetCaseHearings(CaseSearchModel model);
|
||||||
|
List<SpecializationCasesViewModel>? GetSpecializationCases();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace CaseAccountingContracts.ViewModels
|
||||||
|
{
|
||||||
|
public class SpecializationCasesViewModel
|
||||||
|
{
|
||||||
|
public int Count { get; set; }
|
||||||
|
public string Name { get; set; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
@ -185,5 +185,22 @@ namespace CaseAccountingDataBaseImplement.Implements
|
|||||||
return hearings;
|
return hearings;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<SpecializationCasesViewModel>? GetSpecializationCases()
|
||||||
|
{
|
||||||
|
using var context = new CaseAccountingDatabase();
|
||||||
|
var result = context.Specializations
|
||||||
|
.GroupJoin(
|
||||||
|
context.Cases,
|
||||||
|
status => status.Id,
|
||||||
|
caseModel => caseModel.SpecializationId,
|
||||||
|
(status, caseModels) => new SpecializationCasesViewModel
|
||||||
|
{
|
||||||
|
Name = status.Name,
|
||||||
|
Count = caseModels.Count()
|
||||||
|
})
|
||||||
|
.ToList();
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -129,5 +129,15 @@ namespace CaseAccountingProviderView.Controllers
|
|||||||
List<SpecializationViewModel>? specializationModel = APIUser.GetRequest<List<SpecializationViewModel>>($"api/case/getallspecializations");
|
List<SpecializationViewModel>? specializationModel = APIUser.GetRequest<List<SpecializationViewModel>>($"api/case/getallspecializations");
|
||||||
return specializationModel ?? new();
|
return specializationModel ?? new();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public List<SpecializationCasesViewModel> GetSpecializationCases()
|
||||||
|
{
|
||||||
|
if (APIUser.User == null)
|
||||||
|
{
|
||||||
|
return new();
|
||||||
|
}
|
||||||
|
List<SpecializationCasesViewModel>? specializationCases = APIUser.GetRequest<List<SpecializationCasesViewModel>>($"api/case/getspecializationcases");
|
||||||
|
return specializationCases ?? new();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,6 +40,11 @@ namespace CaseAccountingProviderView.Controllers
|
|||||||
return View();
|
return View();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IActionResult Diagram()
|
||||||
|
{
|
||||||
|
return View();
|
||||||
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public int[]? SpecializationCaselist([FromBody] CaseSpecializationListBindingModel listModel)
|
public int[]? SpecializationCaselist([FromBody] CaseSpecializationListBindingModel listModel)
|
||||||
{
|
{
|
||||||
|
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
<div class="text-center">
|
||||||
|
<h1 class="display-4">Круговая диаграмма</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<button class="btn btn-success mt-4" id="btnStatus">Статистика по специализации дел</button>
|
||||||
|
<div class="container col-8 mt-4">
|
||||||
|
<canvas id="myChart"></canvas>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
|
||||||
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||||
|
<script src="~/js/diagram/diagram.js" asp-append-version="true"></script>
|
@ -23,6 +23,7 @@
|
|||||||
<a class="nav-link text-white" asp-area="" asp-controller="Home" asp-action="Hearings">Слушания</a>
|
<a class="nav-link text-white" asp-area="" asp-controller="Home" asp-action="Hearings">Слушания</a>
|
||||||
<a class="nav-link text-white" asp-area="" asp-controller="Home" asp-action="SpecializationCaselist">Получение список</a>
|
<a class="nav-link text-white" asp-area="" asp-controller="Home" asp-action="SpecializationCaselist">Получение список</a>
|
||||||
<a class="nav-link text-white" asp-area="" asp-controller="Home" asp-action="GetReport">Получение отчёта</a>
|
<a class="nav-link text-white" asp-area="" asp-controller="Home" asp-action="GetReport">Получение отчёта</a>
|
||||||
|
<a class="nav-link text-white" asp-area="" asp-controller="Home" asp-action="Diagram">Формирование диаграммы</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -19,7 +19,6 @@ const formatDate = (dateString) => {
|
|||||||
|
|
||||||
window.addEventListener("load", async () => {
|
window.addEventListener("load", async () => {
|
||||||
try {
|
try {
|
||||||
let specializationId;
|
|
||||||
await $.ajax({
|
await $.ajax({
|
||||||
url: `/case/get?id=${caseId}`,
|
url: `/case/get?id=${caseId}`,
|
||||||
type: "GET",
|
type: "GET",
|
||||||
@ -30,11 +29,8 @@ window.addEventListener("load", async () => {
|
|||||||
defendantInput.value = result.defendant;
|
defendantInput.value = result.defendant;
|
||||||
annotationInput.value = result.annotation;
|
annotationInput.value = result.annotation;
|
||||||
dateInput.value = formatDate(result.date);
|
dateInput.value = formatDate(result.date);
|
||||||
specializationId = result.specializationId;
|
|
||||||
});
|
});
|
||||||
|
|
||||||
let specializationIndex;
|
|
||||||
|
|
||||||
await $.ajax({
|
await $.ajax({
|
||||||
url: `/case/getallspecializations`,
|
url: `/case/getallspecializations`,
|
||||||
type: "GET",
|
type: "GET",
|
||||||
@ -46,14 +42,9 @@ window.addEventListener("load", async () => {
|
|||||||
option.value = specialization.id;
|
option.value = specialization.id;
|
||||||
option.innerHTML = specialization.name;
|
option.innerHTML = specialization.name;
|
||||||
specializationSelect.appendChild(option);
|
specializationSelect.appendChild(option);
|
||||||
if(specialization.id === specializationId){
|
|
||||||
specializationIndex = specializationSelect.selectedIndex;
|
|
||||||
}
|
|
||||||
specializationSelect.selectedIndex = -1;
|
specializationSelect.selectedIndex = -1;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
specializationSelect.selectedIndex = specializationIndex;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}
|
}
|
||||||
@ -84,7 +75,7 @@ updateBtn.addEventListener("click", () => {
|
|||||||
"Name": nameInput.value,
|
"Name": nameInput.value,
|
||||||
"Applicant": applicantInput.value,
|
"Applicant": applicantInput.value,
|
||||||
"Defendant": defendantInput.value,
|
"Defendant": defendantInput.value,
|
||||||
"Date": new Date(dateInput.value),
|
"Date": dateInput.value,
|
||||||
"Annotation": annotationInput.value,
|
"Annotation": annotationInput.value,
|
||||||
"SpecializationId": parseInt(specializationSelect.value),
|
"SpecializationId": parseInt(specializationSelect.value),
|
||||||
};
|
};
|
||||||
|
@ -4,6 +4,14 @@ const responsibilitiesInput = document.getElementById("responsibilities-input");
|
|||||||
const dateInput = document.getElementById("date-input");
|
const dateInput = document.getElementById("date-input");
|
||||||
const dealId = document.getElementById("vb-id").dataset.id;
|
const dealId = document.getElementById("vb-id").dataset.id;
|
||||||
|
|
||||||
|
const formatDate = (dateString) => {
|
||||||
|
const date = new Date(dateString);
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = ('0' + (date.getMonth() + 1)).slice(-2);
|
||||||
|
const day = ('0' + date.getDate()).slice(-2);
|
||||||
|
return `${year}-${month}-${day}`;
|
||||||
|
};
|
||||||
|
|
||||||
window.addEventListener("load", async () => {
|
window.addEventListener("load", async () => {
|
||||||
try {
|
try {
|
||||||
await $.ajax({
|
await $.ajax({
|
||||||
@ -13,7 +21,7 @@ window.addEventListener("load", async () => {
|
|||||||
}).done((result) => {
|
}).done((result) => {
|
||||||
subjectInput.value = result.subject;
|
subjectInput.value = result.subject;
|
||||||
responsibilitiesInput.value = result.responsibilities;
|
responsibilitiesInput.value = result.responsibilities;
|
||||||
dateInput.value = new Date(result.date);
|
dateInput.value = formatDate(result.date);
|
||||||
});
|
});
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
@ -44,7 +52,7 @@ updateBtn.addEventListener("click", () => {
|
|||||||
"Id": parseInt(dealId),
|
"Id": parseInt(dealId),
|
||||||
"Subject": subjectInput.value,
|
"Subject": subjectInput.value,
|
||||||
"Responsibilities": responsibilitiesInput.value,
|
"Responsibilities": responsibilitiesInput.value,
|
||||||
"Date": new Date(dateInput.value)
|
"Date": dateInput.value
|
||||||
};
|
};
|
||||||
console.log(dealModel)
|
console.log(dealModel)
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -0,0 +1,52 @@
|
|||||||
|
var btnStatus = document.getElementById('btnStatus');
|
||||||
|
var casespecializations = [];
|
||||||
|
|
||||||
|
window.addEventListener('load', async () => {
|
||||||
|
await $.ajax({
|
||||||
|
url: "/case/getspecializationcases",
|
||||||
|
type: "GET",
|
||||||
|
contentType: "json"
|
||||||
|
}).done((result) => {
|
||||||
|
casespecializations = result;
|
||||||
|
console.log(casespecializations);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
var ctx = document.getElementById('myChart').getContext('2d');
|
||||||
|
var chart;
|
||||||
|
|
||||||
|
function drawStatusChart() {
|
||||||
|
var edStatus = [];
|
||||||
|
var edCount = [];
|
||||||
|
console.log(casespecializations)
|
||||||
|
casespecializations.forEach((item) => {
|
||||||
|
edStatus.push(item.name);
|
||||||
|
});
|
||||||
|
casespecializations.forEach((item) => {
|
||||||
|
edCount.push(item.count);
|
||||||
|
});
|
||||||
|
var statusData = {
|
||||||
|
labels: edStatus,
|
||||||
|
datasets: [{
|
||||||
|
data: edCount
|
||||||
|
}]
|
||||||
|
};
|
||||||
|
|
||||||
|
// Clear the previous chart if it exists
|
||||||
|
if (chart) {
|
||||||
|
chart.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
chart = new Chart(ctx, {
|
||||||
|
type: 'pie',
|
||||||
|
data: statusData,
|
||||||
|
options: {
|
||||||
|
responsive: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
btnStatus.addEventListener('click', function () {
|
||||||
|
drawStatusChart();
|
||||||
|
});
|
||||||
|
|
@ -6,21 +6,25 @@ const hearingId = document.getElementById("vb-id").dataset.id;
|
|||||||
|
|
||||||
var cases = [];
|
var cases = [];
|
||||||
|
|
||||||
|
const formatDate = (dateString) => {
|
||||||
|
const date = new Date(dateString);
|
||||||
|
const year = date.getFullYear();
|
||||||
|
const month = ('0' + (date.getMonth() + 1)).slice(-2);
|
||||||
|
const day = ('0' + date.getDate()).slice(-2);
|
||||||
|
return `${year}-${month}-${day}`;
|
||||||
|
};
|
||||||
|
|
||||||
window.addEventListener("load", async () => {
|
window.addEventListener("load", async () => {
|
||||||
try {
|
try {
|
||||||
let caseId;
|
|
||||||
await $.ajax({
|
await $.ajax({
|
||||||
url: `/hearing/get?id=${hearingId}`,
|
url: `/hearing/get?id=${hearingId}`,
|
||||||
type: "GET",
|
type: "GET",
|
||||||
contentType: "json"
|
contentType: "json"
|
||||||
}).done((result) => {
|
}).done((result) => {
|
||||||
informationInput.value = result.information;
|
informationInput.value = result.information;
|
||||||
dateInput.value = new Date(result.date);
|
dateInput.value = formatDate(result.date);
|
||||||
caseId = result.caseId;
|
|
||||||
});
|
});
|
||||||
|
await $.ajax({
|
||||||
let caseIndex;
|
|
||||||
$.ajax({
|
|
||||||
url: "/case/getallbyuser",
|
url: "/case/getallbyuser",
|
||||||
type: "GET",
|
type: "GET",
|
||||||
contentType: "json"
|
contentType: "json"
|
||||||
@ -31,14 +35,9 @@ window.addEventListener("load", async () => {
|
|||||||
option.value = element.id;
|
option.value = element.id;
|
||||||
option.innerHTML = "Дело №" + element.id;
|
option.innerHTML = "Дело №" + element.id;
|
||||||
caseSelect.appendChild(option);
|
caseSelect.appendChild(option);
|
||||||
if(element.id === caseId){
|
|
||||||
caseIndex = caseSelect.selectedIndex;
|
|
||||||
}
|
|
||||||
caseSelect.selectedIndex = -1;
|
caseSelect.selectedIndex = -1;
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
caseSelect.selectedIndex = caseIndex;
|
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error(error);
|
console.error(error);
|
||||||
}
|
}
|
||||||
@ -68,7 +67,7 @@ updateBtn.addEventListener("click", () => {
|
|||||||
"Id": parseInt(hearingId),
|
"Id": parseInt(hearingId),
|
||||||
"Information": informationInput.value,
|
"Information": informationInput.value,
|
||||||
"CaseId": parseInt(caseSelect.value),
|
"CaseId": parseInt(caseSelect.value),
|
||||||
"Date": new Date(dateInput.value)
|
"Date": dateInput.value
|
||||||
};
|
};
|
||||||
console.log(hearingModel)
|
console.log(hearingModel)
|
||||||
$.ajax({
|
$.ajax({
|
||||||
|
@ -59,7 +59,20 @@ namespace CaseAccountingRestApi.Controllers
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpPost]
|
[HttpGet]
|
||||||
|
public List<SpecializationCasesViewModel> GetSpecializationCases()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return _logic.GetSpecializationCases();
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
throw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpPost]
|
||||||
public void Create(CaseBindingModel model)
|
public void Create(CaseBindingModel model)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
Loading…
Reference in New Issue
Block a user