-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathBitGanjOrder.js
More file actions
134 lines (126 loc) · 5.17 KB
/
BitGanjOrder.js
File metadata and controls
134 lines (126 loc) · 5.17 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
122
123
124
125
126
127
128
129
130
131
132
/* global http, moment */
/*eslint-disable no-undef, no-undef-expression, no-new-object*/
function BitGanjOrder(v_server, v_timeShift) {
this.server = v_server !== undefined ? v_server : 'test.bitganj.website';
this.ordersLibs = ["[S]Orders","MyOrders"];
this.timeshift = Number.isInteger(v_timeShift) ? v_timeShift: 0;
}
BitGanjOrder.prototype.getOrderLib = function()
{
var res = false;
var count =this.ordersLibs.length;
for (i=0;i<count;i++)
{
var cLib = libByName(this.ordersLibs[i]);
if (cLib !== null) {
res = cLib;
break;
}
}
return res;
};
BitGanjOrder.prototype.getOrderEntryById = function(vOrderId)
{
var vResult = false;
if (Number.isInteger(vOrderId)) {
var vO = this.getOrderLib();
if (vO) {
var vOrder = vO.find(vOrderId);
var vFounded = vOrder.length;
switch (vFounded) {
case 0:
log ("Order Id:" + vOrderId + " not found. And will be created.");
var newOrder = new Object({OrderId:vOrderId});
vResult = vO.create(newOrder);
break;
case 1:
vResult = vOrder[0];
log('Order entry founded! Id:' + vOrderId );
break;
default:
log ("For search OrderId:" + vOrderId + " founded " + vFounded );
for (var i=0 ; i < vFounded ; i++) {
var cOrd = vOrder[i];
if (!cOrd.deleted) {
if (cOrd.field("OrderId") === vOrderId) {
vResult = cOrd;
};
};
};
if (vResult === false) {
message("Order id: " + vOrderId + "Not found");
//var newOrder = new Object({OrderId:vOrderId});
//vResult = vO.create(newOrder);
}
break;
}
} else { message("У Вас, не скачанна библиотека [S]Orders!"); }
} else { message("Не корректный, номер заказа!"); }
return vResult;
};
BitGanjOrder.prototype.updateOrderEntry = function(pOrder){
var vId = pOrder.IdOrder;
var vOrderEntry = this.getOrderEntryById(vId);
if (vOrderEntry !== false) {
var vRegDate = moment(pOrder.Registered);
vOrderEntry.set("OrderStartDate",vRegDate.add( this.timeshift , 'hours').toDate());
var islinked = vOrderEntry.field("isLinked");
if (islinked === false) {
var vCustomerLink = vOrderEntry.field("LinkedCustomer");
var vBGCust = new BitGanjCustomer(this.server, this.timeshift);
var vCustomerEntry = vBGCust.getCustomerEntryById(pOrder.ClientId);
if ((vCustomerLink.length === 0) && (vCustomerLink !== false)) {
vOrderEntry.set("LinkedCustomer", vCustomerEntry);
vOrderEntry.set("isLinked", true);
}
vOrderEntry.set("CustomerId",pOrder.ClientId);
}
vOrderEntry.set("OrderState",pOrder.OrderState);
if (pOrder.OrderEndDate !== null) {
var vEndDate = moment(pOrder.OrderEndDate);
vOrderEntry.set("OrderEndDate",vEndDate.add( this.timeshift , 'hours').toDate());}
};
return vOrderEntry;
};
BitGanjOrder.prototype.isOrderExist = function(pId){
var query = "https://" + this.server + "/api/Statistics?action=getOrder&id=" + pId;
log(query);
var vCallResult = false;
vResult = http().get(query);
if (vResult.code === 200) {
log(vResult.body);
var json = JSON.parse(vResult.body);
if (json.order !== null) { vCallResult = true; }
}
return vCallResult;
};
BitGanjOrder.prototype.getMaxId = function() {
var res = false;
var query = "https://" + this.server + "/api/Statistics?action=getmaxorderid";
log(query);
var vResult = http().get(query);
if (vResult.code === 200) {
log(vResult.body);
var res = JSON.parse(vResult.body);
}
return res;
};
BitGanjOrder.prototype.refreshOrderEntry = function(vOrderEntry)
{
var pId = vOrderEntry.field("OrderId");
if (Number.isInteger(pId)) {
var query = "https://" + this.server + "/api/Statistics?action=getOrder&id=" + pId;
log(query);
var vResult = http().get(query);
if (vResult.code === 200) {
log(vResult.body);
var json = JSON.parse(vResult.body);
var vOrderEnt = this.updateOrderEntry(json.order);
var vBGI = new BitGanjInvoice(this.server,this.timeshift);
if (json.invoice !== null) {
var vInvoiceEnt = vBGI.updateInvoiceEntry(json.invoice);
if (vOrderEnt && vInvoiceEnt) { vOrderEnt.set("LinkedInvoice", vInvoiceEnt); }
}
}
}
};