Beispiel #1
0
        public Task <BE_ResultadoTransaccion> Update(BE_TxRegistroDocumento entidad)
        {
            return(Task.Run(() => {
                BE_ResultadoTransaccion vResultadoTransaccion = new BE_ResultadoTransaccion();
                vResultadoTransaccion.ResultadoCodigo = 1;

                try
                {
                    DriveApiService driveApiService = new DriveApiService();
                    var resp = driveApiService.MoveFile(entidad.IdGoogleDrive, entidad.IdGoogleDriveFolder);

                    if (resp.Result == 0)
                    {
                        vResultadoTransaccion.ResultadoCodigo = -1;
                        vResultadoTransaccion.ResultadoDescripcion = "Ocurrio un error al mover archivo en el google drive";
                        return vResultadoTransaccion;
                    }
                }
                catch (Exception ex)
                {
                    vResultadoTransaccion.ResultadoCodigo = -1;
                    vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString();
                    return vResultadoTransaccion;
                }

                try
                {
                    entidad.IdGoogleDrive = null;
                    entidad.IdGoogleDriveFolder = null;
                    Update(entidad, SP_UPDATESTATUS);
                }
                catch (Exception ex)
                {
                    vResultadoTransaccion.ResultadoCodigo = -1;
                    vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString();
                    return vResultadoTransaccion;
                }

                return vResultadoTransaccion;
            }));
        }
Beispiel #2
0
        public async Task <BE_ResultadoTransaccion> Create(BE_TxSIMConsolidado value)
        {
            BE_ResultadoTransaccion vResultadoTransaccion = new BE_ResultadoTransaccion();

            _metodoName = regex.Match(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name).Groups[1].Value.ToString();

            vResultadoTransaccion.ResultadoMetodo     = _metodoName;
            vResultadoTransaccion.ResultadoAplicacion = _aplicacionName;

            try
            {
                using (SqlConnection conn = new SqlConnection(context.DevuelveConnectionSQL()))
                {
                    using (CommittableTransaction transaction = new CommittableTransaction())
                    {
                        await conn.OpenAsync();

                        conn.EnlistTransaction(transaction);

                        try
                        {
                            using (SqlCommand cmd = new SqlCommand(SP_INSERT, conn))
                            {
                                cmd.CommandType = System.Data.CommandType.StoredProcedure;

                                SqlParameter oParam = new SqlParameter("@IdSIMConsolidado", value.IdSIMConsolidado);
                                oParam.SqlDbType = SqlDbType.Int;
                                oParam.Direction = ParameterDirection.Output;
                                cmd.Parameters.Add(oParam);

                                cmd.Parameters.Add(new SqlParameter("@Observacion", value.Observacion));
                                cmd.Parameters.Add(new SqlParameter("@RegUsuario", value.RegUsuario));
                                cmd.Parameters.Add(new SqlParameter("@RegEstacion", value.RegEstacion));

                                await cmd.ExecuteNonQueryAsync();

                                value.IdSIMConsolidado = (int)cmd.Parameters["@IdSIMConsolidado"].Value;
                            }
                            if (value.ListaTxSIMConsolidadoDetalle != null)
                            {
                                if (value.ListaTxSIMConsolidadoDetalle.Count() > 0)
                                {
                                    using (SqlCommand cmd = new SqlCommand(SP_MERGE_DETALLE, conn))
                                    {
                                        foreach (BE_TxSIMConsolidadoDetalle item in value.ListaTxSIMConsolidadoDetalle)
                                        {
                                            cmd.Parameters.Clear();
                                            cmd.CommandType = System.Data.CommandType.StoredProcedure;

                                            cmd.Parameters.Add(new SqlParameter("@IdSIMConsolidadoDetalle", item.IdSIMConsolidadoDetalle));
                                            cmd.Parameters.Add(new SqlParameter("@IdSIMConsolidado", value.IdSIMConsolidado));
                                            cmd.Parameters.Add(new SqlParameter("@IdSIM", item.IdSIM));
                                            cmd.Parameters.Add(new SqlParameter("@RegUsuario", value.RegUsuario));
                                            cmd.Parameters.Add(new SqlParameter("@RegEstacion", value.RegEstacion));

                                            await cmd.ExecuteNonQueryAsync();
                                        }
                                    }
                                }
                            }

                            using (SqlCommand cmd = new SqlCommand(SP_UPDATE_DESCRIPCION, conn))
                            {
                                cmd.Parameters.Clear();
                                cmd.CommandType = System.Data.CommandType.StoredProcedure;

                                cmd.Parameters.Add(new SqlParameter("@IdSIMConsolidado", value.IdSIMConsolidado));

                                await cmd.ExecuteNonQueryAsync();
                            }

                            transaction.Commit();
                            vResultadoTransaccion.IdRegistro           = (int)value.IdSIMConsolidado;
                            vResultadoTransaccion.ResultadoCodigo      = 0;
                            vResultadoTransaccion.ResultadoDescripcion = string.Format("Se registro correctamente");
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            vResultadoTransaccion.IdRegistro           = -1;
                            vResultadoTransaccion.ResultadoCodigo      = -1;
                            vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                vResultadoTransaccion.IdRegistro           = -1;
                vResultadoTransaccion.ResultadoCodigo      = -1;
                vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString();
            }

            return(vResultadoTransaccion);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        public async Task <BE_ResultadoTransaccion> Create(BE_TxExamenFisicoPollito value)
        {
            BE_ResultadoTransaccion vResultadoTransaccion = new BE_ResultadoTransaccion();

            _metodoName = regex.Match(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name).Groups[1].Value.ToString();

            vResultadoTransaccion.ResultadoMetodo     = _metodoName;
            vResultadoTransaccion.ResultadoAplicacion = _aplicacionName;

            try
            {
                using (SqlConnection conn = new SqlConnection(context.DevuelveConnectionSQL()))
                {
                    using (CommittableTransaction transaction = new CommittableTransaction())
                    {
                        await conn.OpenAsync();

                        conn.EnlistTransaction(transaction);

                        try
                        {
                            using (SqlCommand cmd = new SqlCommand(SP_INSERT, conn))
                            {
                                cmd.CommandType = System.Data.CommandType.StoredProcedure;

                                SqlParameter oParam = new SqlParameter("@IdExamenFisico", value.IdExamenFisico);
                                oParam.SqlDbType = SqlDbType.Int;
                                oParam.Direction = ParameterDirection.Output;
                                cmd.Parameters.Add(oParam);

                                cmd.Parameters.Add(new SqlParameter("@CodigoEmpresa", value.CodigoEmpresa));
                                cmd.Parameters.Add(new SqlParameter("@CodigoPlanta", value.CodigoPlanta));
                                cmd.Parameters.Add(new SqlParameter("@FecRegistro", value.FecRegistro));
                                cmd.Parameters.Add(new SqlParameter("@ResponsableInvetsa", value.ResponsableInvetsa));
                                cmd.Parameters.Add(new SqlParameter("@ResponsablePlanta", value.ResponsablePlanta));
                                cmd.Parameters.Add(new SqlParameter("@NumeroNacedora", value.NumeroNacedora));
                                cmd.Parameters.Add(new SqlParameter("@Lote", value.Lote));
                                cmd.Parameters.Add(new SqlParameter("@PesoPromedio", value.PesoPromedio));
                                cmd.Parameters.Add(new SqlParameter("@EdadReproductora", value.EdadReproductora));
                                cmd.Parameters.Add(new SqlParameter("@Sexo", value.Sexo));
                                cmd.Parameters.Add(new SqlParameter("@LineaGenetica", value.LineaGenetica));
                                cmd.Parameters.Add(new SqlParameter("@Calificacion", value.Calificacion));
                                cmd.Parameters.Add(new SqlParameter("@Uniformidad", value.Uniformidad));
                                cmd.Parameters.Add(new SqlParameter("@IdCalidad", value.IdCalidad));
                                cmd.Parameters.Add(new SqlParameter("@FirmaInvetsa", value.FirmaInvetsa));
                                cmd.Parameters.Add(new SqlParameter("@FirmaPlanta", value.FirmaPlanta));
                                cmd.Parameters.Add(new SqlParameter("@EmailFrom", value.EmailFrom));
                                cmd.Parameters.Add(new SqlParameter("@EmailTo", value.EmailTo));
                                cmd.Parameters.Add(new SqlParameter("@FlgCerrado", value.FlgCerrado));
                                cmd.Parameters.Add(new SqlParameter("@IdUsuarioCierre", value.IdUsuarioCierre));
                                cmd.Parameters.Add(new SqlParameter("@FecCierre", value.FecCierre));
                                cmd.Parameters.Add(new SqlParameter("@RegUsuario", value.RegUsuario));
                                cmd.Parameters.Add(new SqlParameter("@RegEstacion", value.RegEstacion));

                                await cmd.ExecuteNonQueryAsync();

                                value.IdExamenFisico = (int)cmd.Parameters["@IdExamenFisico"].Value;
                            }

                            using (SqlCommand cmd = new SqlCommand(SP_MERGE_DETALLE, conn))
                            {
                                foreach (BE_TxExamenFisicoPollitoDetalleNew item in value.ListDetalleNew)
                                {
                                    cmd.Parameters.Clear();
                                    cmd.CommandType = System.Data.CommandType.StoredProcedure;

                                    cmd.Parameters.Add(new SqlParameter("@IdExamenFisicoDetalle", item.IdExamenFisicoDetalle));
                                    cmd.Parameters.Add(new SqlParameter("@IdExamenFisico", value.IdExamenFisico));
                                    cmd.Parameters.Add(new SqlParameter("@NumeroPollito", item.NumeroPollito));
                                    if (item.Factor == 0)
                                    {
                                        cmd.Parameters.Add(new SqlParameter("@IdProcesoDetalle", item.IdProcesoDetalle));
                                    }
                                    else
                                    {
                                        cmd.Parameters.Add(new SqlParameter("@IdProcesoDetalle", item.Valor));
                                    }
                                    cmd.Parameters.Add(new SqlParameter("@Valor", item.Valor));
                                    cmd.Parameters.Add(new SqlParameter("@RegUsuario", value.RegUsuario));
                                    cmd.Parameters.Add(new SqlParameter("@RegEstacion", value.RegEstacion));

                                    await cmd.ExecuteNonQueryAsync();
                                }
                            }

                            using (SqlCommand cmd = new SqlCommand(SP_MERGE_DETALLE_RESUMEN, conn))
                            {
                                foreach (BE_TxExamenFisicoPollitoResumen item in value.ListDetalleResumen)
                                {
                                    cmd.Parameters.Clear();
                                    cmd.CommandType = System.Data.CommandType.StoredProcedure;

                                    cmd.Parameters.Add(new SqlParameter("@IdExamenFisicoDetalle", item.IdExamenFisicoDetalle));
                                    cmd.Parameters.Add(new SqlParameter("@IdExamenFisico", value.IdExamenFisico));
                                    cmd.Parameters.Add(new SqlParameter("@IdProceso", item.IdProceso));
                                    cmd.Parameters.Add(new SqlParameter("@Esperado", item.Esperado));
                                    cmd.Parameters.Add(new SqlParameter("@Obtenido", item.Obtenido));
                                    cmd.Parameters.Add(new SqlParameter("@RegUsuario", value.RegUsuario));
                                    cmd.Parameters.Add(new SqlParameter("@RegEstacion", value.RegEstacion));

                                    await cmd.ExecuteNonQueryAsync();
                                }
                            }

                            if (value.ListDetalleFotos != null)
                            {
                                if (value.ListDetalleFotos.Count() > 0)
                                {
                                    using (SqlCommand cmd = new SqlCommand(SP_MERGE_DETALLE_FOTO, conn))
                                    {
                                        foreach (BE_TxExamenFisicoPollitoDetalleFotos item in value.ListDetalleFotos)
                                        {
                                            cmd.Parameters.Clear();
                                            cmd.CommandType = System.Data.CommandType.StoredProcedure;

                                            cmd.Parameters.Add(new SqlParameter("@IdExamenFisicoDetalle", item.IdExamenFisicoDetalle));
                                            cmd.Parameters.Add(new SqlParameter("@IdExamenFisico", value.IdExamenFisico));
                                            cmd.Parameters.Add(new SqlParameter("@Foto", item.Foto));
                                            cmd.Parameters.Add(new SqlParameter("@RegUsuario", value.RegUsuario));
                                            cmd.Parameters.Add(new SqlParameter("@RegEstacion", value.RegEstacion));

                                            await cmd.ExecuteNonQueryAsync();
                                        }
                                    }
                                }
                            }

                            transaction.Commit();

                            vResultadoTransaccion.IdRegistro           = (int)value.IdExamenFisico;
                            vResultadoTransaccion.ResultadoCodigo      = 0;
                            vResultadoTransaccion.ResultadoDescripcion = "Se realizo correctamente";
                        }
                        catch (Exception ex)
                        {
                            transaction.Rollback();
                            vResultadoTransaccion.ResultadoCodigo      = -1;
                            vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString();
                            return(vResultadoTransaccion);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                vResultadoTransaccion.ResultadoCodigo      = -1;
                vResultadoTransaccion.ResultadoDescripcion = ex.Message.ToString();
                return(vResultadoTransaccion);
            }

            return(vResultadoTransaccion);
        }
Beispiel #5
0
        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);
        }