using HardwareShopBusinessLogic.BusinessLogics.Storekeeper; using HardwareShopContracts.BindingModels; using HardwareShopContracts.BusinessLogicsContracts; using HardwareShopContracts.SearchModels; using HardwareShopContracts.ViewModels; using HardwareShopDatabaseImplement.Models.Worker; using HardwareShopDataModels.Models; using Microsoft.AspNetCore.Mvc; using System.ComponentModel; namespace HardwareShopRestApi.Controllers { [Route("api/[controller]/[action]")] [ApiController] public class BuildController : Controller { private readonly ILogger _logger; private readonly IBuildLogic _buildLogic; public BuildController(IBuildLogic buildLogic, ILogger logger) { _logger = logger; _buildLogic = buildLogic; } [HttpGet] public List? GetBuilds(int userId = 0) { try { if (userId == 0) return _buildLogic.ReadList(null); return _buildLogic.ReadList(new BuildSearchModel { UserId = userId }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка получения списка сборок пользоватля"); throw; } } [HttpGet] public BuildViewModel? GetBuild(int buildId) { try { return _buildLogic.ReadElement(new() { Id = buildId }); } catch (Exception ex) { _logger.LogError(ex, "Ошибка сборки"); throw; } } [HttpPost] public void Create(BuildBindingModel model) { try { _buildLogic.Create(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка сборки"); throw; } } [HttpPost] public void Update(BuildBindingModel model) { try { _buildLogic.Update(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка обновления данных"); throw; } } [HttpPost] public void DeleteBuild(BuildBindingModel model) { try { _buildLogic.Delete(model); } catch (Exception ex) { _logger.LogError(ex, "Ошибка удаления сборки"); throw; } } } }