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