Skip to content

Commit 6efb4ce

Browse files
committed
Merge branch 'main' into feature/zapier-trigger-data
2 parents e1a9795 + a9f1feb commit 6efb4ce

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+1527
-22
lines changed

azure-pipeline - Automation.Zapier.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
trigger:
2-
- main
2+
- feature/zapier-trigger-data
33

44
pool:
55
vmImage: 'windows-latest'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
function CurrencyController($scope, umbracoFormsIntegrationsCommerceEMerchantPayResource) {
2+
3+
var vm = this;
4+
5+
if ($scope.setting && $scope.setting.value) vm.selectedCurrency = $scope.setting.value;
6+
7+
umbracoFormsIntegrationsCommerceEMerchantPayResource.getCurrencies().then(function (response) {
8+
vm.currencies = response;
9+
});
10+
11+
vm.saveCurrency = function () {
12+
$scope.setting.value = vm.selectedCurrency;
13+
}
14+
}
15+
16+
angular.module("umbraco")
17+
.controller("UmbracoForms.Integrations.Commerce.eMerchantPay.CurrencyController", CurrencyController);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<div ng-controller="UmbracoForms.Integrations.Commerce.eMerchantPay.CurrencyController as vm">
2+
3+
<div>
4+
<select ng-model="vm.selectedCurrency" ng-click="vm.saveCurrency()">
5+
<option value="">Select currency</option>
6+
<option ng-repeat="currency in vm.currencies" value="{{ currency.code }}">{{ currency.name }}</option>
7+
</select>
8+
</div>
9+
10+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
function CustomerDetailsMapperController($scope, $routeParams, pickerResource, notificationsService, umbracoFormsIntegrationsCommerceEMerchantPayResource) {
2+
3+
var vm = this;
4+
5+
init();
6+
7+
vm.addMapping = function () {
8+
9+
if (vm.mappings.find(p => p.customerProperty === vm.selectedCustomerProperty)) {
10+
notificationsService.warning("Customer property is already mapped.");
11+
return;
12+
}
13+
14+
vm.mappings.push({
15+
customerProperty: vm.selectedCustomerProperty,
16+
field: vm.fields.find(p => p.id === vm.selectedField)
17+
});
18+
19+
$scope.setting.value = JSON.stringify(vm.mappings);
20+
21+
vm.selectedCustomerProperty = "";
22+
vm.selectedField = "";
23+
}
24+
25+
vm.deleteMapping = function(index) {
26+
vm.mappings.splice(index);
27+
28+
$scope.setting.value = JSON.stringify(vm.mappings);
29+
}
30+
31+
32+
function init() {
33+
vm.customerProperties = ["Email", "FirstName", "LastName", "Phone", "Address", "ZipCode", "City", "State", "Country", "Status", "UniqueId"];
34+
35+
vm.fields = [];
36+
vm.selectedCustomerProperty = "";
37+
vm.selectedField = "";
38+
39+
var formId = $routeParams.id;
40+
41+
if (formId !== -1) {
42+
pickerResource.getAllFields($routeParams.id).then(function (response) {
43+
vm.fields = response.data;
44+
});
45+
}
46+
47+
vm.mappings = $scope.setting.value
48+
? JSON.parse($scope.setting.value)
49+
: [];
50+
}
51+
}
52+
53+
angular.module("umbraco")
54+
.controller("UmbracoForms.Integrations.Commerce.eMerchantPay.CustomerDetailsMapperController", CustomerDetailsMapperController);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
<div ng-controller="UmbracoForms.Integrations.Commerce.eMerchantPay.CustomerDetailsMapperController as vm">
2+
3+
<div>
4+
<select ng-model="vm.selectedCustomerProperty">
5+
<option value="">Select customer property</option>
6+
<option ng-repeat="property in vm.customerProperties" value="{{ property }}">{{ property }}</option>
7+
</select>
8+
<select ng-model="vm.selectedField">
9+
<option value="">Select field</option>
10+
<option ng-repeat="field in vm.fields" value="{{ field.id }}">{{ field.value }}</option>
11+
</select>
12+
</div>
13+
14+
<div class="mt2">
15+
<umb-button type="button" class="mt2"
16+
action="vm.addMapping()"
17+
label="Add mapping"
18+
disabled="vm.selectedCustomerProperty.length === 0 || vm.selectedField.length === 0">
19+
</umb-button>
20+
</div>
21+
22+
<div class="umb-forms-mappings mt2" ng-if="vm.mappings.length > 0">
23+
24+
<div class="umb-forms-mapping-header">
25+
<div class="umb-forms-mapping-field -no-margin-left">Property</div>
26+
<div class="umb-forms-mapping-field">Field</div>
27+
<div class="umb-forms-mapping-remove -no-margin-right"></div>
28+
</div>
29+
30+
<div class="umb-forms-mapping" ng-repeat="mapping in vm.mappings">
31+
<div class="umb-forms-mapping-field -no-margin-left">{{ mapping.customerProperty }}</div>
32+
<div class="umb-forms-mapping-field">{{ mapping.field.value }}</div>
33+
<div class="umb-forms-mapping-remove -no-margin-right">
34+
<a href="" ng-click="vm.deleteMapping($index)">
35+
<i class="icon-trash"></i>
36+
</a>
37+
</div>
38+
</div>
39+
</div>
40+
41+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
function eMerchantPayResource($http, umbRequestHelper) {
2+
3+
const apiEndpoint = "backoffice/UmbracoFormsIntegrationsCommerceEmerchantPay/EmerchantPay";
4+
5+
return {
6+
getCurrencies: function () {
7+
return umbRequestHelper.resourcePromise(
8+
$http.get(`${apiEndpoint}/GetCurrencies`),
9+
"Failed to get resource");
10+
},
11+
};
12+
}
13+
14+
angular.module('umbraco.resources').factory('umbracoFormsIntegrationsCommerceEMerchantPayResource', eMerchantPayResource);
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
{
2+
"javascript": [
3+
"~/App_Plugins/UmbracoForms.Integrations/Commerce/eMerchantPay/customer-details-mapper.controller.js",
4+
"~/App_Plugins/UmbracoForms.Integrations/Commerce/eMerchantPay/currency.controller.js",
5+
"~/App_Plugins/UmbracoForms.Integrations/Commerce/eMerchantPay/emerchantpay.resource.js"
6+
],
7+
"css": [ "" ]
8+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
5+
using Umbraco.Forms.Core.Persistence.Dtos;
6+
using Umbraco.Forms.Integrations.Commerce.EMerchantPay.Helpers;
7+
using Umbraco.Forms.Integrations.Commerce.EMerchantPay.Models.Dtos;
8+
9+
namespace Umbraco.Forms.Integrations.Commerce.EMerchantPay.Builders
10+
{
11+
public class MappingBuilder
12+
{
13+
protected MappingValues Values = new MappingValues();
14+
15+
public MappingBuilder SetValues(Record record, List<Mapping> mappings)
16+
{
17+
Values.Email = GetValue(nameof(MappingValues.Email), record, mappings);
18+
Values.FirstName = GetValue(nameof(MappingValues.FirstName), record, mappings);
19+
Values.LastName = GetValue(nameof(MappingValues.LastName), record, mappings);
20+
Values.Address = GetValue(nameof(MappingValues.Address), record, mappings);
21+
Values.ZipCode = GetValue(nameof(MappingValues.ZipCode), record, mappings);
22+
Values.City = GetValue(nameof(MappingValues.City), record, mappings);
23+
Values.State = GetValue(nameof(MappingValues.State), record, mappings);
24+
Values.Country = GetValue(nameof(MappingValues.Country), record, mappings);
25+
Values.Phone = GetValue(nameof(MappingValues.Phone), record, mappings);
26+
Values.Status = GetValue(nameof(MappingValues.Status), record, mappings);
27+
Values.UniqueId = GetValue(nameof(MappingValues.UniqueId), record, mappings);
28+
29+
return this;
30+
}
31+
32+
private string GetValue(string propertyName, Record record, List<Mapping> mappings)
33+
{
34+
var key = mappings.First(p => p.CustomerProperty == propertyName).Field.Id;
35+
return record.RecordFields[Guid.Parse(key)].ValuesAsString();
36+
}
37+
38+
public MappingValues Build() => Values;
39+
}
40+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
using System.Collections.Specialized;
2+
3+
namespace Umbraco.Forms.Integrations.Commerce.EMerchantPay.Configuration
4+
{
5+
public class PaymentProviderSettings
6+
{
7+
public PaymentProviderSettings()
8+
{
9+
10+
}
11+
12+
public PaymentProviderSettings(NameValueCollection appSettings)
13+
{
14+
GatewayBaseUrl = appSettings[Constants.Configuration.GatewayBaseUrlKey];
15+
16+
WpfUrl = appSettings[Constants.Configuration.WpfUrlKey];
17+
18+
Username = appSettings[Constants.Configuration.UsernameKey];
19+
20+
Password = appSettings[Constants.Configuration.PasswordKey];
21+
22+
Supplier = appSettings[Constants.Configuration.SupplierKey];
23+
24+
Usage = appSettings[Constants.Configuration.UsageKey];
25+
26+
UmbracoBaseUrl = appSettings[Constants.Configuration.UmbracoBaseUrlKey];
27+
}
28+
29+
public string GatewayBaseUrl { get; set; }
30+
31+
public string WpfUrl { get; set; }
32+
33+
public string Username { get; set; }
34+
35+
public string Password { get; set; }
36+
37+
public string Usage { get; set; }
38+
39+
public string Supplier { get; set; }
40+
41+
public string UmbracoBaseUrl { get; set; }
42+
43+
public string Currencies { get; set; }
44+
}
45+
}
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+

2+
namespace Umbraco.Forms.Integrations.Commerce.EMerchantPay
3+
{
4+
public class Constants
5+
{
6+
public const string WorkflowId = "b2731255-2e48-4345-9ae5-aaf5b8bfb10a";
7+
8+
/// <summary>
9+
/// Fields mandatory for mapping:
10+
/// 1. FirstName
11+
/// 2. LastName
12+
/// 3. Address
13+
/// 4. ZipCode
14+
/// 5. City
15+
/// 6. State
16+
/// 7. Country
17+
/// 8. Email
18+
/// 9. Phone
19+
/// 10. Status
20+
/// 11. UniqueId
21+
/// </summary>
22+
public const int RequiredMappingsNo = 11;
23+
24+
public static class Configuration
25+
{
26+
public const string Settings = "Umbraco:Forms:Integrations:Commerce:eMerchantPay:Settings";
27+
28+
public const string GatewayBaseUrlKey = "Umbraco.Forms.Integrations.Commerce.eMerchantPay.GatewayBaseurl";
29+
30+
public const string WpfUrlKey = "Umbraco.Forms.Integrations.Commerce.eMerchantPay.WpfUrl";
31+
32+
public const string UsernameKey = "Umbraco.Forms.Integrations.Commerce.eMerchantPay.Username";
33+
34+
public const string PasswordKey = "Umbraco.Forms.Integrations.Commerce.eMerchantPay.Password";
35+
36+
public const string SupplierKey = "Umbraco.Forms.Integrations.Commerce.eMerchantPay.Supplier";
37+
38+
public const string UsageKey = "Umbraco.Forms.Integrations.Commerce.eMerchantPay.Usage";
39+
40+
public const string CurrenciesKey = "Umbraco.Forms.Integrations.Commerce.eMerchantPay.Currencies";
41+
42+
public const string UmbracoBaseUrlKey = "Umbraco.Forms.Integrations.Commerce.eMerchantPay.UmbracoBaseUrl";
43+
}
44+
45+
public static class ErrorCode
46+
{
47+
public const string ConsumerExists = "701";
48+
49+
public const string WorkflowError = "400";
50+
}
51+
52+
public static class RootNode
53+
{
54+
public const string CreateConsumerRequest = "create_consumer_request";
55+
56+
public const string CreateConsumerResponse = "create_consumer_response";
57+
58+
public const string RetrieveConsumerRequest = "retrieve_consumer_request";
59+
60+
public const string RetrieveConsumerResponse = "retrieve_consumer_response";
61+
62+
public const string WpfPayment = "wpf_payment";
63+
64+
public const string WpfReconcile = "wpf_reconcile";
65+
}
66+
}
67+
}

0 commit comments

Comments
 (0)