using System; using System.Collections.Generic; using System.Threading.Tasks; using Assinador.Infrastructure.UnitOfWork.Generic; using Assinador.Infrastructure.UnitOfWork.Logic; using Assinador.Model.Common; using Assinador.Model.Domain; using Assinador.Model.Generic; using Assinador.Modelos; using Assinador.Processos; using Gestor.Application.Helpers; using Gestor.Model.Domain.Common; using Gestor.Model.Domain.Generic; using Newtonsoft.Json; using Sign.Modelos; namespace Gestor.Application.Servicos; public class AssinaturaServico { internal async void SaveLog(AssinaturaLogAssinador keyValues, UnitOfWork unitOfWork) { if (keyValues == null) { return; } try { unitOfWork.AssinaturaLogRepository.SaveOrUpdate(keyValues); ((GenericUnitOfWork)unitOfWork).Commit(); } catch (Exception) { } } public static async Task BuscarParametrosAssinatura(long id) { return await Task.Run((Func)delegate { try { UnitOfWork read = InstanciaAssinador.Read; try { return read.EmpresaRepository.FindByEmpresa(id); } finally { ((IDisposable)read)?.Dispose(); } } catch (Exception) { return (ParametrosAssinaturaAssinador)null; } }); } public async Task Save(ArquivoParaAssinaturaAssinador arquivo) { return await Task.Run((Func)delegate { //IL_003d: Unknown result type (might be due to invalid IL or missing references) //IL_0042: Unknown result type (might be due to invalid IL or missing references) //IL_0049: Unknown result type (might be due to invalid IL or missing references) //IL_005a: Unknown result type (might be due to invalid IL or missing references) //IL_0065: Unknown result type (might be due to invalid IL or missing references) //IL_006c: Unknown result type (might be due to invalid IL or missing references) //IL_0071: Unknown result type (might be due to invalid IL or missing references) //IL_007d: Expected O, but got Unknown //IL_0082: Unknown result type (might be due to invalid IL or missing references) //IL_0092: Unknown result type (might be due to invalid IL or missing references) //IL_00a3: Expected O, but got Unknown try { UnitOfWork commited = InstanciaAssinador.Commited; try { arquivo = ((((BaseModel)arquivo).Id == 0L) ? commited.ArquivoParaAssinaturaRepository.SaveOrUpdate(arquivo) : commited.ArquivoParaAssinaturaRepository.Merge(arquivo)); AssinaturaLogAssinador keyValues = new AssinaturaLogAssinador { Acao = (Acao)0, EntidadeId = ((BaseModel)arquivo).Id, DataHora = Funcoes.GetNetworkTime(), Descricao = JsonConvert.SerializeObject((object)arquivo, new JsonSerializerSettings { ReferenceLoopHandling = (ReferenceLoopHandling)1 }), UsuarioId = ((DomainBase)Recursos.Usuario).Id, Versao = ApplicationHelper.Versao.ToString() }; SaveLog(keyValues, commited); ((GenericUnitOfWork)commited).Commit(); return arquivo; } finally { ((IDisposable)commited)?.Dispose(); } } catch (Exception) { return (ArquivoParaAssinaturaAssinador)null; } }); } public async Task Assinar(ArquivoDigital arquivoDigital, ApoliceAssinador apolice) { AggerSigner val = new AggerSigner(AssinadorHelper.Remetente); ArquivoAssinatura val2 = new ArquivoAssinatura { Bytes = arquivoDigital.Arquivo, Nome = arquivoDigital.Descricao + arquivoDigital.Extensao.ToLower() }; List destinatarios = new List { new Destinatario { Email = apolice.Email, Nome = apolice.Cliente, Documento = apolice.Documento } }; val2.Destinatarios = destinatarios; ArquivoCriado val3 = await val.EnviarParaAssinatura(val2); return new ArquivoParaAssinaturaAssinador { AssinaturaId = val3.Id, Chave = val3.Chave, DocumentoId = ((BaseModel)apolice).Id, ClienteId = apolice.ClienteId, IndiceId = apolice.ArquivoId, UrlAssinatura = val3.Url, Enviado = Funcoes.GetNetworkTime(), UsuarioId = ((DomainBase)Recursos.Usuario).Id }; } public async Task VerificarAssinado(long id) { return await Task.Run(delegate { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Invalid comparison between Unknown and I4 //IL_0025: Unknown result type (might be due to invalid IL or missing references) //IL_002b: Invalid comparison between Unknown and I4 UnitOfWork read = InstanciaAssinador.Read; try { ArquivoParaAssinaturaAssinador val = read.ArquivoParaAssinaturaRepository.FindByIndice(id); return val != null && ((int)val.Status == 1 || (int)val.Status == 2); } finally { ((IDisposable)read)?.Dispose(); } }); } public async Task VerificarEnviado(long id) { return await Task.Run(delegate { //IL_001c: Unknown result type (might be due to invalid IL or missing references) //IL_0022: Invalid comparison between Unknown and I4 UnitOfWork read = InstanciaAssinador.Read; try { ArquivoParaAssinaturaAssinador val = read.ArquivoParaAssinaturaRepository.FindByIndice(id); return val != null && (int)val.Status == 0; } finally { ((IDisposable)read)?.Dispose(); } }); } public async Task Reenviar(long indice) { AggerSigner val = new AggerSigner(AssinadorHelper.Remetente); UnitOfWork unitOfWork = InstanciaAssinador.Commited; try { ArquivoParaAssinaturaAssinador assinatura = unitOfWork.ArquivoParaAssinaturaRepository.FindByIndice(indice); await val.ReenviarParaAssinatura(new List { assinatura.AssinaturaId }, (string)null); AssinaturaLogAssinador keyValues = new AssinaturaLogAssinador { Acao = (Acao)1, EntidadeId = ((BaseModel)assinatura).Id, DataHora = Funcoes.GetNetworkTime(), Descricao = JsonConvert.SerializeObject((object)assinatura, new JsonSerializerSettings { ReferenceLoopHandling = (ReferenceLoopHandling)1 }), UsuarioId = ((DomainBase)Recursos.Usuario).Id, Versao = ApplicationHelper.Versao.ToString() }; SaveLog(keyValues, unitOfWork); return assinatura; } finally { ((IDisposable)unitOfWork)?.Dispose(); } } }