164 lines
5.1 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 DocumentFormat.OpenXml.Spreadsheet;
using FurnitureAssemblyContracts.BindingModels;
using FurnitureAssemblyContracts.BusinessLogicContracts;
using FurnitureAssemblyContracts.SearchModels;
using FurnitureAssemblyContracts.ViewModels;
using FurnitureAssemblyDatabaseImplement.Models;
using FurnitureAssemblyDataModels.Models;
using Microsoft.AspNetCore.Mvc;
using System.Collections.Generic;
using Tuple = System.Tuple;
namespace FurnitureAssemblyRestApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class SetController : Controller
{
private readonly ILogger _logger;
private readonly ISetLogic _set;
public SetController(ILogger<SetController> logger, ISetLogic set)
{
_logger = logger;
_set = set;
}
[HttpGet]
public List<SetViewModel>? GetSetList()
{
try
{
return _set.ReadList(null);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка мебельных модулей");
throw;
}
}
[HttpGet]
public SetViewModel? GetSet(int Id)
{
try
{
return _set.ReadElement(new SetSearchModel { Id = Id });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения мебельного модуля по id={Id}", Id);
throw;
}
}
[HttpGet]
public List<SetViewModel>? GetSetListByUser(int userId)
{
try
{
return _set.ReadList(new SetSearchModel { UserId = userId });
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка гарнитуров у пользователя по id={userId}", userId);
throw;
}
}
[HttpGet]
public Tuple<SetViewModel, List<FurnitureModuleViewModel>, List<int>>? GetSetWithFurnitureModules(int setId)
{
try
{
var set = _set.ReadElement(new() { Id = setId });
if (set == null)
{
return null;
}
var tuple = Tuple.Create(set,
set.SetFurnitureModules.Select(x => new FurnitureModuleViewModel()
{
Id = x.Value.Item1.Id,
Cost = x.Value.Item1.Cost,
Name = x.Value.Item1.Name,
DateCreate = x.Value.Item1.DateCreate,
}).ToList(),
set.SetFurnitureModules.Select(x => x.Value.Item2).ToList());
return tuple;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка гарнитура с мебельными модулями");
throw;
}
}
[HttpGet]
public Dictionary<int, (IFurnitureModuleModel, int)>? GetSetFurnitureModules(int setId)
{
try
{
var set = _set.ReadElement(new() { Id = setId });
if (set == null)
{
return null;
}
return set.SetFurnitureModules;
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка мебельных модулей поездок гарнитура");
throw;
}
}
[HttpPost]
public void AddSet(SetBindingModel model)
{
try
{
_set.Create(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка создания мебельного модуля");
throw;
}
}
[HttpPost]
public void UpdateSet(SetBindingModel model)
{
try
{
_set.Update(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка обновления мебельного модуля");
throw;
}
}
[HttpPost]
public void DeleteSet(SetBindingModel model)
{
try
{
_set.Delete(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка удаления мебельного модуля");
throw;
}
}
[HttpPost]
public void AddFurnitureModuleInSet(Tuple<SetSearchModel, FurnitureModuleViewModel, int> setFurnitureModuleWithCount)
{
try
{
_set.AddFurnitureModuleInSet(setFurnitureModuleWithCount.Item1, setFurnitureModuleWithCount.Item2, setFurnitureModuleWithCount.Item3);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка добавления поездки в магазин");
throw;
}
}
}
}