Пример #1
0
            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;
                }
            }
Пример #2
0
            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);
            }