public void MethodShouldWorkProperlyReturnsTrue() { var repository = new Mock <IDeletableEntityRepository <FamilyKitchenUser> >(); repository.Setup(x => x.All()).Returns(this.TestDataUserRepository().AsQueryable()); IFamilyKitchenUsersService usersService = new FamilyKitchenUsersService(repository.Object); FamilyKitchenUser user = usersService.GetUserByName("*****@*****.**"); Assert.True(user.Email == "*****@*****.**"); Assert.False(user.Id == "d3d03427-f9fa-43c2-b88b-5695decf3326"); }
public async Task <IActionResult> OnPostAsync(string returnUrl = null) { returnUrl = returnUrl ?? this.Url.Content("~/"); this.ExternalLogins = (await this.signInManager.GetExternalAuthenticationSchemesAsync()).ToList(); if (this.ModelState.IsValid) { var user = new FamilyKitchenUser { UserName = this.Input.Email, Email = this.Input.Email, ShoppingCart = new ShoppingCart(), ClientCard = new ClientCard() }; var result = await this.userManager.CreateAsync(user, this.Input.Password); if (result.Succeeded) { this.logger.LogInformation("User created a new account with password."); var code = await this.userManager.GenerateEmailConfirmationTokenAsync(user); code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code)); var callbackUrl = this.Url.Page( "/Account/ConfirmEmail", pageHandler: null, values: new { area = "Identity", userId = user.Id, code = code }, protocol: this.Request.Scheme); await this.emailSender .SendEmailAsync(this.Input.Email, "Confirm your email", $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>."); await this.ClaimCreator(user, this.Input.Nickname, this.Input.PhoneNumber); if (this.userManager.Options.SignIn.RequireConfirmedAccount) { return(this.RedirectToPage("RegisterConfirmation", new { email = this.Input.Email })); } else { await this.signInManager.SignInAsync(user, isPersistent : false); return(this.LocalRedirect(returnUrl)); } } foreach (var error in result.Errors) { this.ModelState.AddModelError(string.Empty, error.Description); } } // If we got this far, something failed, redisplay form return(this.Page()); }
private async Task ClaimCreator(FamilyKitchenUser user, string nickname, string phone) { if (nickname != null) { var claim = new Claim("Nickname", nickname); await this.userManager.AddClaimAsync(user, claim); } if (phone != null) { var claim = new Claim("Phone", phone); await this.userManager.AddClaimAsync(user, claim); } await this.userManager.AddToRoleAsync(user, GlobalConstants.FamilyMemberRoleName); }
public async Task <bool> ReturnFamilyCart(FamilyKitchenUser moderator, FamilyKitchenUser member) { if (moderator == null || member == null) { return(false); } if (moderator.UserName != member.UserName) { var memberCart = this.productCartRepository.All().Where(x => x.ShoppingCartId == member.ShoppingCartId).ToList(); if (memberCart == null) { return(false); } var moderatorCart = memberCart.Select(mc => new ShoppingCartShopProduct { ShoppingCartId = moderator.ShoppingCartId, ShopProductId = mc.ShopProductId, Quantity = mc.Quantity, }).ToList(); foreach (var entity in moderatorCart) { if (this.productCartRepository.All().Any(x => x.ShoppingCartId == entity.ShoppingCartId && x.ShopProductId == entity.ShopProductId)) { this.productCartRepository.Update(entity); } else { await this.productCartRepository.AddAsync(entity); } } foreach (var entity in memberCart) { this.productCartRepository.Delete(entity); } await this.productCartRepository.SaveChangesAsync(); } return(true); }
private async Task OrderEntityUpdate(FamilyKitchenUser user, Order order, IQueryable <ShoppingCartShopProduct> products) { var productList = products.Select(x => new OrderShopProduct { OrderId = order.Id, ShopProductId = x.ShopProductId, Quantity = x.Quantity, Price = Math.Round(x.ShopProduct.Price - (x.ShopProduct.Price * x.ShopProduct.Discount / GlobalConstants.PercentageDivider), GlobalConstants.FractionalDigits), }) .ToList(); var card = this.clientCardRepository .All() .Where(x => x.Id == user.ClientCardId) .FirstOrDefault(); var discount = card.Discount; var subTotal = productList.Sum(x => x.Price * x.Quantity); var totalPrice = Math.Round(subTotal - (subTotal * discount / GlobalConstants.PercentageDivider) + order.DeliveryPrice, GlobalConstants.FractionalDigits); if (totalPrice < 0) { totalPrice = 0; order.PaymentStatus = PaymentStatus.Complete; order.Status = OrderStatus.Paid; } order.OrdersShopProducts = productList; order.TotalPrice = totalPrice; this.ordersRepository.Update(order); await this.ordersRepository.SaveChangesAsync(); card.Voucher = 0; card.DeliveryPrice = 10; this.clientCardRepository.Update(card); await this.clientCardRepository.SaveChangesAsync(); }
private Order OrderFactory(FamilyKitchenUser user, OrderProfileInputModel profile, string paymentMethod) { var card = this.clientCardRepository .All() .Where(x => x.Id == user.ClientCardId) .FirstOrDefault(); var clientCard = user.ClientCard?.DeliveryPrice; var order = new Order() { Status = OrderStatus.PayingAwaiting, PaymentStatus = PaymentStatus.Pending, PaymentMethod = (PaymentMethod)Enum.Parse(typeof(PaymentMethod), paymentMethod), OrderDate = DateTime.UtcNow, DeliveryDate = DateTime.UtcNow.AddDays(2), DeliveryPrice = card.DeliveryPrice, FamilyKitchenUser = user, OrderProfile = this.mapper.Map <OrderProfile>(profile), TotalPrice = 0, }; return(order); }