コード例 #1
0
        /// <summary>
        /// Consultar os tipos de Ocorrencia parametrizadas.
        /// </summary>
        /// <param name="tpOcorrenciaEquipamento"></param>
        /// <returns></returns>
        public object Consultar(TipoOcorrenciaEquipamento tpOcorrenciaEquipamento)
        {
            if (string.IsNullOrEmpty(tpOcorrenciaEquipamento.Numeroserie) && string.IsNullOrEmpty(tpOcorrenciaEquipamento.ModeloPai) &&
                tpOcorrenciaEquipamento.cdSegmento == null && string.IsNullOrEmpty(tpOcorrenciaEquipamento.fabricante) &&
                tpOcorrenciaEquipamento.mostraTecnico == null)
            {
                var equi = new
                {
                    Fabricante = tpOcorrenciaEquipamento.fabricante,
                    Segmento   = tpOcorrenciaEquipamento.cdSegmento,
                    Modelo     = tpOcorrenciaEquipamento.ModeloPai != null?tpOcorrenciaEquipamento.ModeloPai.Trim() : string.Empty,
                                     TipoOcorrencia = GetAllOcorrencias(new TipoOcorrencia {
                        indMostraCliente = tpOcorrenciaEquipamento.mostraCliente
                    })
                };

                return(equi);
            }
            else
            {
                SearchEquipamento queryModelo = null;

                if (!string.IsNullOrEmpty(tpOcorrenciaEquipamento.Numeroserie))
                {
                    queryModelo = _tipoOcorrenciaEquipamentoRepository.ConsultaDadosModeloEquipamento(tpOcorrenciaEquipamento.Numeroserie, null);
                }
                else if (!string.IsNullOrEmpty(tpOcorrenciaEquipamento.ModeloPai))
                {
                    queryModelo = _tipoOcorrenciaEquipamentoRepository.ConsultaDadosModeloEquipamento(null, tpOcorrenciaEquipamento.ModeloPai);
                }

                if (queryModelo != null)
                {
                    tpOcorrenciaEquipamento.ModeloPai  = queryModelo.ModeloPai;
                    tpOcorrenciaEquipamento.cdSegmento = tpOcorrenciaEquipamento.cdSegmento ?? queryModelo.CdSegmento;
                    tpOcorrenciaEquipamento.fabricante = tpOcorrenciaEquipamento.fabricante ?? queryModelo.NmFabricante;
                }

                var listEquipamentoModelo = _tipoOcorrenciaEquipamentoRepository.Buscar(x => x.bitAtivo == true &&
                                                                                        x.ModeloPai == tpOcorrenciaEquipamento.ModeloPai).ToList();

                var listEquipamentoSegmento = _tipoOcorrenciaEquipamentoRepository.Buscar(x => x.bitAtivo == true &&
                                                                                          x.ModeloPai == null &&
                                                                                          x.cdSegmento == tpOcorrenciaEquipamento.cdSegmento).ToList();

                var listEquipamentoFabricante = _tipoOcorrenciaEquipamentoRepository.Buscar(x => x.bitAtivo == true &&
                                                                                            x.ModeloPai == null &&
                                                                                            x.cdSegmento == null &&
                                                                                            x.fabricante == tpOcorrenciaEquipamento.fabricante).ToList();

                var listEquipamento = (_tipoOcorrenciaEquipamentoRepository.Buscar(x => x.bitAtivo == true &&
                                                                                   (
                                                                                       tpOcorrenciaEquipamento.ModeloPai == "" || x.ModeloPai == tpOcorrenciaEquipamento.ModeloPai
                                                                                   )
                                                                                   &&
                                                                                   (
                                                                                       x.cdSegmento == tpOcorrenciaEquipamento.cdSegmento || tpOcorrenciaEquipamento.cdSegmento == null
                                                                                   )
                                                                                   &&
                                                                                   (
                                                                                       x.fabricante == tpOcorrenciaEquipamento.fabricante || tpOcorrenciaEquipamento.fabricante == null
                                                                                   )
                                                                                   )).ToList();

                var equipamentos = new List <TipoOcorrenciaEquipamento>();

                equipamentos.AddRange(listEquipamentoModelo);
                equipamentos.AddRange(listEquipamentoSegmento);
                equipamentos.AddRange(listEquipamentoFabricante);
                equipamentos.AddRange(listEquipamento);

                if (equipamentos == null || equipamentos.Count == 0)
                {
                    return(null);
                }

                var idsTipoOcorrencia = new List <short?>();
                var tipOcorrenciaEqui = new List <TipoOcorrenciaFSA>();

                foreach (TipoOcorrenciaEquipamento ocEqui in equipamentos)
                {
                    tipOcorrenciaEqui = JsonConvert.DeserializeObject <List <TipoOcorrenciaFSA> >(ocEqui.jsonTipoOcorrencia);
                    if (tipOcorrenciaEqui != null)
                    {
                        idsTipoOcorrencia.AddRange(tipOcorrenciaEqui.Select(x => x.CodigoTipOcorrencia));
                    }
                }

                var tiposOcorrencia = _tipoOcorrenciaRepository.Buscar(x => idsTipoOcorrencia.Distinct().Contains(x.cdTipOcorrencia)).ToList();

                if (tpOcorrenciaEquipamento.mostraCliente != null && (bool)tpOcorrenciaEquipamento.mostraCliente)
                {
                    tiposOcorrencia = tiposOcorrencia.Where(x => x.indMostraCliente == true).ToList();
                }

                if (tpOcorrenciaEquipamento.mostraTecnico != null && (bool)tpOcorrenciaEquipamento.mostraTecnico)
                {
                    tiposOcorrencia = tiposOcorrencia.Where(x => x.indMostraTecnico == true).ToList();
                }

                var equipamento = equipamentos.FirstOrDefault();

                var equi = new
                {
                    Fabricante = equipamento.fabricante,
                    Segmento   = equipamento.cdSegmento,
                    Modelo     = equipamento.ModeloPai != null?equipamento.ModeloPai.Trim() : string.Empty,
                                     TipoOcorrencia = tiposOcorrencia
                };

                return(equi);
            }
        }