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); }
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); }