250 lines
7.5 KiB
C#
250 lines
7.5 KiB
C#
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;
|
||
}
|
||
}
|
||
}
|
||
}
|