Добавил выбор животных

This commit is contained in:
Владимир Данилов 2024-05-30 06:05:56 +04:00
parent b6f19b7c54
commit 8b529366f0
4 changed files with 65 additions and 26 deletions

View File

@ -10,6 +10,7 @@ using VeterinaryClinicContracts.BusinessLogicsContracts;
using VeterinaryClinicContracts.SearchModels;
using VeterinaryClinicContracts.StoragesContracts;
using VeterinaryClinicContracts.ViewModels;
using VeterinaryClinicDataModels.Models;
namespace VeterinaryClinicBusinessLogics.BusinessLogics
{
@ -73,35 +74,38 @@ namespace VeterinaryClinicBusinessLogics.BusinessLogics
// Проходим по списку полученных животных
foreach (var animal in animals)
{
// Создаём запись
var record = new ReportAnimalServicesViewModel
if (model.VisitAnimals.ContainsKey(animal.Id))
{
Animal = animal,
// HashSet используется для того, чтобы не повторялись процедуры
Services = new HashSet<ServiceViewModel>()
};
// Проходим по списку всех визитов
foreach (var visit in visits)
{
// Проверяем есть ли у визита текущее животное
if (visit.VisitAnimals.ContainsKey(animal.Id))
// Создаём запись
var record = new ReportAnimalServicesViewModel
{
// Если есть, то проходим по списку всех услуг визита
foreach (var serviceId in visit.VisitServices.Keys)
Animal = animal,
// HashSet используется для того, чтобы не повторялись процедуры
Services = new HashSet<ServiceViewModel>()
};
// Проходим по списку всех визитов
foreach (var visit in visits)
{
// Проверяем есть ли у визита текущее животное
if (visit.VisitAnimals.ContainsKey(animal.Id))
{
// Находим услугу и добавляем в список услуг
var service = _serviceStorage.GetElement(new ServiceSearchModel
// Если есть, то проходим по списку всех услуг визита
foreach (var serviceId in visit.VisitServices.Keys)
{
Id = serviceId
});
record.Services.Add(service!);
// Находим услугу и добавляем в список услуг
var service = _serviceStorage.GetElement(new ServiceSearchModel
{
Id = serviceId
});
record.Services.Add(service!);
}
}
}
}
// Добавляем запись
result.Add(record);
// Добавляем запись
result.Add(record);
}
}
return result;

View File

@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using VeterinaryClinicDataModels.Models;
namespace VeterinaryClinicContracts.BindingModels
{
@ -30,5 +31,7 @@ namespace VeterinaryClinicContracts.BindingModels
/// Идентификатор пользователя
/// </summary>
public int UserId { get; set; }
public Dictionary<int, IAnimalModel> VisitAnimals { get; set; } = new();
}
}

View File

@ -5,6 +5,7 @@ using VeterinaryClinicContracts.BindingModels;
using VeterinaryClinicContracts.BusinessLogicsContracts;
using VeterinaryClinicContracts.SearchModels;
using VeterinaryClinicDataModels.Enums;
using VeterinaryClinicDataModels.Models;
using VeterinaryClinicWebApp.Models;
using static System.Runtime.InteropServices.JavaScript.JSType;
@ -189,6 +190,11 @@ public class HomeController : Controller
return Redirect("~/Home/Enter");
}
ViewBag.Animals = _animalLogic.ReadList(new AnimalSearchModel
{
UserId = APIClient.User.Id
});
return View();
}
@ -222,17 +228,24 @@ public class HomeController : Controller
/// Ñîçäàòü îò÷¸ò â ôîðìàòå Word
/// </summary>
[HttpPost]
public void CreateReportWord()
public void CreateReportWord(List<int> animals)
{
if (APIClient.User == null)
{
throw new Exception("Íåîáõîäèìî àâòîðèçîâàòüñÿ!");
}
Dictionary<int, IAnimalModel> visitAnimals = new Dictionary<int, IAnimalModel>();
foreach (var animalId in animals)
{
visitAnimals.Add(animalId, _animalLogic.ReadElement(new AnimalSearchModel { Id = animalId })!);
}
_reportLogic.SaveAnimalServicesToWordFile(new ReportBindingModel
{
FileName = $@"D:\ {DateTime.Now.ToString("dd-MM-yyyy HH-mm-ss")}.docx",
UserId = APIClient.User.Id
UserId = APIClient.User.Id,
VisitAnimals = visitAnimals
});
Response.Redirect("/Home/Reports");
@ -242,17 +255,24 @@ public class HomeController : Controller
/// Ñîçäàòü îò÷¸ò â ôîðìàòå Excel
/// </summary>
[HttpPost]
public void CreateReportExcel()
public void CreateReportExcel(List<int> animals)
{
if (APIClient.User == null)
{
throw new Exception("Íåîáõîäèìî àâòîðèçîâàòüñÿ!");
}
Dictionary<int, IAnimalModel> visitAnimals = new Dictionary<int, IAnimalModel>();
foreach (var animalId in animals)
{
visitAnimals.Add(animalId, _animalLogic.ReadElement(new AnimalSearchModel { Id = animalId })!);
}
_reportLogic.SaveAnimalServicesToExcelFile(new ReportBindingModel
{
FileName = $@"D:\ {DateTime.Now.ToString("dd-MM-yyyy HH-mm-ss")}.xlsx",
UserId = APIClient.User.Id
UserId = APIClient.User.Id,
VisitAnimals = visitAnimals
});
Response.Redirect("/Home/Reports");

View File

@ -13,6 +13,18 @@
<form method="post" enctype="multipart/form-data" style="margin-top: 50px">
<!-- Сохранить отчеты в формате Word и Excel -->
<div class="d-flex justify-content-center" style="gap: 30px">
<!-- Животные -->
<div class="row">
<div class="col-4">Животные:</div>
<div class="col-8">
<select name="animals" id="animals" class="form-control" size="4" multiple>
@foreach (var animal in ViewBag.Animals)
{
<option value="@animal.Id">@animal.Breed - @animal.Age</option>
}
</select>
</div>
</div>
<div class="text-center">
<button type="submit" class="btn btn-primary" formaction="@Url.Action("CreateReportWord", "Home")">Список услуг Word</button>
</div>