private void AdicionaOperacaoAPR(APR apr, APRItemSAPModelo item, DadosOperacao dadosOperacao, DB_APRPTEntities entities) { //TODO: É NECESSÁRIO APAGAR TODAS AS OPERACOES E INSERIR DE NOVO OPERACAO_APR operacao = new OPERACAO_APR(); operacao.CodAPR = apr.CodAPR; operacao.CodStatusAPR = (long)Constantes.StatusAPR.Criado; operacao.Codigo = item.Operacao; operacao.CodLI = dadosOperacao.CodLI; operacao.CodDisciplina = dadosOperacao.CodDisciplina; operacao.CodAtvPadrao = dadosOperacao.CodAtividadePadrao; operacao.Ativo = true; apr.OPERACAO_APR.Add(operacao); //Salva a operação no APR operacaoAprPersistencia.InsereOuEditaOperacaoAPR(apr.CodAPR, operacao, entities); //Salva os riscos //Riscos de Ambiente aprPersistencia.InserirRiscosAmbienteAPR(apr.CodAPR, dadosOperacao.CodLI, entities); aprPersistencia.InserirRiscosAtividadeAPR(apr.CodAPR, dadosOperacao.CodLI, dadosOperacao.CodDisciplina, dadosOperacao.CodAtividadePadrao, entities); }
public OperacaoAprModelo MapeamentoOperacao(OPERACAO_APR operacao) { OperacaoAprModelo operacaoModelo = new OperacaoAprModelo() { CodOperacaoAPR = operacao.CodOperacaoAPR, CodAPR = operacao.CodAPR, CodStatusAPR = operacao.CodStatusAPR, Codigo = operacao.Codigo, Descricao = operacao.Descricao, CodLI = operacao.CodLI, CodDisciplina = operacao.CodDisciplina, CodAtvPadrao = operacao.CodAtvPadrao }; return(operacaoModelo); }
public void InsereOuEditaOperacaoAPR(long codAPR, OPERACAO_APR operacao, DB_LaborSafetyEntities entities = null) { if (entities == null) { entities = new DB_LaborSafetyEntities(); } if (operacao == null) { throw new Exception($"A OPERACAO_APR não foi informada!"); } APR aprExistente = entities.APR.Where(x => x.CodAPR == codAPR).FirstOrDefault(); if (aprExistente == null) { throw new Exception($"Não foi encontrada, no sistema, uma APR com o código {codAPR} informado"); } OPERACAO_APR operacaoExistente = entities.OPERACAO_APR.Where(x => x.CodOperacaoAPR == operacao.CodOperacaoAPR).FirstOrDefault(); if (operacaoExistente == null) { aprExistente.OPERACAO_APR.Add(operacao); } else { operacaoExistente.CodAPR = operacao.CodAPR; operacaoExistente.CodAtvPadrao = operacao.CodAtvPadrao; operacaoExistente.CodDisciplina = operacao.CodDisciplina; operacaoExistente.Codigo = operacao.Codigo; operacaoExistente.CodLI = operacao.CodLI; operacaoExistente.CodStatusAPR = operacao.CodStatusAPR; operacaoExistente.Descricao = operacao.Descricao; operacaoExistente.STATUS_APR = operacao.STATUS_APR; } entities.SaveChanges(); }
public APRSAPResponse ProcessaOrdem(APRSAPModelo modelo) { APRSAPResponse response = new APRSAPResponse(); response.Itens = new List <APRItemSAPResponse>(); this.ValidaModelo(modelo); var statusApr = modelo.Itens.First().Status_Ordem; using (var entities = new DB_APRPTEntities()) { using (var transaction = entities.Database.BeginTransaction(System.Data.IsolationLevel.ReadCommitted)) { APRItemSAPResponse itemResponse = new APRItemSAPResponse(); itemResponse.Endereco_Rede = ""; APR apr = new APR(); try { if (statusApr == Enum.GetName(typeof(Constantes.StatusOrdem), Constantes.StatusOrdem.IMPR)) { AtualizaStatusApr(modelo.Itens.First().Numero_Ordem, (long)Constantes.StatusOrdem.IMPR, entities); } else { if (statusApr == Enum.GetName(typeof(Constantes.StatusOrdem), Constantes.StatusOrdem.ASAP)) { var aprBase = aprPersistencia.PesquisarPorOrdemManutencao(modelo.Itens.First().Numero_Ordem, entities); apr = aprBase; var aprBase64 = GerarAprSerializada(aprBase.NumeroSerie); itemResponse.Endereco_Rede = aprBase64; //EnviarDadosSAP(aprBase64, apr.OrdemManutencao); } else { //Verifica se já existe APR para ordem var aprExistente = aprPersistencia.PesquisarPorOrdemManutencaoExistentesEInexistentes(modelo.Itens.First().Numero_Ordem, entities); if (aprExistente == null) { apr = aprPersistencia.InserirSomenteComNumeroSeriaViaSAP(entities); apr.OrdemManutencao = modelo.Itens.First().Numero_Ordem; apr.Descricao = modelo.Itens.First().Descricao_Ordem; apr.LocalInstalacao = modelo.Itens.First().Local_Instalacao; } else { apr = aprExistente; apr.CodStatusAPR = (long)Constantes.StatusAPR.Criado; apr.LocalInstalacao = modelo.Itens.First().Local_Instalacao; apr.Descricao = modelo.Itens.First().Descricao_Ordem; this.DesativarOperacoesApr(apr, entities); } var maiorRiscoGeral = int.MinValue; foreach (var item in modelo.Itens) { OPERACAO_APR operacao = new OPERACAO_APR(); //Realiza as validações dos valores dos itens DadosOperacao dadosOperacao = this.VerificaValoresNaBase(item, entities); //Adiciona a operação na APR this.AdicionaOperacaoAPR(apr, item, dadosOperacao, entities); //Calcula o valor do risco geral da APR // Lógica para obtenção do maior risco das operações calculadas var riscoCalculado = this.CalculaRiscoGeral(dadosOperacao, entities); if (maiorRiscoGeral < riscoCalculado) { maiorRiscoGeral = riscoCalculado; } } itemResponse.VRG = maiorRiscoGeral.ToString(); apr.RiscoGeral = maiorRiscoGeral; apr.DataInicio = DateTime.Now; } } entities.SaveChanges(); transaction.Commit(); //if (statusApr == Enum.GetName(typeof(Constantes.StatusOrdem), Constantes.StatusOrdem.ASAP_CALC)) if (statusApr.ToUpper() == Constantes.StatusAPRIntegracaoOrdem.EnviarRecalcular.ToUpper()) { var aprBase64 = GerarAprSerializada(apr.NumeroSerie); itemResponse.Endereco_Rede = aprBase64; //EnviarDadosSAP(aprBase64, apr.OrdemManutencao); } itemResponse.Status = Constantes.StatusResponseIntegracao.S.ToString(); } catch (Exception ex) { transaction.Rollback(); itemResponse.Status = Constantes.StatusResponseIntegracao.E.ToString(); itemResponse.Descricao = ex.Message; throw ex; } finally { itemResponse.Numero_Serie = $"{apr.NumeroSerie}"; response.Itens.Add(itemResponse); } } } return(response); }