Exemplo n.º 1
0
            public async Task <PlanCompVM> Handle(UpdateLevTareaCommand request, CancellationToken cancellationToken)
            {
                PlanCompVM planVM      = new PlanCompVM();
                var        cabeceraDTO = IService.imgUpload(request.File);

                var correlativo = cabeceraDTO.correlativo;
                var descripcion = cabeceraDTO.descripcion;
                var estadoNew   = cabeceraDTO.estado;
                var porcentaje  = cabeceraDTO.porcentajeAvance;
                var fecha       = cabeceraDTO.fecha;

                var levTarea = _context.TLevantamientoPlan.FirstOrDefault(i => i.Correlativo == correlativo && i.Estado);

                levTarea.Descripcion      = descripcion;
                levTarea.Estado           = estadoNew;
                levTarea.PorcentajeAvance = porcentaje;
                levTarea.Fecha            = fecha;


                if (!estadoNew)
                {
                    List <TFile> fil = _context.TFile.Where(I => I.NroDocReferencia == correlativo.ToString() && I.Estado).ToList();

                    foreach (var item in fil)
                    {
                        item.Estado = false;
                        _context.TFile.Update(item);
                    }
                }
                _context.TLevantamientoPlan.Update(levTarea);
                await _context.SaveChangesAsync(cancellationToken);

                // Se muestra el resultado como si fuera GET
                var planAccionList = _context.TAccion.Include(i => i.RespPlanAccion).FirstOrDefault(i => i.CodAccion == levTarea.CodAccion && i.Estado);

                PlanRespVM plan = new PlanRespVM();

                plan.codAccion = planAccionList.CodAccion;


                ResponsablesDto planRespDto;

                foreach (var it in planAccionList.RespPlanAccion)
                {
                    if (it.Estado)
                    {
                        var datos = _context.TLevantamientoPlan.Where(i => i.CodAccion == it.CodAccion && i.CodPersona == it.CodPersona && i.Estado);
                        planRespDto                 = new ResponsablesDto();
                        planRespDto.codAccion       = it.CodAccion;
                        planRespDto.codPersona      = it.CodPersona;
                        planRespDto.porcentajeMayor = 0;
                        planRespDto.estado          = it.Estado;
                        if (datos.Count() > 0)
                        {
                            var max = datos.Max(i => i.PorcentajeAvance);
                            planRespDto.porcentajeMayor = max;
                        }
                        PersonaVM respVM = new PersonaVM();

                        if (!String.IsNullOrEmpty(it.CodPersona))
                        {
                            //respVM = await _persons.RequestNombApellidos(it.CodPersona);
                            respVM = await _mediator.Send(new GetPersonaQuery()
                            {
                                CodPersona = it.CodPersona
                            });
                        }
                        if (respVM != null)
                        {
                            planRespDto.nombres         = respVM.Nombres;
                            planRespDto.apellidoPaterno = respVM.ApellidoPaterno;
                            planRespDto.apellidoMaterno = respVM.ApellidoMaterno;
                        }
                        else
                        {
                            planRespDto.nombres         = "";
                            planRespDto.apellidoPaterno = "";
                            planRespDto.apellidoMaterno = "";
                        }

                        plan.RespPlanAccion.Add(planRespDto);
                    }
                }

                var sumaDiv = (plan.RespPlanAccion.Sum(i => i.porcentajeMayor) / plan.RespPlanAccion.Count());

                var accion = _context.TAccion.FirstOrDefault(i => i.CodAccion == levTarea.CodAccion && i.Estado);

                //double sumatoria = 0;
                if (sumaDiv > 0 && sumaDiv < 100)
                {
                    accion.CodEstadoAccion = "03";
                }

                else if (sumaDiv >= 100)
                {
                    accion.CodEstadoAccion = "02";
                }

                else
                {
                    accion.CodEstadoAccion = "01";
                }
                plan.codEstadoAccion = accion.CodEstadoAccion;

                _context.TAccion.Update(accion);
                await _context.SaveChangesAsync(cancellationToken);

                LevTareasFilesVM levTareasVM;
                var levs = _context.TLevantamientoPlan.Where(i => i.CodAccion == levTarea.CodAccion && i.Estado);

                List <String> codPersonas;
                List <TFile>  result;

                foreach (var item in levs)
                {
                    result      = new List <TFile>();
                    codPersonas = new List <String>();
                    codPersonas.Add(item.CodPersona);
                    //List<String> nombPerson = await _persons.Request(codPersonas);
                    List <String> nombPerson = await _mediator.Send(new GetCode2NameQuery()
                    {
                        data = codPersonas
                    });

                    levTareasVM                  = new LevTareasFilesVM();
                    levTareasVM.codAccion        = item.CodAccion;
                    levTareasVM.codPersona       = item.CodPersona;
                    levTareasVM.correlativo      = item.Correlativo;
                    levTareasVM.descripcion      = item.Descripcion;
                    levTareasVM.estado           = item.Estado;
                    levTareasVM.fecha            = item.Fecha;
                    levTareasVM.porcentajeAvance = item.PorcentajeAvance;
                    levTareasVM.nombres          = "";
                    if (nombPerson.Count != 0)
                    {
                        levTareasVM.nombres = nombPerson[0];
                    }
                    result = _context.TFile.Where(i => i.NroDocReferencia == item.Correlativo.ToString()).ToList();

                    FilesDto filesDto;

                    foreach (var it in result)
                    {
                        if (item.Estado == true)
                        {
                            filesDto = new FilesDto();

                            filesDto.size = it.ArchivoData.Length;
                            filesDto.correlativoArchivos = it.CorrelativoArchivos;
                            filesDto.descripcion         = it.Descripcion;
                            filesDto.grupoPertenece      = it.GrupoPertenece;
                            filesDto.nombre              = it.Nombre;
                            filesDto.nroDocReferencia    = it.NroDocReferencia;
                            filesDto.nroSubDocReferencia = it.NroSubDocReferencia;
                            filesDto.tipoArchivo         = it.TipoArchivo;
                            filesDto.estado              = it.Estado;
                            levTareasVM.files.Add(filesDto);
                        }
                    }
                    plan.registros.Add(levTareasVM);
                }
                plan.count = plan.registros.Count;
                planVM.plan.Add(plan);
                return(planVM);
            }
Exemplo n.º 2
0
            public async Task <PlanCompVM> Handle(GetLevTareasQuery request, CancellationToken cancellationToken)
            {
                var codAccion      = request.codAccion;
                var planAccionList = _context.TAccion.Where(i => i.CodAccion == codAccion && i.Estado);

                if (planAccionList != null)
                {
                    var plan = planAccionList.AsQueryable()
                               .ProjectTo <PlanRespVM>(_mapper.ConfigurationProvider)
                               .ToList();

                    PlanCompVM planVM = new PlanCompVM();

                    foreach (var item in plan)
                    {
                        if (item.estado)
                        {
                            PlanRespVM planRespVM = new PlanRespVM();
                            planRespVM.codAccion          = item.codAccion;
                            planRespVM.codEstadoAccion    = item.codEstadoAccion;
                            planRespVM.estado             = item.estado;
                            planRespVM.codActiRelacionada = item.codActiRelacionada;
                            planRespVM.codAreaHsec        = item.codAreaHsec;
                            planRespVM.codNivelRiesgo     = item.codNivelRiesgo;
                            planRespVM.codTipoAccion      = item.codTipoAccion;
                            planRespVM.codSolicitadoPor   = item.codSolicitadoPor;
                            //var _data = await _persons.RequestNombApellidos(item.codSolicitadoPor);
                            var _data = await _mediator.Send(new GetPersonaQuery()
                            {
                                CodPersona = item.codSolicitadoPor
                            });

                            planRespVM.nombreSolicitadoPor = (_data != null) ? _data.Nombres + " " + _data.ApellidoPaterno + " " + _data.ApellidoMaterno : "";
                            planRespVM.docReferencia       = item.docReferencia;
                            planRespVM.docSubReferencia    = item.docSubReferencia;

                            planRespVM.fechaSolicitud = item.fechaSolicitud;
                            planRespVM.tarea          = item.tarea;
                            planRespVM.fechaInicial   = item.fechaInicial;
                            planRespVM.fechaFinal     = item.fechaFinal;
                            planRespVM.codTablaRef    = item.codTablaRef;

                            planRespVM.RespPlanAccion = item.RespPlanAccion.Where(i => i.estado).ToList();

                            foreach (var it in planRespVM.RespPlanAccion)
                            {
                                if (it.estado)
                                {
                                    PersonaVM respVM = new PersonaVM();
                                    if (!String.IsNullOrEmpty(it.codPersona))
                                    {
                                        //respVM = await _persons.RequestNombApellidos(it.codPersona);
                                        respVM = await _mediator.Send(new GetPersonaQuery()
                                        {
                                            CodPersona = it.codPersona
                                        });
                                    }
                                    if (respVM != null)
                                    {
                                        it.nombres         = respVM.Nombres;
                                        it.apellidoPaterno = respVM.ApellidoPaterno;
                                        it.apellidoMaterno = respVM.ApellidoMaterno;
                                    }
                                    else
                                    {
                                        it.nombres         = "";
                                        it.apellidoPaterno = "";
                                        it.apellidoMaterno = "";
                                    }
                                    var _registros = item.registros.Where(i => i.codAccion == it.codAccion && i.codPersona == it.codPersona);
                                    if (_registros != null && _registros.Count() > 0)
                                    {
                                        it.porcentajeMayor = _registros.Max(i => i.porcentajeAvance);
                                    }

                                    //it.porcentajeMayor = item.registros.Where(i => i.codAccion == it.codAccion && i.codPersona == it.codPersona).Max(i => i.porcentajeAvance);
                                }
                            }

                            var registros = item.registros.Where(i => i.estado).ToList();
                            foreach (var it in registros)
                            {
                                if (it.estado)
                                {
                                    List <String> nomb = new List <string>();
                                    nomb.Add(it.codPersona);
                                    string nombres = "";
                                    //List<String> nombPerson = await _persons.Request(nomb);
                                    List <String> nombPerson = await _mediator.Send(new GetCode2NameQuery()
                                    {
                                        data = nomb
                                    });

                                    if (nombPerson.Count() != 0)
                                    {
                                        nombres = nombPerson[0];
                                    }

                                    //var filesEntity = _context.TFile.Where(i => i.NroDocReferencia == it.correlativo.ToString() && i.Estado).ToList();
                                    var filesEntity = _context.TFile.Where(i => i.NroDocReferencia == it.codAccion.ToString() && i.NroSubDocReferencia == it.correlativo.ToString() && i.Estado).ToList();
                                    var filesVm     = filesEntity.AsQueryable()
                                                      .ProjectTo <FilesDto>(_mapper.ConfigurationProvider)
                                                      .ToList();
                                    it.nombres = nombres;
                                    it.files   = filesVm;

                                    int count = 0;
                                    foreach (var file in filesEntity)
                                    {
                                        it.files[count].size = file.ArchivoData.Length;
                                        count++;
                                    }
                                    planRespVM.registros.Add(it);
                                }
                            }
                            planRespVM.count = planRespVM.registros.Count();
                            planVM.plan.Add(planRespVM);
                        }
                    }
                    return(planVM);
                }

                else
                {
                    throw new ExceptionGeneral("No existe Plan de Accion !!");
                }
            }