Сделал apiху

This commit is contained in:
gg12 darfren 2024-04-14 12:31:53 +04:00
parent 6f0c61aeab
commit b3ccfb1e25
4 changed files with 190 additions and 64 deletions

View File

@ -1,64 +0,0 @@
using IceCreamShopContracts.BindingModels;
using IceCreamShopContracts.BusinessLogicsContracts;
using IceCreamShopContracts.SearchModels;
using IceCreamShopContracts.ViewModels;
using Microsoft.AspNetCore.Mvc;
namespace IceCreamShopRestApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class ClientController : Controller
{
private readonly ILogger _logger;
private readonly IClientLogic _logic;
public ClientController(IClientLogic logic, ILogger<ClientController>
logger)
{
_logger = logger;
_logic = logic;
}
[HttpGet]
public ClientViewModel? Login(string login, string password)
{
try
{
return _logic.ReadElement(new ClientSearchModel
{
Email = login,
Password = password
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка входа в систему");
throw;
}
}
[HttpPost]
public void Register(ClientBindingModel model)
{
try
{
_logic.Create(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка регистрации");
throw;
}
}
[HttpPost]
public void UpdateData(ClientBindingModel model)
{
try
{
_logic.Update(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка обновления данных");
throw;
}
}
}
}

View File

@ -0,0 +1,83 @@
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
namespace IceCreamShopRestApi.Controllers
{
public class HomeController : Controller
{
// GET: HomeController
public ActionResult Index()
{
return View();
}
// GET: HomeController/Details/5
public ActionResult Details(int id)
{
return View();
}
// GET: HomeController/Create
public ActionResult Create()
{
return View();
}
// POST: HomeController/Create
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(IFormCollection collection)
{
try
{
return RedirectToAction(nameof(Index));
}
catch
{
return View();
}
}
// GET: HomeController/Edit/5
public ActionResult Edit(int id)
{
return View();
}
// POST: HomeController/Edit/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(int id, IFormCollection collection)
{
try
{
return RedirectToAction(nameof(Index));
}
catch
{
return View();
}
}
// GET: HomeController/Delete/5
public ActionResult Delete(int id)
{
return View();
}
// POST: HomeController/Delete/5
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Delete(int id, IFormCollection collection)
{
try
{
return RedirectToAction(nameof(Index));
}
catch
{
return View();
}
}
}
}

View File

@ -0,0 +1,105 @@
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 ShopViewModel GetShop(ShopSearchModel model)
{
try
{
return _logic.ReadElement(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка магазинов");
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
{
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(ShopSearchModel model, IIceCreamModel iceCream, int count)
{
try
{
return _logic.MakeSupply(model, iceCream, count);
}
catch (Exception ex)
{
_logger.LogError(ex, "Не удалось сделать поставку в магазин");
throw;
}
}
}
}

View File

@ -8,9 +8,11 @@ builder.Logging.SetMinimumLevel(LogLevel.Trace);
builder.Logging.AddLog4Net("log4net.config");
// Add services to the container.
builder.Services.AddTransient<IClientStorage, ClientStorage>();
builder.Services.AddTransient<IShopStorage, ShopStorage>();
builder.Services.AddTransient<IOrderStorage, OrderStorage>();
builder.Services.AddTransient<IIceCreamStorage, IceCreamStorage>();
builder.Services.AddTransient<IOrderLogic, OrderLogic>();
builder.Services.AddTransient<IShopLogic, ShopLogic>();
builder.Services.AddTransient<IClientLogic, ClientLogic>();
builder.Services.AddTransient<IIceCreamLogic, IceCreamLogic>();
builder.Services.AddControllers();