public async Task <BE_ResultadoTransaccion> UpdateStatus(BE_TxSIMConsolidado entidad) { BE_ResultadoTransaccion vResultadoTransaccion = new BE_ResultadoTransaccion(); vResultadoTransaccion.ResultadoCodigo = 1; try { Update(entidad, SP_UPDATE_STATUS); } catch (Exception ex) { vResultadoTransaccion.ResultadoCodigo = -1; vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString(); return(vResultadoTransaccion); } var memory = new MemoryStream(); try { var memoryPDF = await GenerarPDF(entidad.IdSIMConsolidado, entidad.DescripcionEmpresa); memory = memoryPDF; } catch (Exception ex) { vResultadoTransaccion.ResultadoCodigo = -1; vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString(); return(vResultadoTransaccion); } //Obtiene informacion del examen fisicion del pollito bebe var data = context.ExecuteSqlViewId <BE_TxSIM>(SP_GET_ID_GOOGLE_DRIVE, new BE_TxSIM { IdSIMConsolidado = entidad.IdSIMConsolidado }); var nameFile = string.Format("{0}.{1}", data.NombreArchivo, "pdf"); try { EmailSenderRepository emailSenderRepository = new EmailSenderRepository(context); var mensaje = string.Format("Se envía Consolidado del Sistema Integral de Monitoreo de Campo - N° {0}", entidad.IdSIMConsolidado); await emailSenderRepository.SendEmailAsync(data.EmailTo, "Correo Automatico - Sistema Integral de Monitoreo de Campo", mensaje, new BE_MemoryStream { FileMemoryStream = memory }, nameFile); } catch (Exception ex) { vResultadoTransaccion.ResultadoCodigo = -1; vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString(); return(vResultadoTransaccion); } MemoryStream ms = memory; TxRegistroDocumentoRepository _repository = new TxRegistroDocumentoRepository(context); List <IFormFile> files = new List <IFormFile>(); var fileMock = new Mock <IFormFile>(); fileMock.Setup(_ => _.FileName).Returns(nameFile); fileMock.Setup(_ => _.ContentType).Returns("application/pdf"); fileMock.Setup(_ => _.Length).Returns(ms.Length); fileMock.Setup(_ => _.OpenReadStream()).Returns(ms); fileMock.Setup(_ => _.ContentDisposition).Returns(string.Format("inline; filename={0}", nameFile)); files.Add(fileMock.Object); try { var resultDocumentFile = await _repository.Create(new BE_TxRegistroDocumento { CodigoEmpresa = data.CodigoEmpresa, DescripcionEmpresa = data.DescripcionEmpresa, CodigoPlanta = data.CodigoPlanta, DescripcionPlanta = data.DescripcionPlanta, DescripcionTipoExplotacion = data.DescripcionTipoExplotacion, DescripcionSubTipoExplotacion = data.DescripcionSubTipoExplotacion, IdSubTipoExplotacion = data.IdSubTipoExplotacion, IdDocumento = 0, IdDocumentoReferencial = (int)data.IdSIMConsolidado, FlgCerrado = true, FecCerrado = DateTime.Now, IdUsuarioCierre = entidad.RegUsuario, RegUsuario = entidad.RegUsuario, RegEstacion = entidad.RegEstacion }, files); if (resultDocumentFile.ResultadoCodigo == -1) { vResultadoTransaccion.ResultadoCodigo = -1; vResultadoTransaccion.ResultadoDescripcion = resultDocumentFile.ResultadoDescripcion; return(vResultadoTransaccion); } } catch (Exception ex) { vResultadoTransaccion.ResultadoCodigo = -1; vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString(); return(vResultadoTransaccion); } return(vResultadoTransaccion); }
public async Task <BE_ResultadoTransaccion> Create(BE_TxRegistroDocumento entidad, IList <IFormFile> lista_anexo, bool generaNombre = true) { BE_ResultadoTransaccion vResultadoTransaccion = new BE_ResultadoTransaccion(); vResultadoTransaccion.ResultadoCodigo = 1; try { using (SqlConnection conn = new SqlConnection(context.DevuelveConnectionSQL())) { using (CommittableTransaction transaction = new CommittableTransaction()) { await conn.OpenAsync(); conn.EnlistTransaction(transaction); if (lista_anexo.Count > 0) { string extension = string.Empty; string nombre_archivo = string.Empty; Google.Apis.Drive.v3.Data.File fileGoogleDrive = new Google.Apis.Drive.v3.Data.File(); var _anio = DateTime.Now.Year; var _mes = DateTime.Now.Month; DateTimeFormatInfo dateTimeFormatInfo = CultureInfo.CurrentCulture.DateTimeFormat; string nombreMes = dateTimeFormatInfo.GetMonthName(_mes); entidad.Ano = _anio; entidad.Mes = _mes; try { DriveApiService googleApiDrive = new DriveApiService(); // Validamos si existe Id de folder en Google Drive string IdFolderGoogleDrive = string.Empty; var IdFolderEmpresaGoogleDrive = googleApiDrive.CreateFolder(entidad.DescripcionEmpresa); using (SqlCommand cmd = new SqlCommand(SP_GOOGLE_DRIVE_EMPRESA_MERGE, conn)) { cmd.Parameters.Clear(); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@CodigoEmpresa", entidad.CodigoEmpresa)); cmd.Parameters.Add(new SqlParameter("@IdGoogleDrive", IdFolderEmpresaGoogleDrive)); cmd.Parameters.Add(new SqlParameter("@RegUsuario", entidad.RegUsuario)); cmd.Parameters.Add(new SqlParameter("@RegEstacion", entidad.RegEstacion)); await cmd.ExecuteNonQueryAsync(); } IdFolderGoogleDrive = GetIdDriveFolder(new BE_TxRegistroDocumentoFolder { IdSubTipoExplotacion = entidad.IdSubTipoExplotacion, CodigoEmpresa = entidad.CodigoEmpresa, CodigoPlanta = entidad.CodigoPlanta, Ano = entidad.Ano, Mes = entidad.Mes }); if (string.IsNullOrEmpty(IdFolderGoogleDrive)) { IdFolderGoogleDrive = googleApiDrive.GenerateDirectory(entidad.DescripcionEmpresa, entidad.DescripcionPlanta, entidad.DescripcionTipoExplotacion, entidad.DescripcionSubTipoExplotacion, entidad.Ano.ToString(), nombreMes); using (SqlCommand cmd = new SqlCommand(SP_GOOGLE_DRIVE_INSERT, conn)) { cmd.Parameters.Clear(); cmd.CommandType = System.Data.CommandType.StoredProcedure; cmd.Parameters.Add(new SqlParameter("@IdSubTipoExplotacion", entidad.IdSubTipoExplotacion)); cmd.Parameters.Add(new SqlParameter("@CodigoEmpresa", entidad.CodigoEmpresa)); cmd.Parameters.Add(new SqlParameter("@CodigoPlanta", entidad.CodigoPlanta)); cmd.Parameters.Add(new SqlParameter("@IdGoogleDrive", IdFolderGoogleDrive)); cmd.Parameters.Add(new SqlParameter("@RegUsuario", entidad.RegUsuario)); cmd.Parameters.Add(new SqlParameter("@RegEstacion", entidad.RegEstacion)); await cmd.ExecuteNonQueryAsync(); } } if (entidad.FlgCerrado == null) { var IdFolderPendienteCierreGoogleDrive = googleApiDrive.CreateFolder("PENDIENTE CIERRE"); IdFolderGoogleDrive = IdFolderPendienteCierreGoogleDrive; } using (SqlCommand cmd = new SqlCommand(SP_INSERT, conn)) { foreach (IFormFile _lista in lista_anexo) { extension = _lista.FileName.Split('.').Last(); nombre_archivo = string.Empty; nombre_archivo = _lista.FileName.Replace("." + extension, string.Empty); cmd.Parameters.Clear(); cmd.CommandType = System.Data.CommandType.StoredProcedure; SqlParameter oParam = new SqlParameter("@IdDocumento", entidad.IdDocumento); oParam.SqlDbType = SqlDbType.Int; oParam.Direction = ParameterDirection.Output; cmd.Parameters.Add(oParam); cmd.Parameters.Add(new SqlParameter("@IdSubTipoExplotacion", entidad.IdSubTipoExplotacion)); cmd.Parameters.Add(new SqlParameter("@CodigoEmpresa", entidad.CodigoEmpresa)); cmd.Parameters.Add(new SqlParameter("@DescripcionEmpresa", entidad.DescripcionEmpresa)); cmd.Parameters.Add(new SqlParameter("@CodigoPlanta", entidad.CodigoPlanta)); cmd.Parameters.Add(new SqlParameter("@GeneraNombre", generaNombre)); cmd.Parameters.Add(new SqlParameter("@NombreOriginal", nombre_archivo)); SqlParameter oParamNombreArchivo = new SqlParameter("@NombreArchivo", SqlDbType.VarChar, 300) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(oParamNombreArchivo); SqlParameter oParamCadenaEmail = new SqlParameter("@CadenaEmail", SqlDbType.VarChar, 300) { Direction = ParameterDirection.Output }; cmd.Parameters.Add(oParamCadenaEmail); cmd.Parameters.Add(new SqlParameter("@TipoArchivo", _lista.ContentType)); cmd.Parameters.Add(new SqlParameter("@ExtencionArchivo", extension)); cmd.Parameters.Add(new SqlParameter("@FlgCerrado", entidad.FlgCerrado)); cmd.Parameters.Add(new SqlParameter("@IdUsuarioCierre", entidad.IdUsuarioCierre)); cmd.Parameters.Add(new SqlParameter("@FecCerrado", entidad.FecCerrado)); cmd.Parameters.Add(new SqlParameter("@IdDocumentoReferencial", entidad.IdDocumentoReferencial)); cmd.Parameters.Add(new SqlParameter("@RegUsuario", entidad.RegUsuario)); cmd.Parameters.Add(new SqlParameter("@RegEstacion", entidad.RegEstacion)); await cmd.ExecuteNonQueryAsync(); entidad.IdDocumento = (int)cmd.Parameters["@IdDocumento"].Value; entidad.NombreArchivo = (string)oParamNombreArchivo.Value; var cadenaEmail = (string)oParamCadenaEmail.Value; nombre_archivo = entidad.NombreArchivo + "." + extension.ToString(); fileGoogleDrive = await googleApiDrive.Upload(_lista, IdFolderGoogleDrive, entidad.NombreArchivo); if (!string.IsNullOrEmpty(fileGoogleDrive.Id)) { using (SqlCommand cmdIdGoogle = new SqlCommand(SP_UPDATE, conn)) { cmdIdGoogle.Parameters.Clear(); cmdIdGoogle.CommandType = System.Data.CommandType.StoredProcedure; cmdIdGoogle.Parameters.Add(new SqlParameter("@IdDocumento", entidad.IdDocumento)); cmdIdGoogle.Parameters.Add(new SqlParameter("@IdGoogleDrive", fileGoogleDrive.Id)); cmdIdGoogle.Parameters.Add(new SqlParameter("@RegUsuario", entidad.RegUsuario)); cmdIdGoogle.Parameters.Add(new SqlParameter("@RegEstacion", entidad.RegEstacion)); await cmdIdGoogle.ExecuteNonQueryAsync(); } } if (entidad.FlgCerrado == null) { try { if (!string.IsNullOrEmpty(cadenaEmail)) { EmailSenderRepository emailSenderRepository = new EmailSenderRepository(context); var mensaje = string.Format("Buen día, <br> <br> Se realizo la carga de un nuevo archivo a la extranet N° {0}, Favor su aprobación", entidad.IdDocumento); var link = string.Format(" <br> <br><a href=\"https://auditoria.invetsa.com/Invetsa/\">Ingresar a la Aplicación</a>"); await emailSenderRepository.SendEmailAsync(cadenaEmail, "Correo Automatico - Registro de Documento - Extranet", mensaje + " " + link); } } catch (Exception ex) { vResultadoTransaccion.ResultadoCodigo = -1; vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString(); return(vResultadoTransaccion); } } } } transaction.Commit(); } catch (System.Exception ex) { vResultadoTransaccion.ResultadoCodigo = -1; vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString(); transaction.Rollback(); } } } } } catch (System.Exception ex) { vResultadoTransaccion.ResultadoCodigo = -1; vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString(); } return(vResultadoTransaccion); }