protected virtual void LoadOrderDependencies(CustomerOrder order)
 {
     if (order == null)
     {
         throw new ArgumentNullException(nameof(order));
     }
     if (ShippingMethodsService != null)
     {
         var shippingMethods = ShippingMethodsService.GetAllShippingMethods();
         if (!shippingMethods.IsNullOrEmpty() && !order.Shipments.IsNullOrEmpty())
         {
             foreach (var shipment in order.Shipments)
             {
                 shipment.ShippingMethod = shippingMethods.FirstOrDefault(x => x.Code.EqualsInvariant(shipment.ShipmentMethodCode));
             }
         }
     }
     if (PaymentMethodsService != null)
     {
         var paymentMethods = PaymentMethodsService.GetAllPaymentMethods();
         if (!paymentMethods.IsNullOrEmpty() && !order.InPayments.IsNullOrEmpty())
         {
             foreach (var payment in order.InPayments)
             {
                 payment.PaymentMethod = paymentMethods.FirstOrDefault(x => x.Code.EqualsInvariant(payment.GatewayCode));
             }
         }
     }
 }
        public virtual CustomerOrder[] GetByIds(string[] orderIds, string responseGroup = null)
        {
            var retVal             = new List <CustomerOrder>();
            var orderResponseGroup = EnumUtility.SafeParse(responseGroup, CustomerOrderResponseGroup.Full);

            using (var repository = RepositoryFactory())
            {
                var orderEntities = repository.GetCustomerOrdersByIds(orderIds, orderResponseGroup);
                foreach (var orderEntity in orderEntities)
                {
                    var customerOrder = AbstractTypeFactory <CustomerOrder> .TryCreateInstance();

                    if (customerOrder != null)
                    {
                        customerOrder = orderEntity.ToModel(customerOrder) as CustomerOrder;
                        if (customerOrder != null)
                        {
                            var shippingMethods = ShippingMethodsService.GetAllShippingMethods();
                            if (!shippingMethods.IsNullOrEmpty())
                            {
                                foreach (var shipment in customerOrder.Shipments)
                                {
                                    shipment.ShippingMethod = shippingMethods.FirstOrDefault(x => x.Code.EqualsInvariant(shipment.ShipmentMethodCode));
                                }
                            }

                            var paymentMethods = PaymentMethodsService.GetAllPaymentMethods();
                            if (!paymentMethods.IsNullOrEmpty())
                            {
                                foreach (var payment in customerOrder.InPayments)
                                {
                                    payment.PaymentMethod = paymentMethods.FirstOrDefault(x => x.Code.EqualsInvariant(payment.GatewayCode));
                                }
                            }
                        }
                        //Calculate totals only for full responseGroup
                        if (orderResponseGroup == CustomerOrderResponseGroup.Full)
                        {
                            TotalsCalculator.CalculateTotals(customerOrder);
                        }
                        retVal.Add(customerOrder);
                    }
                }
            }

            DynamicPropertyService.LoadDynamicPropertyValues(retVal.ToArray <IHasDynamicProperties>());

            foreach (var order in retVal)
            {
                ChangeLogService.LoadChangeLogs(order);
                //Make general change log for order
                order.OperationsLog = order.GetFlatObjectsListWithInterface <IHasChangesHistory>()
                                      .Distinct()
                                      .SelectMany(x => x.OperationsLog)
                                      .OrderBy(x => x.CreatedDate)
                                      .Distinct().ToList();
            }

            return(retVal.ToArray());
        }
Esempio n. 3
0
        public PaymentMethodsServiceTests()
        {
            var options = new DbContextOptionsBuilder <TrainConnectedDbContext>()
                          .UseInMemoryDatabase(Guid.NewGuid().ToString())
                          .Options;
            var dbContext = new TrainConnectedDbContext(options);

            AutoMapperConfig.RegisterMappings(new[]
            {
                typeof(ErrorViewModel).GetTypeInfo().Assembly,
                typeof(WorkoutActivityEditInputModel).GetTypeInfo().Assembly,
            });

            this.paymentMethodsRepository = new EfRepository <PaymentMethod>(dbContext);
            this.paymentMethodsService    = new PaymentMethodsService(this.paymentMethodsRepository);
        }
        public override CustomerOrder[] GetByIds(string[] orderIds, string responseGroup = null)
        {
            var retVal             = new List <CustomerOrder>();
            var orderResponseGroup = EnumUtility.SafeParse(responseGroup, CustomerOrderResponseGroup.Full);

            using (var repository = RepositoryFactory())
            {
                var orderEntities = repository.GetCustomerOrdersByIds(orderIds, orderResponseGroup);
                foreach (var orderEntity in orderEntities)
                {
                    var customerOrder = AbstractTypeFactory <CustomerOrder> .TryCreateInstance();

                    if (customerOrder != null)
                    {
                        var shippingMethods = ShippingMethodsService.GetAllShippingMethods();
                        var paymentMethods  = PaymentMethodsService.GetAllPaymentMethods();

                        customerOrder = orderEntity.ToModel(customerOrder) as CustomerOrder;
                        if (!shippingMethods.IsNullOrEmpty())
                        {
                            foreach (var shipment in customerOrder.Shipments)
                            {
                                shipment.ShippingMethod = shippingMethods.FirstOrDefault(x => x.Code.EqualsInvariant(shipment.ShipmentMethodCode));
                            }
                        }
                        if (!paymentMethods.IsNullOrEmpty())
                        {
                            foreach (var payment in customerOrder.InPayments)
                            {
                                payment.PaymentMethod = paymentMethods.FirstOrDefault(x => x.Code.EqualsInvariant(payment.GatewayCode));
                            }
                        }
                        retVal.Add(customerOrder);
                    }
                }
            }
            DynamicPropertyService.LoadDynamicPropertyValues(retVal.ToArray());

            return(retVal.ToArray());
        }