コード例 #1
0
        protected async Task <Adapters.Oal.dbo_consignment_initial> SearchConsignmentInitialAsync(string consignmentNo)
        {
            var adapter = new Adapters.Oal.dbo_consignment_initialAdapter();
            var query   = $"SELECT [dt_created_date_field] FROM [dbo].[consignment_initial] WHERE [number] = '{consignmentNo}'";

            Adapters.Oal.dbo_consignment_initial consignmentInitial = null;

            using (var conn = new System.Data.SqlClient.SqlConnection(adapter.ConnectionString))
                using (var cmd = new System.Data.SqlClient.SqlCommand(query, conn))
                {
                    await conn.OpenAsync();

                    using (var reader = await cmd.ExecuteReaderAsync())
                    {
                        while (await reader.ReadAsync())
                        {
                            consignmentInitial = new Adapters.Oal.dbo_consignment_initial
                            {
                                dt_created_date_field = reader["dt_created_date_field"].ReadNullable <DateTime>()
                            };
                        }
                    }
                }

            return(consignmentInitial);
        }
コード例 #2
0
        protected async Task <Adapters.Oal.dbo_consignment_update> SearchConsignmentUpdateAsync(string consignmentNo)
        {
            var adapter = new Adapters.Oal.dbo_consignment_initialAdapter();
            var query   = $"SELECT [id],[weight_double] FROM [dbo].[consignment_update] WHERE [number] = '{consignmentNo}'";

            Adapters.Oal.dbo_consignment_update consignmentUpdate = null;

            using (var conn = new System.Data.SqlClient.SqlConnection(adapter.ConnectionString))
                using (var cmd = new System.Data.SqlClient.SqlCommand(query, conn))
                {
                    await conn.OpenAsync();

                    using (var reader = await cmd.ExecuteReaderAsync())
                    {
                        while (await reader.ReadAsync())
                        {
                            consignmentUpdate = new Adapters.Oal.dbo_consignment_update
                            {
                                id            = reader["id"].ReadNullableString(),
                                weight_double = reader["weight_double"].ReadNullable <double>()
                            };
                        }
                    }
                }

            return(consignmentUpdate);
        }
コード例 #3
0
        protected async Task <Adapters.Oal.dbo_consignment_initial> SearchConsignmentInitialAsync(string consignmentNo)
        {
            var adapter = new Adapters.Oal.dbo_consignment_initialAdapter();
            var query   = $"SELECT [weight_double], [item_category], [shipper_address_country] FROM [dbo].[consignment_initial] WHERE [number] = '{consignmentNo}'";

            Adapters.Oal.dbo_consignment_initial consignment = null;

            using (var conn = new System.Data.SqlClient.SqlConnection(adapter.ConnectionString))
                using (var cmd = new System.Data.SqlClient.SqlCommand(query, conn))
                {
                    await conn.OpenAsync();

                    using (var reader = await cmd.ExecuteReaderAsync())
                    {
                        while (await reader.ReadAsync())
                        {
                            consignment = new Adapters.Oal.dbo_consignment_initial
                            {
                                weight_double           = reader["weight_double"].ReadNullable <double>(),
                                item_category           = reader["item_category"].ReadNullableString(),
                                shipper_address_country = reader["shipper_address_country"].ReadNullableString()
                            };
                        }
                    }
                }

            return(consignment);
        }
コード例 #4
0
        private async Task ProcessChildIpsImport(Adapters.Oal.dbo_ips_import parent, string consignmentNo)
        {
            var child = parent.Clone();

            child.id             = GenerateId(13);
            child.item_id        = consignmentNo;
            child.data_code_name = "deli";
            child.class_cd       = GetClassCode(consignmentNo);

            var consignmentInitialAdapter = new Adapters.Oal.dbo_consignment_initialAdapter();
            var consignmentInitialPolly   = await Policy.Handle <SqlException>()
                                            .WaitAndRetryAsync(3, c => TimeSpan.FromMilliseconds(c * 500))
                                            .ExecuteAndCaptureAsync(async() => await SearchConsignmentInitialAsync(consignmentNo));

            if (null != consignmentInitialPolly.FinalException)
            {
                throw new Exception("Process child IPS import Polly failed", consignmentInitialPolly.FinalException);
            }

            var consignment = consignmentInitialPolly.Result;

            if (null != consignment)
            {
                child.item_weight_double = consignment.weight_double;
                if (!string.IsNullOrEmpty(consignment.shipper_address_country))
                {
                    child.orig_country_cd = consignment.shipper_address_country;
                }
                if (!string.IsNullOrEmpty(consignment.item_category))
                {
                    child.content = consignment.item_category.Equals("01") ? "M" : "D";
                }
                else
                {
                    child.content = "D";
                }
            }


            var pattern = @"\w{2}\d{9}(?<country>\w{2})";
            var match   = System.Text.RegularExpressions.Regex.Match(consignmentNo, pattern);

            if (match.Success)
            {
                child.orig_country_cd = match.Groups["country"].Value;
            }


            if (null == child.item_weight_double)
            {
                child.item_weight_double = 0d;
            }

            m_deliIpsImportEventRows.Add(child);
        }
コード例 #5
0
        private static async Task InsertConsignmentInitial(IposBoem boem)
        {
            var consignmentInitialMap     = new Integrations.Transforms.IposBoemToOalConsignmentInitial();
            var consignmentInitialAdapter = new Adapters.Oal.dbo_consignment_initialAdapter();
            var item = await consignmentInitialMap.TransformAsync(boem);

            var pr = Policy.Handle <SqlException>()
                     .WaitAndRetryAsync(5, x => TimeSpan.FromMilliseconds(500 * Math.Pow(2, x)))
                     .ExecuteAndCaptureAsync(() => consignmentInitialAdapter.InsertAsync(item));
            var result = await pr;

            if (result.FinalException != null)
            {
                throw result.FinalException; // send to dead letter queue
            }
            System.Diagnostics.Debug.Assert(result.Result > 0, "Should be at least 1 row");
        }