public async Task <IActionResult> Edit(int ticketId) { var ticket = await ticketRepository.GetTicketByIdAsync(ticketId); var projects = await projectRepository.AllProjects .Select(p => new SelectListItem { Value = p.Id.ToString(), Text = p.Name }) .ToListAsync(); var statuses = await ticketRepository.AllTicketStatuses .Select(p => new SelectListItem { Value = p.Id.ToString(), Text = p.Name }) .ToListAsync(); var ctvm = new EditTicketViewModel { Ticket = ticket, Projects = projects, Statuses = statuses }; return(View(ctvm)); }
public ActionResult EditAsAdminOrProjectManager(int?id) { if (!id.HasValue) { return(RedirectToAction(nameof(ProjectController.Index))); } var userId = User.Identity.GetUserId(); var ticket = DbContext.Tickets .FirstOrDefault(p => p.ID == id); if (ticket == null) { return(RedirectToAction(nameof(ProjectController.Index))); } var project = DbContext.Projects .FirstOrDefault(p => p.ID == ticket.ProjectID); var model = new EditTicketViewModel { Title = ticket.Title, Description = ticket.Description, ID = ticket.ID, ProjectID = ticket.ProjectID, Type = DbContext.TicketTypes.FirstOrDefault(t => t.ID == ticket.TypeID).Name, Priority = DbContext.TicketPriorities.FirstOrDefault(t => t.ID == ticket.PriorityID).Name, Status = DbContext.TicketStatuses.FirstOrDefault(t => t.ID == ticket.StatusID).Name }; DbContext.SaveChanges(); return(View("Edit", model)); //return RedirectToAction("FullProjectBySlug", "Project", new { slug = project.Slug }); }
public ActionResult Edit(EditTicketViewModel vm) { if (ModelState.IsValid) { var selectedTicket = _ticketRepository.Get(vm.Id); if (selectedTicket != null) { selectedTicket.TicketCategoryId = vm.TicketCategoryId; selectedTicket.TicketSubCategoryId = vm.TicketSubCategoryId; selectedTicket.Title = vm.Title; selectedTicket.Description = vm.Description; selectedTicket.DueDate = vm.DueDate; selectedTicket.UpdatedByUserId = WebUser.Id; _ticketRepository.Update(selectedTicket); _unitOfWork.Commit(); return(RedirectToAction("Index")); } } ViewBag.TicketCategoryId = new SelectList(_ticketCategoryRepository.GetAll(), "Id", "Title", vm.TicketCategoryId); ViewBag.TicketSubCategoryId = new SelectList(_ticketSubCategoryRepository.GetAll(), "Id", "Title", vm.TicketSubCategoryId); return(View(vm)); }
public ActionResult Edit(int?id) { var model = new EditTicketViewModel(); userId = User.Identity.GetUserId(); var currentTicket = bugTrackerHelper.GetCurrentTicketById(id.Value); model = Mapper.Map <EditTicketViewModel>(currentTicket); model.Types = bugTrackerHelper.GetDropDownListTypes(); model.Priorities = bugTrackerHelper.GetDropDownListPriorities(); if (User.IsInRole("Admin") || User.IsInRole("ProjectManager")) { model.Statuses = bugTrackerHelper.GetDropDownListStatuses(); model.Projects = bugTrackerHelper.GetDropDownListProjects(); } else { model.Projects = bugTrackerHelper.GetDropDownListUsersProjectsEdit(userId, currentTicket.ProjectId); } return(View(model)); }
public ActionResult Edit(EditTicketViewModel model) { var ticket = db.Tickets.Find(model.Id); if (ModelState.IsValid) { ticket.Title = model.Title; ticket.Description = model.Description; ticket.Updated = DateTimeOffset.Now; ticket.TicketTypeId = model.TicketTypeId; ticket.TicketPriorityId = model.TicketPriorityId; ticket.TicketStatusId = model.TicketStatusId; var oldTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id); db.SaveChanges(); HistoryHelper helper = new HistoryHelper(); var newTicket = db.Tickets.AsNoTracking().FirstOrDefault(t => t.Id == ticket.Id); var userId = User.Identity.GetUserId(); helper.UpdateHistory(oldTicket, newTicket, userId); NotifManager.ManageTicketNotifs(oldTicket, newTicket); return(RedirectToAction("Details", "Tickets", new { id = ticket.Id })); } ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId); ViewBag.TicketStatusId = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId); ViewBag.TicketTypeId = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId); return(View(model)); }
public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Ticket ticket = db.Tickets.Find(id); if (ticket == null) { return(HttpNotFound()); } if (ticket.Status == TicketStatus.Closed) { return(RedirectToActionPermanent("Closed", new { id = ticket.TicketId })); } EditTicketViewModel model = new EditTicketViewModel { Id = ticket.TicketId, Priority = ticket.Priority, Status = ticket.Status, IncidentSolution = ticket.IncidentSolution, DueDate = ticket.DueDate, ResultionDate = ticket.ResultionDate, }; return(View(model)); }
public ActionResult EditTicket(int id, EditTicketViewModel collection) { try { using (var context = TicketDbContext.Create()) { Ticket ticket = new Ticket(); ticket = context.Tickets.FirstOrDefault(x => x.TicketId == id); if (null == ticket) { return(new HttpNotFoundResult("Specjalnie tu trafiłeś?")); } ticket.TypeOfTicket = collection.TypeOfTicket; ticket.StatusOfTicket = collection.StatusOfTicket; context.SaveChanges(); } return(RedirectToAction("ManageTicket")); } catch { return(View()); } }
public ActionResult Edit(int id) { var ticket = _ticketRepository.Get(id); var vm = new EditTicketViewModel(ticket); ViewBag.TicketCategoryId = new SelectList(_ticketCategoryRepository.GetAll(), "Id", "Title", ticket.TicketCategoryId); ViewBag.TicketSubCategoryId = new SelectList(_ticketSubCategoryRepository.GetAll(), "Id", "Title", ticket.TicketSubCategoryId); ViewBag.AssignedToUserId = new SelectList(_userRepository.GetAllBy(u => u.Id != 1 && u.EmployeeStatus != EmployeeStatus.Ex, "Person"), "Id", "Person.Name", ticket.AssignedToUserId); return(CheckForNullAndExecute(ticket, () => View(vm))); }
public ActionResult Create(EditTicketViewModel formData) { int projectID = formData.ID; var userId = User.Identity.GetUserId(); var projectUser = DbContext.Users.Any(u => u.Projects.Any(p => p.ID == projectID) && u.Id == userId); if (projectUser == false) { return(View()); } formData.Status = "Open"; return(Save(null, formData)); }
public ActionResult Show(string ticketIdentifier) { if (string.IsNullOrWhiteSpace(ticketIdentifier)) { TempData.AddDangerToast("You must provide the ticket identifier to display. Please try again."); return(RedirectToAction("Index", "Tickets")); } Ticket ticket = db.Tickets.ToList().FirstOrDefault(t => t.GetTicketIdentifier() == ticketIdentifier); if (ticket == null) { TempData.AddDangerToast("We were unable to locate this ticket. Please try again."); return(RedirectToAction("Index", "Tickets")); } if (!_permissionsHelper.CanViewTicket(User, ticket.Id)) { TempData.AddDangerToast("You are not allowed to view this resource."); return(RedirectToAction("Index", "Tickets")); } ProjectWorkflow parentProjWorkflow = ticket.ParentProject.ActiveWorkflow; List <ApplicationUser> solvers = null; if (User.Identity.GetUserId() == ticket.ParentProject.ProjectManagerId || User.IsInRole("ServerAdmin")) { solvers = ticket.ParentProject.GetSolverMembers(); } List <TicketStatus> availStatuses = null; if (ticket.Permissions(User).CanUpdateTicketStatus) { availStatuses = parentProjWorkflow.GetAvailableStatuses(ticket.Id, User, db); } var viewModel = new EditTicketViewModel() { ParentProject = ticket.ParentProject, Reporter = ticket.Reporter, PrioritySelections = db.TicketPriorityTypes.ToDictionary(tp => tp.Name, tp => tp.Id), AvailableTicketTypes = db.TicketTypes.ToList(), CurrentTicket = ticket, AvailableSolvers = solvers, AvailableStatuses = availStatuses }; return(View(viewModel)); }
public ActionResult Edit(string ticketIdentifier) { if (string.IsNullOrWhiteSpace(ticketIdentifier)) { TempData.AddDangerToast("We were unable to locate a ticket with this identifier."); return(RedirectToAction("Index", "Projects")); } Ticket ticket = db.Tickets.ToList().FirstOrDefault(t => t.GetTicketIdentifier() == ticketIdentifier); if (ticket == null) { TempData.AddDangerToast("We were unable to locate a ticket with this identifier."); return(RedirectToAction("Index", "Projects")); } if (!_permissionsHelper.CanEditTicket(User, ticket.Id)) { TempData.AddDangerToast("You are not allowed to view this resource / perform this action."); return(RedirectToAction("Index", "Home")); } ProjectWorkflow parentProjWorkflow = ticket.ParentProject.ActiveWorkflow; List <ApplicationUser> solvers = null; if (_permissionsHelper.IsProjectManager(User, ticket.ParentProjectId) || User.IsInRole("ServerAdmin")) { solvers = ticket.ParentProject.GetSolverMembers(); } List <TicketStatus> availStatuses = null; if ((_permissionsHelper.IsUserStaff(User) && parentProjWorkflow.CanStaffSetStatusOnInteract) || (_permissionsHelper.IsTicketOwner(User, ticket.Id) && parentProjWorkflow.CanTicketOwnerSetStatusOnInteract)) { availStatuses = parentProjWorkflow.GetAvailableStatuses(ticket.Id, User, db); } var viewModel = new EditTicketViewModel() { ParentProject = ticket.ParentProject, Reporter = db.Users.Find(User.Identity.GetUserId()), PrioritySelections = db.TicketPriorityTypes.ToDictionary(tp => tp.Name, tp => tp.Id), AvailableTicketTypes = db.TicketTypes.ToList(), AvailableStatuses = availStatuses, CurrentTicket = ticket, AvailableSolvers = solvers }; return(View(viewModel)); }
public ActionResult Update(int projectId, EditTicketViewModel model) { if (ModelState.IsValid) { var ticket = db.Tickets.Where(t => t.Project.ID == projectId).FirstOrDefault(t => t.ID == model.ID); model.UpdateTicket(ticket); db.Entry(ticket).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } // something went wrong! return(View(model)); }
public ActionResult Edit(int id) { var ticket = _context.Tickets.SingleOrDefault(t => t.Id == id); var projectId = ticket.ProjectId; var project = _context.Projects.SingleOrDefault(p => p.Id == projectId); var viewModel = new EditTicketViewModel { Project = project, Ticket = ticket, TicketTypes = _context.TicketTypes.ToList(), TicketPriorities = _context.TicketPriorities.ToList() }; return(View(viewModel)); }
public ActionResult Edit(int id, EditTicketViewModel model) { if (ModelState.IsValid) { Ticket ticket = db.Tickets.Find(id); if (ticket == null) { return(HttpNotFound()); } ticket.Priority = model.Priority; ticket.IncidentSolution = model.IncidentSolution; ticket.Status = TicketStatus.InProgress; ticket.ResultionDate = model.ResultionDate; if (model.Priority == TicketPriority.Critical) { ticket.DueDate = AddBusinessDays(ticket.CreationDate, 1); } if (model.Priority == TicketPriority.High) { ticket.DueDate = AddBusinessDays(ticket.CreationDate, 3); } if (model.Priority == TicketPriority.Medium) { ticket.DueDate = AddBusinessDays(ticket.CreationDate, 5); } if (model.Priority == TicketPriority.Low) { ticket.DueDate = AddBusinessDays(ticket.CreationDate, 7); } if (!(model.Priority == TicketPriority.NotSet)) { ticket.Status = TicketStatus.InProgress; } if (!(model.IncidentSolution == null)) { ticket.Status = TicketStatus.Closed; ticket.ResultionDate = DateTime.Now; } db.Entry(ticket).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(model)); }
// GET: Tickets/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Ticket ticket = db.Tickets.Find(id); if (ticket == null) { return(HttpNotFound()); } EditTicketViewModel model = new EditTicketViewModel(ticket); return(View(model)); }
public ActionResult Edit(int?id, EditTicketViewModel formData) { var ticket = bugTrackerHelper.GetCurrentTicketById(id.Value); ticket.Title = formData.Title; ticket.Description = formData.Description; ticket.ProjectId = formData.ProjectId; ticket.TicketTypeId = formData.TicketTypeId; ticket.TicketPriorityId = formData.TicketPriorityId; ticket.DateUpdated = DateTime.Now; if (User.IsInRole("Admin") || User.IsInRole("ProjectManager")) { ticket.TicketStatusId = formData.TicketStatusId; } DbContext.SaveChanges(); return(RedirectToAction(nameof(TicketController.AllTickets))); }
/// <summary> /// This action informs IT staff that ticket in closed and cannot be edited. /// </summary> /// <param name="id">Ticket Id as a parameter</param> /// <returns></returns> public ActionResult Closed(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Ticket ticket = db.Tickets.Find(id); if (ticket == null) { return(HttpNotFound()); } var model = new EditTicketViewModel { Id = ticket.TicketId, ResultionDate = ticket.ResultionDate, }; return(View(model)); }
public ActionResult Create(int?id) { if (id == null) { return(RedirectToAction(nameof(ProjectController.Index))); } int projectID = id.GetValueOrDefault(); var userId = User.Identity.GetUserId(); var projectUser = DbContext.Users.Any(u => u.Projects.Any(p => p.ID == projectID) && u.Id == userId); if (projectUser == false) { return(View()); } var ticket = new EditTicketViewModel(); ticket.ProjectID = projectID; return(PartialView(ticket)); }
public ActionResult EditTicket(int id) { EditTicketViewModel ticketToEdit = new EditTicketViewModel(); using (var context = TicketDbContext.Create()) { ticketToEdit = context.Tickets.Where(x => x.TicketId == id) .Select(x => new EditTicketViewModel() { Id = x.TicketId, StatusOfTicket = x.StatusOfTicket, Title = x.Title, TypeOfTicket = x.TypeOfTicket, UserName = x.User.UserName }).FirstOrDefault(); } if (null == ticketToEdit) { return(new HttpNotFoundResult("Specjalnie tu trafiłeś?")); } return(View(ticketToEdit)); }
// GET: Tickets/Edit/5 public ActionResult Edit(int?id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } Ticket ticket = db.Tickets.Find(id); if (ticket == null) { return(HttpNotFound()); } EditTicketViewModel model = new EditTicketViewModel(); model.Title = ticket.Title; model.Description = ticket.Description; model.TicketPriorityId = ticket.TicketPriorityId; model.TicketTypeId = ticket.TicketTypeId; model.TicketStatusId = ticket.TicketStatusId; ViewBag.TicketPriorityId = new SelectList(db.TicketPriorities, "Id", "Name", ticket.TicketPriorityId); ViewBag.TicketStatusId = new SelectList(db.TicketStatuses, "Id", "Name", ticket.TicketStatusId); ViewBag.TicketTypeId = new SelectList(db.TicketTypes, "Id", "Name", ticket.TicketTypeId); return(View(model)); }
private ActionResult Save(int?id, EditTicketViewModel formData) { var project = DbContext.Projects .FirstOrDefault(p => p.ID == formData.ProjectID); if (!ModelState.IsValid) { //return View(formData.ProjectID); return(RedirectToAction("FullProjectBySlug", "Project", new { slug = project.Slug })); } var userId = User.Identity.GetUserId(); var ticketType = DbContext.TicketTypes.FirstOrDefault(t => t.Name == formData.Type); var ticketPriority = DbContext.TicketPriorities.FirstOrDefault(t => t.Name == formData.Priority); Ticket ticket; if (!id.HasValue) { ticket = new Ticket { DateCreated = DateTime.Now, OwnerUserID = userId, Slug = ProjectController.Slugify(formData.Title), ProjectID = formData.ProjectID }; DbContext.Tickets.Add(ticket); } else { ticket = DbContext.Tickets.FirstOrDefault( p => p.ID == id); if ((User.IsInRole("Admin") || User.IsInRole("Project Manager")) || (User.IsInRole("Developer") && userId == ticket.AssignedToUserID) || (User.IsInRole("Submitter") && userId == ticket.OwnerUserID)) { // continue } else { return(RedirectToAction("FullProjectBySlug", "Project", new { slug = project.Slug })); } if (ticket == null) { return(RedirectToAction(nameof(ProjectController.Index))); } ticket.DateUpdated = DateTime.Now; var historyWriter = new CustomHelpers(); historyWriter.MakeTicketHistories(ticket, formData, userId); var notifyUsers = DbContext.TicketNotifications.Where(u => u.TicketID == ticket.ID).ToList(); foreach (var notifyuser in notifyUsers) { var user = DbContext.Users.FirstOrDefault(u => u.Id == notifyuser.UserID); string alert = $"there has been a change to a ticket you are watching: {ticket.Title}"; if (user == ticket.AssignedToUser) { alert = $"there has been a change to a ticket assign to you: {ticket.Title}"; } var message = new IdentityMessage { Destination = $"{user.Email}", Subject = $"{alert}", Body = $"{alert}" }; var emailService = new EmailService(); emailService.SendAsync(message); } } ticket.Title = formData.Title; ticket.Description = formData.Description; ticket.TypeID = ticketType.ID; ticket.PriorityID = ticketPriority.ID; ticket.StatusID = DbContext.TicketStatuses.FirstOrDefault(t => t.Name == formData.Status).ID; DbContext.SaveChanges(); return(RedirectToAction("FullProjectBySlug", "Project", new { slug = project.Slug })); }
public ActionResult EditTicket(int?Id) { if (!Id.HasValue) { return(RedirectToAction(nameof(HomeController.Index), "Home")); } var userId = User.Identity.GetUserId(); var user = GetUserById(userId); var ticketToEdit = (from t in DbContext.Tickets where t.Id == Id select t).FirstOrDefault(); if (ticketToEdit == null) { return(RedirectToAction(nameof(HomeController.Index), "Home")); } if (User.IsInRole(nameof(UserRoles.Submitter)) && (ticketToEdit.CreatorId != userId)) { return(RedirectToAction(nameof(BugController.Index), "Home")); } if (User.IsInRole(nameof(UserRoles.Developer)) && (ticketToEdit.AssignedDeveloperId != userId)) { return(RedirectToAction(nameof(BugController.Index), "Home")); } var types = (from t in DbContext.TicketTypes where t != null select t).ToList(); var priorities = (from p in DbContext.TicketPriorities where p != null select p).ToList(); var statuses = (from s in DbContext.TicketStatuses where s != null select s).ToList(); var allProjects = (from p in DbContext.Projects where p.Active select p).ToList(); var model = new EditTicketViewModel() { Id = ticketToEdit.Id, Title = ticketToEdit.Title, Description = ticketToEdit.Description, ProjectId = ticketToEdit.ProjectId, TypeId = ticketToEdit.TypeId, PriorityId = ticketToEdit.PriorityId, StatusId = ticketToEdit.StatusId, Creator = ticketToEdit.Creator, Projects = allProjects, Types = types, Priorities = priorities }; if (User.IsInRole(nameof(UserRoles.Admin)) || User.IsInRole(nameof(UserRoles.ProjectManager))) { model.Statuses = statuses; } return(View(model)); }
public ActionResult EditTicket(EditTicketViewModel formData) { if (!ModelState.IsValid) { // Redirect back to the form with the inputed from data, since something is missing or incorrect. EditTicketViewModel viewModelTicket = TicketHelper.TicketDataByRole(formData, User, RoleManager, UserManager, DbContext); return(View(viewModelTicket)); } if (formData is null) { return(RedirectToDashError()); } var ticket = DbContext.Tickets.FirstOrDefault(tckt => tckt.Id == formData.Id); if (ticket is null) { return(RedirectToDashError()); } // Apply changes if (ProjectHelper.IsAdminOrManager(User)) { ticket.Title = formData.Title; ticket.Description = formData.Description; ticket.DateUpdated = DateTime.Now; ticket.ProjectId = formData.ProjectId; ticket.TicketStatusId = (int)formData.TicketStatusId; ticket.TicketPriorityId = formData.TicketPriorityId; ticket.TicketTypeId = formData.TicketTypeId; ticket.AssignedToId = formData.AssignedToId; } else if (ProjectHelper.IsDevOrSubmitter(User)) { ticket.Title = formData.Title; ticket.Description = formData.Description; ticket.DateUpdated = DateTime.Now; ticket.ProjectId = formData.ProjectId; ticket.TicketPriorityId = formData.TicketPriorityId; ticket.TicketTypeId = formData.TicketTypeId; } // Generate history var user = UserManager.FindById(User.Identity.GetUserId()); var ticketHistory = TicketHelper.GenerateTicketHistory(DbContext, ticket, user); if (ticketHistory != null) { ticket.TicketHistories.Add(ticketHistory); // Notify users (Only if there's a change...) TicketHelper.SendNotificationsToUsers(ticket, "Ticket changes"); // If a new dev has been assigned to this ticket, // >Remove the old dev from the mailing list, // >Add the new dev, // >Then notify the user they've been assigned to this ticket. if (TicketHelper.IsNewDevAssigned(ticketHistory)) { var history = ticketHistory.TicketHistoryDetails.FirstOrDefault(p => p.Property == "Dev Assigned"); var devUserOld = UserManager.Users.FirstOrDefault(p => p.DisplayName == history.OldValue); var devUserNew = UserManager.Users.FirstOrDefault(p => p.DisplayName == history.NewValue); TicketHelper.ManageDevNotificationAssignment(devUserOld, devUserNew, ticket); TicketHelper.NotifyUserByEmail(devUserNew, ticket.Title); } } // Save to db DbContext.SaveChanges(); // Return to details page of the ticket. return(RedirectToAction("DetailsTicket", "Ticket", new { ticketId = ticket.Id })); }
public static EditTicketViewModel TicketDataByRole(EditTicketViewModel ticket, IPrincipal User, RoleManager <Microsoft.AspNet.Identity.EntityFramework.IdentityRole> RoleManager, ApplicationUserManager UserManager, ApplicationDbContext DbContext) { EditTicketViewModel viewModelTicket; var currentUser = UserManager.FindById(User.Identity.GetUserId()); var devRole = RoleManager.FindByName(ProjectConstants.DeveloperRole); if (ProjectHelper.IsAdminOrManager(User)) { viewModelTicket = new EditTicketViewModel() { Id = ticket.Id, Title = ticket.Title, Description = ticket.Description, ProjectId = ticket.ProjectId, TicketStatusId = ticket.TicketStatusId, TicketPriorityId = ticket.TicketPriorityId, TicketTypeId = ticket.TicketTypeId, AssignedToId = ticket?.AssignedToId, Projects = DbContext.Projects.Select(p => new SelectListItem() { Text = p.Title, Value = p.Id.ToString() }).ToList(), DevUsers = DbContext.Users.Where(user => user.Roles.Any(role => role.RoleId == devRole.Id)).Select(p => new SelectListItem() { Text = p.DisplayName, Value = p.Id.ToString() }).ToList(), TicketTypes = DbContext.TicketTypes.Select(p => new SelectListItem() { Text = p.Name, Value = p.Id.ToString() }).ToList(), TicketPriorities = DbContext.TicketPriorities.Select(p => new SelectListItem() { Text = p.Name, Value = p.Id.ToString() }).ToList(), TicketStatuses = DbContext.TicketStatuses.Select(p => new SelectListItem() { Text = p.Name, Value = p.Id.ToString() }).ToList(), }; } else if (ProjectHelper.IsDevOrSubmitter(User)) { // get the ticket because we need the ticketStatusId var ticketStatusId = DbContext.Tickets.FirstOrDefault(tckt => tckt.Id == ticket.Id).TicketStatusId; viewModelTicket = new EditTicketViewModel() { Id = ticket.Id, Title = ticket.Title, Description = ticket.Description, ProjectId = ticket.ProjectId, TicketPriorityId = ticket.TicketPriorityId, TicketStatusId = ticketStatusId, TicketTypeId = ticket.TicketTypeId, // This works for both submitter and devs, as they HAVE to be assigned to the project. Projects = DbContext.Projects.Where(user => user.Users.Any(usr => usr.Id == currentUser.Id)).Select(p => new SelectListItem() { Text = p.Title, Value = p.Id.ToString() }).ToList(), TicketTypes = DbContext.TicketTypes.Select(p => new SelectListItem() { Text = p.Name, Value = p.Id.ToString() }).ToList(), TicketPriorities = DbContext.TicketPriorities.Select(p => new SelectListItem() { Text = p.Name, Value = p.Id.ToString() }).ToList(), }; } else { throw new Exception("Error in Ticket Data Method. Missing Role."); } return(viewModelTicket); }
public void MakeTicketHistories(Ticket ticket, EditTicketViewModel formData, string userId) { var newTicketType = DbContext.TicketTypes.FirstOrDefault(t => t.Name == formData.Type); var newTicketPriority = DbContext.TicketPriorities.FirstOrDefault(t => t.Name == formData.Priority); var newTicketStatus = DbContext.TicketStatuses.FirstOrDefault(t => t.Name == formData.Status); if (ticket.Title != formData.Title) { var history = new TicketHistory { TicketID = ticket.ID, Property = "Title", OldValue = ticket.Title, NewValue = formData.Title, Changed = DateTime.Now, UserID = userId }; DbContext.TicketHistories.Add(history); } if (ticket.Description != formData.Description) { var history = new TicketHistory { TicketID = ticket.ID, Property = "Description", OldValue = ticket.Description, NewValue = formData.Description, Changed = DateTime.Now, UserID = userId }; DbContext.TicketHistories.Add(history); } if (ticket.TypeID != newTicketType.ID) { var history = new TicketHistory { TicketID = ticket.ID, Property = "Type", OldValue = ticket.Type.Name, NewValue = formData.Type, Changed = DateTime.Now, UserID = userId }; DbContext.TicketHistories.Add(history); } if (ticket.PriorityID != newTicketPriority.ID) { var history = new TicketHistory { TicketID = ticket.ID, Property = "Priority", OldValue = ticket.Priority.Name, NewValue = formData.Priority, Changed = DateTime.Now, UserID = userId }; DbContext.TicketHistories.Add(history); } if (ticket.StatusID != newTicketStatus.ID) { var history = new TicketHistory { TicketID = ticket.ID, Property = "Status", OldValue = ticket.Status.Name, NewValue = formData.Status, Changed = DateTime.Now, UserID = userId }; DbContext.TicketHistories.Add(history); } DbContext.SaveChanges(); }
protected override DriverResult Editor(TicketPart part, IUpdateModel updater, dynamic shapeHelper) { if (this.contentOwnershipService.CurrentUserCanEditContent(part.ContentItem)) { EditTicketViewModel model = new EditTicketViewModel(); updater.TryUpdateModel(model, Prefix, null, null); // Requesting User if (part.Record.RequestingUser == null) { int userId = this.orchardServices.WorkContext.CurrentUser.Id; part.Record.RequestingUser = new UserPartRecord { Id = userId }; } // Title part.Record.Title = string.IsNullOrEmpty(model.Title) ? string.Empty : model.Title.Trim(); // statusId part.Record.StatusRecord = model.StatusId.HasValue ? new StatusRecord { Id = model.StatusId.Value } : null; // Priority part.Record.PriorityRecord = model.PriorityId.HasValue ? new PriorityRecord { Id = model.PriorityId.Value } : null; // TicketType part.Record.TicketType = model.TypeId.HasValue ? new TicketTypeRecord { Id = model.TypeId.Value } : null; // Service part.Record.Service = model.ServiceId.HasValue ? new ServiceRecord { Id = model.ServiceId.Value } : null; // DueDate part.Record.DueDate = model.DueDate; // Description part.Description = model.Text; // RelatedContentItemId if (model.RelatedContentItemId.HasValue) { part.Record.RelatedContentItem = new ContentItemRecord { Id = model.RelatedContentItemId.Value }; } // Parent TicketId if (model.ParentTicketId.HasValue) { var parentTicket = this.orchardServices.ContentManager.Get(model.ParentTicketId.Value); if (parentTicket.ContentType == "Ticket" && this.contentOwnershipService.CurrentUserCanViewContent(parentTicket)) { part.Record.Parent = new TicketPartRecord { Id = model.ParentTicketId.Value }; } } if (part.Record.Identity == null) { TicketIdentityRecord identity = new TicketIdentityRecord(); this.ticketIdentityRecordRepository.Create(identity); part.Record.Identity = identity; } return(Editor(part, shapeHelper)); } else { throw new Security.OrchardSecurityException(T("You don't have permission to view the item")); } }
public ActionResult EditTicket(EditTicketViewModel model) { if (!ModelState.IsValid) { return(View(model)); } var type = DbContext.TicketTypes.FirstOrDefault(t => t.Id == model.TypeId); var priority = DbContext.TicketPriorities.FirstOrDefault(p => p.Id == model.PriorityId); var project = DbContext.Projects.FirstOrDefault(p => p.Id == model.ProjectId); var ticketToEdit = (from t in DbContext.Tickets where t.Id == model.Id select t).FirstOrDefault(); var userId = User.Identity.GetUserId(); var user = GetUserById(userId); var newHistory = new TicketHistory(); if (ticketToEdit.Title != model.Title) { var propChange = new PropertyChange(); propChange.PropertyName = nameof(ticketToEdit.Title); propChange.OldValue = ticketToEdit.Title; propChange.NewValue = model.Title; newHistory.PropertyChanges.Add(propChange); ticketToEdit.Title = model.Title; } if (ticketToEdit.Project != project) { var propChange = new PropertyChange(); propChange.PropertyName = nameof(ticketToEdit.Project); propChange.OldValue = ticketToEdit.Project.Name; propChange.NewValue = project.Name; newHistory.PropertyChanges.Add(propChange); ticketToEdit.Project = project; } if (ticketToEdit.Description != model.Description) { var propChange = new PropertyChange(); propChange.PropertyName = nameof(ticketToEdit.Description); propChange.OldValue = ticketToEdit.Description; propChange.NewValue = model.Description; newHistory.PropertyChanges.Add(propChange); ticketToEdit.Description = model.Description; } if (ticketToEdit.Type != type) { var propChange = new PropertyChange(); propChange.PropertyName = nameof(ticketToEdit.Type); propChange.OldValue = ticketToEdit.Type.Name; propChange.NewValue = type.Name; newHistory.PropertyChanges.Add(propChange); ticketToEdit.Type = type; } if (ticketToEdit.Priority != priority) { var propChange = new PropertyChange(); propChange.PropertyName = nameof(ticketToEdit.Priority); propChange.OldValue = ticketToEdit.Priority.Name; propChange.NewValue = priority.Name; newHistory.PropertyChanges.Add(propChange); ticketToEdit.Priority = priority; } if (User.IsInRole(nameof(UserRoles.Admin)) || User.IsInRole(nameof(UserRoles.ProjectManager))) { var status = DbContext.TicketStatuses.FirstOrDefault(t => t.Id == model.StatusId); if (ticketToEdit.Status != status) { var propChange = new PropertyChange(); propChange.PropertyName = nameof(ticketToEdit.Status); propChange.OldValue = ticketToEdit.Status.Name; propChange.NewValue = status.Name; newHistory.PropertyChanges.Add(propChange); ticketToEdit.Status = status; } } if (newHistory.PropertyChanges.Any()) { newHistory.DateTime = DateTime.Now; newHistory.User = user; ticketToEdit.Histories.Add(newHistory); SendNotification(newHistory, user, ticketToEdit); } ticketToEdit.DateUpdated = DateTime.Now; DbContext.SaveChanges(); return(RedirectToAction(nameof(BugController.ViewTicketDetails), "Bug", new { Id = ticketToEdit.Id })); }
public ActionResult Edit(int id, int projectId, EditTicketViewModel formData) { return(Save(id, formData)); }