Пример #1
0
        public static CorreoPlantillaVariableRowViewModel ConvertToCorreoPlantillaVariableRowViewModel(this CorreoPlantillaVariable correoPlantillaVariable,
                                                                                                       string asunto, string remitente, string nombreCandidato, string ImagenFirma, string logoCabecera,
                                                                                                       string lineaTituloPie, string lineaDireccion, string lineaProvincia, string lineaTelefono, string lineaEmail, string lineaWeb,
                                                                                                       string nombreEntrevistador = "", DateTime?fechaEntrevista = null, string tipoEntrevista = "", int candidaturaId = 0, string urlRecruiting = "", string MensajeSistema = "", string candidato = "")
        {
            var correoPlantillaVariableRowViewModel = new CorreoPlantillaVariableRowViewModel()
            {
                Asunto              = asunto,
                Remitente           = remitente,
                NombreCandidato     = nombreCandidato,
                NombreEntrevistador = nombreEntrevistador,
                FechaEntrevista     = fechaEntrevista,
                TipoEntrevista      = tipoEntrevista,
                CandidaturaId       = candidaturaId,
                LineaTituloPie      = lineaTituloPie,
                LineaDireccion      = lineaDireccion,
                LineaProvincia      = lineaProvincia,
                LineaTelefono       = lineaTelefono,
                LineaEmail          = lineaEmail,
                LineaWeb            = lineaWeb,
                UrlRecruiting       = urlRecruiting,
                MensajeSistema      = MensajeSistema,
                Candidato           = candidato
            };

            if (fechaEntrevista.HasValue)
            {
                correoPlantillaVariableRowViewModel.SoloFecha = fechaEntrevista.Value.Date.ToShortDateString();
                correoPlantillaVariableRowViewModel.SoloHora  = fechaEntrevista.Value.TimeOfDay;
            }
            if (HttpContext.Current != null)
            {
                correoPlantillaVariableRowViewModel.imagenFirma  = string.Concat(HttpContext.Current.Server.MapPath("~/Content/images/"), ImagenFirma);
                correoPlantillaVariableRowViewModel.LogoCabecera = string.Concat(HttpContext.Current.Server.MapPath("~/Content/images/"), logoCabecera);
            }
            else
            {
                correoPlantillaVariableRowViewModel.imagenFirma = string.Concat(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "\\Content\\images\\", ImagenFirma);
                correoPlantillaVariableRowViewModel.imagenFirma = correoPlantillaVariableRowViewModel.imagenFirma.Replace("file:", "").Remove(0, 1);

                correoPlantillaVariableRowViewModel.LogoCabecera = string.Concat(System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase), "\\Content\\images\\", logoCabecera);
                correoPlantillaVariableRowViewModel.LogoCabecera = correoPlantillaVariableRowViewModel.LogoCabecera.Replace("file:", "").Remove(0, 1);
            }



            return(correoPlantillaVariableRowViewModel);
        }
        private StringBuilder ExecuteSendMailsEstadosCandidatura(NameValueCollection DiccEstadoCandidaturaPlantillaCorreo, int usuarioAplicacion)
        {
            var responseCorreos    = _correoBecarioService.GetCorreosPendientesEnvio();
            var resultadoEjecucion = new StringBuilder();

            if (responseCorreos.IsValid)
            {
                foreach (var correo in responseCorreos.Correos)
                {
                    var response = _correoPlantillaService.GetPlantillaCorreoById(correo.PlantillaId);
                    if (response.IsValid)
                    {
                        ///para cada candidatura creo un correo de su tipo de plantilla que le corresponda
                        var    responseEmailBecario   = correo.Destinatarios;
                        var    responseImagenCabecera = _correoPlantillaVariableService.GetValorDefectoNombreVariablePlantillaCorreo(correo.PlantillaId, NombresVariablesPlantillaCorreoEnum.LogoCabecera.ToString());
                        var    responseImagenFirma    = _correoPlantillaVariableService.GetValorDefectoNombreVariablePlantillaCorreo(correo.PlantillaId, NombresVariablesPlantillaCorreoEnum.imagenFirma.ToString());
                        var    Becario              = _becarioService.GetBecarioById(correo.BecarioId).BecarioViewModel;
                        string nombreCandidato      = Becario.BecarioDatosBasicos.NombreCandidato;
                        CorreoPlantillaVariable cpv = new CorreoPlantillaVariable()
                        {
                            PlantillaId = correo.PlantillaId,
                        };

                        CorreoPlantillaVariableRowViewModel cr = null;
                        string lineaTituloPie = _correoPlantillaVariableService.GetValorDefectoNombreVariablePlantillaCorreo(correo.PlantillaId, "LineaTituloPie").VarlorDefecto;
                        string lineaDireccion = _correoPlantillaVariableService.GetValorDefectoNombreVariablePlantillaCorreo(correo.PlantillaId, "LineaDireccion").VarlorDefecto;
                        string lineaProvincia = _correoPlantillaVariableService.GetValorDefectoNombreVariablePlantillaCorreo(correo.PlantillaId, "LineaProvincia").VarlorDefecto;
                        string lineaTelefono  = _correoPlantillaVariableService.GetValorDefectoNombreVariablePlantillaCorreo(correo.PlantillaId, "LineaTelefono").VarlorDefecto;
                        string lineaEmail     = _correoPlantillaVariableService.GetValorDefectoNombreVariablePlantillaCorreo(correo.PlantillaId, "LineaEmail").VarlorDefecto;
                        string lineaWeb       = _correoPlantillaVariableService.GetValorDefectoNombreVariablePlantillaCorreo(correo.PlantillaId, "LineaWeb").VarlorDefecto;

                        cr = CorreoPlantillaVariableMapper.ConvertToCorreoPlantillaVariableRowViewModel(cpv, correo.Asunto, correo.Remitente, nombreCandidato,
                                                                                                        responseImagenFirma.VarlorDefecto, responseImagenCabecera.VarlorDefecto, lineaTituloPie, lineaDireccion, lineaProvincia, lineaTelefono,
                                                                                                        lineaEmail, lineaWeb);

                        string body = GetBodyMail(response.correoPlantilla.TextoPlantilla, cr);

                        //se crea el correo en si y se envia
                        if (SendEmail(correo.Remitente, correo.Destinatarios, correo.Asunto, body) == SchedulerExecutionResultEnum.Enviado_OK)
                        {
                            //se crea el mensaje para guaradarlo en el log
                            resultadoEjecucion.AppendLine(DateTime.Now.ToString() + ":Enviado correo OK a destinatario " + correo.Destinatarios);


                            //se actualiza a enviado=true y fecha Envio
                            correo.Enviado    = true;
                            correo.FechaEnvio = ModifiableEntityHelper.GetCurrentDate();
                            _correoBecarioService.SaveCorreo(correo, usuarioAplicacion);

                            //se crea la bitacora indicando que se ha realizado el envio de email PENDIENTE
                            //var bitacoraResponse = _bitacoraService.GenerateBitacoraCorreo(correo.CandidaturaId, "Envio de correo realizado con exito.");

                            //response.IsValid = response.IsValid && bitacoraResponse.IsValid;
                            //if (!string.IsNullOrWhiteSpace(bitacoraResponse.ErrorMessage))
                            //{
                            //    response.ErrorMessage = bitacoraResponse.ErrorMessage;
                            //}
                        }
                        else
                        {
                            //se crea el mensaje para guaradarlo en el log
                            resultadoEjecucion.AppendLine(DateTime.Now.ToString() + ":ERROR al enviar correo a destinatario " + correo.Destinatarios);
                        }
                    }
                    else
                    {
                        //se crea el mensaje para guaradarlo en el log
                        resultadoEjecucion.AppendLine(DateTime.Now.ToString() + ":Error al obtener la plantilla " + response.correoPlantilla.NombrePlantilla);
                    }
                }
            }
            else
            {
                resultadoEjecucion.AppendLine(DateTime.Now.ToString() + ":Error al obtener los correos pendientes");
            }

            return(resultadoEjecucion);
        }