Пример #1
0
        public async Task <ServerResponse <long> > CreateMhTaskAsync(MhTaskRequest mhTaskRequest, MhTask parentMhTask = null)
        {
            return(await BaseInvokeAsync(async() =>
            {
                var mhTask = new MhTask
                {
                    Name = mhTaskRequest.Name,
                    Description = mhTaskRequest.Description,
                    StartDate = mhTaskRequest.StartDate >= DateTime.Now ? mhTaskRequest.StartDate : DateTime.Now,
                    IsRecurring = mhTaskRequest.IsRecurring,
                    VisibleType = mhTaskRequest.VisibleType,
                    AppUserId = mhTaskRequest.AppUserId
                };

                if (parentMhTask != null)
                {
                    mhTask.Parent = parentMhTask;
                }

                await DbContext.MhTasks.AddAsync(mhTask);

                if (mhTaskRequest.IsRecurring)
                {
                    var scheduleMhTask = new ScheduleMhTask
                    {
                        MhTask = mhTask,
                        MaxCount = mhTaskRequest.ScheduleMhTaskViewModel.MaxCount ?? 0,
                        ScheduleMhTaskType = mhTaskRequest.ScheduleMhTaskViewModel.ScheduleMhTaskType
                    };

                    await DbContext.ScheduleMhTasks.AddAsync(scheduleMhTask);
                }

                if (mhTaskRequest.TagIds.Any())
                {
                    var mhTaskTags = mhTaskRequest.TagIds
                                     .Join(DbContext.Tags, o => o, i => i.Id, (o, i) => i)
                                     .Select(x => new MhTaskTag
                    {
                        MhTask = mhTask,
                        Tag = x
                    });

                    await DbContext.MhTaskTags.AddRangeAsync(mhTaskTags);
                }

                await AddToUpdateMhTask(DbContext, mhTask, Constants.Updates.CreateMhTask);
                await DbContext.SaveChangesAsync();

                return ServerResponseBuilder.Build(mhTask.Id);
            }, mhTaskRequest));
        }
Пример #2
0
        private MhTask CreateMhTask(MhTask parentMhTask, ScheduleMhTask scheduleMhTask)
        {
            var startDate = parentMhTask.Children.Any() && parentMhTask.Children.Last().StartDate >= parentMhTask.StartDate
                ? parentMhTask.Children.Last().StartDate
                : parentMhTask.StartDate;

            var mhTask = new MhTask
            {
                Name        = parentMhTask.Name,
                Description = parentMhTask.Description,
                StartDate   = startDate.AddDays((double)scheduleMhTask.ScheduleMhTaskType),
                AppUserId   = parentMhTask.AppUserId,
                MhTaskState = EMhTaskState.ReSchedule,
                VisibleType = parentMhTask.VisibleType,
                Parent      = parentMhTask
            };

            parentMhTask.Children.Add(mhTask);

            return(mhTask);
        }