Skip to content

Commit 2785310

Browse files
committed
AC-357430: update of the commerce connector project
1 parent a841d04 commit 2785310

11 files changed

Lines changed: 65 additions & 69 deletions

File tree

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/BCBindingWooCommerce.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,39 +30,39 @@ public abstract class bindingID :
3030
[PXDBString(50, IsUnicode = true, InputMask = "")]
3131
[PXUIField(DisplayName = "API Path")]
3232
[PXDefault()]
33-
public virtual string StoreBaseUrl { get; set; }
33+
public virtual string? StoreBaseUrl { get; set; }
3434
public abstract class storeBaseUrl :
3535
PX.Data.BQL.BqlString.Field<storeBaseUrl> { }
3636
#endregion
3737
#region StoreXAuthClient
3838
[PXRSACryptString(IsUnicode = true, InputMask = "")]
3939
[PXUIField(DisplayName = "Consumer Key")]
4040
[PXDefault()]
41-
public virtual string StoreXAuthClient { get; set; }
41+
public virtual string? StoreXAuthClient { get; set; }
4242
public abstract class storeXAuthClient :
4343
PX.Data.BQL.BqlString.Field<storeXAuthClient> { }
4444
#endregion
4545
#region StoreXAuthToken
4646
[PXRSACryptString(IsUnicode = true, InputMask = "")]
4747
[PXUIField(DisplayName = "Consumer Secret")]
4848
[PXDefault()]
49-
public virtual string StoreXAuthToken { get; set; }
49+
public virtual string? StoreXAuthToken { get; set; }
5050
public abstract class storeXAuthToken :
5151
PX.Data.BQL.BqlString.Field<storeXAuthToken> { }
5252
#endregion
5353

5454
#region WooCommerceDefaultCurrency
5555
[PXDBString(12, IsUnicode = true)]
5656
[PXUIField(DisplayName = "Default Currency", IsReadOnly = true)]
57-
public virtual string WooCommerceDefaultCurrency { get; set; }
57+
public virtual string? WooCommerceDefaultCurrency { get; set; }
5858
public abstract class wooCommerceDefaultCurrency :
5959
PX.Data.BQL.BqlString.Field<wooCommerceDefaultCurrency> { }
6060
#endregion
6161

6262
#region WooCommerceStoreTimeZone
6363
[PXDBString(100, IsUnicode = true)]
6464
[PXUIField(DisplayName = "Store Time Zone", IsReadOnly = true)]
65-
public virtual string WooCommerceStoreTimeZone { get; set; }
65+
public virtual string? WooCommerceStoreTimeZone { get; set; }
6666
public abstract class wooCommerceStoreTimeZone :
6767
PX.Data.BQL.BqlString.Field<wooCommerceStoreTimeZone> { }
6868
#endregion
@@ -71,7 +71,7 @@ public abstract class wooCommerceStoreTimeZone :
7171
[PXDBString(100, IsUnicode = true, InputMask = "")]
7272
[PXUIField(DisplayName = "Store Admin Path")]
7373
[PXDefault()]
74-
public virtual string StoreAdminUrl { get; set; }
74+
public virtual string? StoreAdminUrl { get; set; }
7575
public abstract class storeAdminUrl :
7676
PX.Data.BQL.BqlString.Field<storeAdminUrl> { }
7777
#endregion

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/External/CustomerAddressData.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -14,54 +14,52 @@ public class CustomerAddressData : BCAPIEntity, IEquatable<CustomerAddressData>
1414
[JsonProperty("first_name")]
1515
[CommerceDescription(WCCaptions.FirstName, FieldFilterStatus.Skipped, FieldMappingStatus.Import)]
1616
[ValidateRequired()]
17-
public virtual string FirstName { get; set; }
17+
public virtual string? FirstName { get; set; }
1818

1919
[JsonProperty("last_name")]
2020
[CommerceDescription(WCCaptions.LastName, FieldFilterStatus.Skipped, FieldMappingStatus.Import)]
21-
public virtual string LastName { get; set; }
22-
21+
public virtual string? LastName { get; set; }
2322
[JsonProperty("company")]
2423
[CommerceDescription(WCCaptions.CompanyName, FieldFilterStatus.Skipped, FieldMappingStatus.Import)]
25-
public virtual string Company { get; set; }
24+
public virtual string? Company { get; set; }
2625

2726
[JsonProperty("address_1")]
2827
[CommerceDescription(WCCaptions.AddressLine1, FieldFilterStatus.Skipped, FieldMappingStatus.Import)]
2928
[ValidateRequired(AutoDefault = true)]
30-
public string Address1 { get; set; }
29+
public string? Address1 { get; set; }
3130

3231
[JsonProperty("address_2")]
3332
[CommerceDescription(WCCaptions.AddressLine2, FieldFilterStatus.Skipped, FieldMappingStatus.Import)]
34-
public string Address2 { get; set; }
35-
33+
public string? Address2 { get; set; }
3634
[JsonProperty("city")]
3735
[CommerceDescription(WCCaptions.City, FieldFilterStatus.Skipped, FieldMappingStatus.Import)]
3836
[ValidateRequired(AutoDefault = true)]
39-
public virtual string City { get; set; }
37+
public virtual string? City { get; set; }
4038

4139
[JsonProperty("postcode")]
4240
[CommerceDescription(WCCaptions.PostalCode, FieldFilterStatus.Skipped, FieldMappingStatus.Import)]
4341
[ValidateRequired(AutoDefault = true)]
44-
public virtual string PostalCode { get; set; }
42+
public virtual string? PostalCode { get; set; }
4543

4644
[JsonProperty("country")]
4745
[CommerceDescription(WCCaptions.Country, FieldFilterStatus.Skipped, FieldMappingStatus.Import)]
4846
[ValidateRequired()]
49-
public virtual string Country { get; set; }
47+
public virtual string? Country { get; set; }
5048

5149
[JsonProperty("state")]
5250
[Description(WCCaptions.State)]
5351
[ValidateRequired(AutoDefault = true)]
54-
public virtual string State { get; set; }
52+
public virtual string? State { get; set; }
5553

5654
[JsonProperty("phone")]
5755
[Description(WCCaptions.Phone)]
5856
[ValidateRequired(AutoDefault = true)]
59-
public virtual string Phone { get; set; }
57+
public virtual string? Phone { get; set; }
6058

6159
[JsonProperty("email")]
6260
[Description(WCCaptions.Email)]
6361
[ValidateRequired(AutoDefault = true)]
64-
public virtual string Email { get; set; }
62+
public virtual string? Email { get; set; }
6563

6664
public bool Equals(CustomerAddressData newObject)
6765
{

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/External/CustomerData.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public virtual DateTime? CreatedDateTime
2323
get
2424
{
2525
return DateCreatedUT != null ?
26-
(DateTime)DateCreatedUT.ToDate() : default;
26+
DateCreatedUT.ToDate() : default;
2727
}
2828
}
2929

@@ -37,37 +37,37 @@ public virtual DateTime? ModifiedDateTime
3737
get
3838
{
3939
return DateModified != null ?
40-
(DateTime)DateModified.ToDate() : default;
40+
DateModified.ToDate() : default;
4141
}
4242
}
4343

4444
[JsonProperty("email")]
4545
[CommerceDescription(WCCaptions.Email, FieldFilterStatus.Skipped,
4646
FieldMappingStatus.Import)]
4747
[ValidateRequired]
48-
public string Email { get; set; }
48+
public string? Email { get; set; }
4949

5050
[JsonProperty("first_name")]
5151
[CommerceDescription(WCCaptions.FirstName, FieldFilterStatus.Skipped,
5252
FieldMappingStatus.Import)]
5353
[ValidateRequired]
54-
public string FirstName { get; set; }
54+
public string? FirstName { get; set; }
5555

5656
[JsonProperty("last_name")]
5757
[CommerceDescription(WCCaptions.LastName, FieldFilterStatus.Skipped,
5858
FieldMappingStatus.Import)]
5959
[ValidateRequired()]
60-
public string LastName { get; set; }
60+
public string? LastName { get; set; }
6161

6262
[JsonProperty("username")]
6363
[CommerceDescription(WCCaptions.UserName, FieldFilterStatus.Skipped,
6464
FieldMappingStatus.Import)]
65-
public string Username { get; set; }
65+
public string? Username { get; set; }
6666

6767
[JsonProperty("billing")]
68-
public CustomerAddressData Billing { get; set; }
68+
public CustomerAddressData? Billing { get; set; }
6969

7070
[JsonProperty("shipping")]
71-
public CustomerAddressData Shipping { get; set; }
71+
public CustomerAddressData? Shipping { get; set; }
7272
}
7373
}

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/External/WooRestClientBase.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,7 @@
22
using PX.Commerce.Core;
33
using PX.Data;
44
using System;
5-
using System.Collections.Generic;
65
using System.Linq;
7-
using System.Text;
86
using System.Threading.Tasks;
97
using PX.Commerce.Core.REST;
108
using Polly;
@@ -23,7 +21,7 @@ protected WooRestClientBase(int attempts) : base(attempts)
2321
protected override ValueTask<bool> IsFailure(Outcome<HttpCallContext> result,
2422
int attemptNumber, int attempts) =>
2523
new((result.Exception is not null
26-
|| (int)result.Result.Response.StatusCode is 429)
24+
|| (result.Result?.Response is not null && (int)result.Result.Response.StatusCode == 429))
2725
&& attempts >= attemptNumber);
2826

2927
protected override ValueTask HandleError(HttpCallContext ctx,

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/Internal/Case.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,16 +5,16 @@
55
[CommerceDescription("Case")]
66
public partial class Case : CBAPIEntity
77
{
8-
public GuidValue NoteID { get; set; }
8+
public GuidValue? NoteID { get; set; }
99

10-
public DateTimeValue LastModifiedDateTime { get; set; }
10+
public DateTimeValue? LastModifiedDateTime { get; set; }
1111

1212
[CommerceDescription("CaseCD")]
13-
public StringValue CaseCD { get; set; }
13+
public StringValue? CaseCD { get; set; }
1414

1515
[CommerceDescription("Subject")]
16-
public StringValue Subject { get; set; }
16+
public StringValue? Subject { get; set; }
1717

1818
[CommerceDescription("Description")]
19-
public StringValue Description { get; set; }
19+
public StringValue? Description { get; set; }
2020
}

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/Sync/WooCustomerEntityBucket.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,6 @@ public class WooCustomerEntityBucket : EntityBucketBase, IEntityBucket
88
public IMappedEntity Primary => Customer;
99
public IMappedEntity[] Entities => new IMappedEntity[] { Customer };
1010

11-
public MappedCustomer Customer;
11+
public MappedCustomer Customer = null!;
1212
}
1313
}

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/Sync/WooCustomerProcessor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,8 @@ public class WooCustomerProcessor :
4343
BCProcessorSingleBase<WooCustomerProcessor,
4444
WooCustomerEntityBucket, MappedCustomer>, IProcessor
4545
{
46-
public RestClient client;
47-
protected CustomerDataProvider customerDataProvider;
46+
public RestClient client = null!;
47+
protected CustomerDataProvider customerDataProvider = null!;
4848

4949
//protected List<Country> countries;
5050
public CommerceHelper helper =
@@ -126,8 +126,8 @@ public virtual Contact SetBillingContact(CustomerData customerObj)
126126
.ValueField();
127127
contactImpl.FirstName = customerObj.Billing?.FirstName
128128
.ValueField();
129-
contactImpl.LastName = customerObj.Billing.LastName.ValueField();
130-
contactImpl.Email = customerObj.Billing.Email.ValueField();
129+
contactImpl.LastName = customerObj.Billing?.LastName?.ValueField();
130+
contactImpl.Email = customerObj.Billing?.Email?.ValueField();
131131
contactImpl.Address = MapAddress(customerObj.Billing);
132132
contactImpl.Active = true.ValueField();
133133
contactImpl.Phone1 = customerObj.Billing?.Phone.ValueField();

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/Sync/WooLocationEntityBucket.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ public class WooLocationEntityBucket : EntityBucketBase, IEntityBucket
1212
public override IMappedEntity[] PostProcessors =>
1313
new IMappedEntity[] { Customer };
1414

15-
public MappedLocation Address;
16-
public MappedCustomer Customer;
15+
public MappedLocation Address = null!;
16+
public MappedCustomer Customer = null!;
1717
}
1818
}

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/WooCommerceConnector.cs

Lines changed: 20 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,19 @@
11
using Newtonsoft.Json;
2-
using System;
2+
using PX.Async;
3+
using PX.Commerce.BigCommerce;
34
using PX.Commerce.BigCommerce.API.REST;
4-
using PX.Commerce.Core.REST;
55
using PX.Commerce.Core;
6+
using PX.Commerce.Core.REST;
7+
using PX.Common;
8+
using PX.Data;
69
using PX.Data.BQL;
7-
using PX.Async;
10+
using RestSharp;
11+
using System;
812
using System.Collections.Generic;
9-
using PX.Common;
1013
using System.Linq;
11-
using PX.Data;
12-
using System.Threading.Tasks;
14+
using System.Text.RegularExpressions;
1315
using System.Threading;
14-
using RestSharp;
16+
using System.Threading.Tasks;
1517

1618
namespace WooCommerceTest
1719
{
@@ -29,7 +31,7 @@ public WCConnectorType() : base(TYPE) { }
2931
public override string ConnectorName { get => NAME; }
3032

3133
public override void NavigateExtern(ISyncStatus status,
32-
ISyncDetail detail = null)
34+
ISyncDetail detail)
3335
{
3436
if (status?.ExternID == null) return;
3537

@@ -52,7 +54,7 @@ public override void NavigateExtern(ISyncStatus status,
5254
}
5355

5456
public override async Task<ConnectorOperationResult> Process(
55-
ConnectorOperation operation, int?[] syncIDs = null,
57+
ConnectorOperation operation, int?[] syncIDs,
5658
CancellationToken cancellationToken = default)
5759
{
5860
EntityInfo info = GetEntities().FirstOrDefault(e =>
@@ -86,18 +88,20 @@ public override async Task ProcessHook(
8688

8789
public static RestClient GetRestClient(BCBindingWooCommerce binding)
8890
{
89-
return GetRestClient(binding.StoreBaseUrl,
90-
binding.StoreXAuthClient, binding.StoreXAuthToken);
91+
Dictionary<string, string> authHeaders = new()
92+
{
93+
{ BigCommerceConstants.Headers.AuthToken, binding.StoreXAuthToken },
94+
{ BigCommerceConstants.Headers.AuthClient, binding.StoreXAuthClient }
95+
};
96+
return CreateClient(binding.StoreBaseUrl, authHeaders);
9197
}
9298

93-
public static RestClient GetRestClient(String url, String clientID,
94-
String token)
99+
public static RestClient CreateClient(string baseUri, Dictionary<string, string> authHeaders)
95100
{
96101
RestOptions options = new RestOptions
97102
{
98-
BaseUri = url,
99-
XAuthClient = clientID,
100-
XAuthTocken = token
103+
BaseUri = baseUri,
104+
AuthHeaders = authHeaders
101105
};
102106
JsonSerializerSettings serializer = new JsonSerializerSettings
103107
{

PlugInDevelopment/Help/ImplementingConnector/WooCommerceTest/WooCommerceStoreMaint.cs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ public class WooCommerceStoreMaint : BCStoreMaint
1212

1313
public SelectFrom<BCBindingWooCommerce>.
1414
Where<BCBindingWooCommerce.bindingID.
15-
IsEqual<BCBinding.bindingID.FromCurrent>>.View CurrentBindingWooCommerce;
15+
IsEqual<BCBinding.bindingID.FromCurrent>>.View CurrentBindingWooCommerce = null!;
1616

1717
public WooCommerceStoreMaint()
1818
{
1919
base.Bindings.WhereAnd<Where<BCBinding.connectorType.IsEqual<WooCommerceConnector.WCConnectorType>>>();
2020
}
2121

2222
#region Actions
23-
public PXAction<BCBinding> TestConnection;
23+
public PXAction<BCBinding> TestConnection = null!;
2424
[PXButton]
2525
[PXUIField(DisplayName = "Test Connection", Enabled = false)]
2626
protected virtual IEnumerable testConnection(PXAdapter adapter)
@@ -44,15 +44,15 @@ protected virtual IEnumerable testConnection(PXAdapter adapter)
4444
#endregion
4545

4646
[PXMergeAttributes(Method = MergeMethod.Append)]
47-
[PXCustomizeBaseAttribute(typeof(BCConnectorsAttribute), "DefaultConnector", WooCommerceConnector.TYPE)]
47+
[PXCustomize.AnyAttribute(typeof(BCConnectorsAttribute),
48+
nameof(BCConnectorsAttribute.DefaultConnector), WooCommerceConnector.TYPE)]
4849
public virtual void _(Events.CacheAttached<BCBinding.connectorType> e) { }
4950

5051
public override void _(Events.RowSelected<BCBinding> e)
5152
{
5253
base._(e);
53-
54+
if (e.Row == null) return;
5455
BCBinding row = e.Row as BCBinding;
55-
if (row == null) return;
5656

5757
//Actions
5858
TestConnection.SetEnabled(row.BindingID > 0 && row.ConnectorType == WooCommerceConnector.TYPE);
@@ -71,8 +71,8 @@ public override void _(Events.RowSelected<BCBindingExt> e)
7171
{
7272
base._(e);
7373

74+
if (e.Row == null) return;
7475
BCBindingExt row = e.Row as BCBindingExt;
75-
if (row == null) return;
7676
PXDefaultAttribute.SetPersistingCheck<BCBindingExt.refundAmountItemID>(e.Cache, row, PXPersistingCheck.Nothing);
7777
}
7878

0 commit comments

Comments
 (0)