Exemplo n.º 1
0
        public async Task <bool> Update(int id, TaskModelBL model)
        {
            if (model == null)
            {
                return(false);
            }

            if (!CheckAccess(id, out MyTask task))
            {
                return(false);
            }

            task.Name           = model.Name;
            task.TargetDate     = model.TargetDate;
            task.Details        = model.Details;
            task.IsRepeating    = model.IsRepeating;
            task.TaskСategoryId = model.TaskСategoryId;
            task.TaskPriorityId = model.TaskPriorityId;
            task.EndDate        = model.EndDate;
            task.ParentTaskId   = model.ParentTaskId;
            context.MyTasks.Update(task);

            if (model.Friends != null)
            {
                foreach (var friend in model.Friends)
                {
                    UsersInTask member = new UsersInTask
                    {
                        MyTaskId           = model.Id,
                        UserId             = friend.UserId,
                        UserInTaskTypeCode = 2
                    };

                    if (context.TaskTrackerUser.GetById(member.UserId) != null)
                    {
                        context.UsersInTasks.Create(member);
                    }
                    else
                    {
                        TaskTrackerUser user = new TaskTrackerUser {
                            UserId = member.UserId
                        };
                        context.TaskTrackerUser.Create(user);
                        if (!context.UsersInTasks.GetAll().Any(ut => ut.UserId == member.UserId && ut.UserInTaskTypeCode == 2))
                        {
                            context.UsersInTasks.Create(member);
                        }
                    }
                }
            }

            RepeatingTask repeatingTask = context.RepeatingTasks.GetById(id);

            if (repeatingTask != null && model.IsRepeating == true)
            {
                repeatingTask.Multiplier = (int)model.Multiplier;
                repeatingTask.PeriodCode = (int)model.PeriodCode;
                context.RepeatingTasks.Update(repeatingTask);
            }
            else if (repeatingTask != null && model.IsRepeating == false)
            {
                context.RepeatingTasks.Delete(repeatingTask);
            }
            else if (repeatingTask == null && model.IsRepeating == true &&
                     model.Multiplier != null && model.PeriodCode != null)
            {
                repeatingTask = new RepeatingTask
                {
                    Id         = model.Id,
                    Multiplier = (int)model.Multiplier,
                    PeriodCode = (int)model.PeriodCode
                };
                context.RepeatingTasks.Create(repeatingTask);
            }

            context.SaveChanges();

            var list = context.TaskFiles.GetAll().Where(tf => tf.TaskId == id).Select(tf => tf.FileId).ToList();

            foreach (int FileId in list)
            {
                if (!model.files.Any(fl => fl.Id == FileId))
                {
                    _fileService.Delete(FileId);
                }
            }

            foreach (FileModelBL fl in model.files.Where(fl => !list.Any(fileid => fileid == fl.Id)))
            {
                _fileService.Create(id, fl);
            }

            if (model.Friends != null)
            {
                foreach (var _friend in model.Friends)
                {
                    await _mailService.SendAsync(new MailModelBL()
                    {
                        To      = _friend.Friend.Email,
                        Subject = "Назначение соисполнителем на задачу",
                        Body    = $"Вы назначены соисполнителем на задачу <br> для просмотра перейдите по ссылке: <br> <a href=\"https://localhost:44347/MyTask/Update/{model.Id}\">Перейти...</a>"
                    });
                }
            }

            return(true);
        }
Exemplo n.º 2
0
        public bool Create(TaskModelBL model)
        {
            if (model == null)
            {
                return(false);
            }

            string UserId = HttpContextExtensions.GetUserId(_httpcontext);

            var user = context.TaskTrackerUser.GetAll().FirstOrDefault(x => x.UserId == UserId);

            if (user == null)
            {
                user = new TaskTrackerUser()
                {
                    UserId = UserId
                };
                context.TaskTrackerUser.Create(user);
            }

            MyTask task = new MyTask
            {
                Name           = model.Name,
                StartDate      = DateTime.Now,
                TargetDate     = model.TargetDate,
                Details        = model.Details,
                IsRepeating    = model.IsRepeating,
                TaskСategoryId = model.TaskСategoryId,
                TaskPriorityId = model.TaskPriorityId,
                ParentTaskId   = model.ParentTaskId
            };

            context.MyTasks.Create(task);

            var UserInTask = new UsersInTask()
            {
                Task               = task,
                UserId             = UserId,
                TaskTrackerUser    = user,
                UserInTaskTypeCode = 1
            };

            context.UsersInTasks.Create(UserInTask);

            if (model.Multiplier != null && model.PeriodCode != null)
            {
                RepeatingTask repeatingTask = new RepeatingTask
                {
                    Task       = task,
                    PeriodCode = (int)model.PeriodCode,
                    Multiplier = (int)model.Multiplier
                };
                context.RepeatingTasks.Create(repeatingTask);
            }

            context.SaveChanges();

            foreach (FileModelBL fl in model.files)
            {
                _fileService.Create(task.Id, fl);
            }

            return(true);
        }