226 lines
6.3 KiB
C#
226 lines
6.3 KiB
C#
using DocumentFormat.OpenXml.Office2010.Excel;
|
|
using Microsoft.AspNetCore.Http;
|
|
using Microsoft.AspNetCore.Mvc;
|
|
using System.Diagnostics;
|
|
using VeterinaryClinicBusinessLogics.BusinessLogics;
|
|
using VeterinaryClinicContracts.BindingModels;
|
|
using VeterinaryClinicContracts.BusinessLogicsContracts;
|
|
using VeterinaryClinicContracts.SearchModels;
|
|
using VeterinaryClinicDatabaseImplement.Models;
|
|
using VeterinaryClinicDataModels.Models;
|
|
using VeterinaryClinicWebApp.Models;
|
|
|
|
namespace VeterinaryClinicWebApp.Controllers
|
|
{
|
|
public class VisitController : Controller
|
|
{
|
|
private readonly ILogger<VisitController> _logger;
|
|
|
|
private readonly IVisitLogic _visitLogic;
|
|
|
|
private readonly IAnimalLogic _animalLogic;
|
|
|
|
private readonly IServiceLogic _serviceLogic;
|
|
public VisitController(ILogger<VisitController> logger, IVisitLogic visitLogic, IAnimalLogic animalLogic, IServiceLogic serviceLogic)
|
|
{
|
|
_logger = logger;
|
|
_visitLogic = visitLogic;
|
|
_animalLogic = animalLogic;
|
|
_serviceLogic = serviceLogic;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Вывести список визитов
|
|
/// </summary>
|
|
public IActionResult Visits()
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
return Redirect("~/Home/Enter");
|
|
}
|
|
|
|
return View(_visitLogic.ReadList(new VisitSearchModel
|
|
{
|
|
UserId = APIClient.User.Id,
|
|
}));
|
|
}
|
|
|
|
/// <summary>
|
|
/// Создать визит
|
|
/// </summary>
|
|
[HttpGet]
|
|
public IActionResult CreateVisit()
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
return Redirect("~/Home/Enter");
|
|
}
|
|
|
|
ViewBag.Services = _serviceLogic.ReadList(null);
|
|
|
|
return View();
|
|
}
|
|
|
|
[HttpPost]
|
|
public void CreateVisit(DateTime dateVisit, List<int> service)
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Необходимо авторизоваться!");
|
|
}
|
|
|
|
if (dateVisit == DateTime.MinValue)
|
|
{
|
|
throw new Exception("Введены не все данные!");
|
|
}
|
|
|
|
Dictionary<int, IServiceModel> visitServices = new Dictionary<int, IServiceModel>();
|
|
foreach (var serviceId in service)
|
|
{
|
|
visitServices.Add(serviceId, _serviceLogic.ReadElement(new ServiceSearchModel { Id = serviceId })!);
|
|
}
|
|
|
|
_visitLogic.Create(new VisitBindingModel
|
|
{
|
|
Date = dateVisit,
|
|
VisitServices = visitServices,
|
|
UserId = APIClient.User.Id
|
|
});
|
|
|
|
Response.Redirect("/Visit/Visits");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Редактировать визит
|
|
/// </summary>
|
|
[HttpGet]
|
|
public IActionResult UpdateVisit(int id)
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
return Redirect("~/Home/Enter");
|
|
}
|
|
|
|
ViewBag.Services = _serviceLogic.ReadList(null);
|
|
|
|
return View(_visitLogic.ReadElement(new VisitSearchModel
|
|
{
|
|
Id = id
|
|
}));
|
|
}
|
|
|
|
[HttpPost]
|
|
public void UpdateVisit(int id, DateTime dateVisit, List<int> service)
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Необходимо авторизоваться!");
|
|
}
|
|
|
|
if (dateVisit == DateTime.MinValue)
|
|
{
|
|
throw new Exception("Введены не все данные!");
|
|
}
|
|
|
|
Dictionary<int, IServiceModel> visitServices = new Dictionary<int, IServiceModel>();
|
|
foreach (var serviceId in service)
|
|
{
|
|
visitServices.Add(serviceId, _serviceLogic.ReadElement(new ServiceSearchModel { Id = serviceId })!);
|
|
}
|
|
|
|
var visit = _visitLogic.ReadElement(new VisitSearchModel { Id = id });
|
|
_visitLogic.Update(new VisitBindingModel
|
|
{
|
|
Id = id,
|
|
Date = dateVisit,
|
|
VisitServices = visitServices,
|
|
VisitAnimals = visit!.VisitAnimals,
|
|
UserId = APIClient.User.Id
|
|
});
|
|
|
|
Response.Redirect("/Visit/Visits");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Удалить визит
|
|
/// </summary>
|
|
[HttpPost]
|
|
public void DeleteVisit(int id)
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Необходимо авторизоваться!");
|
|
}
|
|
|
|
_visitLogic.Delete(new VisitBindingModel
|
|
{
|
|
Id = id
|
|
});
|
|
|
|
Response.Redirect("/Visit/Visits");
|
|
}
|
|
|
|
/// <summary>
|
|
/// Выписать рецепт пациенту
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
/// <exception cref="Exception"></exception>
|
|
[HttpGet]
|
|
public IActionResult CreateVisitAnimal()
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Необходимо авторизоваться!");
|
|
}
|
|
|
|
ViewBag.Visits = _visitLogic.ReadList(new VisitSearchModel
|
|
{
|
|
UserId = APIClient.User.Id
|
|
});
|
|
ViewBag.Animals = _animalLogic.ReadList(new AnimalSearchModel
|
|
{
|
|
UserId = APIClient.User.Id
|
|
});
|
|
|
|
return View();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Выписать рецепт пациенту
|
|
/// </summary>
|
|
/// <exception cref="Exception"></exception>
|
|
[HttpPost]
|
|
public void CreateVisitAnimal(int visitId, List<int> animals)
|
|
{
|
|
if (APIClient.User == null)
|
|
{
|
|
throw new Exception("Необходимо авторизоваться!");
|
|
}
|
|
|
|
if (visitId <= 0 || animals == 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 })!);
|
|
}
|
|
|
|
var visit = _visitLogic.ReadElement(new VisitSearchModel { Id = visitId });
|
|
|
|
_visitLogic.Update(new VisitBindingModel
|
|
{
|
|
Id = visit!.Id,
|
|
Date = visit!.Date,
|
|
VisitServices = visit!.VisitServices,
|
|
VisitAnimals = visitAnimals,
|
|
UserId = APIClient.User.Id
|
|
});
|
|
|
|
Response.Redirect("/Visit/Visits");
|
|
}
|
|
}
|
|
}
|