PIbd-23-Salin-O.A.-IceCream.../IceCreamShop/IceCreamShopRestApi/Controllers/ShopController.cs
gg12 darfren bdb15b04aa .
2024-04-14 18:39:07 +04:00

110 lines
2.4 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 IceCreamShopContracts.BindingModels;
using IceCreamShopContracts.BusinessLogicsContracts;
using IceCreamShopContracts.SearchModels;
using IceCreamShopContracts.ViewModels;
using IceCreamShopDataModels.Models;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace IceCreamShopRestApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class ShopController : ControllerBase
{
private readonly ILogger _logger;
private readonly IShopLogic _logic;
public ShopController(IShopLogic logic, ILogger<ShopController>
logger)
{
_logger = logger;
_logic = logic;
}
[HttpGet]
public Tuple<ShopViewModel, List<Tuple<string, int>>>? GetShop(int shopId)
{
try
{
var elem = _logic.ReadElement(new ShopSearchModel { Id = shopId });
if (elem == null)
return null;
return Tuple.Create(elem, elem.ShopIceCreams.Select(x => Tuple.Create(x.Value.Item1.IceCreamName, x.Value.Item2)).ToList());
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения магазина по id={Id}", shopId);
throw;
}
}
[HttpGet]
public List<ShopViewModel> GetShops()
{
try
{
return _logic.ReadList(null);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка магазинов");
throw;
}
}
[HttpPost]
public bool CreateShop(ShopBindingModel model)
{
try
{
return _logic.Create(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Не удалось создать магазин");
throw;
}
}
[HttpPost]
public bool UpdateShop(ShopBindingModel model)
{
try
{
model.ShopIceCreams = null!;
return _logic.Update(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Не удалось обновить магазин");
throw;
}
}
[HttpPost]
public bool DeleteShop(ShopBindingModel model)
{
try
{
return _logic.Delete(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка удаления магазина");
throw;
}
}
[HttpPost]
public bool MakeSupply(Tuple<ShopSearchModel, IceCreamViewModel, int> model)
{
try
{
return _logic.MakeSupply(model.Item1, model.Item2, model.Item3);
}
catch (Exception ex)
{
_logger.LogError(ex, "Не удалось сделать поставку в магазин");
throw;
}
}
}
}