public async Task <int> Handle(DeleteAuditoriaCommand request, CancellationToken cancellationToken)
            {
                string COD_AUDITORIA = request.Codigo;

                var TAuditoria = _context.TAuditoria.Where(t => t.Estado == true && t.CodAuditoria.Equals(request.Codigo)).FirstOrDefault();

                IList <string> list_codigo_hallazgo = new List <string>();

                if (TAuditoria == null)
                {
                    throw new NotFoundException("Auditoria", COD_AUDITORIA);
                }

                TAuditoria.Estado = false;
                _context.TAuditoria.Update(TAuditoria);



                var listEquipo = _context.TEquipoAuditor.Where(t => t.Estado == true && t.CodAuditoria.Equals(COD_AUDITORIA));

                foreach (var itemEquipo in listEquipo)
                {
                    itemEquipo.Estado = false;
                }
                _context.TEquipoAuditor.UpdateRange(listEquipo);

                var listHallasgo = _context.THallazgos
                                   .Where(t => t.Estado == true && t.CodAuditoria.Equals(COD_AUDITORIA))
                                   .ToHashSet();

                foreach (var itemHallazgo in listHallasgo)
                {
                    itemHallazgo.Estado = false;
                    if (itemHallazgo.CodTipoHallazgo == TipoHallazgo.NoConformidad)
                    {
                        var item = _context.TAnalisisHallazgo.Where(t => t.Estado == true && t.CodTipoHallazgo.Equals(itemHallazgo.CodTipoHallazgo)).FirstOrDefault();
                        item.Estado = false;
                        var listAnaCausalidad = _context.TAuditoriaAnalisisCausalidad
                                                .Where(t => t.Estado == true && t.CodHallazgo.Equals(item.CodHallazgo))
                                                .ToHashSet();
                        foreach (var itemAnaCausalidad in listAnaCausalidad)
                        {
                            itemAnaCausalidad.Estado = false;
                            _context.TAuditoriaAnalisisCausalidad.Update(itemAnaCausalidad);
                        }
                        _context.TAnalisisHallazgo.Update(item);
                    }
                    if (itemHallazgo.CodTipoHallazgo == TipoHallazgo.Observacion)
                    {
                        var item = _context.TDatosHallazgo.Where(t => t.Estado == true && t.CodTipoHallazgo.Equals(itemHallazgo.CodTipoHallazgo)).FirstOrDefault();
                        item.Estado = false;
                        _context.TDatosHallazgo.Update(item);
                    }
                    if (itemHallazgo.CodTipoHallazgo == TipoHallazgo.OportunidadMejora)
                    {
                        var item = _context.TDatosHallazgo.Where(t => t.Estado == true && t.CodTipoHallazgo.Equals(itemHallazgo.CodTipoHallazgo)).FirstOrDefault();
                        item.Estado = false;
                        _context.TDatosHallazgo.Update(item);
                    }
                    if (itemHallazgo.CodTipoHallazgo == TipoHallazgo.RequiereCorreccion)
                    {
                        var item = _context.TDatosHallazgo.Where(t => t.Estado == true && t.CodTipoHallazgo.Equals(itemHallazgo.CodTipoHallazgo)).FirstOrDefault();
                        item.Estado = false;
                        _context.TDatosHallazgo.Update(item);
                    }

                    list_codigo_hallazgo.Add(itemHallazgo.CodHallazgo);

                    TAudCartilla AudCC = _context.TAudCartilla.Where(t => t.Estado == true && t.CodAuditoria.Equals(COD_AUDITORIA)).FirstOrDefault();
                    if (AudCC != null)
                    {
                        AudCC.Estado = true;
                        _context.TAudCartilla.Update(AudCC);
                        var listCCCriterios = _context.TAudCCCriterio
                                              .Where(t => t.Estado == true && t.CodAuditoria.Equals(COD_AUDITORIA) && t.CodCartilla.Equals(AudCC.CodCartilla))
                                              .ToHashSet();
                        foreach (var itemCCCriterios in listCCCriterios)
                        {
                            itemCCCriterios.Estado = false;
                            _context.TAudCCCriterio.Update(itemCCCriterios);
                        }
                    }
                }

                //var ri = _imagen.Delete(COD_AUDITORIA);
                var ri = await _mediator.Send(new DeleteFileDocRefCommand()
                {
                    NroDocReferencia = COD_AUDITORIA
                });

                //foreach (var itemCodigoHallazgo in  list_codigo_hallazgo){
                //    var te = _planAccion.Delete(itemCodigoHallazgo);
                //}
                var te = await _mediator.Send(new DeleteDocRefCommand()
                {
                    NroDocReferencia = COD_AUDITORIA
                });

                return(await _context.SaveChangesAsync(cancellationToken));
            }
            public async Task <string> Handle(CreateAuditoriaCommand request, CancellationToken cancellationToken)
            {
                // Monitor.Enter(this);
                try{
                    // lock (this){
                    List <PlanVM> list_plan_accion = new List <PlanVM>();

                    var nuevo           = _mapper.Map <AuditoriaDto, TAuditoria>(request.data);
                    int addAuditorIndex = 0;
                    foreach (var auditorDto in request.data.Equipo)
                    {
                        var addAuditorT = _mapper.Map <EquipoAuditorDto, TEquipoAuditor>(auditorDto);
                        addAuditorT.Correlativo = addAuditorIndex++;
                        nuevo.TEquipoAuditor.Add(addAuditorT);
                    }

                    var nuevoCodigo     = nextCod();
                    var nextCorrelativo = nextCorrelativoHallazgo();
                    var CodigoHallazgo  = nextCodHallazgo();

                    foreach (var hallasgoDto in request.data.Hallazgos)
                    {
                        CodigoHallazgo = nextCodHallazgo(CodigoHallazgo);
                        var hallasgoT = _mapper.Map <HallazgoDto, THallazgos>(hallasgoDto);
                        hallasgoT.CodHallazgo = CodigoHallazgo;
                        nuevo.THallazgos.Add(hallasgoT);

                        if (hallasgoDto.NoConformidad != null)
                        {
                            hallasgoT.CodTipoHallazgo = TipoHallazgo.NoConformidad;
                            var AnalisisHallasgo = _mapper.Map <NoConformidadDto, TAnalisisHallazgo>(hallasgoDto.NoConformidad);
                            AnalisisHallasgo.CodHallazgo     = CodigoHallazgo;
                            AnalisisHallasgo.CodTipoHallazgo = TipoHallazgo.NoConformidad;
                            _context.TAnalisisHallazgo.Add(AnalisisHallasgo);
                            if (hallasgoDto.NoConformidad.AnalisisCausalidad != null)
                            {
                                foreach (var analsisCausalidadDto in hallasgoDto.NoConformidad.AnalisisCausalidad)
                                {
                                    var TAnalisisCausalidad = _mapper.Map <AnalisisCausalidadDto, TAuditoriaAnalisisCausalidad>(analsisCausalidadDto);
                                    TAnalisisCausalidad.CodHallazgo = CodigoHallazgo;
                                    _context.TAuditoriaAnalisisCausalidad.Add(TAnalisisCausalidad);
                                }
                            }
                        }
                        if (hallasgoDto.Observacion != null)
                        {
                            hallasgoT.CodTipoHallazgo = TipoHallazgo.Observacion;
                            var ObservacionT = _mapper.Map <DatosHallazgoDto, TDatosHallazgo>(hallasgoDto.Observacion);
                            ObservacionT.CodHallazgo     = CodigoHallazgo;
                            ObservacionT.CodTipoHallazgo = TipoHallazgo.Observacion;
                            ObservacionT.Correlativo     = nextCorrelativo;
                            nextCorrelativo = nextCorrelativoHallazgo(nextCorrelativo);
                            _context.TDatosHallazgo.Add(ObservacionT);
                        }
                        if (hallasgoDto.OportunidadMejora != null)
                        {
                            hallasgoT.CodTipoHallazgo = TipoHallazgo.OportunidadMejora;
                            var OportunidadMejoraT = _mapper.Map <DatosHallazgoDto, TDatosHallazgo>(hallasgoDto.OportunidadMejora);
                            OportunidadMejoraT.CodHallazgo     = CodigoHallazgo;
                            OportunidadMejoraT.CodTipoHallazgo = TipoHallazgo.OportunidadMejora;
                            OportunidadMejoraT.Correlativo     = nextCorrelativo;
                            nextCorrelativo = nextCorrelativoHallazgo(nextCorrelativo);
                            _context.TDatosHallazgo.Add(OportunidadMejoraT);
                        }
                        if (hallasgoDto.RequiereCorreccion != null)
                        {
                            hallasgoT.CodTipoHallazgo = TipoHallazgo.RequiereCorreccion;
                            var RequiereCorreccionT = _mapper.Map <DatosHallazgoDto, TDatosHallazgo>(hallasgoDto.RequiereCorreccion);
                            RequiereCorreccionT.CodHallazgo     = CodigoHallazgo;
                            RequiereCorreccionT.CodTipoHallazgo = TipoHallazgo.RequiereCorreccion;
                            RequiereCorreccionT.Correlativo     = nextCorrelativo;
                            nextCorrelativo = nextCorrelativoHallazgo(nextCorrelativo);
                            _context.TDatosHallazgo.Add(RequiereCorreccionT);
                        }

                        if (hallasgoDto.planAccion != null)
                        {
                            foreach (var plan in hallasgoDto.planAccion)
                            {
                                plan.docReferencia    = nuevoCodigo;
                                plan.docSubReferencia = CodigoHallazgo;
                                list_plan_accion.Add(plan);
                            }
                        }
                    }

                    //control critico
                    TAudCartilla AudCC = null;
                    if (request.data.ControlCritico != null)
                    {
                        //malabares del modelado :V
                        AudCC = _mapper.Map <ControlCriticoDto, TAudCartilla>(request.data.ControlCritico);
                        AudCC.CodAuditoria   = nuevoCodigo;
                        AudCC.TAudCCCriterio = _mapper.Map <ICollection <CCCriteriosDto>, ICollection <TAudCCCriterio> >(request.data.ControlCritico.Criterios);
                        _context.TAudCartilla.Add(AudCC);
                    }

                    nuevo.CodAuditoria = nuevoCodigo;

                    _context.TAuditoria.Add(nuevo);
                    var ii = await _context.SaveChangesAsync(cancellationToken);

                    //var pa = await _planAccion.Create(list_plan_accion,"");
                    var pa = await _mediator.Send(new CreatePlanAccionCommand()
                    {
                        planes = list_plan_accion
                    });

                    return(nuevo.CodAuditoria);
                    // }
                }
                catch (Exception e) {
                    var ee = e;
                    throw e;
                }
                finally {
                    // Monitor.Exit(this);
                }
            }
示例#3
0
            public async Task <GetAuditoriaVM> Handle(GetAuditoriaQuery request, CancellationToken cancellationToken)
            {
                try{
                    var data = new GetAuditoriaVM();

                    var auditoria_T = _context.TAuditoria.Where(
                        t => t.Estado == true &&
                        t.CodAuditoria.Equals(request.CodAuditoria)
                        )
                                      .FirstOrDefault();

                    if (auditoria_T == null)
                    {
                        throw new NotFoundException("Auditoria", request.CodAuditoria);
                    }


                    // esta linea puede causa error en el colapso de la memeoria si susede duplicar el parametro
                    //var planAccion = await _planAccion.Get(request.CodAuditoria);
                    var planAccion = await _mediator.Send(new GetPlanAccionDocReferenciaQuery()
                    {
                        DocReferencia = request.CodAuditoria
                    });

                    // foreach(var plan in planAccion){
                    //     foreach(var responsable in plan.responsable){

                    //     }
                    // }

                    data.data = _mapper.Map <TAuditoria, AuditoriaDto>(auditoria_T);

                    //Equipo Auditor
                    data.data.Equipo = _context.TEquipoAuditor
                                       .Where(t => t.Estado == true && t.CodAuditoria.Equals(request.CodAuditoria))
                                       .ProjectTo <EquipoAuditorDto>(_mapper.ConfigurationProvider)
                                       .ToHashSet();

                    data.data.Hallazgos = _context.THallazgos
                                          .Where(t => t.Estado == true && t.CodAuditoria.Equals(request.CodAuditoria))
                                          .ProjectTo <HallazgoDto>(_mapper.ConfigurationProvider)
                                          .ToHashSet();

                    foreach (var itemHallazgo in data.data.Hallazgos)
                    {
                        if (itemHallazgo.CodTipoHallazgo == TipoHallazgo.NoConformidad)
                        {
                            var item = _context.TAnalisisHallazgo
                                       .Where(t => t.Estado == true &&
                                              t.CodHallazgo.Equals(itemHallazgo.CodHallazgo) &&
                                              t.CodTipoHallazgo.Equals(itemHallazgo.CodTipoHallazgo)
                                              ).FirstOrDefault();
                            itemHallazgo.NoConformidad = _mapper.Map <TAnalisisHallazgo, NoConformidadDto>(item);

                            itemHallazgo.NoConformidad.AnalisisCausalidad = _context.TAuditoriaAnalisisCausalidad
                                                                            .Where(t => t.Estado == true && t.CodHallazgo.Equals(item.CodHallazgo))
                                                                            .ProjectTo <AnalisisCausalidadDto>(_mapper.ConfigurationProvider)
                                                                            .ToHashSet();
                            itemHallazgo.NoConformidad.AnalisisCausalidad = await addInformacionYdescripcion(itemHallazgo.NoConformidad.AnalisisCausalidad);
                        }
                        if (itemHallazgo.CodTipoHallazgo == TipoHallazgo.Observacion)
                        {
                            var item = _context.TDatosHallazgo
                                       .Where(t => t.Estado == true &&
                                              t.CodHallazgo.Equals(itemHallazgo.CodHallazgo) &&
                                              t.CodTipoHallazgo.Equals(itemHallazgo.CodTipoHallazgo)
                                              ).FirstOrDefault();
                            itemHallazgo.Observacion = _mapper.Map <TDatosHallazgo, DatosHallazgoDto>(item);
                        }
                        if (itemHallazgo.CodTipoHallazgo == TipoHallazgo.OportunidadMejora)
                        {
                            var item = _context.TDatosHallazgo
                                       .Where(t => t.Estado == true &&
                                              t.CodHallazgo.Equals(itemHallazgo.CodHallazgo) &&
                                              t.CodTipoHallazgo.Equals(itemHallazgo.CodTipoHallazgo)
                                              ).FirstOrDefault();
                            itemHallazgo.OportunidadMejora = _mapper.Map <TDatosHallazgo, DatosHallazgoDto>(item);
                        }
                        if (itemHallazgo.CodTipoHallazgo == TipoHallazgo.RequiereCorreccion)
                        {
                            var item = _context.TDatosHallazgo
                                       .Where(t => t.Estado == true &&
                                              t.CodHallazgo.Equals(itemHallazgo.CodHallazgo) &&
                                              t.CodTipoHallazgo.Equals(itemHallazgo.CodTipoHallazgo)
                                              ).FirstOrDefault();
                            itemHallazgo.RequiereCorreccion = _mapper.Map <TDatosHallazgo, DatosHallazgoDto>(item);
                        }

                        itemHallazgo.planAccion = planAccion.data.Where(t => t.docSubReferencia.Equals(itemHallazgo.CodHallazgo)).ToList();
                    }

                    TAudCartilla AudCC = _context.TAudCartilla.Where(t => t.Estado == true && t.CodAuditoria.Equals(request.CodAuditoria)).FirstOrDefault();
                    if (AudCC != null)
                    {
                        data.data.ControlCritico           = _mapper.Map <TAudCartilla, ControlCriticoDto>(AudCC);
                        data.data.ControlCritico.Criterios = _context.TAudCCCriterio
                                                             .Where(t => t.Estado == true && t.CodAuditoria.Equals(request.CodAuditoria) && t.CodCartilla.Equals(AudCC.CodCartilla))
                                                             .ProjectTo <CCCriteriosDto>(_mapper.ConfigurationProvider)
                                                             .ToHashSet();
                    }

                    return(data);
                }catch (Exception e) {
                    var ee = e;
                    throw e;
                }
            }