Example #1
0
        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);
            }
        }