Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix: desbloquea el documento despues de generar el documento digital #79

Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
using Api.Core.Domain.Requests;
using Api.Sync.Core.Application.Common.Models;
using ARSoftware.Contpaqi.Comercial.Sdk.Abstractions.Enums;
using ARSoftware.Contpaqi.Comercial.Sdk.Extras.Extensions;
using ARSoftware.Contpaqi.Comercial.Sdk.Extras.Helpers;
using ARSoftware.Contpaqi.Comercial.Sdk.Extras.Interfaces;
using MediatR;
Expand All @@ -14,34 +15,45 @@ public sealed class GenerarDocumentoDigitalRequestHandler : IRequestHandler<Gene
{
private readonly ContpaqiComercialConfig _contpaqiComercialConfig;
private readonly IDocumentoService _documentoService;
private readonly IContpaqiSdk _sdk;

public GenerarDocumentoDigitalRequestHandler(IDocumentoService documentoService,
IOptions<ContpaqiComercialConfig> contpaqiComercialConfigOptions)
IOptions<ContpaqiComercialConfig> contpaqiComercialConfigOptions, IContpaqiSdk sdk)
{
_documentoService = documentoService;
_sdk = sdk;
_contpaqiComercialConfig = contpaqiComercialConfigOptions.Value;
}

public async Task<GenerarDocumentoDigitalResponse> Handle(GenerarDocumentoDigitalRequest request, CancellationToken cancellationToken)
{
LlaveDocumento llaveDocumento = request.Model.LlaveDocumento;

string rutaPlantilla = Path.Combine(_contpaqiComercialConfig.RutaPlantillasPdf, request.Options.NombrePlantilla);
try
{
string rutaPlantilla = Path.Combine(_contpaqiComercialConfig.RutaPlantillasPdf, request.Options.NombrePlantilla);

_documentoService.GenerarDocumentoDigital(llaveDocumento.ConceptoCodigo, llaveDocumento.Serie, llaveDocumento.Folio,
request.Options.Tipo, rutaPlantilla);
_documentoService.GenerarDocumentoDigital(llaveDocumento.ConceptoCodigo, llaveDocumento.Serie, llaveDocumento.Folio,
request.Options.Tipo, rutaPlantilla);

string rutaDocumento = ArchivoDigitalHelper.GenerarRutaArchivoDigital(request.Options.Tipo, _contpaqiComercialConfig.Empresa.Ruta,
llaveDocumento.Serie, llaveDocumento.Folio.ToString(CultureInfo.InvariantCulture));
string rutaDocumento = ArchivoDigitalHelper.GenerarRutaArchivoDigital(request.Options.Tipo,
_contpaqiComercialConfig.Empresa.Ruta, llaveDocumento.Serie, llaveDocumento.Folio.ToString(CultureInfo.InvariantCulture));

var documentoDigital = new DocumentoDigital
{
Ubicacion = rutaDocumento,
Nombre = new FileInfo(rutaDocumento).Name,
Tipo = request.Options.Tipo == TipoArchivoDigital.Pdf ? "application/pdf" : "text/xml",
Contenido = await File.ReadAllBytesAsync(rutaDocumento, cancellationToken)
};
var documentoDigital = new DocumentoDigital
{
Ubicacion = rutaDocumento,
Nombre = new FileInfo(rutaDocumento).Name,
Tipo = request.Options.Tipo == TipoArchivoDigital.Pdf ? "application/pdf" : "text/xml",
Contenido = await File.ReadAllBytesAsync(rutaDocumento, cancellationToken)
};

return GenerarDocumentoDigitalResponse.CreateInstance(documentoDigital);
return GenerarDocumentoDigitalResponse.CreateInstance(documentoDigital);
}
finally
{
// TODO: Utilizar el DocumentoService cuando salga la nueva version donde se pueda desbloquear el documento por llave
_sdk.fBuscarDocumento(llaveDocumento.ConceptoCodigo, llaveDocumento.Serie, llaveDocumento.Folio.ToString());
_sdk.fDesbloqueaDocumento().ToResultadoSdk(_sdk).ThrowIfError();
}
}
}