Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 3
0
        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)));
        }
Ejemplo n.º 4
0
        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)));
        }
Ejemplo n.º 5
0
 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));
     }
 }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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));
            }
        }
Ejemplo n.º 8
0
 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));
     }
 }
Ejemplo n.º 9
0
 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);
        }
Ejemplo n.º 11
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);
        }
Ejemplo n.º 12
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);
        }
Ejemplo n.º 13
0
        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));
        }
Ejemplo n.º 14
0
        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));
        }