PIbd-22_Filippov_D.S._Cours.../VeterinaryRestApi/Controllers/DrugController.cs
2024-05-30 07:33:38 +04:00

135 lines
3.0 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

using Microsoft.AspNetCore.Mvc;
using VeterinaryContracts.BindingModels;
using VeterinaryContracts.BusinessLogicContracts;
using VeterinaryContracts.SearchModels;
using VeterinaryContracts.ViewModels;
using VeterinaryDatabaseImplement.Models;
namespace VeterinaryRestApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class DrugController : Controller
{
private readonly ILogger _logger;
private readonly IDrugLogic _drug;
public DrugController(ILogger<DrugController> logger, IDrugLogic drug)
{
_logger = logger;
_drug = drug;
}
[HttpGet]
public Tuple<DrugViewModel, List<Tuple<string, int>>>? GetDrug(int drugId)
{
try
{
var elem = _drug.ReadElement(new DrugSearchModel { Id = drugId });
if (elem == null)
return null;
var res = Tuple.Create(elem, elem.DrugServices.Select(x => Tuple.Create(x.Value.ServiceName, x.Value.Id)).ToList());
res.Item1.DrugServices = null!;
return res;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения услуги по id={Id}", drugId);
throw;
}
}
[HttpGet]
public DrugViewModel? GetOneDrug(int drugId)
{
try
{
var elem = _drug.ReadElement(new DrugSearchModel{Id =drugId});
if (elem == null)
return null;
elem.DrugServices = null!;
return elem;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения рекомендации по id={Id}",drugId);
throw;
}
}
[HttpGet]
public List<DrugViewModel> GetDrugs(int? doctorId = null)
{
try
{
List<DrugViewModel> res;
if (!doctorId.HasValue)
res = _drug.ReadList(null);
else
res = _drug.ReadList(new DrugSearchModel { DoctorId = doctorId.Value });
foreach (var drug in res)
drug.DrugServices = null;
return res;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка услуг");
throw;
}
}
[HttpGet]
public List<DrugViewModel> GetAllDrugs(int doctorId)
{
try
{
return _drug.ReadList(null);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка лекартсв");
throw;
}
}
[HttpPost]
public bool CreateDrug(DrugBindingModel model)
{
try
{
return _drug.Create(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Не удалось создать рекомендацию");
throw;
}
}
[HttpPost]
public bool UpdateDrug(DrugBindingModel model)
{
try
{
//model.DrugServices = null!;
return _drug.Update(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Не удалось обновить рекомендации");
throw;
}
}
[HttpPost]
public bool DeleteDrug(DrugBindingModel model)
{
try
{
return _drug.Delete(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка удаления рекомендации");
throw;
}
}
}
}