public async Task <IActionResult> AddToBasket(int productId, string username) { if (!_signInManager.IsSignedIn(User)) { return(RedirectToAction("Login", "Account")); } //Get user's basket by username Basket basket = await _basketManager.FindBasketByUserLazy(username); // If basket for user doesn't exist yet, create one if (basket == null) { basket = new Basket() { ID = 0, UserName = username, Subtotal = 0, BasketItems = new List <BasketItem>() }; await _basketManager.CreateBasket(basket); // Gets the new basket with assigned ID from DB basket = await _basketManager.FindBasketByUserLazy(username); } // Check basketitems basket ID and product ID BasketItem basketItem = await _basketItemManager.FindBasketItem(basket.ID, productId); // If item doesn't already exist, create it; otherwise update it if (basketItem == null) { basketItem = new BasketItem() { ID = 0, BasketID = basket.ID, ProductID = productId, Quantity = 1 }; await _basketItemManager.CreateBasketItem(basketItem); } else { basketItem.Quantity++; await _basketItemManager.UpdateBasketItem(basketItem); } // Redirect to Shop action on Shop page return(RedirectToAction("Shop", "Shop")); }
public JsonResult AddToCart(string partNo, int quantity) { var currentBasket = GetCurrentBasket(); if (string.IsNullOrEmpty(currentBasket.ExternalId)) { currentBasket = (BasketDto)_basketManager.CreateBasket(_sessionModel.CurrentUser); _sessionModel.CurrentBasketId = currentBasket.ExternalId; } currentBasket = (BasketDto)_basketManager.AddItem(_sessionModel.CurrentUser, currentBasket.ExternalId, partNo, quantity); return(Json(currentBasket)); }
public async Task <IActionResult> Register(RegistrationViewModel model) { if (ModelState.IsValid) { ApplicationUser user = new ApplicationUser { UserName = model.EmailAddress, Email = model.EmailAddress, FirstName = model.FirstName, LastName = model.LastName, Computer = model.Computer }; var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { // Add custom Claims based on user input Claim nameClaim = new Claim("FullName", $"{user.FirstName} {user.LastName}"); Claim emailClaim = new Claim(ClaimTypes.Email, user.Email, ClaimValueTypes.Email); Claim computerClaim = new Claim("Computer", user.Computer.ToString()); List <Claim> claims = new List <Claim> { nameClaim, emailClaim, computerClaim }; await _userManager.AddClaimsAsync(user, claims); // Add Roles to specific users if (user.Email.ToLower().Contains("@codefellows.com") || user.Email.ToLower() == "*****@*****.**" || user.Email.ToLower() == "*****@*****.**" || user.Email.ToLower() == "*****@*****.**") { await _userManager.AddToRoleAsync(user, ApplicationRoles.Admin); } await _userManager.AddToRoleAsync(user, ApplicationRoles.Member); // Send user a confirmation email string subject = "Welcome to 8-Bit Twist!"; StringBuilder sb = new StringBuilder(); sb.AppendLine("<h1>Welcome to 8-Bit Twist!</h1>"); sb.AppendLine($"<p>Dear {user.FirstName}</p>"); sb.AppendLine($"<p>Thank you for joining <a href=\"https://8-bit-twist.azurewebsites.net/\">8-Bit Twist</a>!</p>"); await _emailSender.SendEmailAsync(user.Email, subject, sb.ToString()); // Sign user in await _signInManager.SignInAsync(user, false); // Create a new basket for the user Basket basket = await _bsktManager.CreateBasket(user.Id); user.BasketID = basket.ID; await _userManager.UpdateAsync(user); // If user is Admin, redirect to Admin dashboard if (await _userManager.IsInRoleAsync(user, ApplicationRoles.Admin)) { return(RedirectToPage("/Admin/Index")); } // Redirect to home page return(RedirectToAction("Index", "Home")); } } return(View(model)); }
public async Task <IActionResult> Register(RegisterViewModel rvm) { if (ModelState.IsValid) { ApplicationUser user = new ApplicationUser { Email = rvm.Email, UserName = rvm.Email, FirstName = rvm.FirstName, LastName = rvm.LastName, Birthday = rvm.Birthday, LoveAnimals = rvm.LoveAnimals }; var result = await _userManager.CreateAsync(user, rvm.Password); if (!result.Succeeded) { ModelState.AddModelError(string.Empty, "I'm sorry, something went wrong. Please try again."); } ///Sets claims if (result.Succeeded) { Claim nameClaim = new Claim("FullName", $"{user.FirstName} { user.LastName} "); Claim emailClaim = new Claim(ClaimTypes.Email, user.Email, ClaimValueTypes.Email); Claim dateOfBirthClaim = new Claim(ClaimTypes.DateOfBirth, new DateTime(user.Birthday.Year, user.Birthday.Month, user.Birthday.Day).ToString("u"), ClaimValueTypes.DateTime); Claim loveAnimalsClaim = new Claim("LovesAnimals", user.LoveAnimals); List <Claim> claims = new List <Claim> { nameClaim, emailClaim, dateOfBirthClaim, loveAnimalsClaim }; await _userManager.AddClaimsAsync(user, claims); //give the user a role. if (rvm.Email.ToLower() == "*****@*****.**") { await _userManager.AddToRoleAsync(user, ApplicationRoles.Admin); } if (rvm.Email.ToLower() == "*****@*****.**") { await _userManager.AddToRoleAsync(user, ApplicationRoles.Admin); } if (rvm.Email.ToLower() == "*****@*****.**") { await _userManager.AddToRoleAsync(user, ApplicationRoles.Admin); } if (rvm.Email.ToLower() == "*****@*****.**") { await _userManager.AddToRoleAsync(user, ApplicationRoles.Admin); } await _userManager.AddToRoleAsync(user, ApplicationRoles.Member); ///Sends emails on registration await _emailSender.SendEmailAsync(rvm.Email, "Thank you for registering", "<p> Hello Welcome </p>"); await _signInManager.SignInAsync(user, isPersistent : false); Basket basket = new Basket() { TotalItems = 0, TotalPrice = 0, UserName = user.UserName, BasketList = null }; await _context.CreateBasket(basket); return(RedirectToAction("Index", "Home")); } } return(View(rvm)); }