public async Task <IActionResult> AddFriendToTask(MyTaskWithFriendViewModel viewModel) { if (ModelState.IsValid) { TaskModelBL task = await _client.Get <TaskModelBL>("api/mytask/details/" + viewModel.TaskId.ToString()); IEnumerable <UserFriendBL> friends = await _identityClient.Get <List <UserFriendBL> >("api/friends"); UserFriendBL friend = friends.FirstOrDefault(fr => fr.FriendId == viewModel.FriendId.ToString()); if (task == null || friend == null) { return(NotFound()); } task.Friends = new List <UserFriendBL> { friend }; await _client.Put("api/mytask/update", task.Id, task); return(RedirectToAction(nameof(Index))); } return(View(viewModel)); }
public async Task <IActionResult> Create(MyTaskViewModel model, IFormFile[] uploadedFiles) { if (ModelState.IsValid) { TaskModelBL task = new TaskModelBL { Name = model.Name, TargetDate = model.TargetDate, Details = model.Details, IsRepeating = model.IsRepeating, Multiplier = model.Multiplier, PeriodCode = model.PeriodCode, ParentTaskId = model.ParentTaskId, files = new List <FileModelBL>() }; if (model.TaskСategoryId != 0) { task.TaskСategoryId = model.TaskСategoryId; } if (model.TaskPriorityId != 0) { task.TaskPriorityId = model.TaskPriorityId; } if (task.IsRepeating == true && task.Multiplier == null) { task.Multiplier = 1; } foreach (IFormFile uploadedFile in uploadedFiles) { using (var ms = new MemoryStream()) { uploadedFile.CopyTo(ms); var fileBytes = ms.ToArray(); FileModelBL fl = new FileModelBL { FileName = uploadedFile.FileName, ContentType = uploadedFile.ContentType, Data = fileBytes }; task.files.Add(fl); } } await _client.Post("api/mytask/create", task); return(RedirectToAction(nameof(Index))); } else { return(View(model)); } }
public async Task <IActionResult> AddEditGrantRequest(int id) { TaskModelBL task = await _client.Get <TaskModelBL>("api/mytask/details/" + id.ToString()); TaskEditGrantsBL editGrand = new TaskEditGrantsBL { TaskId = id, Task = task, date = DateTime.Now, FriendId = task.UserId, IsGranted = false }; await _client.Post("api/mytaskfriendgrant/create", editGrand); return(RedirectToAction(nameof(Index))); }
public async Task <IActionResult> Complete(int id, bool?all) { TaskModelBL task = await _client.Get <TaskModelBL>("api/mytask/details/" + id.ToString()); if (task == null) { return(NotFound()); } if (task.IsRepeating == false || (task.IsRepeating == true && all == true)) { task.EndDate = DateTime.Now; } else { RepeatingTaskModelBL repeatTask = await _client.Get <RepeatingTaskModelBL>("api/repeatingtask/" + id.ToString()); if (repeatTask != null) { if (repeatTask.PeriodCode == 1) { task.TargetDate = task.TargetDate.AddDays(repeatTask.Multiplier); } if (repeatTask.PeriodCode == 2) { task.TargetDate = task.TargetDate.AddDays(7 * repeatTask.Multiplier); } if (repeatTask.PeriodCode == 3) { task.TargetDate = task.TargetDate.AddMonths(repeatTask.Multiplier); } if (repeatTask.PeriodCode == 4) { task.TargetDate = task.TargetDate.AddYears(repeatTask.Multiplier); } } } await _client.Put("api/mytask/update", id, task); return(RedirectToAction(nameof(Index))); }
public ActionResult Details(int id) { try { TaskModelBL model = taskService.GetById(id); if (model != null) { return(Ok(model)); } else { return(BadRequest()); } } catch (Exception ex) { _logger.LogError(ex, "MyTaskAPIController.Details"); return(new StatusCodeResult(500)); } }
public async Task <IActionResult> AddFriendToTask(int id) { if (id <= 0) { throw new ArgumentException(); } MyTaskWithFriendViewModel model = new MyTaskWithFriendViewModel { TaskId = id }; IEnumerable <UserFriendBL> friends = await _identityClient.Get <List <UserFriendBL> >("api/friends"); TaskModelBL task = await _client.Get <TaskModelBL>("api/mytask/details/" + id.ToString()); IEnumerable <string> UserIds = task.UserIds; var friendslist = friends.Where(fr => !UserIds.Any(uid => uid == fr.UserId)); ViewBag.UserFriends = new SelectList(friendslist, "FriendId", "Friend.UserName"); return(View(model)); }
public async Task <IActionResult> AddSubTask(SubTaskViewModel model) { if (ModelState.IsValid) { TaskModelBL task = await _client.Get <TaskModelBL>("api/mytask/details/" + model.SubTaskId.ToString()); if (task == null) { return(NotFound()); } task.ParentTaskId = model.ParentTaskId; await _client.Put("api/mytask/update", task.Id, task); return(RedirectToAction(nameof(Index))); } else { return(View(model)); } }
public async Task <ActionResult> Update(int id, TaskModelBL task) { try { if (await taskService.Update(id, task)) { return(Ok(new APIResult() { Success = true })); } else { return(BadRequest()); } } catch (Exception ex) { _logger.LogError(ex, "MyTaskAPIController.Update"); return(new StatusCodeResult(500)); } }
public ActionResult Create(TaskModelBL task) { try { if (taskService.Create(task)) { return(Ok(new APIResult() { Success = true })); } else { return(BadRequest()); } } catch (Exception ex) { _logger.LogError(ex, "MyTaskAPIController.Create"); return(new StatusCodeResult(500)); } }
public 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.ParentTaskId = model.ParentTaskId; context.MyTasks.Update(task); context.SaveChanges(); var list = context.TasksFiles.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 => !string.IsNullOrWhiteSpace(fl.FileName))) { _fileService.Create(id, fl); } return(true); }
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); }
public async Task <ActionResult> Update(int id, IFormFile[] uploadedFiles, [FromForm] MyTaskViewModel model) { if (ModelState.IsValid) { TaskModelBL task = new TaskModelBL() { Id = id, Name = model.Name, TargetDate = model.TargetDate, Details = model.Details, IsRepeating = model.IsRepeating, ParentTaskId = model.ParentTaskId, Multiplier = model.Multiplier, PeriodCode = model.PeriodCode }; task.files = new List <FileModelBL>(); if (model.files != null) { foreach (FileInfoViewModel fl in model.files) { if (fl.Deleted == 0) { task.files.Add(new FileModelBL() { Id = fl.Id }); } } } foreach (IFormFile uploadedFile in uploadedFiles) { using (var ms = new MemoryStream()) { uploadedFile.CopyTo(ms); var fileBytes = ms.ToArray(); FileModelBL fl = new FileModelBL { FileName = uploadedFile.FileName, ContentType = uploadedFile.ContentType, Data = fileBytes }; task.files.Add(fl); } } if (model.TaskСategoryId != 0) { task.TaskСategoryId = model.TaskСategoryId; } if (model.TaskPriorityId != 0) { task.TaskPriorityId = model.TaskPriorityId; } await _client.Put("api/mytask/update", id, task); return(RedirectToAction(nameof(Index))); } return(View(model)); }
public async Task <IActionResult> Update(int id) { TaskModelBL task = await _client.Get <TaskModelBL>("api/mytask/details/" + id.ToString()); if (task == null) { return(NotFound()); } MyTaskViewModel viewModel = new MyTaskViewModel { Id = task.Id, Name = task.Name, StartDate = task.StartDate, TargetDate = task.TargetDate, Details = task.Details, IsRepeating = task.IsRepeating, TaskСategoryId = task.TaskСategoryId, TaskPriorityId = task.TaskPriorityId, Multiplier = task.Multiplier, PeriodCode = task.PeriodCode, ParentTaskId = task.ParentTaskId, TaskEditGrant = task.EditGrant, IsFriendTask = task.IsFriendTask }; viewModel.files = new List <FileInfoViewModel>(); foreach (FileModelBL fl in task.files) { viewModel.files.Add(new FileInfoViewModel() { Id = fl.Id, FileName = fl.FileName }); } TaskTagModelBL taskTag = await _client.Get <TaskTagModelBL>("api/tasktag/details/" + id.ToString()); if (taskTag != null && task.Tags != null) { viewModel.Tags = new List <TagInfoViewModel>(); foreach (TaskTagModelBL fl in task.Tags) { viewModel.Tags.Add(new TagInfoViewModel() { Id = fl.Id, Name = fl.Name }); } } List <PeriodTypeModelBL> periodTypes = await _client.Get <List <PeriodTypeModelBL> >("api/periodtype"); List <TaskCategoryModelBL> categories = await _client.Get <List <TaskCategoryModelBL> >("api/taskcategory"); List <PriorityModelBL> priorities = await _client.Get <List <PriorityModelBL> >("api/priority"); List <TaskModelBL> tasks = await _client.Get <List <TaskModelBL> >("api/mytask/list"); viewModel.SubTasks = tasks.Where(t => t.ParentTaskId == task.Id)?.ToList(); IEnumerable <UserFriendBL> friends = await _identityClient.Get <List <UserFriendBL> >("api/friends"); IEnumerable <string> UserIds = task.UserIds; ViewBag.friendslist = friends.Where(fr => UserIds.Any(uid => uid == fr.UserId)).Select(f => f.Friend).ToList(); categories.Insert(0, new TaskCategoryModelBL { Name = "", Id = 0 }); priorities.Insert(0, new PriorityModelBL { Name = "", Id = 0 }); ViewBag.Repeat = new SelectList(periodTypes, "Id", "Name"); ViewBag.Categories = new SelectList(categories, "Id", "Name"); ViewBag.Priorities = new SelectList(priorities, "Id", "Name"); return(View(viewModel)); }