コード例 #1
0
            public async Task <CodCursoDTO> Handle(CreateCursoProgramacionCommand request, CancellationToken cancellationToken)
            {
                CodCursoDTO codVM = new CodCursoDTO();
                TCurso      curso;
                var         item   = request.VM;
                string      format = "ddd MMM dd yyyy HH:mm:ss 'GMT'K";
                DateTime    dateIni;
                DateTime    dateFin;
                bool        validFormatFecIni = DateTime.TryParseExact(item.fechaInicio, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateIni);
                bool        validFormatFecFin = DateTime.TryParseExact(item.fechaFin, format, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateFin);
                var         codCurso          = "";

                if (validFormatFecIni && validFormatFecFin && dateFin > dateIni)
                {
                    var numDig = "00000000";
                    //var numReg = _context.TCurso.Count();

                    curso = new TCurso();
                    curso.CodTemaCapacita = item.codTemaCapacita;
                    curso.CodTipoTema     = item.codTipoTema;
                    curso.CodAreaCapacita = item.codAreaCapacita;
                    //curso.CodHha = item.codHha;
                    curso.CodEmpCapacita = item.codEmpCapacita;
                    curso.PuntajeTotal   = item.puntajeTotal;
                    curso.PorcAprobacion = item.porcAprobacion;
                    curso.RecurrenceID   = item.recurrenceID;
                    curso.Enlace         = item.enlace;
                    curso.Online         = item.online;
                    curso.Duracion       = item.duracion;
                    int temp2;

                    //var ultNum = _context.TCurso.Max(t => t.CodCurso);

                    //var ultNum = _context.TCurso.Select(x => x.CodCurso).ToList().Select(n => int.TryParse(n, out temp2) ? temp2 : 0).Max()+1;

                    //codCurso = numDig.Substring(0, numDig.Length - ultNum.ToString().Length) + ultNum;
                    codCurso = nextCod();

                    curso.CodCurso = codCurso;

                    curso.CodLugarCapacita    = item.codLugarCapacita;
                    curso.CodSala             = item.codSala;
                    curso.Capacidad           = item.capacidad;
                    curso.Vigencia            = item.vigencia;
                    curso.CodVigenciaCapacita = item.codVigenciaCapacita;

                    curso.FechaInicio = dateIni;
                    curso.FechaFin    = dateFin;



                    curso.Estado = true;

                    if (item.expositores.Count > 0)
                    {
                        TExpositor expositor;
                        foreach (var it in item.expositores)
                        {
                            expositor            = new TExpositor();
                            expositor.CodPersona = it.codPersona;
                            // expositor.CodCurso = it.codTemaCapacita;
                            expositor.Curso  = curso;
                            expositor.Estado = true;
                            expositor.Tipo   = it.tipo;
                            if (!it.tipo && String.IsNullOrEmpty(it.codPersona))
                            {
                                //var expositorExtCodPersona = await _expoExt.RequestCodPersonaExpositor(it.personaExterna);
                                var expositorExtCodPersona = await _mediator.Send(new CreatePersonaExpositorCommand()
                                {
                                    Sexo = it.personaExterna.sexo.ToString(), NroDocumento = it.personaExterna.nroDocumento, Nombres = it.personaExterna.nombres, ApellidoPaterno = it.personaExterna.apellidoPaterno, ApellidoMaterno = it.personaExterna.apellidoMaterno, Ocupacion = it.personaExterna.ocupacion, Empresa = it.personaExterna.empresa
                                });

                                expositor.CodPersona = expositorExtCodPersona;
                            }
                            curso.Expositores.Add(expositor);
                        }
                    }

                    if (item.participantes.Count > 0)
                    {
                        TParticipantes part;
                        foreach (var it in item.participantes)
                        {
                            part            = new TParticipantes();
                            part.CodPersona = it.codPersona;
                            part.Curso      = curso;
                            part.Estado     = true;
                            part.Nota       = it.nota;
                            part.Tipo       = it.tipo;
                            curso.Participantes.Add(part);
                        }
                    }
                    _context.TCurso.Add(curso);
                    await _context.SaveChangesAsync(cancellationToken);
                }
                else
                {
                    Console.Write("FECHAS START Y END INVALIDAS ... Recuerde END > START");
                }

                codVM.codCurso = codCurso;
                return(codVM);
            }
コード例 #2
0
            public async Task <Unit> Handle(UpdateParticipantesCommand request, CancellationToken cancellationToken)
            {
                var modelVM = request.VM.data;

                foreach (var item in modelVM)
                {
                    var curso = _context.TCurso.Include(i => i.Participantes).FirstOrDefault(i => i.CodCurso == item.codTemaCapacita);

                    if (curso != null)
                    {
                        var respJson = item.participantes;
                        foreach (var it in respJson)
                        {
                            var respBD = curso.Participantes.ToList();

                            var  inter = respJson.Select(x => x.codPersona).Intersect(respBD.Select(x => x.CodPersona)).ToList();
                            var  right = respJson.Select(x => x.codPersona).Except(respBD.Select(x => x.CodPersona)).ToList();
                            var  left  = respBD.Select(x => x.CodPersona).Except(respJson.Select(x => x.codPersona)).ToList();
                            bool Eval  = it.nota > 0;
                            if (inter != null)
                            {
                                foreach (var vals in inter)
                                {
                                    var partDB   = respBD.FirstOrDefault(i => i.CodPersona == vals);
                                    var partJson = respJson.FirstOrDefault(i => i.codPersona == vals);
                                    partDB.Nota     = partJson.nota;
                                    partDB.Tipo     = partJson.tipo;
                                    partDB.Evaluado = Eval;
                                    _context.TParticipantes.Update(partDB);
                                }
                            }

                            if (right != null)
                            {
                                foreach (var vals in right)
                                {
                                    var partJson = respJson.FirstOrDefault(i => i.codPersona == vals);
                                    if (partJson != null)
                                    {
                                        var partEntity = new TParticipantes();
                                        partEntity.Nota     = partJson.nota;
                                        partEntity.Tipo     = partJson.tipo;
                                        partEntity.Evaluado = Eval;
                                        partEntity.Estado   = true;
                                        _context.TParticipantes.Add(partEntity);
                                    }
                                }
                            }

                            if (left != null)
                            {
                                foreach (var vals in left)
                                {
                                    var partDB = respBD.FirstOrDefault(i => i.CodPersona == vals && i.Estado);
                                    if (partDB != null)
                                    {
                                        partDB.Estado = false;
                                        _context.TParticipantes.Update(partDB);
                                    }
                                }
                            }
                        }
                    }
                }
                await _context.SaveChangesAsync(cancellationToken);

                return(Unit.Value);
            }
コード例 #3
0
            public async Task <Unit> Handle(UpdateCursoProgramacionCommand request, CancellationToken cancellationToken)
            {
                var item  = request.DTO;
                var curso = _context.TCurso.Include(i => i.Expositores).Include(i => i.Participantes).FirstOrDefault(i => i.CodCurso == item.codCurso && i.Estado);

                curso.CodTemaCapacita = item.codTemaCapacita;
                curso.CodTipoTema     = item.codTipoTema;
                curso.CodAreaCapacita = item.codAreaCapacita;
                //curso.CodHha = item.codHha;
                curso.CodEmpCapacita      = item.codEmpCapacita;
                curso.PuntajeTotal        = item.puntajeTotal;
                curso.PorcAprobacion      = item.porcAprobacion;
                curso.CodLugarCapacita    = item.codLugarCapacita;
                curso.CodSala             = item.codSala;
                curso.Capacidad           = item.capacidad;
                curso.Vigencia            = item.vigencia;
                curso.CodVigenciaCapacita = item.codVigenciaCapacita;
                curso.Enlace   = item.enlace;
                curso.Online   = item.online;
                curso.Duracion = item.duracion;
                if (item.fechaFin > item.fechaInicio)
                {
                    curso.FechaInicio = item.fechaInicio;
                    curso.FechaFin    = item.fechaFin;
                }

                IList <TExpositor> c = new List <TExpositor>();
                //update expositores
                //if (item.expositores.Count() > 0)     {
                var respBD   = curso.Expositores.ToList();
                var respJson = item.expositores.ToList();

                var inter = respJson.Select(x => x.codPersona).Intersect(respBD.Select(x => x.CodPersona)).ToList(); //update
                var right = respJson.Select(x => x.codPersona).Except(respBD.Select(x => x.CodPersona)).ToList();    // new
                var left  = respBD.Select(x => x.CodPersona).Except(respJson.Select(x => x.codPersona)).ToList();    // delete

                if (inter != null)
                {
                    foreach (var CodPersona in inter)
                    {
                        var capBD = respBD.FirstOrDefault(i => i.CodPersona == CodPersona && i.CodCurso == curso.CodCurso && i.Estado);
                        if (capBD != null)
                        {
                            var capJson = respJson.FirstOrDefault(i => i.codPersona == CodPersona && i.codCurso == curso.CodCurso);
                            capBD.Tipo       = capJson.tipo;
                            capBD.CodPersona = capJson.codPersona;
                            if (!capJson.tipo && String.IsNullOrEmpty(capJson.codPersona))
                            {
                                //var expositorExtCodPersona = await _expoExt.RequestCodPersonaExpositor(capJson.personaExterna);
                                var expositorExtCodPersona = await _mediator.Send(new CreatePersonaExpositorCommand()
                                {
                                    Sexo = capJson.personaExterna.sexo.ToString(), NroDocumento = capJson.personaExterna.nroDocumento, Nombres = capJson.personaExterna.nombres, ApellidoPaterno = capJson.personaExterna.apellidoPaterno, ApellidoMaterno = capJson.personaExterna.apellidoMaterno, Ocupacion = capJson.personaExterna.ocupacion, Empresa = capJson.personaExterna.empresa
                                });

                                capBD.CodPersona = expositorExtCodPersona;
                            }
                            _context.TExpositor.Update(capBD);
                        }
                    }
                }

                if (right != null)
                {
                    foreach (var CodPersona in right)
                    {
                        var expoJson = respJson.FirstOrDefault(i => i.codPersona == CodPersona && i.codCurso == curso.CodCurso);
                        if (expoJson != null)
                        {
                            var expoEntity = new TExpositor();

                            expoEntity.CodCurso   = expoJson.codCurso;
                            expoEntity.CodPersona = expoJson.codPersona;
                            expoEntity.Estado     = true;
                            expoEntity.Tipo       = expoJson.tipo;
                            expoEntity.Curso      = curso;
                            _context.TExpositor.Add(expoEntity);
                        }
                    }
                }

                if (left != null)
                {
                    foreach (var CodPersona in left)
                    {
                        var expoBD = respBD.FirstOrDefault(i => i.CodPersona == CodPersona && i.CodCurso == curso.CodCurso && i.Estado);
                        if (expoBD != null)
                        {
                            expoBD.Estado = false;
                            _context.TExpositor.Update(expoBD);
                        }
                    }
                }
                //}
                //update participantes
                // if (item.participantes.Count() > 0)                {
                var partiBD   = curso.Participantes.ToList();
                var partiJson = item.participantes.ToList();

                var interp = partiJson.Select(x => x.codPersona).Intersect(partiBD.Select(x => x.CodPersona)).ToList();
                var rightp = partiJson.Select(x => x.codPersona).Except(partiBD.Select(x => x.CodPersona)).ToList();
                var leftp  = partiBD.Select(x => x.CodPersona).Except(partiJson.Select(x => x.codPersona)).ToList();

                if (inter != null)
                {
                    foreach (var CodPersona in interp)
                    {
                        var partBD = partiBD.FirstOrDefault(i => i.CodPersona == CodPersona && i.CodCurso == curso.CodCurso && i.Estado);
                        if (partBD != null)
                        {
                            var partJson = partiJson.FirstOrDefault(i => i.codPersona == CodPersona && i.codCurso == curso.CodCurso);
                            partBD.Tipo       = partJson.tipo;
                            partBD.Nota       = partJson.nota;
                            partBD.CodPersona = partJson.codPersona;

                            _context.TParticipantes.Update(partBD);
                        }
                    }
                }

                if (right != null)
                {
                    foreach (var CodPersona in rightp)
                    {
                        var partJson = partiJson.FirstOrDefault(i => i.codPersona == CodPersona && i.codCurso == curso.CodCurso);
                        if (partJson != null)
                        {
                            var partEntity = new TParticipantes();

                            partEntity.CodCurso   = partJson.codCurso;
                            partEntity.CodPersona = partJson.codPersona;
                            partEntity.Estado     = true;
                            partEntity.Tipo       = partJson.tipo;
                            partEntity.Nota       = partJson.nota;
                            partEntity.Curso      = curso;
                            _context.TParticipantes.Add(partEntity);
                        }
                    }
                }

                if (left != null)
                {
                    foreach (var CodPersona in leftp)
                    {
                        var partBD = partiBD.FirstOrDefault(i => i.CodPersona == CodPersona && i.CodCurso == curso.CodCurso && i.Estado);
                        if (partBD != null)
                        {
                            partBD.Estado = false;
                            _context.TParticipantes.Update(partBD);
                        }
                    }
                }
                // }
                _context.TCurso.Update(curso);
                await _context.SaveChangesAsync(cancellationToken);

                return(Unit.Value);
            }
コード例 #4
0
            public async Task <Unit> Handle(CreateInscripcionCommand request, CancellationToken cancellationToken)
            {
                //var codPersona = request.codPersona;
                //var codCurso = request.codCurso;
                var            dateActual       = DateTime.Now;
                var            verificadorCurso = _context.TCurso.FirstOrDefault(i => i.CodCurso == request.codCurso && i.Estado);
                TParticipantes participante;

                var inscrito = _context.TCurso.Join(_context.TParticipantes, jer => jer.CodCurso, jper => jper.CodCurso, (jer, jper) => new { jer = jer, jper = jper })
                               .Any(p => p.jper.Estado && p.jer.Estado && p.jer.CodTemaCapacita.Equals(verificadorCurso.CodTemaCapacita) && p.jper.CodPersona.Equals(request.codPersona) &&
                                    ((p.jer.FechaInicio.Date >= dateActual.Date) || (p.jer.FechaInicio.Date <= dateActual.Date && dateActual.Date <= p.jer.FechaFin.Date)));

                //var inscrito2 = (from curso in _context.TCurso
                //                join part in _context.TParticipantes on curso.CodCurso equals part.CodCurso
                //                where (curso.CodTemaCapacita.Equals(verificadorCurso.CodTemaCapacita) && part.CodPersona.Equals(request.codPersona) && curso.Estado && part.Estado &&
                //                ((curso.FechaInicio.Date >= dateActual.Date) || (curso.FechaInicio.Date <= dateActual.Date && dateActual.Date <= curso.FechaFin.Date))) select part).FirstOrDefault();
                // si existe dicho curso en la BD !!
                if (!inscrito)
                {
                    var verif = _context.TParticipantes.Where(i => i.CodPersona == request.codPersona && i.CodCurso == request.codCurso).FirstOrDefault();
                    // si la persona es participante !!
                    //if (verif!= null)
                    //{
                    //var verif = verificadorPersonaPart.FirstOrDefault(i => i.CodCurso == codCurso);
                    // si existe dicho participante matriculado en dicho curso !!
                    if (verif != null)
                    {
                        // si el participante estaba anteriormente matriculao en dicho curso !! se reactiva su Estado de Registro !!
                        if (!verif.Estado)
                        {
                            verif.Estado = true;
                            _context.TParticipantes.Update(verif);
                        }
                        else
                        {
                            throw new ExceptionGeneral("EL PARTICIPANTE YA SE ENCUENTRA REGISTRADO");
                        }
                    }
                    // si NO existe dicho participante matriculado en dicho curso... SE Procede a matricular !! el participante
                    // dentro de un curso existente!!
                    else
                    {
                        participante            = new TParticipantes();
                        participante.CodCurso   = verificadorCurso.CodCurso;
                        participante.CodPersona = request.codPersona;
                        participante.Curso      = verificadorCurso;
                        participante.Nota       = null;
                        participante.Tipo       = true;
                        _context.TParticipantes.Add(participante);
                    }
                    //}
                }

                else
                {
                    throw new ExceptionGeneral("EL PARTICIPANTE YA SE ENCUENTRA REGISTRADO EN EL CURSO");// OTRO CURSO DEL MISMO TEMA
                }

                await _context.SaveChangesAsync(cancellationToken);

                return(Unit.Value);
            }