// GET: Tickets public ActionResult Index() { var userId = User.Identity.GetUserId(); TicketIndexViewModel model = new TicketIndexViewModel(); UserRolesHelper urHelper = new UserRolesHelper(); var alltickets = db.Tickets.Include(t => t.AssignedUser) .Include(t => t.CreatorUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); model.AdminTickets = alltickets.ToList(); if (User.IsInRole("ProjectManager")) { var tickets = db.Projects.Where(p => p.PMID == userId).SelectMany(p => p.Tickets) .Include(t => t.AssignedUser) .Include(t => t.CreatorUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); model.PMTickets = tickets.ToList(); ViewBag.PMAmount = model.PMTickets.Count(); } if (User.IsInRole("Developer")) { var tickets = db.Tickets.Where(t => t.AssignedUserId == userId) .Include(t => t.AssignedUser) .Include(t => t.CreatorUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); model.DevTickets = tickets.ToList(); ViewBag.DevAmount = model.DevTickets.Count(); } if (User.IsInRole("Submitter")) { var tickets = db.Tickets.Where(t => t.CreatorUserId == userId) .Include(t => t.AssignedUser) .Include(t => t.CreatorUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); model.SubTickets = tickets.ToList(); ViewBag.SubAmount = model.SubTickets.Count(); } return(View(model)); }
public ActionResult DevProjIndex() { //find the id of the current user string devUserId = User.Identity.GetUserId(); TicketIndexViewModel model = new TicketIndexViewModel(); //use roles helper to check for the roles ProjectsHelper phelper = new ProjectsHelper(); //user ProjectsHelper to get a list of projects the dev is on. List <Project> devProjects = phelper.ListUserProjects(devUserId).ToList(); //use linq with selectmany to get all tickets on each project. if (devProjects.Count() == 0) { return(RedirectToAction("Index")); } var devProjTickets = devProjects.SelectMany(t => t.Tickets).AsQueryable(); { var tickets = devProjTickets.Include(t => t.AssignedToUser) .Include(t => t.OwnerUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); //tickets = tickets.Where(t => t.Project.Id == phelper.ListUserProjects(devUserId).id; model.DevTickets = tickets.ToList(); } return(View(model)); }
public ActionResult Index(TicketIndexViewModel vm) { if (vm.IsValid) { Session["TicketViewModel"] = vm; if (User == null || !User.Identity.IsAuthenticated) { return(RedirectToAction("Login")); } var holder = new UserProfile() { ID = Convert.ToInt32(Membership.GetUser().ProviderUserKey)//error wordt opgevangen in de view, dit is een vs fout, als je je aanmeld, stopt met debuggen en opnieuw start ben je nog aangemeld maar geef dit een error. }; if (new Ticket() { Amount = vm.Amount, Type = vm.TicketType, TicketHolderProfile = holder }.Insert()) { Festival.SingleFestival.Tickets = Ticket.GetTickets(); return(RedirectToAction("Index")); } } return(View("Index")); }
public ActionResult UserTicketsIndex() { //find the id of the current user var userId = User.Identity.GetUserId(); TicketIndexViewModel model = new TicketIndexViewModel(); //use roles helper to check for the roles UserRolesHelper helper = new UserRolesHelper(); if (User.IsInRole("Admin")) { var tickets = db.Tickets.Include(t => t.AssignedToUser) .Include(t => t.OwnerUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); model.AdminTickets = tickets.ToList(); } if (User.IsInRole("Developer")) { var tickets = db.Tickets.Include(t => t.AssignedToUser) .Include(t => t.OwnerUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType) //.Include(t => t.ProjectId) ; tickets = tickets.Where(s => s.AssignedToUserId == userId); model.DevTickets = tickets.ToList(); } if (User.IsInRole("ProjectManager")) { var tickets = db.Tickets.Include(t => t.AssignedToUser) .Include(t => t.OwnerUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); tickets = tickets.Where(s => s.Project.PMID == userId); model.PMTickets = tickets.ToList(); } if (User.IsInRole("Submitter")) { var tickets = db.Tickets.Include(t => t.AssignedToUser) .Include(t => t.OwnerUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); tickets = tickets.Where(s => s.OwnerUserId == userId); model.SubTickets = tickets.ToList(); } return(View(model)); }
// GET: Tickets public ActionResult Index() { var userId = User.Identity.GetUserId(); TicketIndexViewModel model = new TicketIndexViewModel(); UserRolesHelper helper = new UserRolesHelper(); if (User.IsInRole("Admin")) { var tickets = db.Tickets.Include(t => t.AssignedToUser) .Include(t => t.OwnerUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); model.AdminTickets = tickets.ToList(); } if (User.IsInRole("ProjectManager")) { var proj = db.Projects; var myproj = proj.Where(p => p.PMID == userId); var tkts = myproj.SelectMany(t => t.Tickets); tkts.Include(t => t.AssignedToUser) .Include(t => t.OwnerUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); model.PMTickets = tkts.ToList(); } if (User.IsInRole("Developer")) { var tickets = db.Tickets.Where(t => t.AssignedToUserId == userId) .Include(t => t.AssignedToUser) .Include(t => t.OwnerUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); model.DevTickets = tickets.ToList(); } if (User.IsInRole("Submitter")) { var tickets = db.Tickets.Where(t => t.OwnerUserId == userId) .Include(t => t.AssignedToUser) .Include(t => t.OwnerUser) .Include(t => t.Project) .Include(t => t.TicketPriority) .Include(t => t.TicketStatus) .Include(t => t.TicketType); model.SubTickets = tickets.ToList(); } return(View(model)); }
// // GET: /Tickets/ public PartialViewResult Reserveer() { ViewBag.Type = new SelectList(TicketType.GetTypes().Where(type => type.AvailableTickets > 0), "ID", "Name"); TicketIndexViewModel vm = null; if (Session["TicketViewModel"] != null) { vm = (TicketIndexViewModel)Session["TicketViewModel"]; } else { vm = new TicketIndexViewModel(); } return(PartialView("ReserveerPartial", vm)); }
// GET: Tickets public ActionResult Index() { TicketIndexViewModel model = new TicketIndexViewModel(); var tickets = db.Tickets; var myTickets = new List <Ticket>(); var devTickets = new List <Ticket>(); if (User.IsInRole("Admin")) { myTickets = tickets.ToList(); } else if (User.IsInRole("ProjectManager")) { var userId = User.Identity.GetUserId(); var projects = db.Projects.Where(t => t.ProjectManagerId == userId).ToList(); myTickets = projects.SelectMany(t => t.Tickets).ToList(); } else if (User.IsInRole("Developer")) { var userId = User.Identity.GetUserId(); var user = db.Users.Find(userId); var projects = user.Projects.ToList(); myTickets = projects.SelectMany(t => t.Tickets).ToList(); devTickets = db.Tickets.Where(t => t.AssignedToUserId == userId).ToList(); } else if (User.IsInRole("Submitter")) { var userId = User.Identity.GetUserId(); var user = db.Users.Find(userId); myTickets = db.Tickets.Where(t => t.OwnerUserId == userId).ToList(); } model.MyTickets = myTickets; model.AssignedTickets = devTickets; return(View(model)); }
public static ProjectDetailsViewModel CreateNewViewModel(string currentUserId, Domain.Project project, ApplicationDbContext dbContext) { if (project == null) { throw new ArgumentNullException(nameof(project)); } try { return(new ProjectDetailsViewModel() { Id = project.Id == null ? throw new ArgumentNullException() : project.Id, Name = string.IsNullOrWhiteSpace(project.Name) ? throw new ArgumentNullException() : project.Name, Users = project.Users?.Select(user => HelperUserViewModel.CreateNewViewModel(user, dbContext)).ToList() ?? throw new ArgumentNullException(), TicketCount = project.Tickets?.Count ?? 0, Tickets = project.Tickets?.Select(ticket => TicketIndexViewModel.CreateNewViewModel(currentUserId, ticket)).ToList() ?? new List <TicketIndexViewModel>(), DateCreated = project.DateCreated == null ? throw new ArgumentNullException() : project.DateCreated, DateUpdated = project.DateUpdated, CurrentUserId = currentUserId, }); }
public IActionResult Index(string SortBy) { if (!Request.Cookies.ContainsKey("CurrentProject")) { return(RedirectToAction("Index", "Project")); } TicketIndexViewModel ticketIndexViewModel = new TicketIndexViewModel(); ticketIndexViewModel.Tickets = from t in _db.Ticket join u in _db.Users on t.AssignedTo equals u.Id into tu from u in tu.DefaultIfEmpty() where t.ProjectID == int.Parse(Request.Cookies["CurrentProject"]) select new ListTicketViewModel { Id = t.Id, Name = t.Name, Reported = t.ReportedDate.ToShortDateString(), Assigned = u.FirstName + " " + u.LastName, Due = t.DueDate.ToShortDateString(), Priority = t.Priority, Status = t.Status }; // Set switch logic for view ViewData["Name"] = String.IsNullOrEmpty(SortBy) ? "name_desc" : ""; ViewData["Priority"] = SortBy == "priority" ? "priority_desc" : "priority"; ViewData["Reported"] = SortBy == "reported" ? "reported_desc" : "reported"; ViewData["Assignment"] = SortBy == "assignment" ? "assignment_desc" : "assignment"; ViewData["Due"] = SortBy == "due" ? "due_desc" : "due"; ViewData["Status"] = SortBy == "status" ? "status_desc" : "status"; ViewData["LastSort"] = String.IsNullOrEmpty(SortBy) ? "name" : SortBy; // Sort data switch (SortBy) { case "name_desc": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Name); break; case "priority": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Priority); break; case "priority_desc": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Priority); break; case "reported": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Reported); break; case "reported_desc": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Reported); break; case "assignment": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Assigned); break; case "assignment_desc": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Assigned); break; case "due": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Due); break; case "due_desc": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Due); break; case "status": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Status); break; case "status_desc": ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderByDescending(t => t.Status); break; default: ticketIndexViewModel.Tickets = ticketIndexViewModel.Tickets.OrderBy(t => t.Name); break; } return(View(ticketIndexViewModel)); }
public static HomeIndexViewModel CreateNewViewModel( ApplicationUser applicationUser, ApplicationDbContext dbContext, int latestProjectIntakeLimit = 3, int latestCreatedTicketIntakeLimit = 3, int latestAssignedTicketIntakeLimit = 3) { if (applicationUser == null) { throw new ArgumentNullException(nameof(applicationUser)); } List <IdentityRole> roles = new UserRoleRepository(dbContext).GetUserRoles(applicationUser.Id); ProjectRepository projectRepository = new ProjectRepository(dbContext); List <ProjectIndexViewModel> latestProjects = projectRepository .GetUserProjects(applicationUser.Id)? .ToList() .OrderByDescending(project => project?.DateUpdated ?? project.DateCreated) .Take(latestProjectIntakeLimit) .Select(project => ProjectIndexViewModel.CreateNewViewModel(project)) .ToList() ?? new List <ProjectIndexViewModel>(); int numberOfCreatedTickets = 0; int numberOfAssignedTickets = 0; List <TicketIndexViewModel> latestCreatedTickets; List <TicketIndexViewModel> latestAssignedTickets; if (roles.Any(role => role.Name == nameof(UserRolesEnum.Submitter))) { //! get created tickets (Submitter) numberOfCreatedTickets = applicationUser.CreatedTickets?.Count ?? 0; latestCreatedTickets = applicationUser.CreatedTickets? .OrderByDescending(ticket => ticket?.DateUpdated ?? ticket.DateCreated) .Take(latestCreatedTicketIntakeLimit) .Select(ticket => TicketIndexViewModel.CreateNewViewModel(applicationUser.Id, ticket)) .ToList() ?? new List <TicketIndexViewModel>(); } else { //! if not (Submitter) latestCreatedTickets = new List <TicketIndexViewModel>(); } if (roles.Any(role => role.Name == nameof(UserRolesEnum.Developer))) { //! get assigned tickets (Developer) numberOfAssignedTickets = applicationUser.AssignedTickets?.Count ?? 0; latestAssignedTickets = applicationUser.AssignedTickets? .OrderByDescending(ticket => ticket?.DateUpdated ?? ticket.DateCreated) .Take(latestAssignedTicketIntakeLimit) .Select(ticket => TicketIndexViewModel.CreateNewViewModel(applicationUser.Id, ticket)) .ToList() ?? new List <TicketIndexViewModel>(); } else { //! if not (Developer) latestAssignedTickets = new List <TicketIndexViewModel>(); } TicketRepository ticketRepository = new TicketRepository(dbContext); try { return(new HomeIndexViewModel() { UserId = string.IsNullOrWhiteSpace(applicationUser.Id) ? throw new ArgumentNullException() : applicationUser.Id, DisplayName = string.IsNullOrWhiteSpace(applicationUser.DisplayName) ? throw new ArgumentNullException() : applicationUser.DisplayName, Email = string.IsNullOrWhiteSpace(applicationUser.Email) ? throw new ArgumentNullException() : applicationUser.Email, TotalProjectCount = projectRepository.GetUserProjects(applicationUser.Id)?.Count() ?? 0, LatestProjects = latestProjects?.Any() ?? false ? latestProjects : new List <ProjectIndexViewModel>(), Roles = (roles?.Any() ?? false) ? roles : new List <IdentityRole>(), TotalCreatedTicketCount = numberOfCreatedTickets, TotalAssignedTicketCount = numberOfAssignedTickets, LatestCreatedTickets = latestCreatedTickets, LatestAssignedTickets = latestAssignedTickets, AllProjectCount = projectRepository.GetAllProjects().Count(), //! NOTE: This depends on the table primary keys matching with the enum int value AllOpenTicketsCount = ticketRepository.GetAllTickets().Count(ticket => ticket.StatusId == (int)TicketStatusesEnum.Open), AllResovledTicketsCount = ticketRepository.GetAllTickets().Count(ticket => ticket.StatusId == (int)TicketStatusesEnum.Resolved), AllRejectedTicketsCount = ticketRepository.GetAllTickets().Count(ticket => ticket.StatusId == (int)TicketStatusesEnum.Rejected), }); }
public ActionResult Index(string whatTickets = "", string error = "") { string userId = User.Identity.GetUserId(); ApplicationUser currentUser = UserRepository.GetUserById(userId); if (!string.IsNullOrWhiteSpace(error)) { ModelState.AddModelError("", error); } if (currentUser == null) { return(RedirectToAction(nameof(HomeController.Index), new { controller = "Home" })); } List <TicketIndexViewModel> model; if (!string.IsNullOrWhiteSpace(whatTickets)) { const string assigned = "Assigned"; const string created = "Created"; if (whatTickets.ToLower() == assigned.ToLower()) { ViewBag.whatTickets = assigned; model = TicketRepository.GetUserAssignedTickets(userId) .ToList() //.Where(ticket => TicketRepository.CanUserViewTicket(userId, ticket.Id)) // shouldn't need to check, if the user is assigned to the ticket .Select(ticket => TicketIndexViewModel.CreateNewViewModel(userId, ticket)) .ToList(); } else if (whatTickets.ToLower() == created.ToLower()) { ViewBag.whatTickets = created; model = TicketRepository.GetUserCreatedTickets(userId) .ToList() //.Where(ticket => TicketRepository.CanUserViewTicket(userId, ticket.Id)) // shouldn't need to check, if the user created the ticket .Select(ticket => TicketIndexViewModel.CreateNewViewModel(userId, ticket)) .ToList(); } else //if (whatTickets.ToLower() == "all") // defaults to this else block { ... } { model = TicketRepository.GetAllTickets() .ToList() .Where(ticket => TicketRepository.CanUserViewTicket(userId, ticket.Id)) .Select(ticket => { bool isWatching = TicketNotificationRepository.IsUserSubscribedToTicket(userId, ticket.Id); return(TicketIndexViewModel.CreateNewViewModel(userId, ticket, isWatching)); }).ToList(); } } else { model = TicketRepository.GetAllTickets() .ToList() .Where(ticket => TicketRepository.CanUserViewTicket(userId, ticket.Id)) .Select(ticket => { bool isWatching = TicketNotificationRepository.IsUserSubscribedToTicket(userId, ticket.Id); return(TicketIndexViewModel.CreateNewViewModel(userId, ticket, isWatching)); }).ToList(); } return(View(model)); }
// GET: Tickets public ActionResult Index() { var model = new TicketIndexViewModel(); return(View(model)); }