public async Task <CollectionResponse <GetCursosDisponiblesDTO> > Handle(GetCursosDisponiblesSinFiltroQuery request, CancellationToken cancellationToken)
            {
                var dateActual = DateTime.Now;
                //var JEraPer = await _jerPos.JerarquiaPersonaPosicion(request.codPersona);
                var JEraPer = await _mediator.Send(new JerarquiaPersonaGSQuery()
                {
                    codPersona = request.codPersona
                });

                var CodPosicion = JEraPer.count > 0 ? JEraPer.data[0].data + "" : "x_x";
                CollectionResponse <GetCursosDisponiblesDTO> DataOut = new CollectionResponse <GetCursosDisponiblesDTO>();
                List <string> TemasPerfil    = _context.TPlanTema.Where(p => p.CodReferencia.Equals(request.codPersona) || p.CodReferencia.Equals(CodPosicion)).Select(r => r.CodTemaCapacita).ToList();
                var           cursosdasboard = (
                    from cursos in _context.TCurso.Where(i => i.Estado)
                    //join expo in _context.TExpositor on cursos.CodCurso equals expo.CodCurso
                    join tema in _context.TTemaCapacitacion.Where(i => i.Estado) on cursos.CodTemaCapacita equals tema.CodTemaCapacita
                    into lista
                    from list in lista.DefaultIfEmpty()
                    where (cursos.Estado && list.Estado && !TemasPerfil.Contains(cursos.CodTemaCapacita) && (cursos.FechaInicio.Date >= dateActual.Date) || (cursos.FechaInicio.Date <= dateActual.Date && dateActual.Date <= cursos.FechaFin.Date))
                    select new GetCursosDisponiblesDTO
                {
                    codCurso = cursos.CodCurso,
                    tema = list.Descripcion,
                    fechaFinal = cursos.FechaFin,
                    codVigenciaCapacita = cursos.CodVigenciaCapacita,
                    vigencia = cursos.Vigencia,
                    fechaIni = cursos.FechaInicio,
                    horaInicio = cursos.FechaInicio.ToString("hh", CultureInfo.InvariantCulture) + ":" + cursos.FechaInicio.ToString("mm", CultureInfo.InvariantCulture) + " " + cursos.FechaInicio.ToString("tt", CultureInfo.InvariantCulture),
                    tipo = list.CodTipoTema,
                    puntajeTotal = cursos.PuntajeTotal,
                    capacidad = cursos.Capacidad,
                    duracion = cursos.Duracion,
                    codEmpresaCap = cursos.CodEmpCapacita,
                    codTemaCapacita = cursos.CodTemaCapacita,
                    enlace = cursos.Enlace,
                    expositores = (from exp in cursos.Expositores
                                   where exp.Estado && exp.CodCurso == cursos.CodCurso
                                   select new GetCursoDisponibleExpositorDTO()
                    {
                        codPersona = exp.CodPersona,
                        codTemaCapacita = exp.CodCurso,
                        tipo = exp.Tipo
                    }).ToList()
                }).ToList();

                DataOut.Count = cursosdasboard.Count;
                DataOut.Data  = cursosdasboard.Skip(request.Pagina * request.PaginaTamanio - request.PaginaTamanio).Take(request.PaginaTamanio).ToList();

                if (DataOut.Count > 0)
                {
                    //List<MaestroDTO> esmpresas = await _maestroService.GetMaestroTabla("EmpresaCapacita");
                    TablaVM esmpresas = await _mediator.Send(new GetTablaQuery()
                    {
                        CodTabla = "EmpresaCapacita"
                    });

                    //List<MaestroDTO> TipoVigencia = await _maestroService.GetMaestroTabla("VigenciaCapacita");
                    TablaVM TipoVigencia = await _mediator.Send(new GetTablaQuery()
                    {
                        CodTabla = "VigenciaCapacita"
                    });

                    foreach (var item in DataOut.Data)
                    {
                        //var Participantes = _context.TParticipantes.Where(i => i.CodCurso == item.codCurso && i.Estado);
                        var Participantes = _context.TParticipantes.Where(i => i.Estado && i.CodCurso == item.codCurso).ToList();
                        var Disponibles   = item.capacidad - Participantes.Count();
                        var Inscrito      = Participantes.Any(i => i.CodPersona == request.codPersona);
                        //GetResponseNombApVM respPart;
                        PersonaVM respPart;

                        if (item.expositores.Count > 0)
                        {
                            foreach (var it in item.expositores)
                            {
                                //respPart = new GetResponseNombApVM();
                                respPart = new PersonaVM();
                                var codPersonaExp = it.codPersona;
                                if (!string.IsNullOrEmpty(codPersonaExp))
                                {
                                    //respPart = await _perNomApe.RequestNombApellidos(codPersonaExp);
                                    respPart = await _mediator.Send(new GetPersonaQuery()
                                    {
                                        CodPersona = codPersonaExp
                                    });
                                }

                                if (!string.IsNullOrEmpty(respPart.Nombres))
                                {
                                    it.nombre = respPart.ApellidoPaterno + " " + respPart.ApellidoMaterno + " " + respPart.Nombres;
                                }
                            }
                        }
                        item.disponibles = Disponibles;
                        item.EmpresaCap  = esmpresas.data.Where(i => i.CodTipo.Equals(item.codEmpresaCap)).Select(e => e.Descripcion).FirstOrDefault();
                        item.inscrito    = Inscrito;
                        item.vigenciatxt = item.vigencia + " " + TipoVigencia.data.Where(i => i.CodTipo.Equals(item.codVigenciaCapacita)).Select(e => e.Descripcion).FirstOrDefault();
                    }

                    //foreach (var it in DataOut.Data)
                    //{
                    //    DateTime fechFin = new DateTime();
                    //    var dateTime = it.fechaIni;
                    //    if (it.codVigenciaCapacita != "5")
                    //    {
                    //        //var dateTime = new DateTime(it.fechaIni.Year, it.fechaIni.Month, 1);

                    //        DateTime dateADD = new DateTime();
                    //        if ((it.codVigenciaCapacita == "1"))
                    //        {
                    //            dateADD = dateTime.AddDays(int.Parse(it.vigencia.ToString()));
                    //        }
                    //        else if (it.codVigenciaCapacita == "2")
                    //        {
                    //            dateADD = dateTime.AddDays((7) * (int.Parse(it.vigencia.ToString())));
                    //        }
                    //        else if (it.codVigenciaCapacita == "3")
                    //        {
                    //            dateADD = dateTime.AddMonths(int.Parse(it.vigencia.ToString()));
                    //        }
                    //        else if (it.codVigenciaCapacita == "4")
                    //        {
                    //            dateADD = dateTime.AddYears(int.Parse(it.vigencia.ToString()));
                    //        }
                    //        fechFin = dateADD;
                    //    }
                    //    else
                    //    {
                    //        fechFin = it.fechaFinal;
                    //    }

                    //    DateTime fechaFinal = fechFin;
                    //    //DateTime fechaActual = DateTime.Today;
                    //    TimeSpan diferenciaFechas = fechaFinal.Subtract(dateTime);

                    //    int years = (int)(diferenciaFechas.Days / 365.25);
                    //    int months = (int)(((diferenciaFechas.Days / 365.25) - years) * 12);
                    //    int dias = diferenciaFechas.Days;
                    //    int weeks = (dias / 7);

                    //    it.fechaVen = fechFin;

                    //    if (Math.Abs(dias) < 7)
                    //    {
                    //        string duracion = dias + " " + "dia";

                    //        if (Math.Abs(dias) != 1)
                    //        {
                    //            it.duracion = duracion + "s";
                    //        }
                    //        else
                    //        {
                    //            it.duracion = duracion;
                    //        }
                    //    }

                    //    else if (Math.Abs(dias) >= 7 && Math.Abs(dias) < 31)
                    //    {
                    //        string duracion = weeks + " " + "semana";

                    //        if (Math.Abs(weeks) != 1)
                    //        {
                    //            it.duracion = duracion + "s";
                    //        }
                    //        else
                    //        {
                    //            it.duracion = duracion;
                    //        }

                    //    }

                    //    else if (Math.Abs(dias) >= 31 && Math.Abs(dias) < 365)
                    //    {
                    //        //int years = (int)(yearsOld.TotalDays / 365.25);
                    //        //int months = (int)(((fechFin.TotalDays / 365.25) - years) * 12);
                    //        string duracion = months + " " + "mes";

                    //        if (Math.Abs(months) != 1)
                    //        {
                    //            it.duracion = duracion + "es";
                    //        }
                    //        else
                    //        {
                    //            it.duracion = duracion;
                    //        }
                    //    }

                    //    else if (Math.Abs(dias) >= 365)
                    //    {
                    //        string duracion = years + " " + "año";

                    //        if (Math.Abs(years) != 1)
                    //        {
                    //            it.duracion = duracion + "s";
                    //        }
                    //        else
                    //        {
                    //            it.duracion = duracion;
                    //        }
                    //    }
                    //    //var codPer = it.expoCodPersona;
                    //    //var nomApPer = await _perNomApe.RequestNombApellidos(codPer);
                    //    //it.expoName = nomApPer.nombres + " " + nomApPer.apellidoPaterno + " " + nomApPer.apellidoMaterno;
                    //    //DataOut.Data.data.Add(it);
                    //}
                }
                return(DataOut);
            }
예제 #2
0
            public async Task <GetMisCapacitacionesVM> Handle(GetMisCapacitacionesQuery request, CancellationToken cancellationToken)
            {
                GetMisCapacitacionesVM GeneralVM = new GetMisCapacitacionesVM();
                string codPersona = request.codPersona;
                //TRAER AL MAS ACTUAL!!
                //&& MayorDateTime(cursos.FechaFin, cursos.FechaInicio)
                var cursosdasboard = (from part in _context.TParticipantes.Where(i => i.Estado)
                                      join cursos in _context.TCurso.Where(i => i.Estado) on part.CodCurso equals cursos.CodCurso
                                      join tema in _context.TTemaCapacitacion.Where(i => i.Estado) on cursos.CodTemaCapacita equals tema.CodTemaCapacita
                                      into lista
                                      from list in lista.DefaultIfEmpty()
                                      where (part.Estado && cursos.Estado && list.Estado && part.CodPersona == codPersona && part.Evaluado && part.Nota != null && part.Nota != 0)
                                      select new GetMisCapacitacionesDTO
                {
                    codTemaCapacita = cursos.CodTemaCapacita,
                    codCurso = cursos.CodCurso,
                    tema = list.Descripcion,
                    fechaFinal = cursos.FechaFin,
                    codVigenciaCapacita = cursos.CodVigenciaCapacita,
                    vigencia = cursos.Vigencia,
                    fechaIni = cursos.FechaInicio,
                    nota = part.Nota,
                    fechaVen = part.Modificado,
                    intentos = part.Intentos,
                    notabase = cursos.PuntajeTotal,
                    porcentaje = cursos.PorcAprobacion,
                    certificado = false
                }).ToList();

                var distinctItems = cursosdasboard.OrderByDescending(i => i.fechaIni).GroupBy(x => x.codTemaCapacita).Select(y => y.First()).ToList();
                //List<MaestroDTO> EstadosCurso = await _maestroService.GetMaestroTabla("EstadoCurso");
                TablaVM EstadosCurso = await _mediator.Send(new GetTablaQuery()
                {
                    CodTabla = "EstadoCurso"
                });

                if (distinctItems.Count > 0)
                {
                    //utilizar el servicio adicional!!
                    //var val = await _jerPos.JerarquiaPersonaPosicion(codPersona);
                    var val = await _mediator.Send(new JerarquiaPersonaGSQuery()
                    {
                        codPersona = codPersona
                    });

                    var codPosicion = val.count > 0?val.data[0].data + "":"x_x";
                    var temasPerfil = _context.TPlanTema.Where(p => p.CodReferencia == codPosicion || p.CodReferencia == codPersona).ToList();

                    foreach (var it in distinctItems)
                    {
                        DateTime fechFin = new DateTime();
                        if (it.codVigenciaCapacita != "5")
                        {
                            //var dateTime = new DateTime(it.fechaIni.Year, it.fechaIni.Month, 1);
                            var dateTime = it.fechaVen ?? it.fechaIni;

                            DateTime dateADD = new DateTime();
                            if ((it.codVigenciaCapacita == "1"))
                            {
                                dateADD = dateTime.AddDays(int.Parse(it.vigencia.ToString()));
                            }
                            else if (it.codVigenciaCapacita == "2")
                            {
                                dateADD = dateTime.AddDays((7) * (int.Parse(it.vigencia.ToString())));
                            }
                            else if (it.codVigenciaCapacita == "3")
                            {
                                dateADD = dateTime.AddMonths(int.Parse(it.vigencia.ToString()));
                            }
                            else if (it.codVigenciaCapacita == "4")
                            {
                                dateADD = dateTime.AddYears(int.Parse(it.vigencia.ToString()));
                            }
                            fechFin = dateADD;
                        }
                        else
                        {
                            fechFin = it.fechaFinal;
                        }
                        it.fechaVen = fechFin;
                        if (fechFin < new DateTime())
                        {
                            it.estado = "4";
                            if (it.notabase == 0)
                            {
                                it.notabase = new decimal(0.001);
                            }
                            if ((it.nota * 100 / it.notabase) >= it.porcentaje)
                            {
                                it.certificado = true;
                            }
                        }
                        else if (temasPerfil.Any(t => t.CodTemaCapacita == it.codTemaCapacita)) // curso de perfil
                        {
                            if (it.intentos > 0 || it.nota > 0)
                            {
                                if (it.notabase == 0)
                                {
                                    it.notabase = new decimal(0.001);
                                }
                                if ((it.nota * 100 / it.notabase) >= it.porcentaje)
                                {
                                    it.estado      = "0";
                                    it.certificado = true;
                                }
                                else
                                {
                                    it.estado = "1";
                                }
                            }
                            else
                            {
                                it.estado = "2";
                            }
                        }
                        else
                        {
                            it.estado = "3";
                            if (it.notabase == 0)
                            {
                                it.notabase = new decimal(0.001);
                            }
                            if ((it.nota * 100 / it.notabase) >= it.porcentaje)
                            {
                                it.certificado = true;
                            }
                        }
                        it.estado = EstadosCurso.data.Where(i => i.CodTipo.Equals(it.estado)).Select(e => e.Descripcion).FirstOrDefault();
                        GeneralVM.data.Add(it);
                    }
                }
                GeneralVM.count = GeneralVM.data.Count;
                return(GeneralVM);
            }
예제 #3
0
            public async Task <GetPreguntasCursosInscritosVM> Handle(GetPreguntasCursosInscritosQuery request, CancellationToken cancellationToken)
            {
                GetPreguntasCursosInscritosVM GeneralVM = new GetPreguntasCursosInscritosVM();
                //utilizar el servicio adicional!!
                var    dateActual = DateTime.Now;
                string codPersona = request.codPersona;
                //var val = await _jerPos.JerarquiaPersonaPosicion(codPersona);
                //var codPosicion = val.count > 0 ? val.data[0].data + "" : "x_x";

                var cursosdasboard = (from part in _context.TParticipantes.Where(i => i.Estado)
                                      join cursos in _context.TCurso.Where(i => i.Estado) on part.CodCurso equals cursos.CodCurso
                                      join tema in _context.TTemaCapacitacion.Where(i => i.Estado) on cursos.CodTemaCapacita equals tema.CodTemaCapacita
                                      into lista
                                      from list in lista.DefaultIfEmpty()
                                      where (part.Estado && cursos.Estado && list.Estado && part.CodPersona == codPersona && ((cursos.FechaInicio.Date >= dateActual.Date) || (cursos.FechaInicio.Date <= dateActual.Date && dateActual.Date <= cursos.FechaFin.Date)))
                                      select new GetPreguntasCursosInscritosDTO
                {
                    codCurso = cursos.CodCurso,
                    tema = list.Descripcion,
                    fechaFinal = cursos.FechaFin,
                    codVigenciaCapacita = cursos.CodVigenciaCapacita,
                    vigencia = cursos.Vigencia,
                    fechIni = cursos.FechaInicio,
                    enlace = cursos.Enlace,
                    online = cursos.Online,
                    duracion = cursos.Duracion,
                    intentos = part.Intentos,
                    horaFin = cursos.FechaFin.ToString("hh", CultureInfo.InvariantCulture) + ":" + cursos.FechaFin.ToString("mm", CultureInfo.InvariantCulture) + " " + cursos.FechaFin.ToString("tt", CultureInfo.InvariantCulture),
                    codTemaCapacita = cursos.CodTemaCapacita,
                    horaInicio = cursos.FechaInicio.ToString("hh", CultureInfo.InvariantCulture) + ":" + cursos.FechaInicio.ToString("mm", CultureInfo.InvariantCulture) + " " + cursos.FechaInicio.ToString("tt", CultureInfo.InvariantCulture),
                    tipo = list.CodTipoTema,
                    puntajeTotal = cursos.PuntajeTotal,
                    capacidad = cursos.Capacidad,
                    codEmpresaCap = cursos.CodEmpCapacita,
                    expositores = (from exp in cursos.Expositores
                                   where exp.Estado && exp.CodCurso == cursos.CodCurso
                                   select new GetCursoDisponibleExpositorDTO()
                    {
                        codPersona = exp.CodPersona,
                        codTemaCapacita = exp.CodCurso,
                        tipo = exp.Tipo
                    }).ToList()
                }).OrderBy(i => i.fechIni).ToList();

                // var distinctItems = cursosdasboard.OrderByDescending(i => i.fechIni).GroupBy(x => x.codTemaCapacita).Select(y => y.First()).ToList();

                //IList<GetPreguntasCursosInscritosDTO> listaCursosFiltrados = new List<GetPreguntasCursosInscritosDTO>();
                foreach (var item in cursosdasboard)
                {
                    if ((item.fechIni.Date <= dateActual.Date && dateActual.Date <= item.fechaFinal.Date))
                    {
                        item.estadoCurso = true;
                    }
                    else
                    {
                        item.estadoCurso = false;
                    }
                }

                if (cursosdasboard.Count > 0)
                {
                    //List<MaestroDTO> esmpresas = await _maestroService.GetMaestroTabla("EmpresaCapacita");
                    TablaVM esmpresas = await _mediator.Send(new GetTablaQuery()
                    {
                        CodTabla = "EmpresaCapacita"
                    });

                    //List<MaestroDTO> TipoVigencia = await _maestroService.GetMaestroTabla("VigenciaCapacita");
                    TablaVM TipoVigencia = await _mediator.Send(new GetTablaQuery()
                    {
                        CodTabla = "VigenciaCapacita"
                    });

                    foreach (var item in cursosdasboard)
                    {
                        var Participantes = _context.TParticipantes.Where(i => i.CodCurso == item.codCurso && i.Estado);
                        var Disponibles   = item.capacidad - Participantes.Count();
                        var Inscrito      = Participantes.Any(i => i.CodPersona == codPersona);
                        //GetResponseNombApVM respPart;
                        PersonaVM respPart;

                        if (item.expositores.Count > 0)
                        {
                            foreach (var it in item.expositores)
                            {
                                //respPart = new GetResponseNombApVM();
                                respPart = new PersonaVM();
                                var codPersonaExp = it.codPersona;
                                if (!string.IsNullOrEmpty(codPersonaExp))
                                {
                                    //respPart = await _perNomApe.RequestNombApellidos(codPersonaExp);
                                    respPart = await _mediator.Send(new GetPersonaQuery()
                                    {
                                        CodPersona = codPersona
                                    });
                                }

                                if (!string.IsNullOrEmpty(respPart.Nombres))
                                {
                                    it.nombre = respPart.ApellidoPaterno + " " + respPart.ApellidoMaterno + " " + respPart.Nombres;
                                }
                            }
                        }
                        item.EmpresaCap  = esmpresas.data.Where(i => i.CodTipo.Equals(item.codEmpresaCap)).Select(e => e.Descripcion).FirstOrDefault();
                        item.disponibles = Disponibles;
                        item.inscrito    = Inscrito;
                        item.vigenciatxt = item.vigencia + " " + TipoVigencia.data.Where(i => i.CodTipo.Equals(item.codVigenciaCapacita)).Select(e => e.Descripcion).FirstOrDefault();
                    }

                    //     foreach (var it in cursosdasboard)

                    //DateTime fechFin = new DateTime();
                    //if (it.codVigenciaCapacita != "5")
                    //{
                    //    //var dateTime = new DateTime(it.fechaIni.Year, it.fechaIni.Month, 1);
                    //    var dateTime = it.fechIni;
                    //    DateTime dateADD = new DateTime();
                    //    if ((it.codVigenciaCapacita == "1"))
                    //    {
                    //        dateADD = dateTime.AddDays(int.Parse(it.vigencia.ToString()));
                    //    }
                    //    else if (it.codVigenciaCapacita == "2")
                    //    {
                    //        dateADD = dateTime.AddDays((7) * (int.Parse(it.vigencia.ToString())));
                    //    }
                    //    else if (it.codVigenciaCapacita == "3")
                    //    {
                    //        dateADD = dateTime.AddMonths(int.Parse(it.vigencia.ToString()));
                    //    }
                    //    else if (it.codVigenciaCapacita == "4")
                    //    {
                    //        dateADD = dateTime.AddYears(int.Parse(it.vigencia.ToString()));
                    //    }
                    //    fechFin = dateADD;
                    //}
                    //else
                    //{
                    //    fechFin = it.fechaFinal;
                    //}

                    //var fechaIni = it.fechIni;
                    //DateTime fechaFinal = fechFin;
                    ////DateTime fechaActual = DateTime.Today;
                    //TimeSpan diferenciaFechas = fechaFinal.Subtract(fechaIni);

                    //int years = (int)(diferenciaFechas.Days / 365.25);
                    //int months = (int)(((diferenciaFechas.Days / 365.25) - years) * 12);
                    //int dias = diferenciaFechas.Days;
                    //int weeks = (dias / 7);

                    //it.fechaVen = fechFin;
                    //if (dias > 0)
                    //{
                    //    it.vencimiento = true;
                    //}
                    //else
                    //{
                    //    it.vencimiento = false;
                    //}

                    //else if (Math.Abs(dias) < 7)
                    //{
                    //    string duracion = dias + " " + "dia";

                    //    if (Math.Abs(dias) != 1)
                    //    {
                    //        it.duracion = duracion + "s";
                    //    }
                    //    else
                    //    {
                    //        it.duracion = duracion;
                    //    }
                    //}

                    //else if (Math.Abs(dias) >= 7 && Math.Abs(dias) < 31)
                    //{
                    //    string duracion = weeks + " " + "semana";

                    //    if (Math.Abs(weeks) != 1)
                    //    {
                    //        it.duracion = duracion + "s";
                    //    }
                    //    else
                    //    {
                    //        it.duracion = duracion;
                    //    }

                    //}

                    //else if (Math.Abs(dias) >= 31 && Math.Abs(dias) < 365)
                    //{
                    //    //int years = (int)(yearsOld.TotalDays / 365.25);
                    //    //int months = (int)(((fechFin.TotalDays / 365.25) - years) * 12);
                    //    string duracion = months + " " + "mes";

                    //    if (Math.Abs(months) != 1)
                    //    {
                    //        it.duracion = duracion + "es";
                    //    }
                    //    else
                    //    {
                    //        it.duracion = duracion;
                    //    }
                    //}

                    //else if (Math.Abs(dias) >= 365)
                    //{
                    //    string duracion = years + " " + "año";

                    //    if (Math.Abs(years) != 1)
                    //    {
                    //        it.duracion = duracion + "s";
                    //    }
                    //    else
                    //    {
                    //        it.duracion = duracion;
                    //    }
                    //}

                    //if (it.n) {
                    //    GeneralVM.data.Add(it);
                    //}
                    //}
                }
                GeneralVM.data  = cursosdasboard;
                GeneralVM.count = GeneralVM.data.Count;
                return(GeneralVM);
            }