public async Task CreateAndActivateNewMTSFPlan()
        {
            try
            {
                Logger.Info("Star Creating Plan");
                var plans = await _hubCommunicator.GetPlansByName("MonitorSubmissionTerminalForm", PlanVisibility.Internal);

                var tokens = await _hubCommunicator.GetTokens();

                googleTokens    = tokens.Where(t => t.Name == "terminalGoogle").FirstOrDefault();
                atlassianTokens = tokens.Where(t => t.Name == "terminalAtlassian").FirstOrDefault();
                slackTokens     = tokens.Where(t => t.Name == "terminalSlack").FirstOrDefault();
                if (plans.Count() == 0)
                {
                    await ConfigureAndRunPlan();
                }
                else
                {
                    Logger.Info("Plan already exist");
                    var plan = plans.FirstOrDefault();
                    if (plan.SubPlans.FirstOrDefault().Activities.Count < 8)
                    {
                        Logger.Info("Deleting incomplete Plan");
                        await _hubCommunicator.DeletePlan(plan.Id);

                        await ConfigureAndRunPlan();
                    }
                    Logger.Info("trying to reapply tokens");
                    //Reapllying tokens if they were revoked previously
                    await ReApplyTokens(plans.FirstOrDefault());
                }
            }
            catch (Exception e)
            {
                Logger.Error("Couldn't create MonitorTerminalSubmissionForm Plan", e);
                throw new ApplicationException("Couldn't create MonitorTerminalSubmissionForm Plan", e);
            }
        }
示例#2
0
        private async Task RemoveInactiveExistingPlans(IHubCommunicator hubCommunicator, string plan_name, AuthorizationToken authToken)
        {
            try
            {
                var existingPlans = (await hubCommunicator.GetPlansByName(plan_name, PlanVisibility.Internal)).ToList();
                if (existingPlans.Count > 0)
                {
                    //active MADSE plans are likely related to another DS account
                    var plansForRemoval = existingPlans
                                          .Where(val =>
                                                 (val.PlanState == PlanState.IntToString(PlanState.Inactive)) || //or all from above
                                                 !(val.SubPlans.Any() && val.SubPlans.ElementAt(0).Activities.Any() &&
                                                   val.SubPlans.ElementAt(0).Activities[1].ActivityTemplate.Name == "Save_All_Payload_To_Fr8_Warehouse")).ToList();

                    foreach (var plan in plansForRemoval)
                    {
                        await hubCommunicator.DeletePlan(plan.Id);
                    }

                    Logger.Info($"Removed {plansForRemoval.Count} obsolete MADSE plan");
                }
            }
            catch (Exception exc) { Logger.Info("Failed to remove obsolete MADSE plan"); }
        }