protected override void Execute(IPluginExecutionContext context, IOrganizationServiceFactory serviceFactory, IOrganizationService adminService, IOrganizationService userService) { IOrganizationService service = serviceFactory.CreateOrganizationService(null); try { switch (context.GetMessageName()) { case PluginBase.MessageName.Create: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { var entidade = context.PostEntityImages["imagem"]; Ocorrencia ocorrencia = entidade.Parse <Ocorrencia>(context.OrganizationName, context.IsExecutingOffline, adminService); //Verifica se tem intervenção técnica var e = context.GetContextEntity(); Ocorrencia ocorrenciacreate = (new Domain.Servicos.RepositoryService(context.OrganizationName, false, service)).Ocorrencia.Retrieve(e.Id); VerificaIntervencao(ocorrenciacreate, context, service); VerificaDataDeIntalacao(ocorrenciacreate, context, service); if (ocorrencia.IntegraAstec == (int)IntegrarASTEC.Sim) { string lstResposta = new Domain.Servicos.OcorrenciaService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramento(ocorrencia); } if (ocorrencia.RazaoStatus.Value != (int)StatusDaOcorrencia.Fechada) { return; } var ocorrenciaService = new OcorrenciaService(context.OrganizationName, context.IsExecutingOffline); ocorrenciaService.Ocorrencia = ocorrencia; Areas area = ocorrenciaService.IdentificarAreaDeAtendimento(); if (area == Areas.ISOL) { ocorrenciaService.AtualizarVigenciaContrato(); } } break; case PluginBase.MessageName.Update: if (context.PostEntityImages.Contains("imagem") && context.PostEntityImages["imagem"] is Entity) { var entidade = context.PostEntityImages["imagem"]; Ocorrencia ocorrencia = entidade.Parse <Ocorrencia>(context.OrganizationName, context.IsExecutingOffline, adminService); //Verifica se tem intervenção técnica var eupdate = context.GetContextEntity(); Ocorrencia ocorrenciaupdate = (new Domain.Servicos.RepositoryService(context.OrganizationName, false, service)).Ocorrencia.Retrieve(eupdate.Id); VerificaIntervencao(ocorrenciaupdate, context, service); VerificaDataDeIntalacao(ocorrenciaupdate, context, service); if (ocorrencia.IntegraAstec == (int)IntegrarASTEC.Sim) { string lstResposta = new Domain.Servicos.OcorrenciaService(context.OrganizationName, context.IsExecutingOffline, service).IntegracaoBarramento(ocorrencia); } Ocorrencia entidadePre = ((Entity)context.PreEntityImages["imagem"]).Parse <Ocorrencia>(context.OrganizationName, context.IsExecutingOffline, adminService); if (ocorrencia.EmpresaExecutanteId == null && entidadePre.EmpresaExecutanteId != null) { ocorrencia.AtualizarOperacoesSuporte = true; ocorrencia.Atualizar(); } if (ocorrencia.RazaoStatus.Value != (int)StatusDaOcorrencia.Fechada) { return; } var ocorrenciaService = new OcorrenciaService(context.OrganizationName, context.IsExecutingOffline); ocorrenciaService.Ocorrencia = ocorrencia; Areas area = ocorrenciaService.IdentificarAreaDeAtendimento(); if (area == Areas.ISOL) { ocorrenciaService.AtualizarVigenciaContrato(); } } break; } } catch (Exception ex) { throw new InvalidPluginExecutionException(ex.Message); } }