예제 #1
0
 void EnsureDefinitionReady()
 {
     if (this.extensions != null)
     {
         this.extensions.Initialize();
         if (this.extensions.HasTrackingParticipant)
         {
             this.HasTrackingParticipant = true;
             if (this.trackingProvider == null)
             {
                 this.trackingProvider = new TrackingProvider(this.WorkflowDefinition);
             }
             else
             {
                 // TrackingProvider could be non-null if an earlier initialization attempt failed.
                 // This happens when WorkflowApplication calls Abort after a load failure. In this
                 // case we want to preserve any pending tracking records (e.g. DU failure).
                 this.trackingProvider.ClearParticipants();
             }
             foreach (TrackingParticipant trackingParticipant in GetExtensions <TrackingParticipant>())
             {
                 this.trackingProvider.AddParticipant(trackingParticipant);
             }
         }
     }
     else
     {
         // need to ensure the workflow has been validated since the host isn't using extensions (and so didn't register anything)
         ValidateWorkflow(null);
     }
 }
예제 #2
0
        public void GetExport_LazyOrExportFactoryContractType_ReturnsExpected(Type type, Type[] expectedContractTypes)
        {
            var tracker = new TrackingProvider();

            using (CompositionHost host = CompositionHost.CreateCompositionHost(tracker))
            {
                Assert.False(host.TryGetExport(type, out object export));
                Assert.Equal(expectedContractTypes, tracker.Contracts.Select(c => c.ContractType));
            }
        }
예제 #3
0
        public void GetExport_ExportFactoryContractWithMetadataConstraints_ReturnsExpected(Type contractType, string[] sharingBoundaryNames, Type[] expectedTypes)
        {
            var tracker = new TrackingProvider();

            using (CompositionHost host = CompositionHost.CreateCompositionHost(tracker))
            {
                var contract = new CompositionContract(contractType, "contractName", new Dictionary <string, object> {
                    { "SharingBoundaryNames", sharingBoundaryNames }
                });

                Assert.False(host.TryGetExport(contract, out object export));
                Assert.Equal(expectedTypes, tracker.Contracts.Select(c => c.ContractType));
            }
        }
예제 #4
0
        public void GetExport_ImoportManyWithMetadataConstraints_ReturnsExpected(Type contractType, Type[] expectedTypes)
        {
            var tracker = new TrackingProvider();

            using (CompositionHost host = CompositionHost.CreateCompositionHost(tracker))
            {
                var contract = new CompositionContract(contractType, "contractName", new Dictionary <string, object> {
                    { "IsImportMany", true }
                });

                Assert.True(host.TryGetExport(contract, out object export));
                Assert.Empty(Assert.IsAssignableFrom <Array>(export));
                Assert.Equal(expectedTypes, tracker.Contracts.Select(c => c.ContractType));
            }
        }
예제 #5
0
        protected void PackagesGridView_RowDataBound(object sender, System.Web.UI.WebControls.GridViewRowEventArgs e)
        {
            OrderPackage p = (OrderPackage)e.Row.DataItem;

            if (p != null)
            {
                string serviceCodeName = "Other";
                int    trackerCode     = 0;

                int.TryParse(p.ShippingProviderId, out trackerCode);

                TrackingProvider trackProvider = TrackingProvider.None;

                switch (trackerCode)
                {
                case 1:
                    serviceCodeName = "UPS";
                    trackProvider   = TrackingProvider.UPS;
                    break;

                case 2:
                    serviceCodeName = "FedEx";
                    trackProvider   = TrackingProvider.FedEx;
                    break;

                case 3:
                    serviceCodeName = "US Postal Service";
                    trackProvider   = TrackingProvider.USPostal;
                    break;
                }
                //IShippingService provider = MerchantTribe.Commerce.Shipping.AvailableServices.FindById(p.ShippingProviderId);


                //List<IServiceCode> codes = provider.ListAllServiceCodes();
                //foreach (IServiceCode item in codes) {
                //    if (item.Code == p.ShippingProviderServiceCode) {
                //        serviceCodeName = item.DisplayName;
                //    }
                //}

                Label ShippedByField = (Label)e.Row.FindControl("ShippedByField");
                if (ShippedByField != null)
                {
                    //if (provider != null) {
                    //    if (serviceCodeName != string.Empty) {
                    ShippedByField.Text = serviceCodeName;
                    //    }
                    //    else {
                    //        ShippedByField.Text = provider.Name;
                    //    }
                    //}
                }

                HyperLink TrackingLink = (HyperLink)e.Row.FindControl("TrackingLink");
                if (TrackingLink != null)
                {
                    TrackingLink.Text = p.TrackingNumber;
                    //if (provider != null) {
                    //    if (o != null && o.Bvin != string.Empty) {
                    //        //if (provider.SupportsTracking()) {
                    //        //    TrackingLink.Text = "Track Package";
                    //        //    TrackingLink.NavigateUrl = provider.GetTrackingUrl(p.TrackingNumber);
                    //        //}
                    //    }
                    //}
                }

                TextBox TrackingTextBox = (TextBox)e.Row.FindControl("TrackingNumberTextBox");
                if (TrackingTextBox != null)
                {
                    TrackingTextBox.Text = p.TrackingNumber;
                }

                Label items = (Label)e.Row.FindControl("items");
                if (items != null)
                {
                    items.Text = string.Empty;
                    foreach (OrderPackageItem pi in p.Items)
                    {
                        if (pi.Quantity > 0)
                        {
                            items.Text += pi.Quantity.ToString("#") + " - ";
                            if (o != null)
                            {
                                foreach (LineItem li in o.Items)
                                {
                                    if (li.Id == pi.LineItemId)
                                    {
                                        items.Text += li.ProductSku + ": " + li.ProductName + "<br />";
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }