public async Task <Unit> Handle(ReunionCreateCommand request, CancellationToken cancellationToken) { try { TReunionDto nuevo = new TReunionDto(); string maxCod = _context.TReunion.Max(r => r.CodReunion); if (maxCod == null) { maxCod = "REU00001"; } else { int id = int.Parse(maxCod.Substring(3, 5)) + 1; maxCod = "REU" + id.ToString("D5"); } nuevo.CodReunion = maxCod; nuevo.Reunion = request.Reunion; nuevo.Lugar = request.Lugar; nuevo.Fecha = request.Fecha; nuevo.Hora = request.Hora; nuevo.CodPerFacilitador = request.CodPerFacilitador; nuevo.Acuerdos = request.Acuerdos; nuevo.Comentarios = request.Comentarios; nuevo.Otros = request.Otros; nuevo.PlanAccion = request.PlanAccion; foreach (string persona in request.ReunionAsistentes) { TAsistentesReunionDto reunionasistente = new TAsistentesReunionDto(); reunionasistente.CodPersona = persona; nuevo.ReunionAsistentes.Add(reunionasistente); } foreach (var persona in request.ReunionAusentes) { TAusentesReunionDto reunionausente = new TAusentesReunionDto(); reunionausente.CodPersona = persona; nuevo.ReunionAusentes.Add(reunionausente); } foreach (string persona in request.ReunionJustificados) { TJustificadosReunionDto reunionjustificado = new TJustificadosReunionDto(); reunionjustificado.CodPersona = persona; nuevo.ReunionJustificados.Add(reunionjustificado); } //var corrmax = _context.TAgenda.DefaultIfEmpty().Max(t => (t.Correlativo)); var corrmax = _context.TAgenda.Count(); if (corrmax != 0) { corrmax = _context.TAgenda.DefaultIfEmpty().Max(t => (t.Correlativo)); } //var corrmax = 0; foreach (var agenda in request.ReunionAgendas) { TAgendaDto reunionagenda = new TAgendaDto(); reunionagenda.Correlativo = nextCorrelativo(corrmax); reunionagenda.DesAgenda = agenda.DesAgenda; nuevo.ReunionAgendas.Add(reunionagenda); corrmax = nextCorrelativo(corrmax); } var reunion = _mapper.Map <TReunionDto, TReunion>(nuevo); _context.TReunion.Add(reunion); await _context.SaveChangesAsync(cancellationToken); //await _planAccion.Create(nuevo.PlanAccion, maxCod); nuevo.PlanAccion.ForEach(t => { t.docReferencia = maxCod; t.docSubReferencia = maxCod; }); var r1 = await _mediator.Send(new CreatePlanAccionCommand() { planes = nuevo.PlanAccion }); return(Unit.Value); } catch (Exception e) { throw e; } }
public async Task <Unit> Handle(ReunionUpdateCommand request, CancellationToken cancellationToken) { var reunion = _context.TReunion.Include(p => p.ReunionAsistentes).Include(c => c.ReunionAusentes).Include(r => r.ReunionJustificados).Include(t => t.ReunionAgendas).First(t => t.CodReunion.Equals(request.CodReunion)); reunion.Reunion = request.Reunion; reunion.Lugar = request.Lugar; reunion.Fecha = request.Fecha; reunion.Hora = request.Hora; reunion.CodPerFacilitador = request.CodPerFacilitador; reunion.Acuerdos = request.Acuerdos; reunion.Comentarios = request.Comentarios; reunion.Otros = request.Otros; //ASISTENTES reunion.ReunionAsistentes = reunion.ReunionAsistentes.Where(a => a.Estado == true).ToList(); var interAsistentes = reunion.ReunionAsistentes.Select(x => x.CodPersona).Intersect(request.ReunionAsistentes).ToList(); //update var leftAsistentes = request.ReunionAsistentes.Except(reunion.ReunionAsistentes.Select(x => x.CodPersona)).ToList(); //new var rightAsistentes = reunion.ReunionAsistentes.Select(x => x.CodPersona).Except(request.ReunionAsistentes).ToList(); //delete foreach (var CodPersona in interAsistentes) { var pm = reunion.ReunionAsistentes.First(t => t.CodPersona.Equals(CodPersona)); pm.Estado = true; } foreach (var CodPersona in leftAsistentes) { TAsistentesReunionDto reunionasistente = new TAsistentesReunionDto(); reunionasistente.CodPersona = CodPersona; var _reunionasistente = _mapper.Map <TAsistentesReunionDto, TAsistentesReunion>(reunionasistente); reunion.ReunionAsistentes.Add(_reunionasistente); } foreach (var CodPersona in rightAsistentes) { var pm = reunion.ReunionAsistentes.First(t => t.CodPersona.Equals(CodPersona)); pm.Estado = false; } //AUSENTES reunion.ReunionAusentes = reunion.ReunionAusentes.Where(a => a.Estado == true).ToList(); var interAusentes = reunion.ReunionAusentes.Select(x => x.CodPersona).Intersect(request.ReunionAusentes).ToList(); //update var leftAusentes = request.ReunionAusentes.Except(reunion.ReunionAusentes.Select(x => x.CodPersona)).ToList(); //new var rightAusentes = reunion.ReunionAusentes.Select(x => x.CodPersona).Except(request.ReunionAusentes).ToList(); //delete foreach (var CodPersona in interAusentes) { var cm = reunion.ReunionAusentes.First(t => t.CodPersona.Equals(CodPersona)); cm.Estado = true; } foreach (var CodPersona in leftAusentes) { TAusentesReunionDto reunionausente = new TAusentesReunionDto(); reunionausente.CodPersona = CodPersona; var _reunionasistente = _mapper.Map <TAusentesReunionDto, TAusentesReunion>(reunionausente); reunion.ReunionAusentes.Add(_reunionasistente); } foreach (var CodPersona in rightAusentes) { var cm = reunion.ReunionAusentes.First(t => t.CodPersona.Equals(CodPersona)); cm.Estado = false; } //JUSTIFICADOS reunion.ReunionJustificados = reunion.ReunionJustificados.Where(j => j.Estado == true).ToList(); var interJustificados = reunion.ReunionJustificados.Select(x => x.CodPersona).Intersect(request.ReunionJustificados).ToList(); //update var leftJustificados = request.ReunionJustificados.Except(reunion.ReunionJustificados.Select(x => x.CodPersona)).ToList(); //new var rightJustificados = reunion.ReunionJustificados.Select(x => x.CodPersona).Except(request.ReunionJustificados).ToList(); //delete foreach (var CodPersona in interJustificados) { var rm = reunion.ReunionJustificados.First(t => t.CodPersona.Equals(CodPersona)); rm.Estado = true; } foreach (var CodPersona in leftJustificados) { TJustificadosReunionDto reunionjustificado = new TJustificadosReunionDto(); reunionjustificado.CodPersona = CodPersona; var _reunionjustificado = _mapper.Map <TJustificadosReunionDto, TJustificadosReunion>(reunionjustificado); reunion.ReunionJustificados.Add(_reunionjustificado); } foreach (var CodPersona in rightJustificados) { var rm = reunion.ReunionJustificados.First(t => t.CodPersona.Equals(CodPersona)); rm.Estado = false; } //AGENDAS reunion.ReunionAgendas = reunion.ReunionAgendas.Where(a => a.Estado == true).ToList(); var rightAgendas = reunion.ReunionAgendas.Select(x => x.Correlativo).Except(request.ReunionAgendas.Select(c => c.Correlativo)).ToList(); //delete foreach (var Correlativo in rightAgendas) { var am = reunion.ReunionAgendas.First(t => t.Correlativo.Equals(Correlativo)); am.DesAgenda = ""; am.Estado = false; } var corrmax = _context.TAgenda.Max(t => t.Correlativo); foreach (var agenda in request.ReunionAgendas) { if (agenda.Correlativo == 0) { TAgendaDto reunionagenda = new TAgendaDto(); reunionagenda.Correlativo = nextCorrelativo(corrmax); reunionagenda.DesAgenda = agenda.DesAgenda; var _reunionagenda = _mapper.Map <TAgendaDto, TAgenda>(reunionagenda); reunion.ReunionAgendas.Add(_reunionagenda); corrmax = nextCorrelativo(corrmax); } } _context.TReunion.Update(reunion); //_context.TUsuario.Remove(user); await _context.SaveChangesAsync(cancellationToken); var reudto = new TReunionDto(); reudto.PlanAccion = request.PlanAccion; var updateList = new List <PlanVM>(); var createList = new List <PlanVM>(); foreach (var item in reudto.PlanAccion) { if (item.estado == false && item.codAccion > 0) { //var r3 = await _planAccion.Delete(item.codAccion.ToString()); var r3 = await _mediator.Send(new DeletePlanAccionCommand() { CodAccion = item.codAccion }); } else if (item.estado == true && item.codAccion > 0) { updateList.Add(item); } else if (item.codAccion < 0) { createList.Add(item); } } //var r4 = await _planAccion.Create(createList, request.CodReunion); createList.ForEach(t => { t.docReferencia = request.CodReunion; t.docSubReferencia = request.CodReunion; }); var r4 = await _mediator.Send(new CreatePlanAccionCommand() { planes = createList }); //var r5 = await _planAccion.Update(updateList); var r5 = await _mediator.Send(new UpdatePlanAccionCommand() { planes = updateList }); return(Unit.Value); }