250 lines
7.5 KiB
C#
Raw Normal View History

2024-05-26 16:27:14 +04:00
using Microsoft.AspNetCore.Mvc;
using ServiceStationContracts.BindingModels;
using ServiceStationContracts.BusinessLogicsContracts;
using ServiceStationContracts.SearchModels;
using ServiceStationContracts.ViewModels;
using ServiceStationDatabaseImplement.Models;
2024-05-26 16:27:14 +04:00
namespace ServiceStationRestApi.Controllers
{
[Route("api/[controller]/[action]")]
[ApiController]
public class MainController : Controller
{
private readonly ILogger _logger;
private readonly ICarLogic _clogic;
private readonly IDefectLogic _dlogic;
private readonly ITechnicalWorkLogic _tlogic;
public MainController(ILogger<MainController> logger, ICarLogic clogic, IDefectLogic dlogic, ITechnicalWorkLogic tlogic)
{
_logger = logger;
_clogic = clogic;
_dlogic = dlogic;
_tlogic = tlogic;
}
[HttpGet]
public List<CarViewModel>? GetCarList(int executorId)
{
try
{
return _clogic.ReadList(new CarSearchModel
{
ExecutorId = executorId
});
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка машин");
throw;
}
}
[HttpGet]
public List<DefectViewModel>? GetDefectList(int executorId)
{
try
{
return _dlogic.ReadList(new DefectSearchModel
{
ExecutorId = executorId
});
}
catch(Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка неисправностей");
throw;
}
}
[HttpGet]
public List<TechnicalWorkViewModel>? GetTechnicalWorkList(int executorId)
{
try
{
return _tlogic.ReadList(new TechnicalWorkSearchModel
{
ExecutorId = executorId
});
}
catch( Exception ex)
{
_logger.LogError(ex, "Ошибка получения списка ТО");
throw;
}
}
[HttpPost]
public void CreateCar(CarBindingModel model)
{
try
{
_clogic.Create(model);
}
catch(Exception ex)
{
_logger.LogError(ex, "Ошибка создания машины");
throw;
}
}
[HttpPost]
public void CreateDefect(DefectBindingModel model)
{
try
{
_dlogic.Create(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка создания неисправности");
throw;
}
}
[HttpPost]
public void CreateTechnicalWork(TechnicalWorkBindingModel model)
{
try
{
_tlogic.Create(model);
}
catch(Exception ex)
{
_logger.LogError(ex, "Ошибка создания ТО");
throw;
}
}
[HttpPost]
public void DeleteCar(CarBindingModel model)
{
try
{
_clogic.Delete(model);
}
catch(Exception ex)
{
_logger.LogError(ex, "Ошибка удаления машины");
throw;
}
}
[HttpPost]
public void DeleteDefect(DefectBindingModel model)
{
try
{
_dlogic.Delete(model);
}
catch( Exception ex)
{
_logger.LogError(ex, "Ошибка удаления неисправности");
throw;
}
}
[HttpPost]
public void DeleteTechnicalWork(TechnicalWorkBindingModel model)
{
try
{
_tlogic.Delete(model);
}
catch(Exception ex)
{
_logger.LogError(ex, "Ошибка удаления ТО");
throw;
}
}
[HttpPost]
public void UpdateCar(CarBindingModel model)
{
try
{
_clogic.Update(model);
}
catch( Exception ex)
{
_logger.LogError(ex, "Ошибка обновления машины");
throw;
}
}
[HttpPost]
public void UpdateDefect(DefectBindingModel model)
{
try
{
_dlogic.Update(model);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка обновления неисправности");
throw;
}
}
[HttpPost]
public void UpdateTechnicalWork(TechnicalWorkBindingModel model)
{
try
{
_tlogic.Update(model);
}
catch( Exception ex)
{
_logger.LogError(ex, "Ошибка обновления ТО");
throw;
}
}
[HttpPost]
public void AddCarToDefect(Tuple<DefectSearchModel, int[]> model)
{
try
{
_dlogic.AddCarToDefect(model.Item1, model.Item2);
}
catch(Exception ex)
{
_logger.LogError(ex, "Ошибка добавления машины в неисправность.");
throw;
}
}
[HttpPost]
public void AddCarToTechnicalWork(Tuple<TechnicalWorkSearchModel, int[]> model)
{
try
{
_tlogic.AddCarToTechnicalWork(model.Item1, model.Item2);
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка добавления машины в ТО.");
throw;
}
}
[HttpGet]
public Tuple<DefectViewModel, List<Tuple<string, string>>>? GetDefect(int defectId)
{
try
{
var elem = _dlogic.ReadElement(new DefectSearchModel { Id = defectId });
if (elem == null) return null;
return Tuple.Create(elem, elem.DefectCars.Select(x => Tuple.Create(x.Value.CarNumber, x.Value.CarBrand)).ToList());
}
catch(Exception ex)
{
_logger.LogError(ex, "Ошибка получения машины по id={Id}", defectId);
throw;
}
}
[HttpGet]
public Tuple<TechnicalWorkViewModel, List<Tuple<string,string>>>? GetTechnicalWork(int technicalWorkId)
{
try
{
var elem = _tlogic.ReadElement(new TechnicalWorkSearchModel { Id = technicalWorkId });
if (elem == null) return null;
return Tuple.Create(elem, elem.TechnicalWorkCars.Select(x => Tuple.Create(x.Value.CarNumber, x.Value.CarBrand)).ToList());
}
catch (Exception ex)
{
_logger.LogError(ex, "Ошибка получения машины по id={Id}", technicalWorkId);
throw;
}
}
2024-05-26 16:27:14 +04:00
}
}