public async Task MakeOrder( UserDto userDto, List <OrderedProductDto> orderedProducts, decimal price, decimal advance) { var user = await _userDao.GetByEmail(userDto.Email); if (user == null) { user = userDto; user.CreationSource = UserCreationSource.MadeOrder; user.SubscriptionOptions = SubscriptionOption.All; user.Id = await _userDao.AddUser(user); } ; var tasks = orderedProducts.Select(op => _modelParser.ParseFromSku(op.Sku)); var models = (await Task.WhenAll(tasks)).GroupBy(m => m.Sku).ToDictionary(m => m.Key, m => m.First()); foreach (var prod in orderedProducts) { prod.SerializedProduct = JsonConvert.SerializeObject(models[prod.Sku], Formatting.Indented); prod.ProductLink = $"https://ujin.org/ua/model/{models[prod.Sku].Identifier}?sku={prod.Sku}"; } var order = new OrderDto { UserId = user.Id, Price = price, Advance = advance, OrderedProducts = orderedProducts }; await _orderDao.AddOrder(order); await _mailSender.SendMessage(new SimpleMail { From = _mailSettings.SupportMail, To = _mailSettings.MailTo, Subject = "Ujin jewelry: new order", Body = GenerateMailMessage(order, user) }); }
public ActionResult Order(Order order, int dateId) { IDateDao dates = DatesTableConnection.Instance; IOrderDao orders = OrdersTableConnection.Instance; DatePlay date = dates.GetDateById(dateId); Play play = PlaysTableConnection.Instance.GetPlayById(date.PlayId); getViewBagForOrderPage(dateId); if (date.Date < DateTime.Now) { ModelState.AddModelError("Error order time!", Resources.Resource.ErrorOrderTime); return(View()); } if (!isTrueOrder(order, orders, dateId)) { ModelState.AddModelError("Error order!", Resources.Resource.ErrorOrderNumber); return(View()); } else { try { orders.AddOrder(new Order(0, dateId, CurrentUserService.GetCurrentUser().Id, (int)order.Category, order.Quantity, TheaterInformation.GetPriceByCategoryId((int)order.Category) * order.Quantity, 0)); return(View("OrderAccepted")); } catch (InvalidOperationException) { ModelState.AddModelError("Error order!", Resources.Resource.ErrorOrder); return(View()); } } }
public async Task <Order> AddOrder(Order order) { return(await _orderDao.AddOrder(order)); }