/**
            Se ejecuta el thread de notificación de ventas a los administradores
        **/
        void IJob.Execute(IJobExecutionContext context)
        {

            DateTime fechaInicial = System.DateTime.Now;
            DateTime fechaFinal = System.DateTime.Now;

            CorreoElectronico correoElectronico = new CorreoElectronico(CorreoElectronico.TIPO_HTML);

            TimeSpan timeSpanInicial = new TimeSpan(00, 00, 00);
            TimeSpan timeSpanFinal = new TimeSpan(24, 59, 59);

            fechaInicial = fechaInicial.Date + timeSpanInicial;
            fechaFinal = fechaFinal.Date + timeSpanFinal;

            //Se inicializa el notificador
            notificadorCorreoElectronico = new NotificadorCorreoElectronicoFrontController();

            //Recuperar lista de Personas para reportar ventas
            listaPersonasAReportar = entUsuariosFrontController.getListaPersonasPorCveRol(DominioAppConstantes.CVE_ROL_ADMINISTRADOR);
            Console.WriteLine("La lista de personas tiene una longitud de " + listaPersonasAReportar.Count());

            // Se recupera el listado de detalle de ventas por las fechas inicial y final , relacionadas al día actual
            listaDeDetallesVentasFrontController = wrkVentasFrontController.getListaVentasPorRangoDeFechas(fechaInicial, fechaFinal);

            //Se crea la notificación via correo electrónico
            correoElectronico.destinatarios = listaPersonasAReportar;
            correoElectronico.cuerpoCorreo = createMensajeVentas(listaDeDetallesVentasFrontController);
            correoElectronico.asuntoCorreo = "Reporte de ventas " + System.DateTime.Now.ToShortDateString() + " Ventas totales: $" + montoTotalVentas + " retiros totales del día : $ " +  totalRetirosDelDia ;
            notificadorCorreoElectronico.enviarCorreo(correoElectronico);

        }
        public void enviarCorreo(CorreoElectronico correo)
        {
            smtpClient = new SmtpClient();

            smtpClient.Port = 587;
            smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
            smtpClient.UseDefaultCredentials = false;
            smtpClient.Host = "smtp.gmail.com";
            smtpClient.EnableSsl = true;
            smtpClient.Timeout = 10000;
            smtpClient.Credentials = new System.Net.NetworkCredential("*****@*****.**", "0910KathyMike");

            mailMessage.From = new MailAddress("*****@*****.**");

            //Se iteran los destinatarios del correo
            foreach (ENT_PERSONAS entPersonasIteradas in correo.destinatarios)
            {
                mailMessage.To.Add(new MailAddress(entPersonasIteradas.TXT_CORREO_PERSONA));
            }

            mailMessage.Subject = correo.asuntoCorreo;
            mailMessage.Body = correo.cuerpoCorreo;

            if (correo.getTipoCorreo() == CorreoElectronico.TIPO_HTML)
            {
                mailMessage.IsBodyHtml = true;
            }

            if( correo.attachement != null)
            {
                mailMessage.Attachments.Add(correo.attachement);
            }

           
            smtpClient.Send(mailMessage);
            smtpClient.Dispose();

        }
        public void enviarCorreo(String asunto, String mensaje, List<ENT_PERSONAS> listaDestinatarios)
        {
            String fileName = "ReporteRetiros_" + this.fechaInicioDatePicker.Value.Date.ToShortDateString().Replace("/", "-") + "_a_" + this.fechaFinDatePicker.Value.Date.ToShortDateString().Replace("/", "-");
            String tmpPath = System.IO.Path.GetTempPath() + fileName + ".xls";

            EntUsuariosFrontController entUsuariosFrontController = new EntUsuariosFrontController();
            NotificadorCorreoElectronicoFrontController notificador = new NotificadorCorreoElectronicoFrontController();
            CorreoElectronico correoElectronico = new CorreoElectronico(CorreoElectronico.TIPO_TEXTO);
           
            //Se crea el archivo temporal a ser enviado
            crearArchivoExcel(tmpPath);


            correoElectronico.destinatarios = listaDestinatarios;
            correoElectronico.attachExcelFileToMail(tmpPath, fileName + ".xls");
            correoElectronico.asuntoCorreo = asunto;
            correoElectronico.cuerpoCorreo = mensaje;
            notificador.enviarCorreo(correoElectronico);

            //Se debe de elimiar el archivo temporal que se creo para el envio del correo electrónico
            if (System.IO.File.Exists(tmpPath))
            {
                System.IO.File.Delete(tmpPath);
                Console.WriteLine("Archivo temporal eliminado con éxito");

            }
            else
            {
                Console.WriteLine("Error al escribir el archivo adjunto");
            }
            this.Enabled = true;
            MessageBox.Show("Reporte enviado con éxito via correo electrónio", "Reporte enviado con éxito via correo electrónio");
        }
        private CorreoElectronico crearNotificacionRetiro(float monto, ENT_PERSONAS personaQueRetira, CAT_MOVIMIENTOS_CAJA catMotivo, CAT_CAJAS cajaRetiro ,  String comentarioMovimiento)
        {

            CorreoElectronico correoElectronico = new CorreoElectronico(CorreoElectronico.TIPO_HTML);
            List<ENT_PERSONAS> listaDestinatarios = null;

            String asunto      = "Notificación de retiro " + System.DateTime.Now.ToShortDateString() + " " + System.DateTime.Now.ToShortTimeString() +  " por $ " + monto + " " ;
            String textoCorreo = "<br/><h2>Notificación de retiro <b>" + System.DateTime.Now.ToLongDateString() + " " + System.DateTime.Now.ToLongTimeString()+ "</b> por <b><i>$ " + monto + "</b></i> </h2><br />";

            listaDestinatarios = entUsuariosFrontController.getListaPersonasPorCveRol(DominioAppConstantes.CVE_ROL_ADMINISTRADOR);
            textoCorreo += "<table>";
            textoCorreo += "<tr>";
            textoCorreo += "<td>Retiro de la caja:</td><td><b>" + cajaRetiro.TXT_NOMBRE_CAJA + "</b></td>";
            textoCorreo += "</tr>";
            textoCorreo += "<tr>";
            textoCorreo += "<td>Cantidad de:</td><td><b>$ " + monto + "</b></td>";
            textoCorreo += "</tr>";
            textoCorreo += "<tr>";
            textoCorreo += "<td>A nombre de:</td><td><b> " + personaQueRetira.TXT_NOMBRE_PERSONA + "</b></td>";
            textoCorreo += "</tr>";
            textoCorreo += "<tr>";
            textoCorreo += "<td>Motivo:</td><td><b> " + catMotivo.TXT_NOMBRE_CAT_MOVIMIENTO_CAJA + "</b></td>";
            textoCorreo += "</tr>";
            
            if(  comentarioMovimiento.Length > 0)
            {

                textoCorreo += "<tr>";
                textoCorreo += "<td>Comentario:</td><td><b> " + comentarioMovimiento + "</b></td>";
                textoCorreo += "</tr>";
              
            }
            textoCorreo += "</table>";

            //Se construye el correo electrónico.
            correoElectronico.asuntoCorreo = asunto;
            correoElectronico.cuerpoCorreo = textoCorreo;
            correoElectronico.destinatarios = listaDestinatarios;

            return correoElectronico;
        }