250 lines
7.5 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 Microsoft.AspNetCore.Mvc;
using ServiceStationContracts.BindingModels;
using ServiceStationContracts.BusinessLogicsContracts;
using ServiceStationContracts.SearchModels;
using ServiceStationContracts.ViewModels;
using ServiceStationDatabaseImplement.Models;
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;
}
}
}
}