AffinityLocalUpdateService.php
4.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<?php
class AffinityLocalUpdateService {
private static function validateRequestSecurity($token) {
require_once(__DIR__ . "/../ecommerce-adapters/AffinityEcommerceUtils.php");
require_once(__DIR__ . "/../model/AffinityLog.php");
require_once(__DIR__ . "/../model/AffinityPushToken.php");
$arrReturn = array();
$arrReturn['warnings'] = array();
$arrReturn['errors'] = array();
$objToken = AffinityPushToken::getAndUse($token);
if(empty($objToken)) {
AffinityLog::saveLog(AffinityLog::TYPE_ERROR, "Affinity -> WooBay Security Error", "Provided Token is invalid!");
self::returnUnauthorized();
}
return $arrReturn;
}
private static function returnUnauthorized() {
@header('HTTP/1.1 401 Unauthorized', true, 401);
exit();
}
public static function cron($token) {
$arrSecurityWarningsAndErrors = self::validateRequestSecurity($token);
if(isset($arrSecurityWarningsAndErrors['errors']) && count($arrSecurityWarningsAndErrors['errors']) > 0) {
return array(
'arrWarnings' => $arrSecurityWarningsAndErrors['warnings'],
'arrErrors' => $arrSecurityWarningsAndErrors['errors']
);
}
wp_clear_scheduled_hook('wp_affinity_cron');
wp_schedule_event(time(), get_option('ebayaffinity_pushinvenorytime'), 'wp_affinity_cron');
spawn_cron();
return array('working'=>'working');
}
public static function cronInv($token) {
$arrSecurityWarningsAndErrors = self::validateRequestSecurity($token);
if(isset($arrSecurityWarningsAndErrors['errors']) && count($arrSecurityWarningsAndErrors['errors']) > 0) {
return array(
'arrWarnings' => $arrSecurityWarningsAndErrors['warnings'],
'arrErrors' => $arrSecurityWarningsAndErrors['errors']
);
}
wp_clear_scheduled_hook('wp_affinity_cron_inv');
wp_schedule_event(time(), get_option('ebayaffinity_pushinvenorytime'), 'wp_affinity_cron_inv');
spawn_cron();
return array('working'=>'working');
}
public static function cronSyncAll($token) {
$arrSecurityWarningsAndErrors = self::validateRequestSecurity($token);
if(isset($arrSecurityWarningsAndErrors['errors']) && count($arrSecurityWarningsAndErrors['errors']) > 0) {
return array(
'arrWarnings' => $arrSecurityWarningsAndErrors['warnings'],
'arrErrors' => $arrSecurityWarningsAndErrors['errors']
);
}
wp_clear_scheduled_hook('wp_affinity_cron_sync_all');
wp_schedule_single_event(time(), 'wp_affinity_cron_sync_all');
spawn_cron();
return array('working'=>'working');
}
public static function orderNotificationReceived() {
require_once(__DIR__ . "/../model/AffinityLog.php");
require_once(__DIR__ . "/AffinityBackendService.php");
$arrOrdersPayload = AffinityBackendService::getNowOrderDetails();
return self::orderReceivedFromEbay($arrOrdersPayload);
}
public static function orderNotificationReceivedToken($token) {
require_once(__DIR__ . "/../model/AffinityLog.php");
AffinityLog::saveLog(AffinityLog::TYPE_DEBUG, "Received new order notification", "-");
$arrSecurityWarningsAndErrors = self::validateRequestSecurity($token);
if(isset($arrSecurityWarningsAndErrors['errors']) && count($arrSecurityWarningsAndErrors['errors']) > 0) {
return array(
'itemId' => null,
'arrWarnings' => $arrSecurityWarningsAndErrors['warnings'],
'arrErrors' => $arrSecurityWarningsAndErrors['errors']
);
}
require_once(__DIR__ . "/AffinityBackendService.php");
$arrOrdersPayload = AffinityBackendService::getNowOrderDetails();
return self::orderReceivedFromEbay($arrOrdersPayload);
}
public static function orderReceivedFromEbay($arrOrdersPayload) {
require_once(__DIR__ . "/../model/AffinityLog.php");
AffinityLog::saveLog(AffinityLog::TYPE_DEBUG, "Processing order payload", print_r($arrOrdersPayload, true));
try {
require_once(__DIR__ . "/../model/AffinityOrder.php");
$arrOrders = AffinityOrder::orderReceivedFromEbay($arrOrdersPayload);
$return = array();
foreach($arrOrders as $objAffinityOrder) {
$return[] = array(
'itemId' => $objAffinityOrder->ebayItemId,
'arrWarnings' => $objAffinityOrder->arrWarnings,
'arrErrors' => $objAffinityOrder->arrErrors
);
}
return $return;
}
catch(Exception $error) {
return array(
'itemId' => $arrOrdersPayload['itemId'],
'arrWarnings' => array(),
'arrErrors' => array($error->getMessage())
);
}
}
}