private void CambiarReporte(TipoDeReporte e) { switch (e) { case TipoDeReporte.Fechas: stkFechas.Visibility = Visibility; stkMensual.Visibility = Visibility.Collapsed; dgReportes.Visibility = Visibility.Visible; dgReporteCliente.Visibility = Visibility.Collapsed; //actual = 1; break; //case TipoDeReporte.Mensual: // stkFechas.Visibility = Visibility.Collapsed; // stkMensual.Visibility = Visibility.Visible; // break; case TipoDeReporte.Clientes: dgReportes.Visibility = Visibility.Collapsed; dgReporteCliente.Visibility = Visibility.Visible; var registros = da.GenerarReporte((int)TipoDeReporte.Clientes); dgReporteCliente.ItemsSource = registros; SetTotal(registros); //actual = 2; break; default: break; } }
public EmailMessage GenerarCorreoSemanalDeFaltaDeAsistenciasPorRed(DateTime fechaInicial, Miembro miembro, TipoDeReporte tipoDeReporte, string tituloDelReporte) { if (miembro.Borrado == false) { Validaciones.ValidarEmail(miembro.Email); DateTime fechaFinal = fechaInicial.AddDays(7); bool esReporteDeRed; bool agregarCorreosDeLideres; //Determinamos el tipo de reporte a enviar switch (tipoDeReporte) { case TipoDeReporte.SimpleConCorreos: esReporteDeRed = false; agregarCorreosDeLideres = true; break; case TipoDeReporte.DetalladaConCorreos: esReporteDeRed = true; agregarCorreosDeLideres = true; break; case TipoDeReporte.SimpleSinCorreos: esReporteDeRed = false; agregarCorreosDeLideres = false; break; case TipoDeReporte.DetalladaSinCorreos: esReporteDeRed = true; agregarCorreosDeLideres = false; break; default: throw new ExcepcionReglaNegocio("Tipo de reporte NO MANEJADO. Favor de contactar al administrador del sistema. Tipo de Reporte: " + tipoDeReporte); } //Buscamos todas las celulas en las que el miembro de la inscripcion es lider directo List <int> celulasALasQueEsLider = (from o in miembro.CelulaLider where o.Celula.Borrado == false && o.Borrado == false orderby o.Celula.Descripcion select o.CelulaId).ToList <int>(); //Esta variable determina si alguna de las celulas a las que el usuario es lider carece de asistencia, de ser asi SI se envia el correo bool tieneCelulasSinAsistencia = false; //Mandamos el correo, solo si el miembro es lider de alguna celula; sino el correo iria vacio if (celulasALasQueEsLider.Count > 0) { EmailMessage email = new EmailMessage(); StringBuilder contenido = new StringBuilder(750); //Inicializamos el contenido del correo contenido.Append(string.Format("<h3>{0}</h3>", tituloDelReporte)); contenido.Append("<p>A continuacion se mostraran las faltas de registro de asistencia, separadas por redes, de las cuales el usuario es lider directo. Las siguientes celulas aun no han registrado asistencias en la semana anterior inmediata:</p>"); //Por cada celular que sea lider directo se va a buscar la asistencia de sus "celulas" de primer orden o TODA la red, dependiendo del tipo de reporte foreach (int celulaId in celulasALasQueEsLider) { //El listado de celulas sin asistencia es por RED; asi que se reinicia por cada celula a la que el miembro es lider directo List <int> celulasSinAsistenciaRegistrada = new List <int>(); Modelos.Retornos.ReporteDeAsistenciasDeCelulaSumarizado reporteDeAsistencias = this.ObtenerReporteDeAsistenciasPorCelula(celulaId, fechaInicial, fechaFinal, esReporteDeRed); foreach (Modelos.Retornos.ReporteDeAsistenciasDeCelulaSumarizado.AsistenciaDeCelula asistenciasPorCelula in reporteDeAsistencias.AsistenciasTotales.OrderBy(o => o.Descripcion)) { if (asistenciasPorCelula.CelulaId > 0) { foreach (Modelos.Retornos.ReporteDeAsistenciasDeCelulaSumarizado.Asistencia asistencia in asistenciasPorCelula.Asistencias) { if ((asistencia.Asistencias <= 0) && (asistencia.Cancelaciones <= 0)) { celulasSinAsistenciaRegistrada.Add(asistenciasPorCelula.CelulaId); } } } } //Marcamos que SI existe cuando menos una celula a quien reportarle la falta de asistencia if (celulasSinAsistenciaRegistrada.Count > 0) { tieneCelulasSinAsistencia = true; } contenido.Append("<br/><table border='1' width='500px'>"); contenido.AppendFormat("<tr><th>{0}</th><th>{1}</th></tr>", "Id", "Descripcion"); foreach (int c in celulasSinAsistenciaRegistrada) { Celula celula = (from o in contexto.Celula where o.CelulaId == c && o.Borrado == false select o).SingleOrDefault(); if (celula != null) { if (agregarCorreosDeLideres) { foreach (CelulaLider celulaLider in celula.CelulaLider.Where(o => o.Celula.Borrado == false && o.Miembro.Borrado == false && o.Borrado == false)) { // Solo agregamos al correo los usuarios con correos NO falsos... y que no sea el usuario principal a quien se mandara el reporte if ((!celulaLider.Miembro.Email.Trim().ToLower().EndsWith("correo-e.com")) && (celulaLider.MiembroId != miembro.MiembroId)) { email.Recipients.Add(celulaLider.Miembro.Email, celulaLider.Miembro.NombreCompleto, RecipientType.CC); } } } contenido.AppendFormat("<tr><td>{0}</td><td>{1}</td></tr>", celula.CelulaId, celula.Descripcion); } } contenido.Append("</table>"); } if (tieneCelulasSinAsistencia) { //Preparamos los ultimos detalles del correo a enviar email.BodyParts.Add(contenido.ToString(), BodyPartFormat.HTML); email.Recipients.Add(miembro.Email, miembro.NombreCompleto, RecipientType.To); email.Subject = tituloDelReporte; return(email); } else { email.Reset(); return(null); } } } return(null); }