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); }
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); }
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); }
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); }