Example #1
0
        private TaskDataBaseItem CreateNewDataBaseItemFromTaskAccordingToType(TaskBase task)
        {
            TaskDataBaseItem newItem = null;

            switch (task.TaskType)
            {
            case TaskType.RecurringTask:

                RecurringTask recurringTask = task as RecurringTask;
                newItem = new TaskDataBaseItem()
                {
                    Name           = recurringTask.Name,
                    Description    = recurringTask.Description,
                    TaskType       = recurringTask.TaskType,
                    TimeDue        = recurringTask.TimeDue,
                    Interval       = recurringTask.Interval,
                    TaskOccurences = recurringTask.TaskOccurrences.ToArray()
                };
                break;

            default:
                throw new NotSupportedException();
            }

            return(newItem);
        }
Example #2
0
        public Response Update(RecurringTask recurringTask)
        {
            _recurringTaskService.Update(recurringTask);

            return(new Response {
                Body = "success"
            });
        }
Example #3
0
        public RecurringTaskEntity ToEntity(RecurringTask domain)
        {
            RecurringTaskEntity entity = new RecurringTaskEntity {
            };

            _taskMapper.ToEntity(domain, entity);

            return(entity);
        }
Example #4
0
        public RecurringTask ToDomain(RecurringTaskEntity entity)
        {
            RecurringTask domain = new RecurringTask {
            };

            _taskMapper.ToDomain(entity, domain);

            return(domain);
        }
        private Task ScheduleSteamUpdates(List <Service> services)
        {
            var user = TCAdmin.SDK.Session.GetCurrentUser();

            var rTask = new RecurringTask
            {
                UserId   = user.UserId,
                Name     = "Batch Steam Update",
                Enabled  = true,
                Source   = this.GetType().Name,
                SourceId = "-1",
                Notes    = "Created by Steam Batch Update",
            };

            var trigger = new Trigger
            {
                TriggerType = TriggerType.OneTime,
                OneTime     = new TriggerOneTime
                {
                    StartTimeUtc = DateTime.UtcNow
                }
            };

            rTask.Triggers = new[] { trigger };

            foreach (var service in services)
            {
                var arguments = new XmlField
                {
                    ["ScheduledScript.ServiceId"]           = service.ServiceId,
                    ["ScheduledScript.ScriptId"]            = "steam",
                    ["ScheduledScript.ForceExecution"]      = true,
                    ["ScheduledScript.WaitEmpty"]           = false,
                    ["ScheduledScript.SkipExecution"]       = false,
                    ["ScheduledScript.CheckSteamApiUpdate"] = false
                };
                var step = new RecurringStep
                {
                    ModuleId  = "d3b2aa93-7e2b-4e0d-8080-67d14b2fa8a9",
                    ProcessId = 18,
                    ServerId  = service.ServerId,
                    Arguments = arguments.ToString(),
                };

                var steps = rTask.Steps.ToList();
                steps.Add(step);
                rTask.Steps = steps.ToArray();
            }

            rTask.GenerateKey();
            rTask.Save();
            rTask.ScheduleNextTask();

            return(new Task(rTask.TaskId));
        }
        public async Task AddRecurringTask(RecurringTaskModel model, int userId)
        {
            using (var db = _dbContextFactory.Create())
            {
                var recurringTask = new RecurringTask();

                recurringTask = _lifeTaskMappingService.PopulateRecurringTaskFromModel(model, recurringTask, userId);

                db.RecurringTasks.Add(recurringTask);
                await db.SaveChangesAsync();
            }
        }
Example #7
0
 private void ProcessRecurringTask(RecurringTask RecurringTask)
 {
     try
     {
         if (RecurringTask.WorkFlowStatus == Ignyt.BusinessInterface.WorkFlow.Enum.WorkFlowStatus.Enabled)
         {
             MyWorkbench.BusinessObjects.Helpers.RecurringHelper.ExecuteRecurring(RecurringTask);
         }
     }
     catch (Exception ex)
     {
         this.TaskExceptionList.TaskExceptions.Add(ex);
     }
 }
Example #8
0
        private void InitializeTaskList()
        {
            RecurringTask vacuum = new RecurringTask("Run vacuum.")
            {
                Interval = new TimeSpan(7, 23, 0, 0)
            };

            RecurringTask dishes = new RecurringTask("Wash dishes.")
            {
                Interval = new TimeSpan(1, 23, 0, 0)
            };

            dishes.AddOccurrence(new DateTime(2018, 10, 19), new TimeSpan(0, 20, 0));

            this.taskCollection.AddTask(dishes);
            this.taskCollection.AddTask(vacuum);

            this.taskList.ItemsSource = this.taskCollection;
        }
Example #9
0
        public static void ExecuteRecurring(RecurringTask RecurringTask)
        {
            using (UnitOfWork unitOfWork = new UnitOfWork(RecurringTask.Session.DataLayer))
            {
                var myCloner = new DevExpress.Persistent.Base.Cloner();

                RecurringTask recurringTask = unitOfWork.FindObject <RecurringTask>(CriteriaOperator.Parse("Oid == ?", RecurringTask.Oid));
                Task          task          = null;

                if (recurringTask.WorkFlowStatus == WorkFlowStatus.Enabled && (recurringTask.NextDate == null || recurringTask.NextDate <= MyWorkbench.BaseObjects.Constants.Constants.DateTimeTimeZone(unitOfWork)))
                {
                    task = new Task(unitOfWork);

                    recurringTask.CopyProperties(task);
                    task.BookedTime    = recurringTask.NextDate != null ? recurringTask.NextDate : recurringTask.Starting;
                    task.BookedTimeEnd = ((DateTime)task.BookedTime).AddHours(Constants.AppointmentLength(task.Session));
                    task.Party         = recurringTask.Party;

                    if (recurringTask.WorkflowResources.Count >= 1)
                    {
                        var j = recurringTask.WorkflowResources.Count;

                        for (int i = 0; i < j; i++)
                        {
                            task.WorkflowResources.Add(myCloner.CloneTo(recurringTask.WorkflowResources[i], typeof(WorkflowResource)) as WorkflowResource);
                        }
                    }

                    recurringTask.AdvanceNextDate();

                    // New Object Tracking
                    (task as WorkflowBase).ChildItems.Add(recurringTask);
                    (task as WorkflowBase).Tracking.Add(CreateTracking(unitOfWork, task, string.Format("Created from {0}", recurringTask.No)));

                    //Current Object Tracking
                    recurringTask.ChildItems.Add(task as WorkflowBase);
                    recurringTask.Tracking.Add(CreateTracking(unitOfWork, task, string.Format("Converted to {0}", (task as WorkflowBase).GetType().Name)));
                }

                unitOfWork.CommitChanges();
            }
        }
        internal static IRecurringStartCalculator Create(RecurringTask task)
        {
            switch (task.TaskType)
            {
            case RecurringTaskTypes.Daily:
                return(new DailyStartCalculator(task.Interval, task.StartDate, task.EndDate, task.StartTime));

            case RecurringTaskTypes.Weekly:
                return(new WeeklyStartCalculator(task.Interval, task.RecurrenceFactor, task.StartDate, task.EndDate, task.StartTime));

            case RecurringTaskTypes.Monthly:
                return(new MonthlyStartCalculator(task.Interval, task.RecurrenceFactor, task.StartDate, task.EndDate, task.StartTime));

            case RecurringTaskTypes.MonthlyRelative:
                return(new MonthlyRelativeStartCalculator(task.Interval, task.RelativeInterval, task.RecurrenceFactor, task.StartDate, task.EndDate, task.StartTime));

            default:
                throw new ArgumentException("Неопределенный тип расписания циклической задачи: " + task.TaskType);
            }
        }
Example #11
0
        public async Task ItAllowsForRecurringTasksToBeCanceled()
        {
            var           taskName      = Guid.NewGuid().ToString();
            RecurringTask recurringTask = null;

            Func <string, TaskScheduler, Task> configureSchedulerAction = async(semaphoreFile, taskScheduler) =>
            {
                recurringTask = await taskScheduler.AddRecurringTask(() => TaskQueueTestFixture.WriteSemaphore(semaphoreFile),
                                                                     $"*/{IntervalSeconds} * * * * *", taskName);
            };

            Func <TaskScheduler, Task> cancelTaskAction = async(taskScheduler) =>
            {
                (await taskScheduler.CancelRecurringTask(recurringTask)).Should().BeTrue();
            };

            await TaskSchedulerTestHelpers.AssertTaskSchedulerDoesNotWriteSemaphore(
                IntervalSeconds,
                configureSchedulerAction,
                cancelTaskAction);
        }
Example #12
0
        public void UpdateItemInformation(TaskDataBaseItem dataBaseItem)
        {
            TaskBase task = this.dataBaseItemToTask[dataBaseItem];

            dataBaseItem.Name        = task.Name;
            dataBaseItem.Description = task.Description;
            dataBaseItem.TaskType    = task.TaskType;
            dataBaseItem.TimeDue     = task.TimeDue;

            switch (task.TaskType)
            {
            case TaskType.RecurringTask:

                RecurringTask recurringTask = task as RecurringTask;
                dataBaseItem.Interval       = recurringTask.Interval;
                dataBaseItem.TaskOccurences = recurringTask.TaskOccurrences.ToArray();
                break;

            default:
                throw new NotSupportedException();
            }
        }
Example #13
0
        private TaskBase CreateNewTaskAccordingToTaskBaseItem(TaskDataBaseItem dataBaseItem)
        {
            TaskBase newTask = null;

            switch (dataBaseItem.TaskType)
            {
            case TaskType.RecurringTask:
                RecurringTask newRecurringTask = new RecurringTask(dataBaseItem.Name);
                newRecurringTask.Description = dataBaseItem.Description;
                newRecurringTask.Interval    = dataBaseItem.Interval;
                foreach (TaskOccurrence occurrence in dataBaseItem.TaskOccurences)
                {
                    newRecurringTask.AddOccurrence(occurrence.OccurrenceMoment, occurrence.OccurrenceDuration);
                }

                newTask = newRecurringTask;
                break;

            default:
                throw new NotSupportedException();
            }

            return(newTask);
        }
        public RecurringTask PopulateRecurringTaskFromModel(RecurringTaskModel model, RecurringTask dbRecurringTask, int?userId = null)
        {
            if (dbRecurringTask.UserId == 0)
            {
                if (userId.HasValue)
                {
                    dbRecurringTask.UserId = userId.Value;
                }
                else
                {
                    throw new InvalidOperationException("This task has not been created in the context of a user");
                }
            }

            dbRecurringTask.Name               = model.Name;
            dbRecurringTask.Description        = model.Description;
            dbRecurringTask.RecurrenceInterval = model.RecurrenceInterval;
            dbRecurringTask.TaskRecurrenceType = model.TaskRecurrenceType;


            foreach (var taskModel in model.Tasks)
            {
                var dbTask = new LifeTask();
                dbTask = PopulateLifeTaskFromModel(taskModel, dbTask, userId);
                dbRecurringTask.Tasks.Add(dbTask);
            }

            return(dbRecurringTask);
        }
        public void Update(RecurringTask domain)
        {
            _modelServiceTools.UpdateProcessing <RecurringTaskEntity>(domain);

            _lifeManagerRepository.SaveEntity(_recurringTaskMapper.ToEntity(domain));
        }
        public void Create(RecurringTask domain)
        {
            _modelServiceTools.InitialiseNewItem(domain);

            _lifeManagerRepository.SaveEntity(_recurringTaskMapper.ToEntity(domain));
        }