feat(dal,api): удалены таблицы которые относились к старому JobAutoControl. Добавлена новая таблица JobAutoControl

This commit is contained in:
Mikhail Trubnikov
2025-12-05 14:07:48 +10:00
parent 8541d7495b
commit 54ccd2e8e3
26 changed files with 8446 additions and 725 deletions

View File

@@ -21,202 +21,202 @@ namespace PARR.API.Controllers.V1
[Authorize(Roles = ParrRoles.Administrator.Role)]
public class JobAutoControlController : BaseApiController
{
private readonly IJobAutoControlService jobAutoControlService;
private readonly IApplicationsInWorkService applicationsInWorkService;
private readonly IMapper mapper;
private readonly IValidator<JobAutoControlRequest> validator;
private readonly IUriService uriService;
//private readonly IJobAutoControlService jobAutoControlService;
//private readonly IApplicationsInWorkService applicationsInWorkService;
//private readonly IMapper mapper;
//private readonly IValidator<JobAutoControlRequest> validator;
//private readonly IUriService uriService;
public JobAutoControlController(
IJobAutoControlService jobAutoControlService,
IApplicationsInWorkService applicationsInWorkService,
IMapper mapper,
IValidator<JobAutoControlRequest> validator,
IUriService uriService
)
{
this.jobAutoControlService = jobAutoControlService;
this.applicationsInWorkService = applicationsInWorkService;
this.mapper = mapper;
this.validator = validator;
this.uriService = uriService;
}
//public JobAutoControlController(
// IJobAutoControlService jobAutoControlService,
// IApplicationsInWorkService applicationsInWorkService,
// IMapper mapper,
// IValidator<JobAutoControlRequest> validator,
// IUriService uriService
// )
//{
// this.jobAutoControlService = jobAutoControlService;
// this.applicationsInWorkService = applicationsInWorkService;
// this.mapper = mapper;
// this.validator = validator;
// this.uriService = uriService;
//}
/// <summary>
/// Получить настройки автоматического управления РР
/// </summary>
/// <param name="applicationInWorkId"></param>
/// <returns></returns>
[HttpGet(ApiRoutes.JobAutoControl.Get)]
public async Task<IActionResult> Get([FromRoute] Guid applicationInWorkId)
{
var obj = await jobAutoControlService.Get()
.Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
.Include(t => t.JobEkMasks)
.Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
.FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
///// <summary>
///// Получить настройки автоматического управления РР
///// </summary>
///// <param name="applicationInWorkId"></param>
///// <returns></returns>
//[HttpGet(ApiRoutes.JobAutoControl.Get)]
//public async Task<IActionResult> Get([FromRoute] Guid applicationInWorkId)
//{
// var obj = await jobAutoControlService.Get()
// .Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
// .Include(t => t.JobEkMasks)
// .Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
// .FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
if (obj == null)
{
// проверим, есть ли вообще такой AppInWork
var appInWork = await applicationsInWorkService.GetAsync(applicationInWorkId);
if (appInWork == null)
return NotFound();
// if (obj == null)
// {
// // проверим, есть ли вообще такой AppInWork
// var appInWork = await applicationsInWorkService.GetAsync(applicationInWorkId);
// if (appInWork == null)
// return NotFound();
return NoContent();
}
// return NoContent();
// }
var response = mapper.Map<JobAutoControlResponse>(obj);
// var response = mapper.Map<JobAutoControlResponse>(obj);
return Ok(new Response<JobAutoControlResponse>(response, true));
}
// return Ok(new Response<JobAutoControlResponse>(response, true));
//}
/// <summary>
/// Создать настройки автоматического управления РР
/// </summary>
/// <param name="applicationInWorkId"></param>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost(ApiRoutes.JobAutoControl.Create)]
public async Task<IActionResult> Create([FromRoute] Guid applicationInWorkId, [FromBody] JobAutoControlRequest request)
{
var exist = await jobAutoControlService.Get().FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
if (exist != null)
return BadRequest(new Response(false, new List<ErrorModel> {
new ErrorModel { FieldName = nameof(applicationInWorkId), Message = $"Запись с {nameof(applicationInWorkId)}: {applicationInWorkId} уже существует." }
}));
///// <summary>
///// Создать настройки автоматического управления РР
///// </summary>
///// <param name="applicationInWorkId"></param>
///// <param name="request"></param>
///// <returns></returns>
//[HttpPost(ApiRoutes.JobAutoControl.Create)]
//public async Task<IActionResult> Create([FromRoute] Guid applicationInWorkId, [FromBody] JobAutoControlRequest request)
//{
// var exist = await jobAutoControlService.Get().FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
// if (exist != null)
// return BadRequest(new Response(false, new List<ErrorModel> {
// new ErrorModel { FieldName = nameof(applicationInWorkId), Message = $"Запись с {nameof(applicationInWorkId)}: {applicationInWorkId} уже существует." }
// }));
var resultValidate = await validator.ValidateAsync(request);
if (!resultValidate.IsValid)
return BadRequest(new Response(resultValidate.Errors));
// var resultValidate = await validator.ValidateAsync(request);
// if (!resultValidate.IsValid)
// return BadRequest(new Response(resultValidate.Errors));
var newObj = new DAL.Models.JobAutoControl
{
Id = Guid.NewGuid(),
ApplicationInWorkId = applicationInWorkId,
CreateNew = request.CreateNew,
Deactivate = request.Deactivate,
Activate = request.Activate,
OnTemplateIsActive = request.OnTemplateIsActive,
OnScheduleIsActive = request.OnScheduleIsActive,
OffTemplateIsActive = request.OffTemplateIsActive,
OffScheduleIsActive = request.OffScheduleIsActive
};
// var newObj = new DAL.Models.JobAutoControl
// {
// Id = Guid.NewGuid(),
// ApplicationInWorkId = applicationInWorkId,
// CreateNew = request.CreateNew,
// Deactivate = request.Deactivate,
// Activate = request.Activate,
// OnTemplateIsActive = request.OnTemplateIsActive,
// OnScheduleIsActive = request.OnScheduleIsActive,
// OffTemplateIsActive = request.OffTemplateIsActive,
// OffScheduleIsActive = request.OffScheduleIsActive
// };
// убираем пробелы и дубли
request.EkMasks.Where(t => t.Trim() != string.Empty).Distinct().ToList().ForEach(mask => newObj.JobEkMasks.Add(new JobEkMask
{
Id = Guid.NewGuid(),
DateCreated = DateTimeOffset.UtcNow,
Name = mask.Trim(),
JobAutoControlId = newObj.Id
}));
// // убираем пробелы и дубли
// request.EkMasks.Where(t => t.Trim() != string.Empty).Distinct().ToList().ForEach(mask => newObj.JobEkMasks.Add(new JobEkMask
// {
// Id = Guid.NewGuid(),
// DateCreated = DateTimeOffset.UtcNow,
// Name = mask.Trim(),
// JobAutoControlId = newObj.Id
// }));
request.EnabledEkStatuses.ForEach(status => newObj.JobAutoControlInEkStatuses.Add(new JobAutoControlInEkStatus
{
EkStatusCode = (int)status,
JobAutoControlId = newObj.Id
}));
// request.EnabledEkStatuses.ForEach(status => newObj.JobAutoControlInEkStatuses.Add(new JobAutoControlInEkStatus
// {
// EkStatusCode = (int)status,
// JobAutoControlId = newObj.Id
// }));
if (!await jobAutoControlService.CreateAsync(newObj) || !await jobAutoControlService.CommitAsync())
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при создани записи." } }));
// if (!await jobAutoControlService.CreateAsync(newObj) || !await jobAutoControlService.CommitAsync())
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при создани записи." } }));
var locationUri = uriService.GetUri(ApiRoutes.JobAutoControl.Get, ApiRoutes.JobAutoControl.appInWorkId, applicationInWorkId);
// var locationUri = uriService.GetUri(ApiRoutes.JobAutoControl.Get, ApiRoutes.JobAutoControl.appInWorkId, applicationInWorkId);
var createdObj = await jobAutoControlService.Get()
.Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
.Include(t => t.JobEkMasks)
.Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
.FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
// var createdObj = await jobAutoControlService.Get()
// .Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
// .Include(t => t.JobEkMasks)
// .Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
// .FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
return Created(locationUri, new Response<JobAutoControlResponse>(mapper.Map<JobAutoControlResponse>(createdObj), true));
}
// return Created(locationUri, new Response<JobAutoControlResponse>(mapper.Map<JobAutoControlResponse>(createdObj), true));
//}
/// <summary>
/// Обновить настройки автоматического управления РР
/// </summary>
/// <param name="applicationInWorkId"></param>
/// <param name="request"></param>
/// <returns></returns>
[HttpPut(ApiRoutes.JobAutoControl.Update)]
public async Task<IActionResult> Update([FromRoute] Guid applicationInWorkId, [FromBody] JobAutoControlRequest request)
{
var resultValidate = await validator.ValidateAsync(request);
if (!resultValidate.IsValid)
return BadRequest(new Response(resultValidate.Errors));
///// <summary>
///// Обновить настройки автоматического управления РР
///// </summary>
///// <param name="applicationInWorkId"></param>
///// <param name="request"></param>
///// <returns></returns>
//[HttpPut(ApiRoutes.JobAutoControl.Update)]
//public async Task<IActionResult> Update([FromRoute] Guid applicationInWorkId, [FromBody] JobAutoControlRequest request)
//{
// var resultValidate = await validator.ValidateAsync(request);
// if (!resultValidate.IsValid)
// return BadRequest(new Response(resultValidate.Errors));
var orig = await jobAutoControlService.Get()
.Include(t => t.JobEkMasks)
.Include(t => t.JobAutoControlInEkStatuses)
.FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
// var orig = await jobAutoControlService.Get()
// .Include(t => t.JobEkMasks)
// .Include(t => t.JobAutoControlInEkStatuses)
// .FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
if (orig == null)
return BadRequest(new Response(false, new List<ErrorModel> {
new ErrorModel { FieldName = nameof(applicationInWorkId), Message = $"Запись с {nameof(applicationInWorkId)}: {applicationInWorkId} не существует." }
}));
// if (orig == null)
// return BadRequest(new Response(false, new List<ErrorModel> {
// new ErrorModel { FieldName = nameof(applicationInWorkId), Message = $"Запись с {nameof(applicationInWorkId)}: {applicationInWorkId} не существует." }
// }));
orig.DateModified = DateTimeOffset.UtcNow;
orig.CreateNew = request.CreateNew;
orig.Deactivate = request.Deactivate;
orig.Activate = request.Activate;
orig.OnTemplateIsActive = request.OnTemplateIsActive;
orig.OnScheduleIsActive = request.OnScheduleIsActive;
orig.OffTemplateIsActive = request.OffTemplateIsActive;
orig.OffScheduleIsActive = request.OffScheduleIsActive;
// orig.DateModified = DateTimeOffset.UtcNow;
// orig.CreateNew = request.CreateNew;
// orig.Deactivate = request.Deactivate;
// orig.Activate = request.Activate;
// orig.OnTemplateIsActive = request.OnTemplateIsActive;
// orig.OnScheduleIsActive = request.OnScheduleIsActive;
// orig.OffTemplateIsActive = request.OffTemplateIsActive;
// orig.OffScheduleIsActive = request.OffScheduleIsActive;
orig.JobEkMasks.Clear();
// убираем пробелы и дубли
request.EkMasks.Where(t => t.Trim() != string.Empty).Distinct().ToList().ForEach(mask => orig.JobEkMasks.Add(new JobEkMask
{
//Id = Guid.NewGuid(), // не пойму почему не нужно это поле. с ним ошибка.
DateCreated = DateTimeOffset.UtcNow,
Name = mask.Trim(),
JobAutoControlId = orig.Id
}));
// orig.JobEkMasks.Clear();
// // убираем пробелы и дубли
// request.EkMasks.Where(t => t.Trim() != string.Empty).Distinct().ToList().ForEach(mask => orig.JobEkMasks.Add(new JobEkMask
// {
// //Id = Guid.NewGuid(), // не пойму почему не нужно это поле. с ним ошибка.
// DateCreated = DateTimeOffset.UtcNow,
// Name = mask.Trim(),
// JobAutoControlId = orig.Id
// }));
orig.JobAutoControlInEkStatuses.Clear();
request.EnabledEkStatuses.ForEach(status => orig.JobAutoControlInEkStatuses.Add(new JobAutoControlInEkStatus
{
EkStatusCode = (int)status,
JobAutoControlId = orig.Id
}));
// orig.JobAutoControlInEkStatuses.Clear();
// request.EnabledEkStatuses.ForEach(status => orig.JobAutoControlInEkStatuses.Add(new JobAutoControlInEkStatus
// {
// EkStatusCode = (int)status,
// JobAutoControlId = orig.Id
// }));
if (!await jobAutoControlService.CommitAsync())
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при изменении записи." } }));
// if (!await jobAutoControlService.CommitAsync())
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Ошибка при изменении записи." } }));
var updatedObj = await jobAutoControlService.Get()
.Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
.Include(t => t.JobEkMasks)
.Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
.FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
// var updatedObj = await jobAutoControlService.Get()
// .Include(t => t.ApplicationsInWork).ThenInclude(t => t.WorkGroups).ThenInclude(t => t.WorkGroup)
// .Include(t => t.JobEkMasks)
// .Include(t => t.JobAutoControlInEkStatuses).ThenInclude(t => t.EkStatus)
// .FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
return Ok(new Response<JobAutoControlResponse>(mapper.Map<JobAutoControlResponse>(updatedObj), true));
}
// return Ok(new Response<JobAutoControlResponse>(mapper.Map<JobAutoControlResponse>(updatedObj), true));
//}
/// <summary>
/// Удалить настройки автоматического управления РР
/// </summary>
/// <param name="applicationInWorkId"></param>
/// <returns></returns>
[HttpDelete(ApiRoutes.JobAutoControl.Delete)]
public async Task<IActionResult> Delete([FromRoute] Guid applicationInWorkId)
{
var obj = await jobAutoControlService.Get().FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
///// <summary>
///// Удалить настройки автоматического управления РР
///// </summary>
///// <param name="applicationInWorkId"></param>
///// <returns></returns>
//[HttpDelete(ApiRoutes.JobAutoControl.Delete)]
//public async Task<IActionResult> Delete([FromRoute] Guid applicationInWorkId)
//{
// var obj = await jobAutoControlService.Get().FirstOrDefaultAsync(t => t.ApplicationInWorkId == applicationInWorkId);
if (obj == null)
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении настроект. Не найден настройки с {nameof(applicationInWorkId)}: {applicationInWorkId}" } }));
// if (obj == null)
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении настроект. Не найден настройки с {nameof(applicationInWorkId)}: {applicationInWorkId}" } }));
if (!jobAutoControlService.Delete(obj) || !await jobAutoControlService.CommitAsync())
return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении настроек." } }));
// if (!jobAutoControlService.Delete(obj) || !await jobAutoControlService.CommitAsync())
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = $"Ошибка при удалении настроек." } }));
return NoContent();
}
// return NoContent();
//}
}