158 lines
3.9 KiB
C#
Raw Normal View History

using Microsoft.AspNetCore.Mvc;
using VeterinaryClinicContracts.BindingModels;
using VeterinaryClinicContracts.BusinessLogicsContracts;
using VeterinaryClinicContracts.SearchModels;
using VeterinaryClinicDataModels.Models;
2024-05-01 23:10:05 +04:00
namespace VeterinaryClinicWebApp.Controllers
{
public class AnimalController : Controller
{
private readonly ILogger<AnimalController> _logger;
private readonly IAnimalLogic _animalLogic;
private readonly IMedicationLogic _medicationLogic;
public AnimalController(ILogger<AnimalController> logger, IAnimalLogic animalLogic, IMedicationLogic medicationLogic)
2024-05-01 23:10:05 +04:00
{
_logger = logger;
_animalLogic = animalLogic;
_medicationLogic = medicationLogic;
2024-05-01 23:10:05 +04:00
}
/// <summary>
/// Вывести список животных
/// </summary>
[HttpGet]
2024-05-01 23:10:05 +04:00
public IActionResult Animals()
{
if (APIClient.User == null)
{
return Redirect("~/Home/Enter");
}
return View(_animalLogic.ReadList(new AnimalSearchModel
{
UserId = APIClient.User.Id,
}));
2024-05-01 23:10:05 +04:00
}
/// <summary>
/// Создать животного
/// </summary>
[HttpGet]
2024-05-01 23:10:05 +04:00
public IActionResult CreateAnimal()
{
if (APIClient.User == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Medications = _medicationLogic.ReadList(null);
2024-05-01 23:10:05 +04:00
return View();
}
[HttpPost]
public void CreateAnimal(string type, string breed, int age, List<int> medication)
2024-05-01 23:10:05 +04:00
{
if (APIClient.User == null)
{
throw new Exception("Необходимо авторизоваться!");
}
2024-05-30 01:20:47 +04:00
if (string.IsNullOrEmpty(type) || string.IsNullOrEmpty(breed) || age < 0)
{
throw new Exception("Введены не все данные!");
}
Dictionary<int, IMedicationModel> animalMedication = new Dictionary<int, IMedicationModel>();
foreach (var medicationId in medication)
{
animalMedication.Add(medicationId, _medicationLogic.ReadElement(new MedicationSearchModel { Id = medicationId })!);
}
_animalLogic.Create(new AnimalBindingModel
{
Type = type,
Breed = breed,
Age = age,
AnimalMedications = animalMedication,
UserId = APIClient.User.Id
});
Response.Redirect("/Animal/Animals");
2024-05-01 23:10:05 +04:00
}
/// <summary>
/// Редактировать животного
/// </summary>
[HttpGet]
public IActionResult UpdateAnimal(int id)
2024-05-01 23:10:05 +04:00
{
if (APIClient.User == null)
{
return Redirect("~/Home/Enter");
}
ViewBag.Medications = _medicationLogic.ReadList(null);
return View(_animalLogic.ReadElement(new AnimalSearchModel
{
Id = id
}));
}
[HttpPost]
public void UpdateAnimal(int id, string type, string breed, int age, List<int> medication)
{
if (APIClient.User == null)
{
throw new Exception("Необходимо авторизоваться!");
}
2024-05-30 01:20:47 +04:00
if (string.IsNullOrEmpty(type) || string.IsNullOrEmpty(breed) || age < 0)
{
throw new Exception("Введены не все данные!");
}
Dictionary<int, IMedicationModel> animalMedication = new Dictionary<int, IMedicationModel>();
foreach (var medicationId in medication)
{
animalMedication.Add(medicationId, _medicationLogic.ReadElement(new MedicationSearchModel { Id = medicationId })!);
}
_animalLogic.Update(new AnimalBindingModel
{
Id = id,
Type = type,
Breed = breed,
Age = age,
AnimalMedications = animalMedication,
UserId = APIClient.User.Id
});
Response.Redirect("/Animal/Animals");
2024-05-01 23:10:05 +04:00
}
2024-05-29 16:14:54 +04:00
/// <summary>
/// Удалить животного
/// </summary>
[HttpPost]
public void DeleteAnimal(int id)
{
if (APIClient.User == null)
{
throw new Exception("Необходимо авторизоваться!");
}
_animalLogic.Delete(new AnimalBindingModel
{
Id = id
});
Response.Redirect("/Animal/Animals");
}
}
2024-05-01 23:10:05 +04:00
}