コード例 #1
0
        public Task <IEnumerable <Product> > GetProductAsync(SuggestProductModel m, IValueAddedServicesRules rules)
        {
            var products = new[]
            {
                new Product {
                    Code = "PLD100", Name = "Pos Laju Domestic", Parent = "", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
                new Product {
                    Code = "PLD1001", Name = "Next Day Delivery", Parent = "PLD100", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
                new Product {
                    Code = "PLD1002", Name = "Same Day Delivery", Parent = "PLD100", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
                new Product {
                    Code = "PLD1004", Name = "Borneo Economy Express", Parent = "", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
                new Product {
                    Code = "PLD1005", Name = "Putrajaya Express", Parent = "PLD100", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
                new Product {
                    Code = "PLD1006", Name = "Parcel Domestic Surface", Parent = "PLD100", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
                new Product {
                    Code = "PLD1007", Name = "Parcel Domestic Air", Parent = "PLD100", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
                new Product {
                    Code = "PLD1008", Name = "Courier Charges - TNT", Parent = "PLD100", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
                new Product {
                    Code = "PLD1009", Name = "PosLaju Economy Package", Parent = "PLD100", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
                new Product {
                    Code = "PLD1012", Name = "COURIER CHARGES - LPM SPM", Parent = "PLD100", ValidFrom = DateTime.Today.AddYears(-1), ValidTo = DateTime.Today.AddYears(1)
                },
            };

            return(Task.FromResult(products.AsEnumerable()));
        }
コード例 #2
0
ファイル: SqlSnbService.cs プロジェクト: AmirAkmal92/Entt.ost
        // ReSharper restore UnusedAutoPropertyAccessor.Local
        // ReSharper restore UnusedMember.Local


        public async Task<IEnumerable<Product>> GetProductAsync(SuggestProductModel model, IValueAddedServicesRules rules)
        {
            var international = (model.Country == "MY" || model.Country == "Malaysia") ? "0" : "1";
            string sql = $@"
SELECT 
    * 
FROM 
    [dbo].[Product] 
WHERE 
    [Ost] = 1
AND 
    [Status] <> 2 
AND 
    [ValidFrom] <= GETDATE() 
AND 
    [ValidTo] >= GETDATE() 
AND 
    [IsInternational] = {international}
AND
    [MinWeight] <= {model.Weight}
AND
    [MaxWeight] >= {model.Weight}";
            using (var conn = new SqlConnection(ConnectionString))
            {
                await conn.OpenAsync();
                var list = await conn.QueryAsync<Product>(sql);
                // TODO : read the value add services
                var vas = (await conn.QueryAsync<SnbValuedAddedService>("SELECT * FROM [dbo].[ValueAddedService] WHERE [Ost] = 1 AND [ValidFrom] <= GETDATE() AND [ValidTo] >= GETDATE()")).ToList();
                var surcharges = (await conn.QueryAsync<SnbSurcharge>("SELECT * FROM [dbo].[Surcharge] WHERE [SbuName] = 'PosLaju' AND [ValidFrom] <= GETDATE() AND [ValidTo] >= GETDATE()")).ToList();


                var products = new List<Product>();
                foreach (var product in list)
                {
                    product.Initialize();
                    var validServices = new List<ValueAddedService>();
                    foreach (var v in product.ValueAddedServices)
                    {
                        var db = vas.SingleOrDefault(x => x.Code == v.Code);
                        if (null == db) continue;
                        //v.Value = db.Value;
                        v.Name = db.Name;
                        v.IsGst = db.IsGst;
                        v.Formula = db.Formula;
                        v.FormulaPosition = db.FormulaPosition;
                        //[{__type:"SalesBilling.Domain.Entities.Pricing.UserInput, SalesBilling.Domain",Name:DECLARED_VALUE,Value:0.0}]
                        var text = db.SerializedUserInputs.Replace("SalesBilling.Domain.Entities.Pricing.UserInput, SalesBilling.Domain", "Bespoke.PostEntt.Ost.Services.UserInput, snb.services");
                        var userInputs = ServiceStack.Text.TypeSerializer.DeserializeFromString<List<UserInput>>(text);
                        v.UserInputs.AddRange(userInputs);

                        var valid = await rules.Validate(model, product, v);
                        if (valid)
                            validServices.Add(v);
                    }
                    product.ValueAddedServices.Clear();
                    product.ValueAddedServices.AddRange(validServices);

                    var validSurcharges = new List<Surcharge>();
                    foreach (var sc in product.Surcharges)
                    {
                        var db = surcharges.SingleOrDefault(x => x.Code == sc.Code);
                        if (null == db) continue;
                        //v.Value = db.Value;
                        sc.Name = db.Name;
                        sc.IsGst = db.IsGst;
                        sc.Formula = db.Formula;
                        sc.FormulaPosition = db.FormulaPosition;
                        validSurcharges.Add(sc);
                    }
                    product.Surcharges.Clear();
                    product.Surcharges.AddRange(validSurcharges);


                    products.Add(product);
                }
                return products;
            }
        }