Beispiel #1
0
        public async Task <IActionResult> DisplayTicketAnswerTicket(int id)
        {
            var ticket = await service.FindTicket(id);

            if (ticket == null)
            {
                return(NotFound());
            }
            if (ticket.ToReplyTicket == null)
            {
                string message = "The requested ticket is not yet answered!";
                ViewBag.NotAnswered = message;
                return(View());
            }
            var answer = await service.DisplayTicketAnswerTicket(id);

            var dispAnswer = new FindTicketViewModel();

            dispAnswer.Id         = answer.Id;
            dispAnswer.TicketId   = answer.TicketId;
            dispAnswer.SendOn     = answer.SendOn;
            dispAnswer.Descripton = answer.Descripton;
            dispAnswer.AgentId    = answer.Agent.UserName;//here to dislay the UserName and not he Id I just give the value UserName to the prop Id
            dispAnswer.AuthorId   = answer.Author.UserName;
            return(View(answer));
        }
        public async Task <IActionResult> Find(FindTicketViewModel model)
        {
            if (ModelState.IsValid)
            {
                var accountDetail = await CommonContext.CommonAccounts
                                    .Include(m => m.Partition)
                                    .Where(account => account.Number == model.AccountNumber)
                                    .SingleOrDefaultAsync();

                //Check if this account exists
                if (accountDetail == null)
                {
                    ModelState.AddModelError("AccountNumber", "Invalid Account Number");
                    return(View(model));
                }
                else
                {
                    var _accountCtx = ContextsUtility.CreateAccountContext(Cryptography.Decrypt(accountDetail.Partition.ConnectionString));

                    //Find violation
                    var license = model.LicensePlate.Trim();
                    var state   = model.State.Trim();

                    var citation = await _accountCtx.Citations.ForAccount(accountDetail.Id)
                                   .Where(m => m.CitationNumber == model.CitationNumber)
                                   .Where(m => m.LicenseState == state)
                                   .Where(m => m.LicensePlate == license)
                                   .OrderByDescending(m => m.CreateUtc)
                                   .FirstOrDefaultAsync();

                    if (citation == null)
                    {
                        ModelState.AddModelError("", "Cannot find Ticket.  Please call 555-555-5555 for assitance");
                    }
                    else
                    {
                        //Encrypt CitationID and Send user to Citation Page
                        var encryptedCitationId = _dataProtector.Protect($"{accountDetail.Id}&{citation.Id.ToString()}");
                        return(RedirectToAction("Citation", new { id = encryptedCitationId }));
                    }
                }
            }

            return(View(model));
        }
Beispiel #3
0
        public async Task <IActionResult> FindTicket(int id)
        {
            var findTicket  = new FindTicketViewModel();
            var foundTicket = await service.FindTicket(id);

            findTicket.Id         = foundTicket.Id;
            findTicket.Title      = foundTicket.Title;
            findTicket.Descripton = foundTicket.Descripton;
            findTicket.SendOn     = foundTicket.SendOn;
            findTicket.ProjectId  = foundTicket.ProjectId;
            findTicket.TicketId   = foundTicket.TicketId;
            findTicket.Priority   = foundTicket.Priority;
            findTicket.IsDeleted  = foundTicket.IsDeleted;
            findTicket.IsComplete = foundTicket.IsComplete;
            findTicket.IsAnswered = foundTicket.IsAnswered;
            findTicket.AgentId    = foundTicket.AgentId;
            findTicket.AuthorId   = foundTicket.AuthorId;

            return(View(findTicket));
        }
        public IActionResult FindTicket(FindTicketViewModel model)
        {
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            if (!_settings.ShowTickets)
            {
                return(RedirectToAction(nameof(Index), Name));
            }

            if (!Shared.Utilities.IsValidEmail(model.Email))
            {
                ModelState.AddModelError(nameof(model.Email), Languages.LanguageStrings.InvalidEmailAddress);
            }

            HelpdeskCacheItem helpdeskCache = GetCachedHelpdeskItem(true);

            if (_settings.ShowCaptchaText && helpdeskCache.Requests > 1)
            {
                if (!model.CaptchaText.Equals(helpdeskCache.CaptchaText, StringComparison.CurrentCultureIgnoreCase))
                {
                    ModelState.AddModelError(nameof(model.CaptchaText), Languages.LanguageStrings.CodeNotValid);
                }
            }

            if (ModelState.IsValid)
            {
                HelpdeskTicket ticket = _helpdeskProvider.GetTicket(model.Email, model.Key);

                if (ticket != null)
                {
                    return(RedirectToAction(nameof(ViewTicket), Name, new { ticket.Id }));
                }

                GrowlAdd(Languages.LanguageStrings.TicketNotFound);
            }

            return(View(GetFindTicketViewModel()));
        }
Beispiel #5
0
 public FindTicket()
 {
     InitializeComponent();
     DataContext = new FindTicketViewModel();
 }