예제 #1
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);
        }
예제 #2
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);
        }