Exemple #1
0
        public ActionResult Create(int id)
        {
            var model = new TaskCreateDTO {
                GroupId = id
            };

            return(View(model));
        }
Exemple #2
0
        public async Task <bool> CreateTask(TaskCreateDTO dto)
        {
            var rao = _mapper.Map <TaskCreateRAO>(dto);

            if (await _repository.CreateTask(rao))
            {
                return(true);
            }

            throw new NotImplementedException();
        }
        private TaskCreate getCreateViewModel(TaskCreateDTO dto)
        {
            TaskCreate viewModel = new TaskCreate();

            viewModel.TaskID          = dto.TaskID;
            viewModel.Name            = dto.Name;
            viewModel.ParentProjectID = dto.ParentProjectID;
            viewModel.Description     = dto.Description;
            viewModel.Deadline        = dto.Deadline;
            viewModel.Users           = dto.Users;
            viewModel.Files           = dto.Files;
            return(viewModel);
        }
Exemple #4
0
        public ActionResult Create(TaskCreateDTO dto)
        {
            if (!ModelState.IsValid)
            {
                return(View(dto));
            }

            var rao = new TaskCreateRAO
            {
                GroupId         = dto.GroupId,
                TaskName        = dto.TaskName,
                TaskDescription = dto.TaskDescription,
                RewardPoints    = dto.RewardPoints
            };

            var service = GetTaskService();

            if (service.CreateTask(rao))
            {
                return(RedirectToAction("Index", new { id = dto.GroupId }));
            }

            return(View(dto));
        }
        public ActionResult Create(TaskCreateDTO form)
        {
            form?.Users.RemoveAll(u => u.Id == null);
            if (ModelState.IsValid)
            {
                ProjectTask task;
                if (form.TaskID != 0)
                {
                    task = this.db.ProjectTasks
                           .Where(x => x.TaskID == form.TaskID)
                           .Include(x => x.Users)
                           .FirstOrDefault();
                    if (task.OwnerID != User.Identity.GetUserId())
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.Forbidden));
                    }

                    // remove users that are no longer assigned to the task
                    task.Users.RemoveAll(x => !form.Users.Contains(x, new PropertyComparer <ApplicationUser, string>(u => u.Id)));
                    // remove duplicates
                    form.Users.RemoveAll(x => task.Users.Contains(x, new PropertyComparer <ApplicationUser, string>(u => u.Id)));
                }
                else
                {
                    // if not project manager nor owner => task addition refused
                    if ((!this.db.HasProjectRole(form.ParentProjectID, User.Identity.GetUserId(), Role.Manager)))
                    {
                        return(new HttpStatusCodeResult(HttpStatusCode.Forbidden));
                    }
                    task         = new ProjectTask();
                    task.Created = DateTime.UtcNow;
                }
                // task not found
                if (task == null)
                {
                    return(HttpNotFound());
                }
                if (task.Users == null)
                {
                    task.Users = new List <ApplicationUser>();
                }
                task.LastModified    = DateTime.UtcNow;
                task.Deadline        = UnixTime.ParseUnixTimestamp(form.Deadline);
                task.Description     = form.Description;
                task.Name            = form.Name;
                task.OwnerID         = User.Identity.GetUserId();
                task.ParentProjectID = form.ParentProjectID;
                task.Status          = form.Users.Count() > 0 ? TaskStatus.Assigned : TaskStatus.Created;
                form.Users.ForEach(u => this.db.Users.Attach(u));
                form.Users.ForEach(x => task.Users.Add(x));
                List <Attachment> attachments = new List <Attachment>();
                if (task.TaskID == 0)
                {
                    db.ProjectTasks.Add(task);
                }
                db.SaveChanges();

                // save all attachments
                foreach (var val in form.Files)
                {
                    if (val != null)
                    {
                        db.Attachments.Add(new Attachment()
                        {
                            FileName = val.FileName, Size = val.ContentLength, Type = val.ContentType, TaskID = task.TaskID
                        });
                        DirectoryInfo dir = Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"Attachments/" + task.TaskID);
                        val.SaveAs(dir.FullName + @"/" + val.FileName);
                    }
                }

                db.SaveChanges();
                return(this.Redirect("/Projects/Details/" + form.ParentProjectID));
            }
            else
            {
                TaskCreate viewModel = this.getCreateViewModel(form);
                this.prepareCreateViewModel(viewModel);
                return(View(viewModel));
            }
        }