コード例 #1
0
        private static async Task <ProcessadorResult> ProcessarAcao(LuisResult result, BotData userData)
        {
            var subscriptionId = userData.GetProperty <string>("SUBSCRIPTION");
            var applicationId  = userData.GetProperty <string>("APPLICATIONID");
            var secretKey      = userData.GetProperty <string>("SECRETKEY");

            var recursos = userData.GetProperty <List <AzureResource> >("RESOURCES");


            var acao = result.Entities.FirstOrDefault(a => string.Equals(a.Type.Trim(), "OPERACOES", StringComparison.CurrentCultureIgnoreCase));

            if (acao == null)
            {
                return new ProcessadorResult
                       {
                           Processado = false,
                           Mensagem   = $"Acao informada não permitida."
                       }
            }
            ;

            var recurso = result.Entities.FirstOrDefault(a => a.Type.ToUpper() == "ACAORECURSO");

            if (recurso == null)
            {
                return new ProcessadorResult
                       {
                           Processado = false,
                           Mensagem   = $"Necessário informar o nome do recuros que deseja {acao.Entity}"
                       }
            }
            ;

            var nomeRecurso = recurso.Entity.Replace(acao.Entity, "").Trim().Split(' ')[0].RemoverPontuacao();

            var targertResource = recursos.FirstOrDefault(r => string.Equals(r.Name.Trim(), nomeRecurso.Trim(), StringComparison.CurrentCultureIgnoreCase));

            if (targertResource == null)
            {
                return new ProcessadorResult
                       {
                           Processado = false,
                           Mensagem   = $"Recuros informado não encontrado na lista de recursos listados."
                       }
            }
            ;


            var actionResult = "...";

            if (targertResource.Type == "sites")
            {
                var actionName = acao.Entity == "parar" ? "stop" : "start";

                actionResult = acao.Entity == "parar" ? "parando" : "iniciando";
                await ActionBuilder.StartStopResource(subscriptionId, applicationId, secretKey, targertResource.ResrouceGroupName, targertResource.Name, actionName);
            }
            else
            {
                var actionName = acao.Entity == "parar" ? "deallocate" : "start";
                actionResult = acao.Entity == "parar" ? "parando" : "iniciando";
                await ActionBuilder.StartDeallocateVm(subscriptionId, applicationId, secretKey, targertResource.ResrouceGroupName, targertResource.Name, actionName);
            }

            return(new ProcessadorResult
            {
                Processado = true,
                Mensagem = $"O recurso solicitado está sendo {actionResult}"
            });
        }