164 lines
5.1 KiB
C#
164 lines
5.1 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|
||
}
|