Función Guardar Perfile

mail@pastecode.io avatar
unknown
csharp
a year ago
18 kB
23
Indexable
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);
                                }
                            }

                        }
                    }
                }

            }
        }