public TicketCreateViewModel CreateTicketViewModel(TicketCreateBindingModel ticket = null, IEnumerable <ModelError> errors = null) { var viewModel = new TicketCreateViewModel { Errors = new List <string>() }; var projectTitles = _context.Projects .Select(p => p.Title) .ToList(); viewModel.Projects = new SelectList(projectTitles); if (ticket != null) { viewModel.Title = ticket.Title; viewModel.Type = ticket.Type; viewModel.Priority = ticket.Priority; } if (errors != null) { foreach (var error in errors) { viewModel.Errors.Add(error.ErrorMessage); } } return(viewModel); }
[Route("Ticket/Create")] //! this is needed because of the route on the index (I don't know why) public ActionResult Create(TicketCreateViewModel formData) { if (formData == null || !ModelState.IsValid || !formData.Type.HasValue || !formData.Priority.HasValue) { ModelState.AddModelError("", "Error - Bad data"); formData = GenerateTicketCreateViewModelFromExisting(formData) ?? throw new Exception("bad data"); return(View(formData)); } // if user is submitter and admin or project manager, then allow him/her to give a different status on ticket creation if (User.IsInRole(UserRolesEnum.Admin.ToString()) || User.IsInRole(UserRolesEnum.ProjectManager.ToString())) { formData.Status = formData.Status ?? TicketStatusesEnum.Open; } else { formData.Status = TicketStatusesEnum.Open; } try { Ticket newTicket = TicketRepository.CreateNewTicket(formData, (true, true)); return(RedirectToAction(nameof(Index))); } catch (Exception e) { ModelState.AddModelError("", "Error - Bad data"); ModelState.AddModelError("", e.Message); // TODO: Remove after project completion (on staging phase) formData = GenerateTicketCreateViewModelFromExisting(formData) ?? throw new Exception("bad data"); return(View(formData)); } }
private TicketCreateViewModel GenerateTicketCreateViewModelFromExisting(TicketCreateViewModel formData) { string userId = User.Identity.GetUserId(); List <SelectListItem> userProjects = null; if (User.IsInRole(UserRolesEnum.Admin.ToString()) || User.IsInRole(UserRolesEnum.ProjectManager.ToString())) { userProjects = ProjectRepository.GetAllProjects() .Select(project => new SelectListItem() { Text = project.Name, Value = project.Id.ToString(), }).ToList(); } else { userProjects = ProjectRepository.GetUserProjects(userId) .Select(project => new SelectListItem() { Text = project.Name, Value = project.Id.ToString(), }).ToList(); } if (!userProjects?.Any() == null) { return(null); } formData.Projects = userProjects; return(formData); }
public ActionResult CreateTicket(TicketCreateViewModel model) { if (!ModelState.IsValid) return View(model); Project project = db.Projects .Include(p => p.Authorizations) .First(p => p.Id == model.Project_Id); string submitterId = User.Identity.GetUserId(); var auths = project.Authorizations .Where(auth => auth.User_ID == submitterId); if (!auths.Any(auth => auth.Permission == Permission.Submitter)) { return new HttpStatusCodeResult(HttpStatusCode.Forbidden, "You do not have sufficient permissions for that resource."); } var submitter = new ApplicationUser() { Id = submitterId }; db.Entry(submitter).State = EntityState.Unchanged; Ticket ticket = new Ticket(model) { Submitter = submitter, Project = project }; db.Tickets.Add(ticket); db.SaveChanges(); return RedirectToAction("Details", new { id = model.Project_Id }); }
public ActionResult Details(TicketCreateViewModel tvm) { try { Ticket ticket = new Ticket(); TicketHistory ticket_history = new TicketHistory(); ticket = _ticketRepository.GetTicketByTicketId(tvm.ticket.TicketId); ticket.DateOpened = tvm.ticket.DateOpened; ticket.LastUpdated = DateTime.Now; _ticketRepository.SaveTickets(ticket); /////////////////////////////////////////////// //Getting and Saving Ticket History Ticket newTicket = new Ticket(); newTicket = _ticketRepository.Tickets.Single(row => row.TicketHistoryID == ticket.TicketHistoryID); ticket_history.TicketId = newTicket.TicketHistoryID; ticket_history.HistoryDate = DateTime.Now; ticket_history.UserWorked = ticket.CurrentOwner; ticket_history.Action = ticket.Description; ticket_history.Comment = ticket.Comments; _ticketHistoryRepository.SaveHistory(ticket_history); return(RedirectToAction("Index")); } catch { return(View()); } }
public async Task <IActionResult> Create([Bind("Title,Description,SelectedProject,SelectedStatus,SelectedPriority,SelectedType")] TicketCreateViewModel ticketView) { try { if (ModelState.IsValid) { var ticket = new Ticket(); ticket.Title = ticketView.Title; ticket.Description = ticketView.Description; ticket.ProjectId = ticketView.SelectedProject; ticket.OwnerUserId = _profileManager.CurrentUser.Id; ticket.Created = DateTimeOffset.Now; ticket.TicketStatusId = ticketView.SelectedStatus; ticket.TicketPriorityId = ticketView.SelectedPriority; ticket.TicketTypeId = ticketView.SelectedType; _context.Tickets.Add(ticket); await _context.SaveChangesAsync().ConfigureAwait(false); return(RedirectToAction(nameof(Index))); } } catch (DbUpdateException /* ex */) { //Log the error (uncomment ex variable name and write a log.) ModelState.AddModelError("", "Unable to save changes. " + "Try again, and if the problem persists, " + "see your system administrator."); } return(View(ticketView)); }
public virtual ActionResult Create() { Ticket ticket = new Ticket(); var model = new TicketCreateViewModel(Security, Settings, ticket); return(View(model)); }
[Route("Ticket/Create")] //! this is needed because of the route on the index (I don't know why) public ActionResult Create(Guid?projectId) { string userId = User.Identity.GetUserId(); if (!UserRoleRepository.IsUserInRole(userId, UserRolesEnum.Submitter)) { throw new Exception("This shouldn't happen"); } if (projectId.HasValue && ProjectRepository.IsUserAssignedToProject(userId, projectId.Value)) { projectId = null; } List <SelectListItem> userProjects = null; if (User.IsInRole(UserRolesEnum.Admin.ToString()) || User.IsInRole(UserRolesEnum.ProjectManager.ToString())) { userProjects = ProjectRepository.GetAllProjects() .Select(project => new SelectListItem() { Text = project.Name, Value = project.Id.ToString(), Selected = projectId.HasValue ? project.Id == projectId.Value : false, }).ToList(); } else { userProjects = ProjectRepository.GetUserProjects(userId) .Select(project => new SelectListItem() { Text = project.Name, Value = project.Id.ToString(), Selected = projectId.HasValue ? project.Id == projectId.Value : false, }).ToList(); } if (userProjects == null) { return(RedirectToAction(nameof(HomeController.Index), "Home")); } TicketCreateViewModel model = new TicketCreateViewModel() { AuthorId = userId, Projects = userProjects, }; if (!model.Projects.Any()) { return(RedirectToAction(nameof(HomeController.UnauthorizedRequest), "Home", new { error = "You don't have any project to assign a ticket to.\nPLEASE CONTACT ADMIN to get assigned to a project" })); } return(View(model)); }
public ActionResult Create() { var ticketView = new TicketCreateViewModel(); ticketView.Projects = new SelectList(db.Projects, "Id", "Name"); ticketView.TicketTypes = new SelectList(db.TicketTypes, "Id", "Name"); ticketView.TicketPriorities = new SelectList(db.TicketPriorities, "Id", "Name"); //ticketView.TicketStatuses = new SelectList(db.TicketStatuses, "Id", "Name"); return(View(ticketView)); }
public IActionResult CreateTicket(TicketCreateViewModel model) { if (ModelState.IsValid) { /// /// return(RedirectToAction("Index")); } return(RedirectToAction("Index")); }
public ActionResult CreateNew(TicketCreateViewModel tvm) { try { var username = HttpContext.User.Identity.Name; var userworked = _UserRepository.GetUserByUsername(username); Ticket ticket = new Ticket(); TicketHistory ticket_history = new TicketHistory(); // Getting and Saving Ticket Information ticket = tvm.ticket; ticket.AccountId = 0; ticket.DateOpened = DateTime.Now; ticket.LastUpdated = DateTime.Now; if (tvm.ticket.ReceivedFrom != null) { ticket.CustomerName = tvm.ticket.ReceivedFrom; } if (tvm.ticket.AccountName == null) { ticket.AccountName = "No associated Account"; } //ticket.CurrentOwner = _UserRepository.GetUserById(tvm.user.UserId).UserId; ticket.CurrentOwner = 0; ticket.Creator = userworked.UserId; int numOfTicketsForAccount = _ticketRepository.GetTicketsByAccountID(ticket.AccountId).Count(); numOfTicketsForAccount++; string newTicketHistoryID = numOfTicketsForAccount.ToString(); string newAccountID = ticket.AccountId.ToString(); ticket.TicketHistoryID = newAccountID + newTicketHistoryID; _ticketRepository.SaveTickets(ticket); /////////////////////////////////////////////// //Getting and Saving Ticket History Ticket newTicket = new Ticket(); newTicket = _ticketRepository.Tickets.Single(row => row.TicketHistoryID == newAccountID + newTicketHistoryID); ticket_history.TicketId = newTicket.TicketHistoryID; ticket_history.HistoryDate = DateTime.Now; ticket_history.UserWorked = ticket.CurrentOwner; ticket_history.Action = ticket.Description; ticket_history.Comment = ticket.Comments; _ticketHistoryRepository.SaveHistory(ticket_history); return(RedirectToAction("Index")); } catch { return(View()); } }
// GET: Tickets/Create public ActionResult Create() { var viewModel = new TicketCreateViewModel(); viewModel.ImpactedSystems = new List <SelectListItem> { new SelectListItem { Value = "1", Text = "Accounting" }, new SelectListItem { Value = "2", Text = "Booking" }, new SelectListItem { Value = "3", Text = "Sales" } }; return(View(viewModel)); }
public async Task <IActionResult> CreateTicket(TicketCreateViewModel model) { if (ModelState.IsValid) { var ticket = new Ticket { EventId = model.EventId, Price = model.Price, SellerId = (await userManager.FindByNameAsync(User.Identity.Name)).Id }; ticket.Status = TicketSaleStatus.Sale; await ticketService.Save(ticket); return(RedirectToAction("Index", "Event")); } return(RedirectToAction("CreateTicket", model)); }
public ActionResult Create([Bind(Include = "Title,Description,Priority")] TicketCreateViewModel incomingTicket) { // check that the incoming model is in a valid state if (ModelState.IsValid) { // attempt conversion into Ticket Ticket ticketToAdd = Mapper.Map <Ticket>(incomingTicket); TicketHelper ticketHelper = null; Ticket addedTicket = null; // get the user name of the logged in user and assign as the Ticket owner ticketToAdd.Owner = User.Identity.Name; // instantiate the ticket helper ticketHelper = new TicketHelper(c_repository); // call method to add new ticket and assign created ticket to variable addedTicket = ticketHelper.AddTicket(ticketToAdd); if (addedTicket != null) { // ticket added succesfully - insert info message into TempData so that message can be shown on tickets list view this.TempData["Success"] = "Ticket created succesfully."; // return user to the tickets list view return(RedirectToAction("Index")); } else { // ticket was not created because Ticket object returned by helper method was empty // issue an error to the model state to reflect this ModelState.AddModelError("", "Unable to create the ticket at this time. Please try again."); // return view return(View(incomingTicket)); } } else { // return back to the page return(View(incomingTicket)); } }
public ActionResult Create(TicketCreateViewModel ticket) { ViewBag.PriorityId = new SelectList(EnumsController.EnumToDropDownList(typeof(Priority)), "Value", "Text"); ViewBag.CategoryId = new SelectList(this.Data.Categories.All(), "Id", "Name"); if (User.Identity.IsAuthenticated && ModelState.IsValid) { using (TransactionScope tsTransScope = new TransactionScope()) { Ticket parentTicket = null; var currentUserId = User.Identity.GetUserId(); var currentUser = this.Data.ApplicationUsers.All().FirstOrDefault(u => u.Id == currentUserId); currentUser.Points = currentUser.Points + 1; if (ticket.Ticket_Id != 0) { parentTicket = this.Data.Tickets.GetById(ticket.Ticket_Id); // parentTicket.Add(parentTicketObjet); } var newTicket = new Ticket() { AuthorId = currentUserId, CategoryId = ticket.CategoryId, Description = HttpUtility.HtmlEncode(ticket.Description), Priority = (Priority)ticket.PriorityId, ScreenshotUrl = ticket.ScreenshotUrl, Title = ticket.Title, Tickets = parentTicket, CreateDate = DateTime.UtcNow }; this.Data.Tickets.Add(newTicket); this.Data.SaveChanges(); tsTransScope.Complete(); } return(RedirectToAction("TicketsList")); } return(View()); }
public IActionResult CreateTicket([FromRoute] int?id) { if (id != null) { var @event = eventService.GetEventById(id); if (@event == null) { return(BadRequest()); } var model = new TicketCreateViewModel { EventId = @event.Id, EventName = @event.Name }; return(PartialView("CreateTicket", model)); } return(NotFound()); }
// GET: Projects/CreateTicket/{id} public ActionResult CreateTicket(int? id) { if (id == null) return new HttpStatusCodeResult(HttpStatusCode.BadRequest); Project project = db.Projects .Include(p => p.Authorizations) .First(p => p.Id == id); var auths = project.Authorizations .Where(auth => auth.User_ID == User.Identity.GetUserId()); if (!auths.Any(auth => auth.Permission == Permission.Submitter)) { return new HttpStatusCodeResult(HttpStatusCode.Forbidden, "You do not have sufficient permissions for that resource."); } TicketCreateViewModel model = new TicketCreateViewModel { Project_Id = project.Id.Value, Project_Name = project.Name }; return View(model); }
public ActionResult Create([Bind(Include = "Title,Description,SelectedProject,SelectedType,SelectedPriority")] TicketCreateViewModel tvm) { if (ModelState.IsValid) { var ticket = new Ticket(); ticket.Title = tvm.Title; ticket.Description = tvm.Description; ticket.Created = DateTimeOffset.Now; ticket.ProjectId = tvm.SelectedProject; ticket.TicketTypeId = tvm.SelectedType; ticket.TicketPriorityId = tvm.SelectedPriority; var query = from p in db.TicketStatuses where p.Name == "New" select p.Id; ticket.TicketStatusId = query.First(); ticket.OwnerUserId = User.Identity.GetUserId(); db.Tickets.Add(ticket); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(tvm)); }
// GET: Tickets/Create public ActionResult Create() { var ticketView = new TicketCreateViewModel(); var userId = _profileManager.CurrentUser.Id; //var projectList = new List<Project>(); var ticketStatus = _context.TicketStatuses.ToList(); var ticketPriority = _context.TicketPriorities.ToList(); var ticketType = _context.TicketTypes.ToList(); var projectList = _context.Projects.Where(x => x.ProjectUsers.Any(y => y.UserId == userId)).ToList(); //var projectList = projects.ToList(); ticketView.Projects = new SelectList(projectList, "Id", "Title"); ticketView.TicketStatus = new SelectList(ticketStatus, "Id", "Name"); ticketView.TicketTypes = new SelectList(ticketType, "Id", "Name"); ticketView.TicketPriorities = new SelectList(ticketPriority, "Id", "Name"); return(View(ticketView)); }
public IActionResult CreateTicket() { _clientMapper = _entityMapperContextBase.Set <Point, ClientDto>(cfg => { cfg.CreateMap <Point, ClientDto>() .ForMember(dest => dest.ClientId, opt => opt.MapFrom(src => src.PointNumber)) .ForMember(dest => dest.Name, opt => opt.MapFrom(src => src.NamePoint)); }); var clients = _context.Set <Point>() ?.FindBy(p => p.CliGroupNumber == 7 || p.CliGroupNumber == 2) ?.Include(c => c.CliGroup) ?.OrderBy(c => c.NamePoint) ?.Select(enity => _clientMapper.Map(enity)); if (clients != null) { TicketCreateViewModel model = new TicketCreateViewModel(); // Clients model.Clients = clients.ToList(); // Communication types var communicationTypes = _context.Set <PointCommunicationType>() ?.GetAll() ?.Select(pct => new PointCommunicationTypeDto { PointCommunicationTypeId = pct.PointCommunicationTypeId, Name = pct.Name }); model.PointCommunicationTypes = communicationTypes?.ToList() ?? model.PointCommunicationTypes; //додавання типу заявок (категорія) IQueryable <TicketSubjectDto> subjectsParents = _context.Set <TicketSubject>() ?.GetAll() ?.Where(t => t.ParentId == null) ?.Select(t => new TicketSubjectDto { Name = t.TicketSubjectName, TicketSubjectId = t.TicketSubjectId }); //підкатегорія (тема) //IQueryable<TicketSubjectDto> subjectFirstChildren = _context.Set<TicketSubject>() // ?.GetAll() // ?.Where(t => t.ParentId != null) // ?.Select(t => new TicketSubjectDto // { // Name = t.TicketSubjectName, // TicketSubjectId = t.TicketSubjectId // }); //model.TicketSubjectFirstChildren = subjectFirstChildren?.ToList() ?? model.TicketSubjectFirstChildren; model.TicketSubjectParents = subjectsParents?.ToList() ?? model.TicketSubjectParents; //TMP! model.TicketSubjectLastChildren = _context.Set <TicketSubject>() ?.GetAll() ?.Where(i => i.ParentId == 16) ?.Select(s => new TicketSubjectOptionDto { Active = false, Name = s.TicketSubjectName, TicketSubjectId = s.TicketSubjectId }).ToList(); //END TMP return(View(model)); } return(NotFound("Ticket Subjects are not found!")); }