Example #1
0
        public void ImportCustomTrackings(string from, string to)
        {
            var trackingService = new TrackingNumberService(_log, _time, _dbFactory);

            using (var db = _dbFactory.GetRWDb())
            {
                var fromLong = UInt64.Parse(from.Substring(15));
                var toLong   = UInt64.Parse(to.Substring(15));
                for (var i = fromLong; i <= toLong; i++)
                {
                    var tracking = from.Substring(0, 15) + i.ToString();
                    db.CustomTrackingNumbers.Add(new CustomTrackingNumber()
                    {
                        TrackingNumber = trackingService.AppendWithCheckDigit(tracking),
                        CreateDate     = _time.GetAppNowTime(),
                    });
                    db.Commit();
                }
            }
        }
        public IShipmentApi GetShipmentProviderByType(
            ShipmentProviderType providerType,
            ILogService log,
            ITime time,
            IDbFactory dbFactory,
            IWeightService weightService,
            IList <ShipmentProviderDTO> shipmentProviderInfos,
            string defaultCustomType,
            string outputDirectory,
            string reserveDirectory,
            string templateDirectory)
        {
            var trackingNumberService    = new TrackingNumberService(log, time, dbFactory);
            var supportedShippingMethods = new List <ShippingMethodDTO>();

            using (var db = dbFactory.GetRDb())
            {
                supportedShippingMethods = db.ShippingMethods
                                           .GetAllAsDto()
                                           .Where(m => m.ShipmentProviderType == (int)providerType &&
                                                  m.IsActive)
                                           .ToList();
            }

            switch (providerType)
            {
            case ShipmentProviderType.Stamps:
                var stampsProvider =
                    shipmentProviderInfos.FirstOrDefault(p => p.Type == (int)ShipmentProviderType.Stamps);
                if (stampsProvider != null)
                {
                    var authList =
                        shipmentProviderInfos.Where(p => p.Type == (int)ShipmentProviderType.Stamps ||
                                                    p.Type == (int)ShipmentProviderType.StampsPriority)
                        .ToList();
                    return(new StampsShipmentApi(stampsProvider.Id,
                                                 (ShipmentProviderType)stampsProvider.Type,
                                                 log,
                                                 time,
                                                 weightService,
                                                 trackingNumberService,
                                                 authList.ToList <IStampsAuthInfo>(),
                                                 LabelFormat.Jpg,
                                                 false,
                                                 "Children Clothes",
                                                 true,
                                                 outputDirectory,
                                                 reserveDirectory,
                                                 false));
                }
                return(null);

            case ShipmentProviderType.StampsPriority:
                var stampsPriorityProvider =
                    shipmentProviderInfos.FirstOrDefault(p => p.Type == (int)ShipmentProviderType.StampsPriority);
                if (stampsPriorityProvider != null)
                {
                    var authList =
                        shipmentProviderInfos.Where(p => p.Type == (int)ShipmentProviderType.Stamps ||
                                                    p.Type == (int)ShipmentProviderType.StampsPriority)
                        .ToList();
                    return(new StampsShipmentApi(stampsPriorityProvider.Id,
                                                 (ShipmentProviderType)stampsPriorityProvider.Type,
                                                 log,
                                                 time,
                                                 weightService,
                                                 trackingNumberService,
                                                 authList.ToList <IStampsAuthInfo>(),
                                                 LabelFormat.Jpg,
                                                 false,
                                                 "Children Clothes",
                                                 true,
                                                 outputDirectory,
                                                 reserveDirectory,
                                                 false));
                }
                return(null);

            case ShipmentProviderType.Amazon:
                var amazonProvider =
                    shipmentProviderInfos.FirstOrDefault(p => p.Type == (int)ShipmentProviderType.Amazon);
                if (amazonProvider != null)
                {
                    return(new AmazonShipmentApi(amazonProvider.Id,
                                                 log,
                                                 time,
                                                 weightService,
                                                 supportedShippingMethods,
                                                 amazonProvider.Key1,
                                                 amazonProvider.Key2,
                                                 amazonProvider.Password,
                                                 amazonProvider.StampUsername,
                                                 amazonProvider.EndPointUrl,
                                                 outputDirectory,
                                                 reserveDirectory,
                                                 templateDirectory));
                }
                return(null);

            case ShipmentProviderType.Dhl:
                var dhlProvider =
                    shipmentProviderInfos.FirstOrDefault(p => p.Type == (int)ShipmentProviderType.Dhl);
                if (dhlProvider != null)
                {
                    return(new DhlShipmentApi(dhlProvider.Id,
                                              log,
                                              time,
                                              dhlProvider.EndPointUrl,
                                              dhlProvider.UserName,
                                              dhlProvider.Password,
                                              dhlProvider.Key1,
                                              dhlProvider.Key2,
                                              outputDirectory,
                                              reserveDirectory,
                                              templateDirectory));
                }
                return(null);

            case ShipmentProviderType.DhlECom:
                var dhlEComProvider =
                    shipmentProviderInfos.FirstOrDefault(p => p.Type == (int)ShipmentProviderType.DhlECom);
                if (dhlEComProvider != null)
                {
                    return(new DhlECommerceShipmentApi(dhlEComProvider.Id,
                                                       log,
                                                       time,
                                                       dbFactory,
                                                       weightService,
                                                       dhlEComProvider.UserName,
                                                       dhlEComProvider.Password,
                                                       dhlEComProvider.Key1,
                                                       dhlEComProvider.Key2,
                                                       dhlEComProvider.Key3,
                                                       defaultCustomType,
                                                       outputDirectory,
                                                       reserveDirectory,
                                                       GetFreshTokenInfo(dbFactory, ShipmentProviderType.DhlECom)?.Token,
                                                       () => GetFreshTokenInfo(dbFactory, ShipmentProviderType.DhlECom),
                                                       (t) => StoreNewTokenInfo(dbFactory, ShipmentProviderType.DhlECom, t)));
                }
                return(null);

            case ShipmentProviderType.IBC:
                var ibcProvider =
                    shipmentProviderInfos.FirstOrDefault(p => p.Type == (int)ShipmentProviderType.IBC);
                if (ibcProvider != null)
                {
                    return(new IBCShipmentApi(ibcProvider.Id,
                                              log,
                                              time,
                                              dbFactory,
                                              weightService,
                                              PortalEnum.PA,
                                              ibcProvider.EndPointUrl,
                                              ibcProvider.UserName,
                                              ibcProvider.Password,
                                              ibcProvider.Key1,
                                              defaultCustomType,
                                              outputDirectory,
                                              reserveDirectory));
                }
                return(null);

            case ShipmentProviderType.SkyPostal:
                var skyPostalProvider =
                    shipmentProviderInfos.FirstOrDefault(p => p.Type == (int)ShipmentProviderType.SkyPostal);
                if (skyPostalProvider != null)
                {
                    return(new SkyPostalShipmentApi(skyPostalProvider.Id,
                                                    log,
                                                    time,
                                                    dbFactory,
                                                    weightService,
                                                    PortalEnum.PA,
                                                    skyPostalProvider.EndPointUrl,
                                                    skyPostalProvider.UserName,
                                                    skyPostalProvider.Password,
                                                    skyPostalProvider.Key1,
                                                    skyPostalProvider.Key2,
                                                    skyPostalProvider.Key3,
                                                    defaultCustomType,
                                                    outputDirectory,
                                                    reserveDirectory));
                }
                return(null);

            case ShipmentProviderType.FedexSmartPost:
            case ShipmentProviderType.FedexOneRate:
            case ShipmentProviderType.FedexGeneral:
                var fedexProvider =
                    shipmentProviderInfos.FirstOrDefault(p => p.Type == (int)providerType);
                if (fedexProvider != null)
                {
                    return(new FedexShipmentApi(PortalEnum.PA,
                                                fedexProvider.Id,
                                                log,
                                                time,
                                                weightService,
                                                fedexProvider.EndPointUrl,
                                                fedexProvider.UserName,
                                                fedexProvider.Password,
                                                fedexProvider.Key1,
                                                fedexProvider.Key2,
                                                fedexProvider.Key3,
                                                (FedexRateTypes)Int32.Parse(fedexProvider.Key4),
                                                defaultCustomType,
                                                outputDirectory,
                                                reserveDirectory,
                                                templateDirectory));
                }
                return(null);

            case ShipmentProviderType.FIMS:
                var fimsProvider =
                    shipmentProviderInfos.FirstOrDefault(p => p.Type == (int)providerType);
                if (fimsProvider != null)
                {
                    return(new FIMSShipmentApi(fimsProvider.Id,
                                               log,
                                               time,
                                               fimsProvider.EndPointUrl,
                                               fimsProvider.Key1,
                                               fimsProvider.Key2,
                                               fimsProvider.Key3, //air bill number
                                               defaultCustomType,
                                               outputDirectory,
                                               reserveDirectory,
                                               templateDirectory));
                }
                return(null);
            }
            return(null);
        }