コード例 #1
0
ファイル: OrderService.cs プロジェクト: marta1994/Ujin
        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)
            });
        }
コード例 #2
0
ファイル: PlaysController.cs プロジェクト: Olgasn/Theater
        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());
                }
            }
        }
コード例 #3
0
 public async Task <Order> AddOrder(Order order)
 {
     return(await _orderDao.AddOrder(order));
 }