public async Task <ActionResult> Update(int id)
        {
            if (id > 0)
            {
                var assignment = await db.GetAssignmentIdAsync(id);

                if (assignment != null)
                {
                    AssignmentUpdateViewModel viewModel = new AssignmentUpdateViewModel(assignment.Id, assignment.Name, assignment.Deadline,
                                                                                        assignment.StartDate, assignment.StatusId, assignment.ProjectId, assignment.Decription, assignment.Progress);
                    if ((assignment.Developers.Count > 0) || (assignment.AssingToNone == true && assignment.ProjectId != null && assignment.Project.ProjectManagerId != null))
                    {
                        var developer = db.GetDeveloperWithTask(assignment);
                        ViewBag.Developers = await db.IncludeDevelopersDropdown(assignment.AssingToNone, developer);

                        ViewBag.Projects = await db.IncludeProjectsDropdown(viewModel.ProjectId);

                        ViewBag.Statuses = await db.IncludeStatusesDropdown(viewModel.StatusId);

                        return(View(viewModel));
                    }
                    var projectManager = await db.GetProjectManagerWithTask(viewModel.ProjectId);

                    ViewBag.Statuses = await db.IncludeStatusesDropdown(viewModel.StatusId);

                    viewModel.ProjectManagerId = projectManager == null ? "None" : projectManager.Id;
                    return(View(viewModel));
                }
            }
            return(new HttpStatusCodeResult(HttpStatusCode.NotFound));
        }
Beispiel #2
0
        public async Task <Assignment> UpdateMapDataForDeveloper(AssignmentUpdateViewModel viewModel)
        {
            var assignment = await db.Assignments.Include(x => x.Developers).
                             Include(x => x.Project).SingleOrDefaultAsync(x => x.Id == viewModel.Id);

            var project = await db.Projects.SingleOrDefaultAsync(x => x.Id == viewModel.ProjectId);

            var status = await db.Statuses.SingleOrDefaultAsync(x => x.Id == viewModel.StatusId);

            assignment.Deadline   = viewModel.Deadline;
            assignment.Decription = viewModel.Description;
            var developer = assignment.AssingToNone == true ? await db.Users.SingleOrDefaultAsync(x => x.Id == viewModel.DeveloperId) :  GetDeveloperWithTask(assignment);

            assignment.Name      = viewModel.AssigmentName;
            assignment.Progress  = viewModel.Progress;
            assignment.Project   = project;
            assignment.ProjectId = viewModel.ProjectId;
            assignment.Status    = status;
            assignment.StatusId  = viewModel.StatusId;
            assignment.StartDate = viewModel.StartDate;
            if (developer != null && assignment.AssingToNone == false && viewModel.DeveloperId != "None")
            {
                try
                {
                    await UpdateAssigmentsAndDevelopers(viewModel.DeveloperId, assignment, developer);
                }
                catch (Exception e)
                {
                    throw e;
                }
                return(assignment);
            }
            if (viewModel.DeveloperId == "None")
            {
                if (developer != null)
                {
                    assignment.Developers.Remove(developer);
                    developer.Assignments.Remove(assignment);
                }
                assignment.AssingToNone = true;
                return(assignment);
            }
            assignment.Developers.Add(developer);
            developer.Assignments.Add(assignment);
            assignment.AssingToNone = false;
            return(assignment);
        }
Beispiel #3
0
        public async Task <Assignment> UpdateMapDataForProjectManager(AssignmentUpdateViewModel viewModel)
        {
            var assignment = await db.Assignments.Include(x => x.Project).Include(x => x.Project.ProjectManager).Include(x => x.Project.Tasks)
                             .SingleAsync(x => x.Id == viewModel.Id);

            var project = await db.Projects.SingleOrDefaultAsync(x => x.Id == viewModel.ProjectId);

            var status = await db.Statuses.SingleOrDefaultAsync(x => x.Id == viewModel.StatusId);

            assignment.Deadline   = viewModel.Deadline;
            assignment.Decription = viewModel.Description;
            var projectManager = viewModel.ProjectManagerId == "None" ? null : project.ProjectManager;

            assignment.AssingToNone = viewModel.ProjectManagerId == "None" ? true : false;
            assignment.Name         = viewModel.AssigmentName;
            assignment.Progress     = viewModel.Progress;
            assignment.ProjectId    = viewModel.ProjectId;
            assignment.Project      = project;
            assignment.Status       = status;
            assignment.StatusId     = status.Id;
            assignment.Project.Tasks.Add(assignment);
            return(assignment);
        }
        public async Task <ActionResult> Update(AssignmentUpdateViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                if (viewModel.DeveloperId != null)
                {
                    var assignmentForDeveloper = await db.UpdateMapDataForDeveloper(viewModel);

                    db.UpdateAssignment(assignmentForDeveloper);
                    await db.SaveChangesAsync();

                    return(Json(new { success = true, message = "Updated Successfully" }, JsonRequestBehavior.AllowGet));
                }
                var assignmentForProjectManager = await db.UpdateMapDataForProjectManager(viewModel);

                db.UpdateAssignment(assignmentForProjectManager);
                await db.SaveChangesAsync();

                return(Json(new { success = true, message = "Updated Successfully" }, JsonRequestBehavior.AllowGet));
            }

            return(new HttpStatusCodeResult(HttpStatusCode.NotModified));
        }