Beispiel #1
0
        public virtual ActionResult AddToDo(ProjectToDosModel model)
        {
            if (Request.HttpMethod == "GET" || !Request.IsAjaxRequest())
            {
                return(RedirectToAction(MVC.Organization.Details(model.OrganizationId, null, OrganizationViews.Projects, null, null, null)));
            }

            var item = Service.AddToDo(model);

            return(Json(new { Content = RenderPartialViewToString(MVC.Organization.Views.Project.ToDoItem, item) }));
        }
Beispiel #2
0
        public ToDoModel AddToDo(ProjectToDosModel model)
        {
            var project = GetProject(model.Id);
            var todo    = new ToDo()
            {
                Id                = BsonObjectId.GenerateNewId(),
                Subject           = model.InsertSubject,
                ResponsibleUserId = model.InsertResponsibleUserId,
                DueDate           = model.InsertDueDate,
                Position          = project.ToDos.Where(td => !td.FinishDate.HasValue && (!td.IsPrivate || IsProjectEditable(project, false))).Count(),
                IsPrivate         = model.InsertToDoIsPrivate,
                CreatedByUserId   = CurrentUser.Id
            };

            if (!string.IsNullOrEmpty(model.InsertMileStoneId))
            {
                var milestone = project.MileStones.Where(m => m.Id == model.InsertMileStoneId).Single();
                todo.Position =
                    milestone.ToDos.Where(
                        td => !td.FinishDate.HasValue && (!td.IsPrivate || IsProjectEditable(project, false))).Count();
                milestone.ToDos.Add(todo);
            }
            else
            {
                project.ToDos.Add(todo);
            }

            UpdateProject(project);

            var idea = GetIdea(project.IdeaId);

            bus.Send(new ProjectCommand()
            {
                ActionType        = ActionTypes.ToDoAdded,
                ProjectId         = project.Id,
                UserId            = CurrentUser.Id,
                ToDoId            = todo.Id,
                Text              = todo.Subject,
                ProjectSubject    = idea.Subject,
                Link              = GetProjectUrl(project.Id),
                MileStoneId       = model.InsertMileStoneId,
                IsPrivate         = idea.IsPrivateToOrganization && !string.IsNullOrEmpty(idea.OrganizationId) || model.InsertToDoIsPrivate,
                SendNotifications = model.InsertSendNotifications,
                UserFullName      = CurrentUser.FullName,
                UserLink          = Url.ActionAbsolute("Details", "Account", new { userObjectId = CurrentUser.Id })
            });
            return(GetToDoModelFromToDo(todo, project, IsProjectEditable(project, false), model.InsertMileStoneId));
        }
Beispiel #3
0
        public virtual ActionResult AddToDo(ProjectToDosModel model)
        {
            if (Request.HttpMethod == "GET" || !Request.IsAjaxRequest())
            {
                return(RedirectToAction(MVC.Project.ToDos(model.Id)));
            }

            if (ModelState.IsValid)
            {
                var item = Service.AddToDo(model);
                return
                    (Json(
                         new
                {
                    Content = RenderPartialViewToString(MVC.Project.Views.ToDoItem, item),
                    MileStoneId = item.MileStoneId
                }));
            }

            return(Json(new { errors = GetErrorMessages() }));
        }
Beispiel #4
0
        public ProjectToDosModel ToDos(Project project)
        {
            var idea  = GetIdea(project.IdeaId, "StateDescription");
            var model = new ProjectToDosModel()
            {
                Id      = project.Id,
                IdeaId  = idea.Id,
                Subject = idea.Subject,
                InsertResponsibleUsers = (from member in project.ProjectMembers
                                          select new SelectListItem()
                {
                    Value = member.UserObjectId,
                    Text = GetUserFullName(member.UserObjectId),
                }).ToList(),
                InsertMilestones = (from m in project.MileStones
                                    select new SelectListItem()
                {
                    Value = m.Id,
                    Text = m.DateString,
                }).ToList(),
                IsEditable            = IsProjectEditable(project, idea.IsClosed),
                IsCurrentUserInvolved = IsCurrentUserInvolved(project),
                IsPendingConfirmation = IsPendingConfirmation(project),
                IsJoinable            = IsJoinable(project, idea),
                StateDescription      = idea.StateDescription,
                State = IdeaStatesResource.ResourceManager.GetString(idea.ActualState.ToString())
            };

            AddEmptyUser(model.InsertResponsibleUsers);
            model.InsertMilestones.Insert(0, new SelectListItem()
            {
                Text  = CommonStrings.Unassigned,
                Value = string.Empty
            });

            model.ToDos         = FilterToDos(project, project.ToDos, model.IsEditable, null);
            model.FinishedToDos = FilterFinishedToDos(project, project.ToDos, model.IsEditable, null);

            model.MileStones = (from ms in project.MileStones
                                where !ms.ToDos.Any() || ms.ToDos.Where(t => !t.FinishDate.HasValue).Any()
                                select new MileStoneModel()
            {
                ProjectId = project.Id,
                Date = ms.Date,
                Subject = ms.Subject,
                MileStoneId = ms.Id,
                IsLate = ms.Date <= DateTime.Now,
                ToDos = FilterToDos(project, ms.ToDos, model.IsEditable, ms.Id),
                FinishedToDos = FilterFinishedToDos(project, ms.ToDos, model.IsEditable, ms.Id),
                IsEditable = model.IsEditable
            }).ToList();

            model.FinishedMileStones = (from ms in project.MileStones
                                        where ms.ToDos.Any() && !ms.ToDos.Where(t => !t.FinishDate.HasValue).Any()
                                        select new MileStoneModel()
            {
                Date = ms.Date,
                Subject = ms.Subject,
                MileStoneId = ms.Id,
                FinishedToDos = FilterFinishedToDos(project, ms.ToDos, model.IsEditable, ms.Id),
                ToDos = new List <ToDoModel>(),
                IsEditable = model.IsEditable
            }).ToList();

            return(model);
        }