public ActionResult New(NewTicketViewModel model)
        {
            if (!isLoggedIn())
            {
                return(RedirectToAction("Oops"));
            }

            if (!getUser().ActiveStatus)
            {
                return(View("Deactivated"));
            }

            Ticket          ticket  = new Ticket();
            Message         message = new Message();
            ApplicationUser user    = getUser();

            ticket.Title   = model.Title;
            ticket.Status  = TicketStatus.OPEN;
            ticket.User    = user;
            ticket.Created = System.DateTime.Now;

            message.BodyText = model.BodyText;
            message.Date     = ticket.Created;
            message.Ticket   = ticket;
            message.User     = user;

            _dbContext.Ticket.Add(ticket);
            _dbContext.SaveChanges();
            _dbContext.Messages.Add(message);
            _dbContext.SaveChanges();

            return(RedirectToAction("UserIndex"));
        }
 protected bool Equals(NewTicketViewModel other)
 {
     return(GuestName == other.GuestName &&
            GuestPhone == other.GuestPhone &&
            GuestMailingAddress == other.GuestMailingAddress &&
            DateAttending == other.DateAttending &&
            CardNumber == other.CardNumber &&
            CardExpirationDate == other.CardExpirationDate &&
            CardVerificationValue == other.CardVerificationValue);
 }
        public ActionResult Create(int projectId, NewTicketViewModel model)
        {
            if (ModelState.IsValid)
            {
                Ticket ticket = new Ticket();
                ticket.SubmitterID = User.Identity.GetUserId();

                ticket.Title       = model.Title;
                ticket.Description = model.Description;
                ticket.AssigneeID  = UserManager.FindById(model.Assignee).Id;
                ticket.ProjectID   = projectId;
                ticket.TypeID      = Int32.Parse(model.Type);
                ticket.PriorityID  = Int32.Parse(model.Priority);
                ticket.StatusID    = Int32.Parse(model.Status);
                ticket.Created     = System.DateTime.UtcNow;

                db.Tickets.Add(ticket);

                try
                {
                    db.SaveChanges();
                }
                catch (System.Data.Entity.Validation.DbEntityValidationException dbEx)
                {
                    Exception raise = dbEx;
                    foreach (var validationErrors in dbEx.EntityValidationErrors)
                    {
                        foreach (var validationError in validationErrors.ValidationErrors)
                        {
                            string message = string.Format("{0}:{1}",
                                                           validationErrors.Entry.Entity.ToString(),
                                                           validationError.ErrorMessage);
                            // raise a new exception nesting
                            // the current instance as InnerException
                            raise = new InvalidOperationException(message, raise);
                        }
                    }
                    throw raise;
                }

                TempData["notice"] = "Ticket successfully created!";
                return(RedirectToAction("Index"));
            }

            model.Assignees  = new SelectList(Db.Users, "Id", "UserName");
            model.Priorities = new SelectList(db.TicketPriorities, "ID", "Name");
            model.Statuses   = new SelectList(db.TicketStatuses, "ID", "Name");
            model.Types      = new SelectList(db.TicketTypes, "ID", "Name");

            // If we got this far, something went wrong
            TempData["error"] = "Something went wrong. Ticket could not be created!";
            return(View(model));
        }
        public ActionResult New()
        {
            var projects = _context.Projects.ToList();

            var viewModel = new NewTicketViewModel
            {
                Projects         = projects,
                TicketTypes      = _context.TicketTypes.ToList(),
                TicketPriorities = _context.TicketPriorities.ToList()
            };

            return(View(viewModel));
        }
        // GET: Tickets/Create
        public ActionResult New(int projectId)
        {
            ViewBag.ProjectName = db.Projects.FirstOrDefault(p => p.ID == projectId).Name;
            ViewBag.ProjectID   = projectId;

            var model = new NewTicketViewModel();

            model.Assignees  = new SelectList(Db.Users, "Id", "UserName");
            model.Priorities = new SelectList(db.TicketPriorities, "ID", "Name");
            model.Statuses   = new SelectList(db.TicketStatuses, "ID", "Name");
            model.Types      = new SelectList(db.TicketTypes, "ID", "Name");

            return(View(model));
        }
示例#6
0
        public async Task <IActionResult> AddAsync(NewTicketViewModel data)
        {
            System.Security.Claims.ClaimsPrincipal currentUser = this.User;
            var user = await _userManager.GetUserAsync(currentUser);

            if (!ModelState.IsValid)
            {
                return(View(data));
            }
            await _ticketService.AddTicket(data.Title,
                                           data.Message,
                                           user.Id);

            return(RedirectToAction("Index", "Ticket"));
        }
        public virtual NewTicketViewModel ConvertInputToModel(IDictionary <string, string> displayNamesWithValues)
        {
            var model = new NewTicketViewModel();

            var cleanDisplayNamesWithValues = displayNamesWithValues
                                              .Where(x => FieldDisplayNames.Contains(x.Key))
                                              .ToDictionary(x => x.Key, x => x.Value);

            foreach (var(displayName, value) in cleanDisplayNamesWithValues)
            {
                var mutatorFunc = _conversionMap[displayName];
                mutatorFunc(model, value);
            }

            return(model);
        }
示例#8
0
        public void ShouldPartiallyBuildNewTicketViewModel()
        {
            var inputMap = new Dictionary <string, string>
            {
                {
                    "Guest's Name: ", "ABC"
                }
            };

            var actualModel = Converter.ConvertInputToModel(inputMap);

            var expectedModel = new NewTicketViewModel
            {
                GuestName = "ABC"
            };

            Assert.Equal(expectedModel, actualModel);
        }
示例#9
0
        public ActionResult Create(NewTicketViewModel ticket)
        {
            if (ModelState.IsValid)
            {
                string userId      = User.Identity.GetUserId();
                string userName    = User.Identity.GetUserName();
                var    currentUser = this.Data.GetRepository <ApplicationUser>()
                                     .All()
                                     .FirstOrDefault(u => u.Id == userId);

                if (currentUser != null)
                {
                    var category = this.Data.GetRepository <Category>().GetById(ticket.Category);
                    if (category != null)
                    {
                        var newTicket = new Ticket
                        {
                            Author        = currentUser,
                            Category      = category,
                            Description   = ticket.Description,
                            Priority      = ticket.Priority,
                            ScreenshotUrl = ticket.ScreenshotUrl,
                            Title         = ticket.Title
                        };
                        this.Data.GetRepository <Ticket>().Add(newTicket);
                        currentUser.Points++;
                        this.Data.Save();
                        return(RedirectToAction("List"));
                    }
                    else
                    {
                        return(HttpNotFound());
                    }
                }
                else
                {
                    return(new HttpStatusCodeResult(HttpStatusCode.BadRequest));
                }
            }
            else
            {
                return(new HttpStatusCodeResult(HttpStatusCode.BadRequest, GetModelStateErrors()));
            }
        }
示例#10
0
        public void ShouldMapValuesStoredByDisplayNameIntoNewTicketViewModel()
        {
            var inputMap = new Dictionary <string, string>
            {
                {
                    "Guest's Name: ", "ABC"
                },
                {
                    "Guest's Phone: ", "123-456-7890"
                },
                {
                    "Guest's Mailing Address: ", "DEF"
                },
                {
                    "Date Attending: ", "12/12/1212"
                },
                {
                    "Card Number: ", "GHI"
                },
                {
                    "Card Expiration: ", "12/12"
                },
                {
                    "CVV: ", "JKLMNOPQRS"
                }
            };

            var actualModel = Converter.ConvertInputToModel(inputMap);

            var expectedModel = new NewTicketViewModel
            {
                GuestName             = "ABC",
                GuestPhone            = "123-456-7890",
                GuestMailingAddress   = "DEF",
                DateAttending         = "12/12/1212",
                CardNumber            = "GHI",
                CardExpirationDate    = "12/12",
                CardVerificationValue = "JKLMNOPQRS"
            };

            Assert.Equal(expectedModel, actualModel);
        }
示例#11
0
        public async Task <IActionResult> CreateTicket(NewTicketViewModel model)
        {
            var id     = Guid.NewGuid();
            var userId = Guid.Parse("88888888-8888-8888-8888-888888888888");

            var files = model.Files == null || model.Files.Any()
                ? new List <File>()
                : await _fileUploader.UploadFiles(userId, model.Files.ToArray());

            await _mediator.Send(new NewTicketCommand
            {
                Id          = id,
                UserId      = userId,
                Title       = model.Title,
                Description = model.Description,
                PriorityId  = model.PriorityId,
                Files       = files.ToList()
            });

            return(Ok(id));
        }
示例#12
0
        public void ShouldStillMapEvenWithIrrelevantDisplayNamesInTheInputMap()
        {
            var inputMap = new Dictionary <string, string>
            {
                {
                    "Guest's Name: ", "ABC"
                },
                {
                    "Shirt Size: ", "XL"
                }
            };

            var actualModel = Converter.ConvertInputToModel(inputMap);

            var expectedModel = new NewTicketViewModel
            {
                GuestName = "ABC"
            };

            Assert.Equal(expectedModel, actualModel);
        }
示例#13
0
 public virtual void SaveNewTicket(NewTicketViewModel ticket)
 {
 }
 public ActionResult Create(NewTicketViewModel viewModel)
 {
     return(View());
 }