private void ApplyRecurrence(RecurrencePeriod period, RecurrenceTrigger trigger) { foreach (var condition in Conditions) { if (condition.Condition?.Recurrence?.Is(period, trigger) == true) { condition.Condition.ApplyEffects(null, this); } } }
public bool Is(RecurrencePeriod period, RecurrenceTrigger trigger) { return(period == Period && trigger == Trigger); }
public void CreateAggregateTask(string sysname, out Guid taskId) { ServiceInfo qds = Client.GetServices(ServiceTypes.QlikViewDistributionService).FirstOrDefault(); if (qds == null) { throw new System.Exception("No QDS found."); } List <DocumentNode> sourceDocuments = Client.GetSourceDocuments(qds.ID); DocumentNode templateDocument = sourceDocuments.FirstOrDefault(t => t.Name.Equals("Aggregator.qvw", StringComparison.InvariantCultureIgnoreCase) && t.RelativePath.Equals("_TEMPLATE", StringComparison.InvariantCultureIgnoreCase)); if (templateDocument == null) { throw new System.Exception("Template \"Aggregator.qvw\" not found."); } DocumentNode customerDocument = sourceDocuments.FirstOrDefault(t => t.Name.Equals("Aggregator.qvw", StringComparison.InvariantCultureIgnoreCase) && t.RelativePath.Equals(sysname, StringComparison.InvariantCultureIgnoreCase)); if (customerDocument == null) { throw new System.Exception("Customer \"Aggregator.qvw\" not found."); } TaskInfo templateTaskInfo = Client.GetTasksForDocument(templateDocument.ID).FirstOrDefault(x => x.Type == TaskType.DocumentTask); if (templateTaskInfo == null) { throw new System.Exception("Document task for the template \"Aggregator.qvw\" not found."); } string taskName = GetCustomerAggregatorTaskName(sysname); TaskInfo existingTaskInfo = Client.FindTask(qds.ID, TaskType.DocumentTask, taskName); if (existingTaskInfo != null) { taskId = existingTaskInfo.ID; return; } DocumentTask task = Client.GetDocumentTask(templateTaskInfo.ID, DocumentTaskScope.All); task.ID = Guid.NewGuid(); task.Document = customerDocument; task.General.Enabled = true; task.General.TaskName = taskName; task.DocumentInfo.Category = "Data aggregators"; task.Reload.ScriptParameterValue = sysname; task.Triggering.Triggers.Clear(); Client.SaveDocumentTask(task); task = Client.GetDocumentTask(task.ID, DocumentTaskScope.All); var recurrenceTrigger = new RecurrenceTrigger { Hourly = new RecurrenceTrigger.RecurrenceTriggerHourly { DayOfWeekConstraints = new List <DayOfWeek> { DayOfWeek.Monday, DayOfWeek.Tuesday, DayOfWeek.Wednesday, DayOfWeek.Thursday, DayOfWeek.Friday, DayOfWeek.Saturday, DayOfWeek.Sunday }, RecurEvery = 20, TimeConstraintFrom = DateTime.MinValue, TimeConstraintTo = DateTime.MaxValue }, Enabled = true, Type = TaskTriggerType.HourlyTrigger }; task.Triggering.Triggers.Add(recurrenceTrigger); Client.SaveDocumentTask(task); taskId = task.ID; }