コード例 #1
0
        public async Task <ActionResult> GetArchivedScheduleVersionModal(int?id, int scheduleVersion = 1)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // load project from db, confirm that it's not null
            UserProjectsRepository repo      = new UserProjectsRepository();
            UserProjectViewModel   viewModel = await repo.GetUserProjectWithSchedule(id, scheduleVersion);

            if (viewModel == null)
            {
                return(HttpNotFound());
            }

            // authorize user
            ApplicationUser user = await ReturnCurrentUserAsync();

            if (viewModel.ApplicationUserID == user.Id)
            {
                return(PartialView("_ArchivedScheduleVersion.Modal.GanttContainer", viewModel));
            }

            Danger(unauthorizedAccessMessage, true);
            return(RedirectToAction("Index"));
        }
コード例 #2
0
        // GET: UserProjects/Delete/5
        public async Task <ActionResult> Delete(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // load project from db, confirm that it's not null
            UserProject userProject = await db.UserProjects.Where(p => p.ID == id).FirstOrDefaultAsync();

            if (userProject == null)
            {
                return(HttpNotFound());
            }

            // authorize user
            ApplicationUser user = await ReturnCurrentUserAsync();

            if (userProject.ApplicationUserID == user.Id)
            {
                UserProjectViewModel viewModel = new UserProjectViewModel();
                viewModel.InjectFrom(userProject);
                return(View(viewModel));
            }
            Danger(unauthorizedAccessMessage, true);
            return(RedirectToAction("Index"));
        }
コード例 #3
0
        public async Task <ActionResult> Edit([Bind(Include = "ID,ApplicationUserID,Name,Description,Comments,CreatedAt,ModifiedAt,ProjectStatusID")] UserProjectViewModel viewModel)
        {
            if (ModelState.IsValid)
            {
                var userProject = db.UserProjects.Find(viewModel.ID);
                // authorize user
                ApplicationUser user = await ReturnCurrentUserAsync();

                if (userProject.ApplicationUserID == user.Id)
                {
                    userProject.InjectFrom(viewModel);
                    userProject.ModifiedAt      = DateTime.Now;
                    db.Entry(userProject).State = EntityState.Modified;
                    await db.SaveChangesAsync();

                    return(RedirectToAction("Details", new { id = viewModel.ID }));
                }
                else
                {
                    Danger(unauthorizedAccessMessage, true);
                    return(RedirectToAction("Index"));
                }
            }
            ViewBag.ProjectStatusID = new SelectList(await db.ProjectStatuses.ToListAsync(), "ID", "Description", viewModel.ProjectStatusID);
            return(View(viewModel));
        }
コード例 #4
0
        // GET: UserProjects/Details/5
        public async Task <ActionResult> Details(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // load project from db, confirm that it's not null
            UserProjectsRepository repo      = new UserProjectsRepository();
            UserProjectViewModel   viewModel = await repo.GetUserProjectWithSchedule(id, 1); // VersionNum = 1 for current schedule version

            if (viewModel == null)
            {
                return(HttpNotFound());
            }

            // authorize user
            ApplicationUser user = await ReturnCurrentUserAsync();

            if (viewModel.ApplicationUserID == user.Id)
            {
                return(View(viewModel));
            }

            Danger(unauthorizedAccessMessage, true);
            return(RedirectToAction("Index"));
        }
コード例 #5
0
        public async Task <ActionResult> EditScheduleFS(UserProjectViewModel viewModel)
        {
            ProjectScheduleVersionsRepository repo = new ProjectScheduleVersionsRepository();

            if (await repo.SaveClonedProjectScheduleVersion(viewModel.ProjectScheduleVersion))
            {
                Success("Project schedule updated successfully.", true);
                return(RedirectToAction("Details", new { id = viewModel.ID }));
            }
            Warning("Update failed.", true);
            return(RedirectToAction("Details", new { id = viewModel.ID }));
        }
コード例 #6
0
        internal async Task <UserProjectViewModel> GetUserProject(int?id)
        {
            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                // load user project and populate view model
                var userProject = await db.UserProjects.Where(p => p.ID == id).Include(p => p.ProjectStatus).FirstOrDefaultAsync();

                UserProjectViewModel viewModel = new UserProjectViewModel();
                viewModel.InjectFrom(userProject);

                return(viewModel);
            }
        }
コード例 #7
0
ファイル: TicketController.cs プロジェクト: jzca/BugTracker
        public ActionResult AssignTicketManagement(int?id)
        {
            if (!id.HasValue)
            {
                return(RedirectToAction(nameof(TicketController.Index)));
            }

            var ticket = AppHepler.GetTicketById(id);

            if (ticket == null)
            {
                return(RedirectToAction(nameof(TicketController.Index)));
            }

            var allDevs = DbContext.Users.Where(p => p.Roles.Any(b => b.RoleId ==
                                                                 DbContext.Roles.Where(m => m.Name == "Developer").Select(n => n.Id).FirstOrDefault()))

                          .Select(n => new UserProjectViewModel
            {
                Id       = n.Id,
                UserName = n.UserName
            }).ToList();

            var repeated = new UserProjectViewModel();

            repeated = allDevs.Where(m => m.Id == ticket.AssigneeId).FirstOrDefault();
            allDevs.Remove(repeated);

            var model = new AssignTicketViewModel();

            model.MyUser = new UserProjectViewModel();

            model.TicketId    = ticket.Id;
            model.TicketTitle = ticket.Title;
            if (ticket.AssigneeId != null || ticket.Assignee != null)
            {
                model.MyUser.Id       = ticket.AssigneeId;
                model.MyUser.UserName = ticket.Assignee.UserName;
            }
            else
            {
                model.MyUser.Id = "NoAssigneeId";
            }


            model.Devs.AddRange(allDevs);

            return(View(model));
        }
コード例 #8
0
        internal async Task <IEnumerable <UserProjectViewModel> > GetUserProjectList(string applicationUserID)
        {
            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                var userProjects = await db.UserProjects.Where(p => p.CreatedByUser.Id == applicationUserID).Include(p => p.ProjectStatus).ToListAsync();

                List <UserProjectViewModel> viewModel = new List <UserProjectViewModel>();
                foreach (UserProject p in userProjects)
                {
                    UserProjectViewModel v = new UserProjectViewModel();
                    v.InjectFrom(p);
                    viewModel.Add(v);
                }
                return(viewModel);
            }
        }
コード例 #9
0
        internal async Task <UserProjectViewModel> GetUserProjectWithSchedule(int?id, int versionNum)
        {
            using (ApplicationDbContext db = new ApplicationDbContext())
            {
                // load user project and populate view model
                var userProject = await db.UserProjects.Where(p => p.ID == id).Include(p => p.ProjectStatus).FirstOrDefaultAsync();

                UserProjectViewModel viewModel = new UserProjectViewModel();
                viewModel.InjectFrom(userProject);

                // load project schedule and populate view model
                var projectSchedule = await db.ProjectScheduleVersions.Where(s => s.ProjectID == id && s.VersionNum == versionNum).FirstOrDefaultAsync();

                viewModel.ProjectScheduleVersion = projectSchedule;

                return(viewModel);
            }
        }
コード例 #10
0
        // GET: UserProjects/EditScheduleFS/5
        public async Task <ActionResult> EditScheduleFS(int?id, bool deleteAbandonedSchedule = false)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // load project from db, confirm that it's not null
            UserProjectsRepository repo      = new UserProjectsRepository();
            UserProjectViewModel   viewModel = await repo.GetUserProject(id);

            if (viewModel == null)
            {
                return(HttpNotFound());
            }

            // authorize user
            ApplicationUser user = await ReturnCurrentUserAsync();

            if (viewModel.ApplicationUserID == user.Id)
            {
                ProjectScheduleVersionsRepository    scheduleRepo = new ProjectScheduleVersionsRepository();
                Tuple <ProjectScheduleVersion, bool> newSchedule  = await scheduleRepo.CloneProjectScheduleVersionForEdit(viewModel.ID);

                if (deleteAbandonedSchedule)
                {
                    return(RedirectToAction("RemoveProjectScheduleVersion", new { id = newSchedule.Item1.ID }));
                }
                viewModel.ProjectScheduleVersion = newSchedule.Item1;
                viewModel.FullScreen             = true;
                viewModel.ReadOnly          = false;
                viewModel.AbandonedSchedule = newSchedule.Item2;
                return(View(viewModel));
            }
            else
            {
                Danger(unauthorizedAccessMessage, true);
                return(RedirectToAction("Index"));
            }
        }
コード例 #11
0
        public async Task <ActionResult> RemoveProjectScheduleVersion(int?id)
        {
            if (id == null)
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
            }

            // load schedule from db, confirm that it's not null
            ProjectScheduleVersionsRepository schedulesRepo = new ProjectScheduleVersionsRepository();
            var schedule = await schedulesRepo.FindProjectScheduleVersion(id.Value);

            if (schedule == null)
            {
                return(HttpNotFound());
            }

            // load project from db, confirm that it's not null
            UserProjectsRepository projectsRepo = new UserProjectsRepository();
            UserProjectViewModel   project      = await projectsRepo.GetUserProject(schedule.ProjectID);

            if (project == null)
            {
                return(HttpNotFound());
            }

            // authorize user
            ApplicationUser user = await ReturnCurrentUserAsync();

            if (project.ApplicationUserID == user.Id)
            {
                if (await schedulesRepo.RemoveProjectScheduleVersion(id.Value))
                {
                    return(RedirectToAction("EditScheduleFS", new { id = project.ID }));
                }
            }
            Danger("Error: Unable to abandon unsaved changes.");
            return(RedirectToAction("Details", new { id = project.ID }));
        }
コード例 #12
0
ファイル: ProjectController.cs プロジェクト: jzca/BugTracker
        public ActionResult AssignProjectManagement(int?id)
        {
            if (!id.HasValue)
            {
                return(RedirectToAction(nameof(ProjectController.Index)));
            }

            var allUsers = AppHepler.GetAllUsers().Select(n => new UserProjectViewModel
            {
                Id       = n.Id,
                UserName = n.UserName
            }).ToList();

            var project = AppHepler.GetProjectById(id);

            var repeated = new UserProjectViewModel();

            foreach (var userRm in project.Users)
            {
                repeated = allUsers.Where(m => m.Id == userRm.Id).FirstOrDefault();
                allUsers.Remove(repeated);
            }

            if (project == null)
            {
                return(RedirectToAction(nameof(ProjectController.Index)));
            }

            var model = new AssignProjectViewModel();

            model.ProjectId   = project.Id;
            model.ProjectName = project.Name;
            model.MyUsers.AddRange(project.Users
                                   .Select(n => new UserProjectViewModel
            {
                Id       = n.Id,
                UserName = n.UserName
            }).ToList());

            //if (model.UserNames.Any())
            //{
            //    var listUserNames = model.UserNames.ToList();
            //    foreach (var un in listUserNames.ToList())
            //    {
            //        var nameToRm = project.Users
            //            .Where(p => p.UserName == un)
            //            .Select(n => new UserProjectViewModel
            //            {
            //                Id = n.Id,
            //                UserName = n.UserName
            //            }).FirstOrDefault();
            //        if (nameToRm != null)
            //        {
            //            allUsers.Remove(nameToRm);
            //            listUserNames.Remove(nameToRm.UserName);
            //        }
            //    }
            //}


            model.Users.AddRange(allUsers);

            return(View(model));
        }