예제 #1
0
        public string AddOrder(OrderForCreationVm order)
        {
            Order  newOrder          = _mapper.Map <Order>(order);
            int    orderId           = _orderRepository.AddNewOrder(newOrder);
            string orderConfirmation = GenerateOrderConfrimation(orderId);

            newOrder.OrderConfirmation = orderConfirmation;

            return(orderConfirmation);
        }
 /// <summary>
 /// Eine Bestellung wird für das Produkt angelegt.
 /// </summary>
 /// <param name="product"></param>
 public Order OrderCoffee(Product product)
 {
     if (GetProducts().Contains(product))
     {
         Order newOrder = new Order(product);
         _orderRepository.AddNewOrder(newOrder);
         return(newOrder);
     }
     else
     {
         throw new ArgumentException("Produkt nicht verfügbar");
     }
 }
예제 #3
0
        public async Task <bool> AddNewOrder(NewOrderViewModel order, User orderedBy)
        {
            try
            {
                var totalOrder = await _orderRepository.GetOrderCount();

                var newServiceId = (totalOrder + 1).ToString().PadLeft(OrderServiceIdLength, '0');
                var newOrder     = new Order
                {
                    ServiceId        = newServiceId,
                    OrderBy          = orderedBy,
                    Address          = order.Address,
                    Lat              = order.Lat,
                    Lon              = order.Lon,
                    Zone             = order.Zone,
                    Promotion        = await GetPromoOffer(),
                    Status           = (int)OrderStatus.New,
                    OrderPlacingTime = Utilities.GetPresentDateTime(),
                    OrderItems       = new List <OrderItem>()
                };
                var addMessageResponse = await _userMessageBusiness.AddUserMessage(orderedBy.UserId, (int)MessageType.NewOrder, newServiceId);

                var addOrderResponse = await _orderRepository.AddNewOrder(newOrder);

                if (addMessageResponse == null && !addOrderResponse)
                {
                    return(false);
                }
                var notification = new Notification
                {
                    Type             = (int)NotificationType.AddNewOrder,
                    MessageId        = addMessageResponse,
                    Title            = Constants.NEW_ORDER_MESSAGE_TITLE,
                    Text             = string.Format(Constants.ACK_MESSAGE_TEXT, newServiceId),
                    SenderUserName   = orderedBy.Name,
                    SenderUserId     = orderedBy.UserId,
                    ReceiverUserName = orderedBy.Name,
                    ReceiverUserId   = orderedBy.UserId,
                    Status           = (int)NotificationStatus.NotSent,
                    NotificationId   = Guid.NewGuid().ToString()
                };
                var notificationAdd = await _notificationRepository.AddNotification(notification);

                return(notificationAdd);
            }
            catch (Exception ex)
            {
                throw new Exception("Error placing order." + ex);
            }
        }
예제 #4
0
        public IActionResult Post([FromBody] NewOrderInputModel model)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var res = repo.AddNewOrder(model);

            //if(res.Ord_No == null)
            //{
            //    return Ok(new { Message = "Не верный id пользователя", Status = false });
            //}
            return(Ok(res));
        }
예제 #5
0
        public OrderDTO CreateNewOrder(OrderDTO newOrderDTO)
        {
            Order newOrder = _orderMapper.FromOrderDTOToOrder(newOrderDTO);

            newOrder.CustomerOfThisOrder = SearchCustomer(newOrderDTO.IdOfCustomer);
            if (newOrder.CustomerOfThisOrder == null)
            {
                throw new OrderException();
            }
            foreach (var itemGroup in newOrder.ItemGroups)
            {
                Item itemOfThisGroup = _itemRepository.GetItemBasedOnId(itemGroup.ItemId);
                itemGroup.PriceOfItem          = itemOfThisGroup.Price;
                itemGroup.ShippingDate         = itemGroup.CalculateShippingDate(itemOfThisGroup);
                itemOfThisGroup.AmountInStock -= itemGroup.AmountOfThisItem;
            }
            _orderRepository.AddNewOrder(newOrder);
            return(_orderMapper.FromOrderToOrderDTO(newOrder));
        }
예제 #6
0
        public ActionResult <Order> PlaceOrder(string flightId, string passengerSeat, List <OrderLineDTO> orderLineDTOs)
        {
            Passenger passenger = _passengerRepository.GetByFlightIdAndSeatNumber(flightId, passengerSeat);

            if (passenger == null)
            {
                return(NotFound("Passenger not found"));
            }
            Order order = new Order()
            {
                Passenger = passenger
            };

            _orderRepository.AddNewOrder(order);
            _orderRepository.SaveChanges();

            order = _orderRepository.GetLastOrder();

            foreach (OrderLineDTO orderLineDTO in orderLineDTOs)
            {
                var food = _foodRepository.GetById(orderLineDTO.Food.FoodId);

                if (food == null)
                {
                    return(NotFound("Food not found"));
                }

                OrderLine newOrderLine = new OrderLine
                {
                    FoodId   = food.FoodId,
                    Quantity = orderLineDTO.Quantity
                };

                order.AddOrderLine(newOrderLine);
            }

            passenger.Orders.Add(order);

            _passengerRepository.SaveChanges();

            return(Ok(order));
        }
예제 #7
0
        public Task <int> Handle(AddOrderCommand request, CancellationToken cancellationToken)
        {
            Orders newOrder = new Orders(request.UserId, DateTime.Now, OrderStatus.Draft, request.Payment.CreditCartNumber, request.Payment.Cvv, request.Payment.ExpiredDate, request.Payment.OwnerName, request.ContactMail);

            foreach (var product in request.Products)
            {
                newOrder.AddProduct(product.Id, product.ProductCount, product.Price, product.ProductName, product.ProductCode);
            }

            orderRepository.AddNewOrder(newOrder);

            List <ProductsInStockViewModel> productsToReserve = new List <ProductsInStockViewModel>();

            newOrder.Products.ToList().ForEach(x => productsToReserve.Add(new ProductsInStockViewModel()
            {
                ProductId = x.ProductId,
                OrderProductCancelCount = x.OrderCount
            }));

            ReserveProductsMessage(new ReduceProductInStockCommand(newOrder.Id, productsToReserve));

            return(Task.FromResult(newOrder.Id));
        }
예제 #8
0
 public void Add(Order newOrder)
 {
     _repo.AddNewOrder(newOrder);
 }
예제 #9
0
 public async Task AddNewOrderAsync(string userId, List <Course> courses)
 {
     await orderRepository.AddNewOrder(userId, courses);
 }