public static void NotificarCancelacionReunion(int idReunion, string subject)
        {
            Reunion reunion = ReunionMapper.GetReunion(idReunion);

            var usuarios = SeguridadComponent.GetUsuariosByOperaciones(new List <string>()
            {
                Operaciones.REUNIONES_NOTIFICACIONES
            });

            usuarios.Add(reunion.Encargado);

            IList <string> emailsTo = usuarios.Select(m => m.Email).Distinct().ToList();
            string         html     = MapearTemplateHTML(reunion, subject, ConfigurationHelper.DirectorioMailTemplateCancelacionReunion);

            MailSender.Send(emailsTo, subject, html, true);
        }
        public static void NotificarActualizacionFechasCulto()
        {
            var usuarios = SeguridadComponent.GetUsuariosByOperaciones(new List <string>()
            {
                Operaciones.REUNIONES_FECHAS_NOTIFICACIONES
            });

            var proximas = GetProximasFechas(DateTime.Now, DateTime.Now.AddMonths(2));

            if (proximas.Count == 0)
            {
                return;
            }

            foreach (var item in proximas.Select(m => m.Encargado).Distinct())
            {
                usuarios.Add(item);
            }

            IList <string> emailsTo = usuarios.Select(m => m.Email).Distinct().ToList();


            Dictionary <string, string> mapper = new Dictionary <string, string>();
            StringBuilder builder = new StringBuilder();

            foreach (var item in proximas)
            {
                mapper = new Dictionary <string, string>();
                mapper.Add("{FECHA_ITEM}", item.Fecha.ToString("dd/MM/yyyy"));
                mapper.Add("{ENCARGADO_ITEM}", item.Encargado.FullNameUser);
                mapper.Add("{TEMA_ITEM}", item.Tema);
                builder.Append(EmailTemplateHelper.FillSimpleTemplate(
                                   ConfigurationHelper.DirectorioMailTemplateActualizacionEncargadosCultos_ITEM, mapper));
            }

            mapper = new Dictionary <string, string>();
            mapper.Add("{linkListado}", string.Format("{0}/Reunion/ProximasFechas", ConfigurationHelper.SiteRoot));
            mapper.Add("{items}", builder.ToString());
            string template = EmailTemplateHelper.FillTemplate("Próximas fechas y encargados de cultos",
                                                               ConfigurationHelper.DirectorioMailTemplateActualizacionEncargadosCultos, mapper);

            MailSender.Send(emailsTo, "Próximas fechas y encargados de cultos", template, true);
        }
        public static void SaveRolesUsuario(Usuario usuario, List <int> idRoles)
        {
            List <Role> roles = new List <Role>();

            foreach (var idRole in idRoles)
            {
                Role role = SeguridadComponent.GetRoleById(idRole);

                if (role == null)
                {
                    throw new HandleException("El role ingresado no existe");
                }

                roles.Add(role);
            }

            usuario.Roles = new System.Collections.ObjectModel.ReadOnlyCollection <Role>(roles);

            AdministracionMapper.ActualizarRolesUsuario(usuario);
        }
        public static void NotificarModificacionReunion(int idReunion, string subject)
        {
            Reunion reunion = ReunionMapper.GetReunion(idReunion);

            FileContentResult resultData = GenerarArchivos(reunion, "ExportarCancionesXML-ExportarReunionPDF-ExportarItemsPDF-ExportarCancionesPDF");

            var usuarios = SeguridadComponent.GetUsuariosByOperaciones(new List <string>()
            {
                Operaciones.REUNIONES_NOTIFICACIONES
            });

            usuarios.Add(reunion.Encargado);

            IList <string> emailsTo = usuarios.Select(m => m.Email).Distinct().ToList();
            MemoryStream   stream   = new MemoryStream(resultData.FileContents);
            string         html     = MapearTemplateHTML(reunion, subject, ConfigurationHelper.DirectorioMailTemplateModificacionReunion);

            Attachment zip = new Attachment(stream, resultData.FileDownloadName, "application/octet-stream");

            MailSender.Send(emailsTo, subject, html, true, new Attachment[] { zip });
        }