public void GuardarPerfilEgreso()
{
var semestres = _semestreService.GetSemestres();
var sedes = _usuarioService.GetSedes();
var carreras = _carreraService.ListarCarreras();
var desempenos = _rubricaService.GetTiposDesempeno(0);
foreach (var semestre in semestres)
{
foreach (var sede in sedes)
{
var estudiantes = _estudianteService.GetEstudiantesPerfilEgreso(semestre.Id, sede.Id, 0);
var evaluaciones = GetEvaluacionesDataSedeCarrera(semestre.Id, sede.Id, 0);
var listaConcatenada = new List<PonderacionDesempeno>();
foreach (var evaluacion in evaluaciones)
{
foreach (var estudiante in estudiantes)
{
var rubricas = _rubricaService.GetRubricaEvaluacionDesempenosByEstudiante(evaluacion.Id, estudiante.Id);
foreach (var desempeno in desempenos)
{
var ponderacionDesempeno = 0.0;
var count = 0;
var puntajeMaximo = 0;
var totalPorcentajeCriterios = 0;
var puntajeObtenidoDesempeno = 0;
var auxPorcentaje = 0.0;
var auxEvaluacionPorcentaje = 0.0;
var rubricasDesempeno = rubricas.Where(rubrica => rubrica.TipoDesempeno.Id == desempeno.Id).ToList();
puntajeObtenidoDesempeno = rubricasDesempeno.Sum(rubrica => rubrica.RubricaCriterios.Sum(criterio => criterio.RubricaEvaluaciones
.Where(evaluacionRubrica => evaluacionRubrica.IdEstudiante == estudiante.Id && evaluacion.Id == evaluacionRubrica.IdEvaluacion)
.Sum(evaluacionRubrica => evaluacionRubrica.Puntaje)));
count = rubricasDesempeno.Sum(rubrica => rubrica.RubricaCriterios.Count);
puntajeMaximo = count * 4;
totalPorcentajeCriterios = rubricasDesempeno.Sum(rubrica => rubrica.RubricaCriterios.Sum(criterio => criterio.Porcentaje));
auxPorcentaje = (double)totalPorcentajeCriterios / 100;
auxEvaluacionPorcentaje = (double)evaluacion.Porcentaje / 100;
ponderacionDesempeno = puntajeMaximo != 0 ? (double)puntajeObtenidoDesempeno / puntajeMaximo * auxPorcentaje * auxEvaluacionPorcentaje : 0.0;
var ponderacionDesempenoFinal = new PonderacionDesempeno
{
ponderacion = ponderacionDesempeno,
desempeno = desempeno.CodTipoDesempeno
};
listaConcatenada.Add(ponderacionDesempenoFinal);
}
}
}
var data = listaConcatenada.GroupBy(p => p.desempeno)
.Select(g => new
{
desempeno = g.Key,
sumaPonderaciones = g.Sum(p => p.ponderacion)
}).ToList();
if (data.Count() > 0)
{
var egreso = new RegistroPracticaPerfilEgreso
{
A = data[0].sumaPonderaciones,
B = data[1].sumaPonderaciones,
C = data[2].sumaPonderaciones,
D = data[3].sumaPonderaciones,
E = data[4].sumaPonderaciones,
F = data[5].sumaPonderaciones,
G = data[6].sumaPonderaciones,
H = data[7].sumaPonderaciones,
I = data[8].sumaPonderaciones,
J = data[9].sumaPonderaciones,
K = data[10].sumaPonderaciones,
L = data[11].sumaPonderaciones,
idAux = sede.Id,
isSede = 1,
idSemestre = semestre.Id
};
var auxPerfil = _usuarioService.GuardarPerfilEgreso(egreso);
}
else
{
var egreso = new RegistroPracticaPerfilEgreso
{
A = 0,
B = 0,
C = 0,
D = 0,
E = 0,
F = 0,
G = 0,
H = 0,
I = 0,
J = 0,
K = 0,
L = 0,
idAux = sede.Id,
isSede = 1,
idSemestre = semestre.Id
};
var auxPerfil = _usuarioService.GuardarPerfilEgreso(egreso);
}
}
}
foreach (var semestre in semestres)
{
foreach (var carrera in carreras)
{
var estudiantes = _estudianteService.GetEstudiantesPerfilEgreso(semestre.Id, 0, carrera.Id);
var evaluaciones = GetEvaluacionesDataSedeCarrera(semestre.Id, 0, carrera.Id);
var listaConcatenada = new List<PonderacionDesempeno>();
foreach (var evaluacion in evaluaciones)
{
foreach (var estudiante in estudiantes)
{
var rubricas = _rubricaService.GetRubricaEvaluacionDesempenosByEstudiante(evaluacion.Id, estudiante.Id);
foreach (var desempeno in desempenos)
{
var ponderacionDesempeno = 0.0;
var count = 0;
var puntajeMaximo = 0;
var totalPorcentajeCriterios = 0;
var puntajeObtenidoDesempeno = 0;
var rubricasDesempeno = rubricas.Where(rubrica => rubrica.TipoDesempeno.Id == desempeno.Id).ToList();
puntajeObtenidoDesempeno = rubricasDesempeno.Sum(rubrica => rubrica.RubricaCriterios.Sum(criterio => criterio.RubricaEvaluaciones
.Where(evaluacionRubrica => evaluacionRubrica.IdEstudiante == estudiante.Id && evaluacion.Id == evaluacionRubrica.IdEvaluacion)
.Sum(evaluacionRubrica => evaluacionRubrica.Puntaje)));
count = rubricasDesempeno.Sum(rubrica => rubrica.RubricaCriterios.Count);
puntajeMaximo = count * 4;
totalPorcentajeCriterios = rubricasDesempeno.Sum(rubrica => rubrica.RubricaCriterios.Sum(criterio => criterio.Porcentaje));
ponderacionDesempeno = puntajeMaximo != 0 ? (double)puntajeObtenidoDesempeno / puntajeMaximo * (double)totalPorcentajeCriterios / 100 * (double)evaluacion.Porcentaje / 100 : 0.0;
var ponderacionDesempenoFinal = new PonderacionDesempeno
{
ponderacion = ponderacionDesempeno,
desempeno = desempeno.CodTipoDesempeno
};
listaConcatenada.Add(ponderacionDesempenoFinal);
}
}
}
var data = listaConcatenada.GroupBy(p => p.desempeno)
.Select(g => new
{
desempeno = g.Key,
sumaPonderaciones = g.Sum(p => p.ponderacion)
}).ToList();
if (data.Count() > 0)
{
var egreso = new RegistroPracticaPerfilEgreso
{
A = data[0].sumaPonderaciones,
B = data[1].sumaPonderaciones,
C = data[2].sumaPonderaciones,
D = data[3].sumaPonderaciones,
E = data[4].sumaPonderaciones,
F = data[5].sumaPonderaciones,
G = data[6].sumaPonderaciones,
H = data[7].sumaPonderaciones,
I = data[8].sumaPonderaciones,
J = data[9].sumaPonderaciones,
K = data[10].sumaPonderaciones,
L = data[11].sumaPonderaciones,
idAux = carrera.Id,
isSede = 0,
idSemestre = semestre.Id
};
var auxPerfil = _usuarioService.GuardarPerfilEgreso(egreso);
}
else
{
var egreso = new RegistroPracticaPerfilEgreso
{
A = 0,
B = 0,
C = 0,
D = 0,
E = 0,
F = 0,
G = 0,
H = 0,
I = 0,
J = 0,
K = 0,
L = 0,
idAux = carrera.Id,
isSede = 0,
idSemestre = semestre.Id
};
var auxPerfil = _usuarioService.GuardarPerfilEgreso(egreso);
}
}
}
}
public void GuardarPerfilEgresoArea()
{
var semestres = _semestreService.GetSemestres();
var sedes = _usuarioService.GetSedes();
var carreras = _carreraService.ListarCarreras();
var tipoPracticas = _usuarioService.GetTipoNRC();
var tipoPracticaCodigos = _usuarioService.GetTipoNRCCodigo();
var desempenos = _rubricaService.GetTiposDesempeno(0);
foreach (var semestre in semestres)
{
foreach (var sede in sedes)
{
foreach (var carrera in carreras)
{
foreach (var tipoPractica in tipoPracticas)
{
foreach (var tipoPracticaCodigo in tipoPracticaCodigos)
{
var evaluaciones = GetEvaluacionesArea(semestre.Id, sede.Id, carrera.Id, tipoPractica.Id, tipoPracticaCodigo.Id);
//var estudiantes = _estudianteService.GetEstudiantesPerfilEgresoArea(semestre.Id, sede.Id, carrera.Id, tipoPractica.Id, tipoPracticaCodigo.Id);
var listaConcatenada = new List<PonderacionDesempeno>();
foreach (var evaluacion in evaluaciones)
{
//foreach (var estudiante in estudiantes)
//{
var rubricas = _rubricaService.GetRubricaEvaluacionDesempenosByEstudiante(evaluacion.Id, evaluacion.Estudiante.Id);
foreach (var desempeno in desempenos)
{
var ponderacionDesempeno = 0.0;
var count = 0;
var puntajeMaximo = 0;
var totalPorcentajeCriterios = 0;
var puntajeObtenidoDesempeno = 0;
var rubricasDesempeno = rubricas.Where(rubrica => rubrica.TipoDesempeno.Id == desempeno.Id).ToList();
puntajeObtenidoDesempeno = rubricasDesempeno.Sum(rubrica => rubrica.RubricaCriterios.Sum(criterio => criterio.RubricaEvaluaciones
.Where(evaluacionRubrica => evaluacion.Id == evaluacionRubrica.IdEvaluacion)
.Sum(evaluacionRubrica => evaluacionRubrica.Puntaje)));
count = rubricasDesempeno.Sum(rubrica => rubrica.RubricaCriterios.Count);
puntajeMaximo = count * 4;
totalPorcentajeCriterios = rubricasDesempeno.Sum(rubrica => rubrica.RubricaCriterios.Sum(criterio => criterio.Porcentaje));
ponderacionDesempeno = puntajeMaximo != 0 ? (double)puntajeObtenidoDesempeno / puntajeMaximo * (double)totalPorcentajeCriterios / 100 * (double)evaluacion.Porcentaje / 100 : 0.0;
var ponderacionDesempenoFinal = new PonderacionDesempeno
{
ponderacion = ponderacionDesempeno,
desempeno = desempeno.CodTipoDesempeno
};
listaConcatenada.Add(ponderacionDesempenoFinal);
}
//}
}
var data = listaConcatenada.GroupBy(p => p.desempeno)
.Select(g => new
{
desempeno = g.Key,
sumaPonderaciones = g.Sum(p => p.ponderacion)
}).ToList();
if (data.Count() > 0)
{
var egreso = new PerfilEgresoArea
{
A = data[0].sumaPonderaciones,
B = data[1].sumaPonderaciones,
C = data[2].sumaPonderaciones,
D = data[3].sumaPonderaciones,
E = data[4].sumaPonderaciones,
F = data[5].sumaPonderaciones,
G = data[6].sumaPonderaciones,
H = data[7].sumaPonderaciones,
I = data[8].sumaPonderaciones,
J = data[9].sumaPonderaciones,
K = data[10].sumaPonderaciones,
L = data[11].sumaPonderaciones,
idSemestre = semestre.Id,
idSede = sede.Id,
idCarrera = carrera.Id,
idTipoPractica = tipoPractica.Id,
idTipoPracticaCodigo = tipoPracticaCodigo.Id
};
//Funcion para guardar
var auxPerfil = _usuarioService.GuardarPerfilEgresoArea(egreso);
}
else
{
var egreso = new PerfilEgresoArea
{
A = 0,
B = 0,
C = 0,
D = 0,
E = 0,
F = 0,
G = 0,
H = 0,
I = 0,
J = 0,
K = 0,
L = 0,
idSemestre = semestre.Id,
idSede = sede.Id,
idCarrera = carrera.Id,
idTipoPractica = tipoPractica.Id,
idTipoPracticaCodigo = tipoPracticaCodigo.Id
};
//funcion para guardar
var auxPerfil = _usuarioService.GuardarPerfilEgresoArea(egreso);
}
}
}
}
}
}
}