Blokkolás, feloldás
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
using AutoMapper;
|
||||
using DocumentFormat.OpenXml.Office.CustomUI;
|
||||
using DocumentFormat.OpenXml.Spreadsheet;
|
||||
using Microsoft.AspNetCore.Mvc.Rendering;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Serilog;
|
||||
@@ -8,6 +9,7 @@ using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using WorkFlowCheck.BL.DocumentGenerator;
|
||||
@@ -25,7 +27,10 @@ namespace WorkFlowCheck.BL.Services
|
||||
private readonly IMapper _mapper;
|
||||
private readonly INumberGeneratorService _numberGeneratorService;
|
||||
|
||||
public CheckListService(AppDbContext dbContext, IMapper mapper, INumberGeneratorService numberGeneratorService)
|
||||
public CheckListService(AppDbContext dbContext,
|
||||
IMapper mapper,
|
||||
INumberGeneratorService numberGeneratorService,
|
||||
IUserService userService)
|
||||
{
|
||||
_dbContext = dbContext;
|
||||
_mapper = mapper;
|
||||
@@ -43,6 +48,8 @@ namespace WorkFlowCheck.BL.Services
|
||||
{
|
||||
var res = await _dbContext.CheckListHeaders
|
||||
.Where(w => w.Id == Id)
|
||||
.Include(i => i.User)
|
||||
.Include(i => i.AcceptUser)
|
||||
.Include(i => i.CheckListRows)
|
||||
.ThenInclude(r => r.CheckListTemplateRow)
|
||||
.ThenInclude(r => r.CheckPoint)
|
||||
@@ -78,14 +85,15 @@ namespace WorkFlowCheck.BL.Services
|
||||
var retVal = new List<CheckListHeaderDTO>();
|
||||
try
|
||||
{
|
||||
var roles = await _dbContext.CheckListHeaders
|
||||
var checkListHeaders = await _dbContext.CheckListHeaders
|
||||
.Include(i => i.CheckListRows)
|
||||
.Include(i => i.User)
|
||||
.Include(i => i.AcceptUser)
|
||||
.AsNoTracking()
|
||||
.ToListAsync();
|
||||
if (roles != null)
|
||||
if (checkListHeaders != null)
|
||||
{
|
||||
retVal = _mapper.Map<List<CheckListHeaderDTO>>(roles);
|
||||
retVal = _mapper.Map<List<CheckListHeaderDTO>>(checkListHeaders);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -202,6 +210,148 @@ namespace WorkFlowCheck.BL.Services
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
public async Task<bool> AcceptCheckListHeaderAsync(int id, int userid)
|
||||
{
|
||||
var retVal = false;
|
||||
|
||||
try
|
||||
{
|
||||
var checkListHeader = await _dbContext.CheckListHeaders
|
||||
.Where(w => w.Id == id && w.CheckStatus == CheckStatus.Sent)
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
if (checkListHeader != null)
|
||||
{
|
||||
checkListHeader.CheckStatus = CheckStatus.Signed;
|
||||
checkListHeader.IsEditable = false;
|
||||
checkListHeader.AcceptUserId = userid;
|
||||
Log.Warning($"Ellenőrzési lap státuszváltozása: Ellenőrzés:{id}, Felhasználó:{userid}");
|
||||
await _dbContext.SaveChangesAsync();
|
||||
|
||||
var pdf = await CreateCheckListHeaderPDFAsync(id);
|
||||
if (pdf != null && pdf.Length > 0)
|
||||
{
|
||||
string pdfDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Pdf");
|
||||
var timestamp = DateTime.Now.ToString("yyyyMMdd_HHmmss");
|
||||
var fileName = $"CD_{timestamp}_{checkListHeader.GuidNumber.ToString().ToUpper()}.pdf";
|
||||
|
||||
var filePath = Path.Combine(pdfDirectory, fileName);
|
||||
await File.WriteAllBytesAsync(filePath, pdf);
|
||||
|
||||
retVal = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
|
||||
Log.Error(ex.Message);
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
public async Task<byte[]> CreateCheckListHeaderPDFAsync(int checkListHeaderId)
|
||||
{
|
||||
try
|
||||
{
|
||||
var checkListHeader = await this.GetCheckListHeaderAsync(checkListHeaderId);
|
||||
|
||||
string pdfDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Pdf");
|
||||
|
||||
byte[] byteArray = File.ReadAllBytes(Path.Combine(pdfDirectory, "CheckList_Template_V1.docx"));
|
||||
SablonGenerator gen = new SablonGenerator(byteArray);
|
||||
|
||||
gen.SimpleReplace("#DocumentNumber#", checkListHeader.DocumentNumber);
|
||||
gen.SimpleReplace("#DateExecution#", checkListHeader.DateExecution.ToString("yyyy.MM.dd HH:mm"));
|
||||
gen.SimpleReplace("#WorkUser#", $"{checkListHeader.UserDTO?.LastName} {checkListHeader.UserDTO?.FirstName}");
|
||||
gen.SimpleReplace("#AcceptUser#", $"{checkListHeader.AcceptUserDTO?.LastName} {checkListHeader.AcceptUserDTO?.FirstName}");
|
||||
gen.SimpleReplace("#Guid#", checkListHeader.GuidNumber.ToString());
|
||||
|
||||
if (checkListHeader.CheckListRowDTO != null && checkListHeader.CheckListRowDTO.Count > 0)
|
||||
{
|
||||
var elements = new List<List<string>>();
|
||||
foreach (var item in checkListHeader.CheckListRowDTO)
|
||||
{
|
||||
if (item.CheckListTemplateRowDTO != null)
|
||||
{
|
||||
var cells = new List<string>
|
||||
{
|
||||
$"{item.CheckListTemplateRowDTO.RowIndex.ToString()}.",
|
||||
item.CheckListTemplateRowDTO.OperationDescription,
|
||||
item.Answer
|
||||
};
|
||||
elements.Add(cells);
|
||||
}
|
||||
}
|
||||
gen.SetTable(elements, "#rowindex");
|
||||
}
|
||||
|
||||
|
||||
byte[] content = gen.CloseAndGetDocument();
|
||||
|
||||
return DokumentumGenerator.DocxToPdfL(content);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex.Message);
|
||||
}
|
||||
return new byte[0];
|
||||
}
|
||||
public async Task<bool> BlockCheckListHeaderAsync(int id, int userid)
|
||||
{
|
||||
var retVal = false;
|
||||
try
|
||||
{
|
||||
var checkListHeader = await _dbContext.CheckListHeaders
|
||||
.Where(w => w.Id == id && w.CheckStatus == CheckStatus.Sent)
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
if (checkListHeader != null && checkListHeader.CheckStatus == CheckStatus.InProgress)
|
||||
{
|
||||
checkListHeader.CheckStatus = CheckStatus.Blocked;
|
||||
checkListHeader.IsEditable = false;
|
||||
|
||||
Log.Warning($"Ellenőrzési lap blokkolva: Ellenőrzés:{id}, Felhasználó:{userid}");
|
||||
|
||||
await _dbContext.SaveChangesAsync();
|
||||
retVal = true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
retVal = false;
|
||||
Log.Error(ex.Message);
|
||||
}
|
||||
|
||||
|
||||
return retVal;
|
||||
}
|
||||
public async Task<bool> UnBlockCheckListHeaderAsync(int id, int userid)
|
||||
{
|
||||
var retVal = false;
|
||||
try
|
||||
{
|
||||
var checkListHeader = await _dbContext.CheckListHeaders
|
||||
.Where(w => w.Id == id && w.CheckStatus == CheckStatus.Sent)
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
if (checkListHeader != null && checkListHeader.CheckStatus == CheckStatus.Blocked)
|
||||
{
|
||||
checkListHeader.CheckStatus = CheckStatus.InProgress;
|
||||
checkListHeader.IsEditable = true;
|
||||
|
||||
Log.Warning($"Ellenőrzési lap feloldva: Ellenőrzés:{id}, Felhasználó:{userid}");
|
||||
|
||||
await _dbContext.SaveChangesAsync();
|
||||
retVal = true;
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
retVal = false;
|
||||
Log.Error(ex.Message);
|
||||
}
|
||||
return retVal;
|
||||
}
|
||||
|
||||
public async Task<CheckListTemplateHeaderDTO> GetCheckListTemplateHeaderAsync(int Id)
|
||||
{
|
||||
@@ -425,46 +575,6 @@ namespace WorkFlowCheck.BL.Services
|
||||
return retVal;
|
||||
}
|
||||
|
||||
public async Task<byte[]> CreatePDF(int checkListHeaderId)
|
||||
{
|
||||
try
|
||||
{
|
||||
var checkListHeader = await this.GetCheckListHeaderAsync(checkListHeaderId);
|
||||
|
||||
string pdfDirectory = Path.Combine(Directory.GetCurrentDirectory(), "Pdf");
|
||||
|
||||
byte[] byteArray = File.ReadAllBytes(Path.Combine(pdfDirectory, "CheckList_Template_V1.docx"));
|
||||
SablonGenerator gen = new SablonGenerator(byteArray);
|
||||
|
||||
if (checkListHeader.CheckListRowDTO != null && checkListHeader.CheckListRowDTO.Count > 0)
|
||||
{
|
||||
var elements = new List<List<string>>();
|
||||
foreach (var item in checkListHeader.CheckListRowDTO)
|
||||
{
|
||||
if (item.CheckListTemplateRowDTO != null)
|
||||
{
|
||||
var cells = new List<string>
|
||||
{
|
||||
$"{item.CheckListTemplateRowDTO.RowIndex.ToString()}.",
|
||||
item.CheckListTemplateRowDTO.OperationDescription,
|
||||
item.Answer
|
||||
};
|
||||
elements.Add(cells);
|
||||
}
|
||||
}
|
||||
gen.SetTable(elements, "#rowindex");
|
||||
}
|
||||
|
||||
|
||||
byte[] content = gen.CloseAndGetDocument();
|
||||
|
||||
return DokumentumGenerator.DocxToPdfL(content);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Log.Error(ex.Message);
|
||||
}
|
||||
return new byte[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,10 @@ namespace WorkFlowCheck.BL.Services.Interfaces
|
||||
Task<CheckListHeaderDTO> GetCheckListHeaderAsync(int Id);
|
||||
Task<List<CheckListHeaderDTO>> GetAllCheckListHeaderAsync();
|
||||
Task<CheckListHeaderDTO> UpdateCheckListHeaderAsync(CheckListHeaderDTO checkListHeaderDTO);
|
||||
|
||||
Task<bool> AcceptCheckListHeaderAsync(int id, int userid);
|
||||
Task<bool> BlockCheckListHeaderAsync(int id, int userid);
|
||||
Task<bool> UnBlockCheckListHeaderAsync(int id, int userid);
|
||||
Task<byte[]> CreateCheckListHeaderPDFAsync(int checkListHeaderId);
|
||||
Task<CheckListHeaderDTO> StartNewCheckListAsync(CheckListHeaderNewDTO checkListHeaderNewDTO);
|
||||
|
||||
|
||||
@@ -21,10 +24,9 @@ namespace WorkFlowCheck.BL.Services.Interfaces
|
||||
|
||||
Task<CheckListRowDTO> GetCheckListRowAsync(int id);
|
||||
Task<CheckListRowDTO> UpdateCheckListRowAsync(CheckListRowDTO checkListRowDTO);
|
||||
|
||||
|
||||
Task<byte[]> CreatePDF(int checkListHeaderId);
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user