Ejemplo n.º 1
0
        public void CheckFor(string repNumber, int currentOrderId)
        {
            var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient();
            var orderApiCred   = orderApiClient.CreateCredentials();

            string[] startKitIds     = Properties.Settings.Default.Freedom_StartKitItemId.Split(',');
            bool     isStartKitFound = false;

            var requestOrderListRange  = new GetOrderListRangeRequest(orderApiCred, Properties.Settings.Default.Freedom_StartKitCheckDateFrom, DateTime.Now, null);
            var responseOrderListRange = orderApiClient.GetOrderListRange(requestOrderListRange);

            foreach (var orderList in responseOrderListRange.GetOrderListRangeResult
                     .OrderBy(x => x.OrderID))
            {
                if (isStartKitFound)
                {
                    break;
                }

                if (orderList.Success > 0)
                {
                    var responseOrderInfo = orderApiClient.GetOrderInfo_V2(orderApiCred, orderList.OrderID);
                    if (responseOrderInfo.Success == 0)
                    {
                        throw new InvalidOperationException(responseOrderInfo.Message);
                    }

                    if (responseOrderInfo.RepNumber.Equals(repNumber))
                    {
                        foreach (var startKitId in startKitIds)
                        {
                            var responseOrderDetails = orderApiClient.GetOrderDetailsInfo_V2(orderApiCred, orderList.OrderID);
                            if (responseOrderDetails.Success == 0)
                            {
                                throw new InvalidOperationException(responseOrderDetails.Message);
                            }

                            isStartKitFound = responseOrderDetails.OrderDetailsResponse
                                              .Any(x => x.ProductID.Equals(startKitId));

                            if (isStartKitFound)
                            {
                                break;
                            }
                        }
                    }
                }
            }

            if (!isStartKitFound)
            {
                throw new InvalidOperationException("Стартовый продуктовый набор должен быть заказан");
            }
        }
Ejemplo n.º 2
0
        private void FillFromFreedom(DeliveryParameters deliveryParameters, int orderId)
        {
            var orderApiClient       = ByDesignAPIHelper.CreateOrderAPIClient();
            var orderDetailsResponse = orderApiClient.GetOrderDetailsInfo_V2(orderApiClient.CreateCredentials(), orderId);

            if (orderDetailsResponse.Success == 0)
            {
                throw new InvalidOperationException(orderDetailsResponse.Message);
            }

            List <DeliveryItem> deliveryItems = new List <DeliveryItem>();

            foreach (var responseItem in orderDetailsResponse.OrderDetailsResponse)
            {
                deliveryItems.Add(new DeliveryItem
                {
                    ItemId   = responseItem.ProductID,
                    Name     = responseItem.Description,
                    Quantity = responseItem.Quantity,
                    Cost     = decimal.Parse(responseItem.TaxableAmount, CultureInfo.InvariantCulture),
                    PayCost  = decimal.Parse(responseItem.TaxableAmount, CultureInfo.InvariantCulture)
                });
            }

            var orderInfoResponse = orderApiClient.GetOrderInfo_V2(orderApiClient.CreateCredentials(), orderId);

            if (orderInfoResponse.Success == 0)
            {
                throw new InvalidOperationException(orderInfoResponse.Message);
            }

            Address deliveryAddress = new Address
            {
                PostIndex = orderInfoResponse.ShipPostalCode,
                Country   = orderInfoResponse.ShipCountry,
                State     = orderInfoResponse.ShipState,
                Place     = orderInfoResponse.ShipCity,
                Street_1  = orderInfoResponse.ShipStreet1,
                Street_2  = orderInfoResponse.ShipStreet2
            };

            DeliveryRecipient recipient = new DeliveryRecipient
            {
                FullName = orderInfoResponse.ShipName1,
                Phone    = orderInfoResponse.ShipPhone,
                Email    = orderInfoResponse.ShipEmail
            };

            deliveryParameters.Items           = deliveryItems.ToArray();
            deliveryParameters.DeliveryAddress = deliveryAddress;
            deliveryParameters.Recipient       = recipient;
        }
Ejemplo n.º 3
0
        private void FillItemCosts(DeliveryItem deliveryItem)
        {
            var onlineApiClient = ByDesignAPIHelper.CreateOnlineAPIClient();

            var getInventoryReturn = onlineApiClient.GetInventory_SingleItem(
                onlineApiClient.CreateCredentials(), "1", null, deliveryItem.ItemId, "Wholesale", 0).FirstOrDefault();

            if (getInventoryReturn != null)
            {
                deliveryItem.Cost    = Convert.ToDecimal(getInventoryReturn.Price);
                deliveryItem.PayCost = deliveryItem.Cost;
            }
        }
Ejemplo n.º 4
0
        private void FillFromFreedomHeader(DeliveryParameters deliveryParameters)
        {
            var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient();

            var responseOrderInfo = orderApiClient.GetOrderInfo_V2(orderApiClient.CreateCredentials(), deliveryParameters.OrderId);

            if (responseOrderInfo.Success == 0)
            {
                throw new InvalidOperationException(responseOrderInfo.Message);
            }

            deliveryParameters.Status       = responseOrderInfo.Status;
            deliveryParameters.ShipMethodId = responseOrderInfo.ShipMethodID;
            deliveryParameters.ShipMethod   = responseOrderInfo.ShipMethod;
        }
        public void CheckFor(string custNumber, int currentOrderId)
        {
            var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient();
            var orderApiCred   = orderApiClient.CreateCredentials();

            string[] startKitIds     = Properties.Settings.Default.Freedom_StartKitItemId.Split(',');
            bool     isStartKitFound = false;

            foreach (var startKitId in startKitIds)
            {
                if (isStartKitFound)
                {
                    break;
                }

                var responseClientDidOrder = orderApiClient.CheckOrderedItemForCustomerDIDWithinDate_V2(
                    orderApiCred,
                    custNumber,
                    startKitId,
                    Properties.Settings.Default.Freedom_StartKitCheckDateFrom);

                if (responseClientDidOrder.Success == 0)
                {
                    throw new InvalidOperationException($"Не удается проверить заказы с товаром '{startKitId}' для клиента '{custNumber}'");
                }

                isStartKitFound = (responseClientDidOrder.OrderID > 0); // checking without payment

                if (!isStartKitFound)
                {
                    var orderDetailsResponse = orderApiClient.GetOrderDetailsInfo_V2(orderApiCred, currentOrderId);
                    if (orderDetailsResponse.Success == 0)
                    {
                        throw new InvalidOperationException(orderDetailsResponse.Message);
                    }

                    isStartKitFound = orderDetailsResponse.OrderDetailsResponse
                                      .Any(x => x.ProductID.Equals(startKitId));
                }
            }

            if (!isStartKitFound)
            {
                throw new InvalidOperationException("Стартовый продуктовый набор должен быть заказан");
            }
        }
Ejemplo n.º 6
0
        private List <DeliveryParameters> ReadOrdersToDelivery()
        {
            var result = new List <DeliveryParameters>();

            var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient();
            var orderApiCred   = orderApiClient.CreateCredentials();

            var requestOrderListRecent = new GetOrderListRecentRequest();

            requestOrderListRecent.Credentials          = orderApiCred;
            requestOrderListRecent.PeriodType           = Properties.Settings.Default.Freedom_RecentPeriodType;
            requestOrderListRecent.PeriodLength         = Properties.Settings.Default.Freedom_RecentPeriodLength;
            requestOrderListRecent.EvalDateLastModified = true;
            var responseOrderList = orderApiClient.GetOrderListRecent(requestOrderListRecent);

            foreach (var orderList in responseOrderList.GetOrderListRecentResult)
            {
                var orderToDelivery = new DeliveryParameters
                {
                    OrderId    = orderList.OrderID,
                    CreatedAt  = orderList.CreatedDate,
                    ModifiedAt = orderList.LastModifiedDate
                };

                FillFromFreedomHeader(orderToDelivery);

                if (orderToDelivery.IsPosted && !orderToDelivery.IsSelfPickup)
                {
                    FillFromFreedomDetails(orderToDelivery);
                    FillItemWeights(orderToDelivery);

                    result.Add(orderToDelivery);
                }
            }

            return(result);
        }
Ejemplo n.º 7
0
        public void ProcessNotification(PaymentNotificationData data)
        {
            try
            {
                int orderId = 0;
                if (int.TryParse(data.mnt_transaction_id, out orderId))
                {
                    var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient();
                    var orderApiCred   = orderApiClient.CreateCredentials();
                    var response       = orderApiClient.GetOrderInfo_V2(orderApiCred, orderId);

                    if (response.Success > 0)
                    {
                        int custNum = 0;
                        if (int.TryParse(response.CustomerNumber, out custNum))
                        {
                            if (custNum >= 2000)
                            {
                                var orderDetailsResponse = orderApiClient.GetOrderDetailsInfo_V2(orderApiCred, orderId);
                                if (orderDetailsResponse.Success == 0)
                                {
                                    throw new InvalidOperationException(orderDetailsResponse.Message);
                                }

                                if (orderDetailsResponse.OrderDetailsResponse
                                    .Any(x => x.ProductID.Equals(Properties.Settings.Default.Freedom_VipKitItemId)))
                                {
                                    // change customer type
                                    var onlineApiClient = ByDesignAPIHelper.CreateOnlineAPIClient();
                                    var onlineApiCred   = onlineApiClient.CreateCredentials();

                                    var types         = onlineApiClient.GetCustomerTypes(onlineApiCred);
                                    var preferredType = types.FirstOrDefault(x => x.Abbreviation.Equals(CustomerType_Preferred));
                                    if (preferredType != null)
                                    {
                                        onlineApiClient.SetCustomerType(onlineApiCred, response.CustomerNumber, preferredType.ID);
                                    }
                                }
                            }
                        }

                        OrderStatus currentStatus = OrderStatus.Unknown;
                        if (Enum.TryParse(response.Status, out currentStatus))
                        {
                            if (currentStatus == OrderStatus.Entered)
                            {
                                orderApiClient.SetStatusPosted(orderApiCred, orderId, 0);

                                using (BiWellEntities context = new BiWellEntities())
                                {
                                    order_payment payment = new order_payment
                                    {
                                        order_id   = orderId,
                                        amount     = decimal.Parse(data.mnt_amount, CultureInfo.InvariantCulture),
                                        created_at = DateTime.UtcNow
                                    };

                                    context.order_payment.Add(payment);
                                    context.SaveChanges();
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                _looger.Log(ex.Message);
            }
        }
Ejemplo n.º 8
0
        private void FillFromFreedomDetails(DeliveryParameters deliveryParameters)
        {
            var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient();

            var orderDetailsResponse = orderApiClient.GetOrderDetailsInfo_V2(orderApiClient.CreateCredentials(), deliveryParameters.OrderId);

            if (orderDetailsResponse.Success == 0)
            {
                throw new InvalidOperationException(orderDetailsResponse.Message);
            }

            List <DeliveryItem> deliveryItems = new List <DeliveryItem>();

            foreach (var responseItem in orderDetailsResponse.OrderDetailsResponse)
            {
                DeliveryItem deliveryItem = new DeliveryItem
                {
                    ItemId   = responseItem.ProductID,
                    Name     = responseItem.Description,
                    Quantity = responseItem.Quantity,
                    Cost     = decimal.Parse(responseItem.TaxableAmount, CultureInfo.InvariantCulture),
                    PayCost  = decimal.Parse(responseItem.TaxableAmount, CultureInfo.InvariantCulture)
                };

                FillItemCosts(deliveryItem);

                deliveryItems.Add(deliveryItem);
            }

            var responseOrderInfo = orderApiClient.GetOrderInfo_V2(orderApiClient.CreateCredentials(), deliveryParameters.OrderId);

            if (responseOrderInfo.Success == 0)
            {
                throw new InvalidOperationException(responseOrderInfo.Message);
            }

            OrderClientInfo   orderClientInfo = OrderClientInfo.ExtractFromOrder(responseOrderInfo); // extracting order client info
            var               onlineApiClient = ByDesignAPIHelper.CreateOnlineAPIClient();
            ClientContactInfo contactInfo     = new ClientContactInfo();

            if (orderClientInfo.IsRep)
            {
                var responseRepInfo = onlineApiClient.GetRepInfo_V3(onlineApiClient.CreateCredentials(), orderClientInfo.ClientNumber);
                if (responseRepInfo.Success == 0)
                {
                    throw new InvalidOperationException(responseOrderInfo.Message);
                }

                contactInfo.FirstName = responseRepInfo.Firstname;
                contactInfo.LastName  = responseRepInfo.Lastname;
                contactInfo.Email     = responseRepInfo.Email;
                contactInfo.Phone     = responseRepInfo.Phone1;
            }
            else
            {
                var responseCustInfo = onlineApiClient.GetCustomerInfo_v3(onlineApiClient.CreateCredentials(), orderClientInfo.ClientNumber);
                if (responseCustInfo.Success == 0)
                {
                    throw new InvalidOperationException(responseOrderInfo.Message);
                }

                contactInfo.FirstName = responseCustInfo.FirstName;
                contactInfo.LastName  = responseCustInfo.LastName;
                contactInfo.Email     = responseCustInfo.Email;
                contactInfo.Phone     = responseCustInfo.Phone1;
            }

            Address deliveryAddress = new Address
            {
                PostIndex = responseOrderInfo.ShipPostalCode,
                Country   = responseOrderInfo.ShipCountry,
                State     = responseOrderInfo.ShipState,
                Place     = responseOrderInfo.ShipCity,
                Street_1  = responseOrderInfo.ShipStreet1,
                Street_2  = responseOrderInfo.ShipStreet2
            };

            DeliveryRecipient recipient = new DeliveryRecipient
            {
                FullName = responseOrderInfo.ShipName1,
                Phone    = responseOrderInfo.ShipPhone,
                Email    = responseOrderInfo.ShipEmail
            };

            deliveryParameters.Items           = deliveryItems.ToArray();
            deliveryParameters.DeliveryAddress = deliveryAddress;
            deliveryParameters.Recipient       = recipient;
            deliveryParameters.ContactInfo     = contactInfo;

            var responseTotals = orderApiClient.GetTotals(orderApiClient.CreateCredentials(), deliveryParameters.OrderId);

            if (responseTotals.Success == 0)
            {
                throw new InvalidOperationException(responseTotals.Message);
            }

            deliveryParameters.ShippingTotal = decimal.Parse(responseTotals.ShippingTotal, CultureInfo.InvariantCulture);
        }
Ejemplo n.º 9
0
        public ActionResult Payment(OrderDetails orderDetails)
        {
            try
            {
                if (string.IsNullOrEmpty(orderDetails.OrderId))
                {
                    throw new InvalidOperationException("Номер заказа не указан");
                }

                int orderId = 0;
                if (!int.TryParse(orderDetails.OrderId, out orderId))
                {
                    throw new InvalidCastException("Некорректный формат номера заказа");
                }

                var orderApiClient = ByDesignAPIHelper.CreateOrderAPIClient();
                var orderApiCred   = orderApiClient.CreateCredentials();

                if (Properties.Settings.Default.Freedom_StartKitCheckEnabled)
                {
                    var responseOrderInfo = orderApiClient.GetOrderInfo_V2(orderApiCred, orderId);
                    if (responseOrderInfo.Success == 0)
                    {
                        throw new InvalidOperationException(responseOrderInfo.Message);
                    }

                    OrderClientInfo orderClientInfo = OrderClientInfo.ExtractFromOrder(responseOrderInfo);

                    if (!string.IsNullOrEmpty(orderClientInfo.ClientNumber))
                    {
                        IStartKitOrderChecker startKitChecker = null;
                        if (orderClientInfo.IsRep)
                        {
                            startKitChecker = new RepStartKitOrderChecker();
                        }
                        else
                        {
                            startKitChecker = new CustomerStartKitOrderChecker();
                        }

                        startKitChecker.CheckFor(orderClientInfo.ClientNumber, orderId);
                    }
                    else
                    {
                        throw new InvalidOperationException("Некоррекный формат кода кастомера");
                    }
                }

                var responseTotals = orderApiClient.GetTotals(orderApiCred, orderId);
                if (responseTotals.Success == 0)
                {
                    throw new InvalidOperationException(responseTotals.Message);
                }

                var balanceDue = decimal.Parse(responseTotals.BalanceDue, CultureInfo.InvariantCulture);
                balanceDue          = Math.Floor(balanceDue * 100) / 100;
                orderDetails.Amount = balanceDue;
            }
            catch (Exception ex)
            {
                return(View("OrderError", ex));
            }

            return(View(orderDetails));
        }