예제 #1
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");

            if (ModelState.IsValid)
            {
                Microsoft.AspNetCore.Identity.SignInResult result = null;

                if (Input.Username.Contains('@'))
                {
                    try
                    {
                        Rail_WebUser user = _userManager.FindByEmailAsync(Input.Username).Result;
                        result = await _signInManager.PasswordSignInAsync(user.UserName, Input.Password, Input.RememberMe, lockoutOnFailure : false);
                    }

                    catch
                    {
                        result = Microsoft.AspNetCore.Identity.SignInResult.Failed;
                    }
                }

                else
                {
                    try
                    {
                        result = await _signInManager.PasswordSignInAsync(Input.Username, Input.Password, Input.RememberMe, lockoutOnFailure : false);
                    }
                    catch
                    {
                        ModelState.AddModelError(string.Empty, "Login Failed, we maybe experiencing issues at the moment.");
                        return(Page());
                    }
                }

                if (result.Succeeded)
                {
                    _logger.LogInformation("User logged in.");
                    return(LocalRedirect(returnUrl));
                }
                if (result.IsLockedOut)
                {
                    _logger.LogWarning("User account locked out.");
                    return(RedirectToPage("./Lockout"));
                }
                else
                {
                    ModelState.AddModelError(string.Empty, "Invalid login attempt.");
                    return(Page());
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
예제 #2
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (ModelState.IsValid)
            {
                var user = new Rail_WebUser {
                    UserName    = Input.Username, Email = Input.Email, FirstName = Input.FirstName, LastName = Input.LastName,
                    PhoneNumber = Input.Phone, HouseName = Input.HouseName, Address1 = Input.Address1, Address2 = Input.Address2, Postcode = Input.Postcode
                };

                try
                {
                    var result = await _userManager.CreateAsync(user, Input.Password);

                    if (result.Succeeded)
                    {
                        _logger.LogInformation("User created a new account with password.");

                        var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                        var callbackUrl = Url.Page(
                            "/Account/ConfirmEmail",
                            pageHandler: null,
                            values: new { userId = user.Id, code = code },
                            protocol: Request.Scheme);

                        await _emailSender.SendEmailAsync(Input.Email, "Confirm your account",
                                                          $"Please confirm your account by clicking <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'> here</a>.");

                        ViewData["StatusMessage"] = "Please make sure to confirm your account with the email you just recieved.";

                        //await _signInManager.SignInAsync(user, isPersistent: false); //Removed unless we need the user to be auto logged in.
                        return(LocalRedirect(returnUrl));
                    }
                    foreach (var error in result.Errors)
                    {
                        ModelState.AddModelError(string.Empty, error.Description);
                    }
                }

                catch
                {
                    ModelState.AddModelError(string.Empty, "Login Failed, we maybe experiencing issues at the moment.");
                    return(Page());
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
예제 #3
0
        public async Task <IActionResult> Ticket()
        {
            Rail_WebUser user     = null;
            string       username = null;

            try
            {
                user = await _userManager.GetUserAsync(User);

                username = user.UserName;
            }

            catch
            {
            }

            if (username != null)
            {
                Service serviceInst = resultModel.modelInstance.resultValue[0];

                Models.Ticket ticketInst = resultModel.modelInstance.ticketInstance;

                string ticketRef = ticketInst.reference;

                string serviceDet = string.Format("{0},{1},{2},{3},{4},{5},{6},{7},{8}", serviceInst.dep_name, serviceInst.arr_name, serviceInst.dep_time.ToShortTimeString()
                                                  , serviceInst.arr_time.ToShortTimeString(), ticketInst.date.ToShortDateString(), serviceInst.service_operator,
                                                  ticketInst.classType, ticketInst.time, ticketInst.totalCost);

                OrderHistory o = new OrderHistory {
                    Username = username, TicketRef = ticketRef, TicketDet = serviceDet
                };

                _context.Add(o);

                await _context.SaveChangesAsync();
            }

            return(View(resultModel.modelInstance));
        }
예제 #4
0
        public async Task <IActionResult> TicketCheck(string refer, string arrCode, bool std, bool fst)
        {
            refer = refer.Replace('.', '+');

            refer = refer.Replace('^', '/');

            Send("GetOne" + "{" + refer + "{" + arrCode);

            Read();

            string classType = null;

            string cost = null;

            if (std == true && fst == false)
            {
                classType = "Standard";
                cost      = "£15.00";
            }

            else if (std == false && fst == true)
            {
                classType = "First Class";
                cost      = "£20.00";
            }

            DateTime timestamp = DateTime.UtcNow;

            Random rnd = new Random();

            string randomList = "abcdefghijklmnopqrstuvwxyz0123456789";

            string reference = string.Format("{0}{1}{2}{3}{4}{5}{6}{7}{8}", randomList[rnd.Next(0, 35)],
                                             randomList[rnd.Next(0, 35)], randomList[rnd.Next(0, 35)], randomList[rnd.Next(0, 35)],
                                             randomList[rnd.Next(0, 35)], randomList[rnd.Next(0, 35)], randomList[rnd.Next(0, 35)],
                                             randomList[rnd.Next(0, 35)], randomList[rnd.Next(0, 35)]).ToUpper();

            Service r = resultModel.modelInstance.resultValue[0];

            Ticket returnedTicket = new Ticket
            {
                reference = reference,
                arrCode   = arrCode,
                classType = classType,
                date      = timestamp.Date,
                time      = timestamp.ToShortTimeString(),
                depCode   = r.dep_code,
                totalCost = cost
            };

            resultModel.modelInstance.ticketInstance = returnedTicket;

            Rail_WebUser user  = null;
            string       email = "";

            try
            {
                user = await _userManager.GetUserAsync(User);

                email = await _userManager.GetEmailAsync(user);

                await SendEmail(email);
            }
            catch
            {
            }

            return(View(resultModel.modelInstance));
        }