using ArquivoDigital.Infrastructure.Repository.Interface; using ArquivoDigital.Infrastructure.UnitOfWork.Generic; using ArquivoDigital.Infrastructure.UnitOfWork.Logic; using CsQuery.ExtensionMethods.Internal; using Gestor.Application.Helpers; using Gestor.Application.Servicos.Generic; using Gestor.Infrastructure.Repository.Interface; using Gestor.Infrastructure.UnitOfWork.Generic; using Gestor.Infrastructure.UnitOfWork.Logic; using Gestor.Model.API; using Gestor.Model.Common; using Gestor.Model.Domain.Aggilizador; using Gestor.Model.Domain.Common; using Gestor.Model.Domain.Generic; using Gestor.Model.License; using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.Linq; using System.Runtime.CompilerServices; using System.Threading.Tasks; namespace Gestor.Application.Servicos { public class ArquivoDigitalServico : BaseServico { public ArquivoDigitalServico() { } public async Task> BaixarArquivosPendentes(List arquivos) { string banco = Gestor.Application.Helpers.ArquivoDigital.Banco; int num = 3; List arquivoVinculos1 = await Task.Run>(() => { List arquivoVinculos; while (num > 0) { try { using (Gestor.Application.Helpers.ArquivoDigital.Read) { foreach (ArquivoVinculo arquivo in arquivos) { if (arquivo.get_Arquivo() != null || ExtensionMethods.IsNullOrEmpty(arquivo.get_Chave())) { continue; } byte[] result = Connection.DownloadFile(arquivo.get_Storage(), arquivo.get_Ano(), Guid.Parse(arquivo.get_Chave()), ".pdf", "aggilizador", false).Result; if (result == null) { continue; } arquivo.set_Arquivo(result); } arquivoVinculos = arquivos; } } catch (Exception exception) { num = base.Registrar(exception, 65, num, new { arquivos = arquivos, banco = banco }, true); continue; } return arquivoVinculos; } return null; }); return arquivoVinculos1; } public async Task> Buscar(List ids) { int num = 3; List arquivoDigitals4 = await Task.Run>(() => { List arquivoDigitals2; while (num > 0) { try { List arquivoDigitals3 = new List(); List indiceArquivoDigitals2 = ids; Func u003cu003e9_61 = ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_1; if (u003cu003e9_61 == null) { u003cu003e9_61 = (IndiceArquivoDigital x) => x.get_Bd(); ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_1 = u003cu003e9_61; } indiceArquivoDigitals2.GroupBy(u003cu003e9_61).ToList>().ForEach((IGrouping x) => { Gestor.Application.Helpers.ArquivoDigital.SetConnection(x.Key); IGrouping strs = x; Func u003cu003e9_63 = ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_3; if (u003cu003e9_63 == null) { u003cu003e9_63 = (IndiceArquivoDigital l) => !l.get_Assinado(); ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_3 = u003cu003e9_63; } IEnumerable indiceArquivoDigitals = strs.Where(u003cu003e9_63); Func u003cu003e9_64 = ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_4; if (u003cu003e9_64 == null) { u003cu003e9_64 = (IndiceArquivoDigital l) => l.get_IdArquivoDigital(); ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_4 = u003cu003e9_64; } List list = indiceArquivoDigitals.Select(u003cu003e9_64).ToList(); IGrouping strs1 = x; Func u003cu003e9_65 = ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_5; if (u003cu003e9_65 == null) { u003cu003e9_65 = (IndiceArquivoDigital l) => l.get_Assinado(); ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_5 = u003cu003e9_65; } IEnumerable indiceArquivoDigitals1 = strs1.Where(u003cu003e9_65); Func u003cu003e9_66 = ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_6; if (u003cu003e9_66 == null) { u003cu003e9_66 = (IndiceArquivoDigital l) => l.get_Id(); ArquivoDigitalServico.u003cu003ec.u003cu003e9__6_6 = u003cu003e9_66; } List nums = indiceArquivoDigitals1.Select(u003cu003e9_66).ToList(); if (nums.Any()) { List arquivoDigitals = new List(); using (Gestor.Infrastructure.UnitOfWork.Logic.UnitOfWork read = Instancia.Read) { nums.ForEach((long a) => { Gestor.Model.Domain.Common.ArquivoDigital arquivoDigital = read.get_IndiceArquivoDigitalRepository().FindAssinatura(a); if (arquivoDigital.get_AzureGuid().HasValue) { arquivoDigital.set_Arquivo(Connection.DownloadFile(arquivoDigital.get_AzureStorage(), arquivoDigital.get_DataCriacao().Value.Year, arquivoDigital.get_AzureGuid().Value, Path.GetExtension(arquivoDigital.get_Descricao()), "siggner", false).Result); } if (arquivoDigital.get_Arquivo() != null) { arquivoDigitals.Add(arquivoDigital); } }); } arquivoDigitals3.AddRange(arquivoDigitals); } if (list.Any()) { List arquivoDigitals1 = new List(); using (ArquivoDigital.Infrastructure.UnitOfWork.Logic.UnitOfWork unitOfWork = Gestor.Application.Helpers.ArquivoDigital.Read) { list.ForEach((long a) => { Gestor.Model.Domain.Common.ArquivoDigital arquivoDigital = unitOfWork.get_ArquivoDigitalRepository().FindById(a, true); if (arquivoDigital.get_AzureGuid().HasValue) { arquivoDigital.set_Arquivo(Connection.DownloadFile(arquivoDigital.get_AzureStorage(), arquivoDigital.get_DataCriacao().Value.Year, arquivoDigital.get_AzureGuid().Value, arquivoDigital.get_Extensao(), "ad", false).Result); } if (arquivoDigital.get_Arquivo() != null) { arquivoDigitals1.Add(arquivoDigital); } }); } arquivoDigitals3.AddRange(arquivoDigitals1); } }); arquivoDigitals2 = arquivoDigitals3; } catch (Exception exception) { num = base.Registrar(exception, 66, num, ids, true); continue; } return arquivoDigitals2; } return new List(); }); return arquivoDigitals4; } public async Task BuscarPorId(long id, string banco) { int num = 3; Gestor.Model.Domain.Common.ArquivoDigital arquivoDigital2 = await Task.Run(() => { Gestor.Model.Domain.Common.ArquivoDigital arquivoDigital; while (num > 0) { try { Gestor.Application.Helpers.ArquivoDigital.SetConnection(banco); if (string.IsNullOrEmpty(banco)) { banco = Gestor.Application.Helpers.ArquivoDigital.Banco; } using (ArquivoDigital.Infrastructure.UnitOfWork.Logic.UnitOfWork read = Gestor.Application.Helpers.ArquivoDigital.Read) { Gestor.Model.Domain.Common.ArquivoDigital arquivoDigital1 = read.get_ArquivoDigitalRepository().FindById(id, true); if (arquivoDigital1 != null) { if (arquivoDigital1.get_AzureGuid().HasValue) { byte[] result = Connection.DownloadFile(arquivoDigital1.get_AzureStorage(), arquivoDigital1.get_DataCriacao().Value.Year, arquivoDigital1.get_AzureGuid().Value, arquivoDigital1.get_Extensao(), "ad", false).Result; if (result != null) { arquivoDigital1.set_Arquivo(result); } else { arquivoDigital = null; return arquivoDigital; } } arquivoDigital = arquivoDigital1; } else { arquivoDigital = null; } } } catch (Exception exception) { num = base.Registrar(exception, 65, num, new { id = id, banco = banco }, true); continue; } return arquivoDigital; } return null; }); return arquivoDigital2; } public async Task BuscarPorId(long id) { int num = 3; Gestor.Model.Domain.Common.ArquivoDigital arquivoDigital2 = await Task.Run(() => { Gestor.Model.Domain.Common.ArquivoDigital arquivoDigital; while (num > 0) { try { using (Gestor.Infrastructure.UnitOfWork.Logic.UnitOfWork read = Instancia.Read) { Gestor.Model.Domain.Common.ArquivoDigital arquivoDigital1 = read.get_IndiceArquivoDigitalRepository().FindAssinatura(id); if (arquivoDigital1.get_AzureGuid().HasValue) { byte[] result = Connection.DownloadFile(arquivoDigital1.get_AzureStorage(), arquivoDigital1.get_DataCriacao().Value.Year, arquivoDigital1.get_AzureGuid().Value, Path.GetExtension(arquivoDigital1.get_Descricao()), "siggner", false).Result; if (result != null) { arquivoDigital1.set_Arquivo(result); } else { arquivoDigital = null; return arquivoDigital; } } arquivoDigital = arquivoDigital1; } } catch (Exception exception) { num = base.Registrar(exception, 64, num, id, true); continue; } return arquivoDigital; } return null; }); return arquivoDigital2; } public async Task> BuscarPorTipo(TipoArquivoDigital tipo, long id) { int num2 = 3; long num3 = Recursos.Usuario.get_Id(); List indiceArquivoDigitals1 = await Task.Run>(() => { List indiceArquivoDigitals; while (num2 > 0) { try { using (Gestor.Infrastructure.UnitOfWork.Logic.UnitOfWork read = Instancia.Read) { IIndiceArquivoDigitalRepository indiceArquivoDigitalRepository = read.get_IndiceArquivoDigitalRepository(); TipoArquivoDigital tipoArquivoDigital = tipo; long num = id; long num1 = num3; List produtos = LicenseHelper.Produtos; Func u003cu003e9_01 = ArquivoDigitalServico.u003cu003ec.u003cu003e9__0_1; if (u003cu003e9_01 == null) { u003cu003e9_01 = (Licenca x) => { if (x.get_Produto() != 86) { return false; } return x.get_Status() != 3; }; ArquivoDigitalServico.u003cu003ec.u003cu003e9__0_1 = u003cu003e9_01; } indiceArquivoDigitals = indiceArquivoDigitalRepository.Find(tipoArquivoDigital, num, num1, produtos.Any(u003cu003e9_01)); } } catch (Exception exception) { num2 = base.Registrar(exception, 64, num2, new { tipo = tipo, id = id }, true); continue; } return indiceArquivoDigitals; } return new List(); }); return indiceArquivoDigitals1; } public async Task Criar() { int num = 3; await Task.Run(() => { while (num > 0) { try { using (ArquivoDigital.Infrastructure.UnitOfWork.Logic.UnitOfWork read = Gestor.Application.Helpers.ArquivoDigital.Read) { read.get_ArquivoDigitalRepository().FindById((long)1, false); break; } } catch (Exception exception) { num = base.Registrar(exception, 288, num, null, true); } } }); } public async Task DeleteAttachment(IndiceArquivoDigital indice) { int num = 3; DateTime networkTime = Funcoes.GetNetworkTime(); bool flag1 = await Task.Run(() => { bool flag; while (num > 0) { List registroLogs = new List(); try { using (Gestor.Infrastructure.UnitOfWork.Logic.UnitOfWork commited = Instancia.Commited) { indice.set_Excluido(true); List diferencas = new List(); Diferenca diferenca = new Diferenca(); diferenca.set_Campo("Id"); diferenca.set_Descricao("ID"); diferenca.set_ValorAtual(indice.get_Id().ToString()); diferencas.Add(diferenca); Diferenca diferenca1 = new Diferenca(); diferenca1.set_Campo("Descricao"); diferenca1.set_Descricao("DESCRIÇÃO"); diferenca1.set_ValorAtual(indice.get_Descricao()); diferencas.Add(diferenca1); List diferencas1 = diferencas; if (indice.get_AzureGuid().HasValue && Connection.DeleteFile(indice.get_AzureStorage(), indice.get_DataCriacao().Value.Year, indice.get_AzureGuid().Value, indice.get_Extensao(), "ad").Result) { Diferenca diferenca2 = new Diferenca(); diferenca2.set_Campo("AzureGuid"); diferenca2.set_Descricao("AzureGuid"); diferenca2.set_ValorAtual(indice.get_AzureGuid().ToString()); diferencas1.Add(diferenca2); } registroLogs.Add(base.CreateLog(indice.get_Id(), diferencas1, 6, 2)); indice.set_DataAtualizacao(new DateTime?(networkTime)); if (!indice.get_DataCriacao().HasValue || indice.get_DataCriacao().Value.Year < 1754) { indice.set_DataCriacao(new DateTime?(networkTime)); } commited.get_IndiceArquivoDigitalRepository().Merge(indice); base.SaveLog(registroLogs, commited); commited.Commit(); } flag = true; } catch (Exception exception) { num = base.Registrar(exception, 253, num, indice, true); continue; } return flag; } return false; }); return flag1; } public async Task> Insert(List files) { int num = 3; base.Sucesso = true; DateTime networkTime = Funcoes.GetNetworkTime(); List arquivoDigitals = files; List indiceArquivoDigitals2 = await Task.Run>(() => { List indiceArquivoDigitals; while (num > 0) { List registroLogs = new List(); files = arquivoDigitals; try { List indiceArquivoDigitals1 = new List(); files.ForEach((Gestor.Model.Domain.Common.ArquivoDigital file) => { file.set_UsuarioCriacao(Recursos.Usuario.get_Id()); file.set_DataCriacao(new DateTime?(networkTime)); file.set_DataAtualizacao(null); UploadFile uploadFile = new UploadFile(); uploadFile.set_Ano(networkTime.Year); uploadFile.set_Id(Guid.NewGuid()); uploadFile.set_Extensao(file.get_Extensao().Replace(".", string.Empty)); uploadFile.set_Arquivo(file.get_Arquivo()); UploadFile uploadFile1 = uploadFile; if (Connection.ConnectionAddress.get_UsaAzureStorage() && Connection.UploadFile(uploadFile1, "ad").Result) { file.set_AzureGuid(new Guid?(uploadFile1.get_Id())); file.set_Arquivo(null); file.set_AzureStorage(Connection.ConnectionAddress.get_AzureStorage()); } IndiceArquivoDigital indiceArquivoDigital = new IndiceArquivoDigital(); indiceArquivoDigital.set_Descricao(file.get_Descricao()); indiceArquivoDigital.set_Bd(Gestor.Application.Helpers.ArquivoDigital.Banco); indiceArquivoDigital.set_Extensao(file.get_Extensao()); indiceArquivoDigital.set_IdCliente(file.get_IdCliente()); indiceArquivoDigital.set_IdDocumento(file.get_IdDocumento()); indiceArquivoDigital.set_IdEmpresa(file.get_IdEmpresa()); indiceArquivoDigital.set_IdParcela(file.get_IdParcela()); indiceArquivoDigital.set_IdItem(file.get_IdItem()); indiceArquivoDigital.set_IdExtrato(file.get_IdExtrato()); indiceArquivoDigital.set_IdSinistro(file.get_IdSinistro()); indiceArquivoDigital.set_IdSeguradora(file.get_IdSeguradora()); indiceArquivoDigital.set_IdVendedor(file.get_IdVendedor()); indiceArquivoDigital.set_IdUsuario(file.get_IdUsuario()); indiceArquivoDigital.set_IdLancamento(file.get_IdLancamento()); indiceArquivoDigital.set_IdFornecedor(file.get_IdFornecedor()); indiceArquivoDigital.set_IdProspeccao(file.get_IdProspeccao()); indiceArquivoDigital.set_IdSocio(file.get_IdSocio()); indiceArquivoDigital.set_IdTarefa(file.get_IdTarefa()); indiceArquivoDigital.set_IdNotaFiscal(file.get_IdNotaFiscal()); indiceArquivoDigital.set_IdEstipulante(file.get_IdEstipulante()); indiceArquivoDigital.set_Excluido(file.get_Excluido()); indiceArquivoDigital.set_UsuarioCriacao(file.get_UsuarioCriacao()); indiceArquivoDigital.set_DataCriacao(file.get_DataCriacao()); indiceArquivoDigital.set_DataAtualizacao(file.get_DataAtualizacao()); indiceArquivoDigital.set_AzureGuid(file.get_AzureGuid()); indiceArquivoDigital.set_AzureStorage(file.get_AzureStorage()); IndiceArquivoDigital indiceArquivoDigital1 = indiceArquivoDigital; Gestor.Application.Helpers.ArquivoDigital.SetConnection(""); indiceArquivoDigital1.set_Bd(Gestor.Application.Helpers.ArquivoDigital.Banco); using (ArquivoDigital.Infrastructure.UnitOfWork.Logic.UnitOfWork commited = Gestor.Application.Helpers.ArquivoDigital.Commited) { file = commited.get_ArquivoDigitalRepository().SaveOrUpdate(file); indiceArquivoDigital1.set_IdArquivoDigital(file.get_Id()); commited.Commit(); } using (Gestor.Infrastructure.UnitOfWork.Logic.UnitOfWork unitOfWork = Instancia.Commited) { indiceArquivoDigital1 = unitOfWork.get_IndiceArquivoDigitalRepository().SaveOrUpdate(indiceArquivoDigital1); List diferencas = new List(); Diferenca diferenca = new Diferenca(); diferenca.set_Campo("Descricao"); diferenca.set_Descricao("DESCRIÇÃO"); diferenca.set_ValorAtual(indiceArquivoDigital1.get_Descricao()); diferencas.Add(diferenca); registroLogs.Add(base.CreateLog(indiceArquivoDigital1.get_Id(), diferencas, 6, 0)); base.SaveLog(registroLogs, unitOfWork); unitOfWork.Commit(); } indiceArquivoDigitals1.Add(indiceArquivoDigital1); }); indiceArquivoDigitals = indiceArquivoDigitals1; } catch (Exception exception) { num = base.Registrar(exception, 252, num, files, true); continue; } return indiceArquivoDigitals; } return new List(); }); return indiceArquivoDigitals2; } public async Task Save(IndiceArquivoDigital indice) { int num = 3; base.Sucesso = true; IndiceArquivoDigital indiceArquivoDigital1 = indice; DateTime networkTime = Funcoes.GetNetworkTime(); IndiceArquivoDigital indiceArquivoDigital2 = await Task.Run(() => { IndiceArquivoDigital indiceArquivoDigital; while (num > 0) { indice = indiceArquivoDigital1; List registroLogs = new List(); try { using (Gestor.Infrastructure.UnitOfWork.Logic.UnitOfWork commited = Instancia.Commited) { TipoAcao tipoAcao = (indice.get_Id() == 0 ? 0 : 1); indice.set_DataAtualizacao(new DateTime?(networkTime)); indice.set_UsuarioAtualizacao(Recursos.Usuario.get_Id()); indice.set_Excluido(false); if (tipoAcao == 1) { registroLogs.Add(base.CreateLog(indice.get_Id(), indice, 6)); } indice = (tipoAcao == 1 ? commited.get_IndiceArquivoDigitalRepository().Merge(indice) : commited.get_IndiceArquivoDigitalRepository().SaveOrUpdate(indice)); if (tipoAcao != 1) { List diferencas = new List(); Diferenca diferenca = new Diferenca(); diferenca.set_Campo("Descricao"); diferenca.set_Descricao("DESCRIÇÃO"); diferenca.set_ValorAtual(indice.get_Descricao()); diferencas.Add(diferenca); registroLogs.Add(base.CreateLog(indice.get_Id(), diferencas, 6, tipoAcao)); } base.SaveLog(registroLogs, commited); commited.Commit(); } indiceArquivoDigital = indice; } catch (Exception exception) { num = base.Registrar(exception, 252, num, indice, true); continue; } return indiceArquivoDigital; } return indiceArquivoDigital1; }); return indiceArquivoDigital2; } } }