Esempio n. 1
0
        private ViewModels.OrderViewModel _processOrderRequest(OrderDataDTO orderDTO, string group)
        {
            IOrderProcess orderProcessFactory = null;

            if (Utils.ValidationUtils.IsDangerousString(orderDTO.OrderIdentifier, out int badidx))
            {
                return new ViewModels.OrderViewModel()
                       {
                           ErrorMessage = "Invalid orderIdentifier"
                       }
            }
            ;

            var orderViewModel = orderRepository.GetOrder(orderDTO.OrderIdentifier);

            var service = db.ServiceSettings.FirstOrDefault(ln => ln.ServiceUrl == group);

            if (service == null)
            {
                return new ViewModels.OrderViewModel()
                       {
                           ErrorMessage = "could not get service..."
                       }
            }
            ;


            orderProcessFactory = Factories.OrderProcessFactory.GetOrderProcessImplementation(service.ServiceType);

            if (orderViewModel == null)
            {
                if (orderDTO.Items.Count == 0)
                {
                    return new ViewModels.OrderViewModel()
                           {
                               ErrorMessage = BaseResource.Get("NoItemsForOrder")
                           }
                }
                ;

                orderViewModel = orderProcessFactory.CheckOrder(orderDTO);
                if (!string.IsNullOrEmpty(orderViewModel.ErrorMessage))
                {
                    return(orderViewModel);
                }

                var orderItems     = orderRepository.CheckProducts(orderDTO.Items);
                var productOwnerId = orderItems.FirstOrDefault().OwnerId; // --!
                var storeUser      = userRepository.GetUser(productOwnerId);
                var customerUser   = userRepository.GetUserFromSignalR(Context.ConnectionId);

                if (storeUser == null || customerUser == null || productOwnerId == -1 || orderItems.Count == 0)
                {
                    return(new ViewModels.OrderViewModel()
                    {
                        ErrorMessage = "Invalid Order-Data...",
                    });
                }

                orderViewModel.Items        = orderItems;
                orderViewModel.CustomerUser = customerUser;
                orderViewModel.StoreUser    = storeUser;
            }

            bool isStoreUser = false;

            if (Context.User.Identity.Name == orderViewModel.StoreUser.Name)
            {
                isStoreUser = true;
            }

            orderProcessFactory = Factories.OrderProcessFactory.GetOrderProcessImplementation(Enums.EnumServiceType.OrderService);
            var orderVMResult = orderProcessFactory.ProcessOrder(orderViewModel, isStoreUser);

            orderViewModel = orderVMResult;

            return(orderViewModel);
        }