Ejemplo n.º 1
0
        public IEnumerable <Models.CorrespondenciaRegistro> InsertarCorrespondencia(Models.Correspondencia obj)
        {
            using (IDbConnection dbConnection = Connection)
            {
                dbConnection.Open();
                var data = dbConnection.Query <Models.CorrespondenciaRegistro>(
                    @"                    
                    USE [dbCorrespondencia] 

                    DECLARE	
		                    @IdSp int,
		                    @msgSp nvarchar(100)

                    EXEC	[dbo].[SP_WEBDOCDIGITAL_INS]
		                    @NombresSp = @Nombres,
		                    @ApellidosSp = @Apellidos,
		                    @CorreoElectronicoSp = @CorreoElectronico,
		                    @EntidadSp = @Entidad,
		                    @CiteSp = @Cite,
		                    @ReferenciaSp = @Referencia,
		                    @IpSp = @Ip,
		                    @EstadoSp = @Estado,
		                    @UsuarioCreacionSp = @UsuarioCreacion,
		                    @FechaCreacionSp = @FechaCreacion,
		                    @UsuarioModificacionSp = @UsuarioModificacion,
		                    @FechaModificacionSp = @FechaModificacion,
		                    @IdSp = @IdSp OUTPUT,
		                    @msgSp = @msgSp OUTPUT

                    SELECT	@IdSp as Id,
		                    @msgSp as msg
                    RETURN  ",
                    new
                {
                    Nombres           = obj.Nombres,
                    Apellidos         = obj.Apellidos,
                    CorreoElectronico = obj.CorreoElectronico,
                    Entidad           = obj.Entidad,
                    Cite                = obj.Cite,
                    Referencia          = obj.Referencia,
                    Ip                  = obj.Ip,
                    Estado              = obj.Estado,
                    UsuarioCreacion     = obj.UsuarioCreacion,
                    FechaCreacion       = obj.FechaCreacion,
                    UsuarioModificacion = obj.UsuarioModificacion,
                    FechaModificacion   = obj.FechaModificacion,
                });
                return(data);
            }
        }
        public async Task <OkObjectResult> PostFiles([FromQuery] string apiKey, [FromQuery] string recaptcha, Models.Correspondencia Correspondencia, ICollection <IFormFile> files)

        {
            try
            {
                //VERIFICA EL CAPTCHA
                if (recaptcha == null)
                {
                    return(new OkObjectResult(new
                    {
                        status = "error",
                        message = "El CAPTCHA no puede ser nulo "
                    }));
                }

                //Models.RecaptchaResponse recaptchaResponse = Utils.GoogleRecaptcha.VerifyRecaptcha(recaptcha);

                //if (recaptchaResponse == null || !recaptchaResponse.success)
                //{
                //    return new OkObjectResult(new
                //    {
                //        status = "error",
                //        message = "Ocurrió un erroral validar el CAPTCHA "
                //    });
                //}

                // VERIFICA SI EXITE ARCHIVOS QUE REGISTRAR
                if (files.Count == 0)
                {
                    return(new OkObjectResult(new
                    {
                        status = "error",
                        message = "No existen Archivos para Registrar Correspondencia"
                    }));
                }

                //VERIFICA LA EXTENSION DE ARCHIVOS PERMITIDOS
                foreach (var file in files)
                {
                    var verifica          = false;
                    var VerificaExtension = (file.FileName.Substring(file.FileName.LastIndexOf(".")));
                    var VerificaTamano    = file.Length;
                    var extensiones       = CorrespondenciaRepository.Parametros();
                    foreach (var ext in extensiones)
                    {
                        if (ext.ValorString.Contains(VerificaExtension))
                        {
                            if (ext.ValorNumber < VerificaTamano)
                            {
                                return(new OkObjectResult(new
                                {
                                    status = "error",
                                    message = "El Archivo " + file.FileName + " es mayor al permitido " + (ext.ValorNumber / 1024) + "Kb"
                                }));
                            }
                            verifica = true;
                            break;
                        }
                    }
                    if (verifica == false)
                    {
                        return(new OkObjectResult(new
                        {
                            status = "error",
                            message = "El Archivo " + file.FileName + " NO se encuentra dentro de los archivos permitidos "
                        }));
                    }
                }
                //VERIFICA LA CAPACIDA MAXIMA DE CARGA
                long capacidadMax      = 0;
                long capacidadRecibida = 0;
                foreach (var file in files)
                {
                    var VerificaTamano = file.Length;
                    capacidadRecibida = capacidadRecibida + VerificaTamano;
                }
                var extensionTotal = CorrespondenciaRepository.Parametros();
                foreach (var ext in extensionTotal)
                {
                    if (ext.ValorString == "MAX")
                    {
                        capacidadMax = ext.ValorNumber;
                        break;
                    }
                }
                if (capacidadMax < capacidadRecibida)
                {
                    return(new OkObjectResult(new
                    {
                        status = "error",
                        message = "La capcidad maxima es de " + (capacidadMax / 1048576) + "Mb"
                    }));
                }

                //SETA PARAMETROS DE WEBDOCDIGITAL
                Correspondencia.Estado          = "P";
                Correspondencia.UsuarioCreacion = "Admin";
                string fechaC = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                Correspondencia.FechaCreacion = fechaC;
                Correspondencia.Ip            = this.Request.HttpContext.Connection.RemoteIpAddress.ToString();

                //REALIZA LA INSERCION A LA TABLA WEBDOCDIGITAL
                var RegCorrespondencia = CorrespondenciaRepository.InsertarCorrespondencia(Correspondencia);
                int idReg = 0;
                foreach (var Regc in RegCorrespondencia)
                {
                    idReg = Regc.Id;
                    if (idReg == 0)
                    {
                        return(new OkObjectResult(new
                        {
                            status = "error",
                            message = "Error:" + Regc.msg
                        }));
                    }
                }
                int idRegistro = 0;
                idRegistro = idReg;
                string NombresArchivosMail = "";
                //INTRODUCE A LA TABLA WEBDOCDIGITALADJUINTOS
                foreach (var file in files)
                {
                    if (file.Length >= 0)
                    {
                        var          IdWebDocDigitalFile = idRegistro;
                        var          nombrerchivo        = file.FileName;
                        var          Tamanio             = (file.Length.ToString());
                        var          Ext            = (nombrerchivo.Substring(nombrerchivo.LastIndexOf(".")));
                        var          Tipofile       = file.ContentType;
                        string       fechaCA        = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
                        var          FechaCreacionA = fechaCA;
                        MemoryStream ms             = new MemoryStream();
                        file.CopyTo(ms);
                        var ArchivoData = ms.ToArray();
                        NombresArchivosMail = NombresArchivosMail + "," + nombrerchivo;
                        var RegCorrespondenciaAdjunto = CorrespondenciaRepository.InsertarCorrespondenciaAdjunto(new CorrespondenciaAdjunto
                        {
                            IdWebDocDigital     = IdWebDocDigitalFile,
                            Archivo             = ArchivoData,
                            NombreArchivo       = nombrerchivo,
                            Tamano              = Tamanio,
                            Extension           = Ext,
                            Tipo                = Tipofile,
                            UsuarioCreacion     = "Admin",
                            FechaCreacion       = fechaCA,
                            UsuarioModificacion = "Admin",
                            FechaModificacion   = fechaCA,
                        });
                        if (RegCorrespondenciaAdjunto.Count() == 0)
                        {
                            return(new OkObjectResult(new
                            {
                                status = "error",
                                message = "Error en la Carga de Archivos "
                            }));
                        }
                        ms.Close();
                        ms.Dispose();
                    }
                }

                //REALIZA EL ENVIO DEL CORREO A LOS DESTINATARIOS
                var builder = new ConfigurationBuilder();
                builder.SetBasePath(Directory.GetCurrentDirectory());
                builder.AddJsonFile("appsettings.json");
                string destinatario = "";
                destinatario = Correspondencia.CorreoElectronico.ToString();
                var  CorrespondenciaEmailConfig = builder.Build();
                var  EmailFrom          = CorrespondenciaEmailConfig["Correspondencia:EmailFrom"];
                var  EmailFromUser      = CorrespondenciaEmailConfig["Correspondencia:EmailFromUser"];
                var  EmailTo            = CorrespondenciaEmailConfig["Correspondencia:EmailTo"];
                var  EmailToCC          = destinatario;
                var  EmailToUser        = CorrespondenciaEmailConfig["Correspondencia:EmailToUser"];
                var  MailServer         = CorrespondenciaEmailConfig["Correspondencia:MailServer"];
                int  MailPort           = Convert.ToInt16(CorrespondenciaEmailConfig["Correspondencia:MailPort"]);
                bool MailUseSsl         = Convert.ToBoolean(CorrespondenciaEmailConfig["Correspondencia:MailUseSsl"]);
                var  MailUser           = CorrespondenciaEmailConfig["Correspondencia:MailUser"];
                var  MailUserPassword   = CorrespondenciaEmailConfig["Correspondencia:MailUserPassword"];
                var  MailDefaultSubject = CorrespondenciaEmailConfig["Correspondencia:MailDefaultSubject"];

                var message = new MimeMessage();
                message.From.Add(new MailboxAddress(EmailFromUser, EmailFrom));

                message.To.Add(new MailboxAddress(EmailTo));
                message.To.Add(new MailboxAddress(EmailToCC));
                message.Subject = MailDefaultSubject;

                message.Body = new TextPart(MimeKit.Text.TextFormat.Html)
                {
                    Text = @"<b> id: </b>" + idRegistro + "<hr>" +
                           "<b> Nombres: </b> " + Correspondencia.Nombres + "<br>" +
                           "<b> Apellidos: </b> " + Correspondencia.Apellidos + "<br>" +
                           "<b> Entidad: </b> " + Correspondencia.Entidad + "<br>" +
                           "<b> Cite: </b> " + Correspondencia.Cite + "<br>" +
                           "<b> Referencia: </b> " + Correspondencia.Referencia + "<hr>" +
                           "<b> Archivos: </b> " + NombresArchivosMail + "<hr>"
                };

                using (var client = new SmtpClient())
                {
                    // For demo-purposes, accept all SSL certificates (in case the server supports STARTTLS)
                    client.ServerCertificateValidationCallback = (s, c, h, e) => true;
                    client.Connect(MailServer, MailPort, MailUseSsl);
                    // Note: since we don't have an OAuth2 token, disable
                    // the XOAUTH2 authentication mechanism.
                    client.AuthenticationMechanisms.Remove("XOAUTH2");
                    // Note: only needed if the SMTP server requires authentication
                    client.Authenticate(MailUser, MailUserPassword);
                    client.Send(message);
                    client.Disconnect(true);
                }
                //RESPUESTA POR PROCESO EXITOSO
                return(new OkObjectResult(new
                {
                    status = "Correcto",
                    message = "Registrado correctamente"
                }));
            }
            //RESPUESTA POR EXCEPCIONES Y PROCESO CON ERRORES
            catch (Exception ex)
            {
                return(new OkObjectResult(new
                {
                    status = "error",
                    message = "Ocurrió un error: " + ex.Message
                }));
            }
        }