From 50a7eb5521d4c6c10434b0cea954f9c46ed59211 Mon Sep 17 00:00:00 2001 From: ivanszabo Date: Mon, 24 Mar 2025 14:01:58 +0100 Subject: [PATCH] =?UTF-8?q?Egy=C3=A9b=20jav=C3=ADt=C3=A1sok?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/SyncController.cs | 20 ++++++++++++ .../Mappings/MapperProfile.cs | 3 ++ .../Services/CheckListService.cs | 30 ++++++++++++++++-- .../Interfaces/INumberGeneratorService.cs | 5 +-- .../Services/Interfaces/ISyncService.cs | 5 +-- .../Services/NumberGeneratorServices.cs | 7 ++--- src/WorkFlowCheck.BL/Services/SyncService.cs | 31 ++++++++++++++++--- .../DTO/CheckListRowDTO.cs | 1 + 8 files changed, 85 insertions(+), 17 deletions(-) diff --git a/src/WorkFlowCheck.API/Controllers/SyncController.cs b/src/WorkFlowCheck.API/Controllers/SyncController.cs index ed370af..d06d663 100644 --- a/src/WorkFlowCheck.API/Controllers/SyncController.cs +++ b/src/WorkFlowCheck.API/Controllers/SyncController.cs @@ -86,6 +86,26 @@ namespace WorkFlowCheck.API.Controllers } return retVal; } + [HttpPost("UpdateAllCheckPoint")] + public async Task>> UpdateAllCheckPoint([FromBody] List checkPointListDTO) + { + var retVal = new ApiResponseDTO>() + { + IsSuccess = true + }; + + try + { + var result = await _syncService.UpdateAllCheckPointAsync(checkPointListDTO); + retVal.Data = result; + } + catch (Exception ex) + { + retVal.IsSuccess = false; + Log.Error(ex.Message); + } + return retVal; + } [HttpGet("GetEquipment/{id}")] diff --git a/src/WorkFlowCheck.BL/Mappings/MapperProfile.cs b/src/WorkFlowCheck.BL/Mappings/MapperProfile.cs index b18d075..5cf6e04 100644 --- a/src/WorkFlowCheck.BL/Mappings/MapperProfile.cs +++ b/src/WorkFlowCheck.BL/Mappings/MapperProfile.cs @@ -46,6 +46,9 @@ namespace WorkFlowCheck.BL.Mappings CreateMap() .ForMember(dest => dest.UserDTO, opt => opt.MapFrom(src => src.User)) .ForMember(dest => dest.CheckListRowDTO, opt => opt.MapFrom(src => src.CheckListRows)); + + CreateMap() + .ForMember(dest => dest.CheckListTemplateRowDTO, opt => opt.MapFrom(src => src.CheckListTemplateRow)); } } } diff --git a/src/WorkFlowCheck.BL/Services/CheckListService.cs b/src/WorkFlowCheck.BL/Services/CheckListService.cs index 2ecc619..0322744 100644 --- a/src/WorkFlowCheck.BL/Services/CheckListService.cs +++ b/src/WorkFlowCheck.BL/Services/CheckListService.cs @@ -61,7 +61,7 @@ namespace WorkFlowCheck.BL.Services { var roles = await _dbContext.CheckListHeaders .Include(i => i.CheckListRows) - .Include(i=>i.User) + .Include(i => i.User) .AsNoTracking() .ToListAsync(); if (roles != null) @@ -121,7 +121,7 @@ namespace WorkFlowCheck.BL.Services { CheckListRowDTO = new List() }; - + using var transaction = await _dbContext.Database.BeginTransactionAsync(); try { var checkListTemplateHeader = await _dbContext.CheckListTemplateHeaders @@ -132,7 +132,7 @@ namespace WorkFlowCheck.BL.Services return retVal; } var currentDate = DateTime.UtcNow; - var documentNumber = await _numberGeneratorService.GenerateNextNumberAsync(checkListTemplateHeader.NumberGenerator1Id ?? 1, currentDate); + var documentNumber = await _numberGeneratorService.GenerateNextNumberAsync(checkListTemplateHeader.NumberGenerator1Id ?? 1, transaction, currentDate); CheckListHeader checkListHeader = new CheckListHeader() { CheckListTemplateHeaderId = checkListHeaderNewDTO.CheckListTemplateHeaderId, @@ -147,13 +147,37 @@ namespace WorkFlowCheck.BL.Services IsStorno = false, CheckListRows = new List() }; + + _dbContext.CheckListHeaders.Add(checkListHeader); await _dbContext.SaveChangesAsync(); + var checkListTemplateRows = await _dbContext.CheckListTemplateRows + .Where(w => w.CheckListTemplateHeaderId == checkListHeaderNewDTO.CheckListTemplateHeaderId) + .OrderBy(o => o.RowIndex) + .ToListAsync(); + foreach (var item in checkListTemplateRows) + { + CheckListRow checkListRow = new CheckListRow() + { + Answer = "", + CheckListHeaderId = checkListHeader.Id, + CheckListTemplateRowId = item.Id, + GuidNumber = Guid.NewGuid(), + IsDeleted = false, + Photo = new byte[0], + }; + _dbContext.CheckListRows.Add(checkListRow); + } + + await _dbContext.SaveChangesAsync(); + await transaction.CommitAsync(); + retVal = _mapper.Map(checkListHeader); } catch (Exception ex) { + await transaction.RollbackAsync(); Log.Error(ex.Message); } return retVal; diff --git a/src/WorkFlowCheck.BL/Services/Interfaces/INumberGeneratorService.cs b/src/WorkFlowCheck.BL/Services/Interfaces/INumberGeneratorService.cs index 14bd9f6..f59f707 100644 --- a/src/WorkFlowCheck.BL/Services/Interfaces/INumberGeneratorService.cs +++ b/src/WorkFlowCheck.BL/Services/Interfaces/INumberGeneratorService.cs @@ -1,4 +1,5 @@ -using System; +using Microsoft.EntityFrameworkCore.Storage; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -8,7 +9,7 @@ namespace WorkFlowCheck.BL.Services.Interfaces { public interface INumberGeneratorService { - Task GenerateNextNumberAsync(int templateId, DateTime? baseDate = null); + Task GenerateNextNumberAsync(int templateId, IDbContextTransaction transaction, DateTime? baseDate = null); Task GetSampleAsync(int templateId, DateTime? baseDate = null); } } diff --git a/src/WorkFlowCheck.BL/Services/Interfaces/ISyncService.cs b/src/WorkFlowCheck.BL/Services/Interfaces/ISyncService.cs index 915ee14..3485c09 100644 --- a/src/WorkFlowCheck.BL/Services/Interfaces/ISyncService.cs +++ b/src/WorkFlowCheck.BL/Services/Interfaces/ISyncService.cs @@ -8,8 +8,9 @@ namespace WorkFlowCheck.BL.Services.Interfaces Task> GetAllCheckPointAsync(); Task GetCheckPointAsync(int id); Task UpdateCheckPointAsync(CheckPointDTO checkPointDTO); - - + Task> UpdateAllCheckPointAsync(List checkPointListDTO); + + Task> GetAllLocationAsync(); Task GetLocationAsync(int id); Task UpdateLocationAsync(LocationDTO LocationDTO); diff --git a/src/WorkFlowCheck.BL/Services/NumberGeneratorServices.cs b/src/WorkFlowCheck.BL/Services/NumberGeneratorServices.cs index 0d7bc7b..e8703e1 100644 --- a/src/WorkFlowCheck.BL/Services/NumberGeneratorServices.cs +++ b/src/WorkFlowCheck.BL/Services/NumberGeneratorServices.cs @@ -1,4 +1,5 @@ using Microsoft.EntityFrameworkCore; +using Microsoft.EntityFrameworkCore.Storage; using System; using System.Collections.Generic; using System.Linq; @@ -20,14 +21,13 @@ namespace WorkFlowCheck.BL.Services _dbContext = dbContext; } - public async Task GenerateNextNumberAsync(int templateId, DateTime? baseDate = null) + public async Task GenerateNextNumberAsync(int templateId, IDbContextTransaction transaction, DateTime? baseDate = null) { var semaphore = GetOrCreateSemaphore(templateId); await semaphore.WaitAsync(); try { - using var transaction = await _dbContext.Database.BeginTransactionAsync(); var template = await _dbContext.Set() .FirstOrDefaultAsync(t => t.Id == templateId); @@ -60,13 +60,10 @@ namespace WorkFlowCheck.BL.Services templateDate.LastGeneratedNumber = result; await _dbContext.SaveChangesAsync(); - await transaction.CommitAsync(); - return result; } catch { - await _dbContext.Database.RollbackTransactionAsync(); throw; } finally diff --git a/src/WorkFlowCheck.BL/Services/SyncService.cs b/src/WorkFlowCheck.BL/Services/SyncService.cs index 7b4e7b0..31e7133 100644 --- a/src/WorkFlowCheck.BL/Services/SyncService.cs +++ b/src/WorkFlowCheck.BL/Services/SyncService.cs @@ -101,8 +101,33 @@ namespace WorkFlowCheck.BL.Services return retVal; } + public async Task> UpdateAllCheckPointAsync(List checkPointListDTO) + { + var retVal = new List(); + try + { + var ids = checkPointListDTO.Select(dto => dto.Id).ToList(); + var checkPoints = await _dbContext.CheckPoints + .Where(cp => ids.Contains(cp.Id)) + .ToListAsync(); - + foreach (var checkPoint in checkPoints) + { + var dto = checkPointListDTO.FirstOrDefault(d => d.Id == checkPoint.Id); + if (dto != null) + { + checkPoint.Code = dto.Code; + } + } + await _dbContext.SaveChangesAsync(); + retVal = _mapper.Map>(checkPoints); + } + catch (Exception ex) + { + Log.Error(ex.Message); + } + return retVal; + } public async Task> GetAllLocationAsync() { @@ -180,10 +205,6 @@ namespace WorkFlowCheck.BL.Services return retVal; } - - - - public async Task> GetAllEquipmentAsync() { var retVal = new List(); diff --git a/src/WorkFlowCheck.Common/DTO/CheckListRowDTO.cs b/src/WorkFlowCheck.Common/DTO/CheckListRowDTO.cs index 80e4521..f16624e 100644 --- a/src/WorkFlowCheck.Common/DTO/CheckListRowDTO.cs +++ b/src/WorkFlowCheck.Common/DTO/CheckListRowDTO.cs @@ -11,6 +11,7 @@ namespace WorkFlowCheck.Common.DTO public int Id { get; set; } public int CheckListHeaderId { get; set; } public int CheckListTemplateRowId { get; set; } + public virtual CheckListTemplateRowDTO CheckListTemplateRowDTO { get; set; } public string Answer { get; set; } = null!; public byte[] Photo { get; set; } = null!; public Guid GuidNumber { get; set; }