public async Task <bool> CreateOrder(string username, OrderProfileInputModel profile, string paymentMethod) { var user = this.usersRepository .All() .Where(u => u.UserName == username) .FirstOrDefault(); if (user == null) { return(false); } var order = this.OrderFactory(user, profile, paymentMethod); await this.ordersRepository.AddAsync(order); await this.ordersRepository.SaveChangesAsync(); var products = this.cartProductRepository .All() .Where(x => x.ShoppingCartId == user.ShoppingCartId) .AsQueryable(); await this.OrderEntityUpdate(user, order, products); foreach (var entity in products) { this.cartProductRepository.Delete(entity); } await this.cartProductRepository.SaveChangesAsync(); return(true); }
public IActionResult Index(OrderProfileInputModel input) { if (!this.ModelState.IsValid) { return(this.RedirectToAction(nameof(this.Index))); } var sessionOrder = input; ExtensionsConf.SessionConf.SessionExtensions .SetDataObject <OrderProfileInputModel>(this.HttpContext.Session, "sessionOrder", sessionOrder); return(this.RedirectToAction(nameof(this.PaymentMethod))); }
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); }