-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathdeals.php
140 lines (127 loc) · 5.62 KB
/
deals.php
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
133
134
135
136
137
138
139
140
<?php
// v1 10.11.2021
// Powered by Smart Sender
// https://smartsender.com
ini_set('max_execution_time', '1700');
set_time_limit(1700);
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Methods: GET, POST');
header('Access-Control-Allow-Headers: application/json');
header('Content-Type: application/json; charset=utf-8');
http_response_code(200);
//--------------
include('connect.php');
// Проверка наличия всех обезательных полей
if ($input["userId"] == NULL) {
$result["state"] = false;
$result["message"]["userId"] = "userId is missing";
} else {
if (file_exists('users.json') === true) {
$users = json_decode(file_get_contents('users.json'), true);
}
if ($users[$input["userId"]] != NULL) {
$dealData["_embedded"]["contacts"][0]["id"] = $users[$input["userId"]];
settype($dealData["_embedded"]["contacts"][0]["id"], "int");
} else {
$result["state"] = false;
$result["message"]["userId"] = "user not found. Please, create user";
}
}
if ($result["state"] === false) {
http_response_code(422);
echo json_encode($result);
exit;
}
// Подготовка данных сделки
if ($input["name"] != NULL) {
$dealData["name"] = $input["name"];
}
if ($input["price"] != NULL) {
$dealData["price"] = str_replace(" ", "", str_replace(",", ".", $input["price"]));
settype($dealData["price"], "int");
}
if ($input["pipeline"] != NULL) {
$getPipelines = json_decode(send_bearer($amo_url."/api/v4/leads/pipelines", $access["token"]), true);
if (is_array($getPipelines["_embedded"]["pipelines"]) === true) {
foreach ($getPipelines["_embedded"]["pipelines"] as $onePipeline) {
if ($onePipeline["name"] == $input["pipeline"]) {
$dealData["pipeline_id"] = $onePipeline["id"];
if ($input["status"] != NULL && is_array($onePipeline["_embedded"]["statuses"]) === true) {
foreach ($onePipeline["_embedded"]["statuses"] as $oneStatus) {
if ($oneStatus["name"] == $input["status"]) {
$dealData["status_id"] = $oneStatus["id"];
break 2;
}
}
} else {
break;
}
}
}
}
}
if ($input["manager"] != NULL) {
$amoManagers = json_decode(send_bearer($amo_url."/api/v4/users?limit=250", $access["token"]), true);
if (is_array($amoManagers["_embedded"]["users"]) === true) {
foreach ($amoManagers["_embedded"]["users"] as $oneManager) {
if ($oneManager["email"] == $input["manager"]) {
$dealData["responsible_user_id"] = $oneManager["id"];
break;
}
}
}
}
if (is_array($input["fields"]) === true) {
$amoDealFields = json_decode(send_bearer($amo_url."/api/v4/leads/custom_fields?limit=250", $access["token"]), true);
if (is_array($amoDealFields["_embedded"]["custom_fields"]) === true) {
foreach ($amoDealFields["_embedded"]["custom_fields"] as $oneDealFields) {
$dealFields[$oneDealFields["name"]] = $oneDealFields["id"];
$dealFieldsType[$oneDealFields["name"]] = $oneDealFields["type"];
}
}
foreach ($input["fields"] as $fieldsKey => $fieldsValue) {
if ($dealFields[$fieldsKey] != NULL) {
$customFields["field_id"] = $dealFields[$fieldsKey];
if ($dealFieldsType[$fieldsKey] == "numeric") {
$customFields["values"][0]["value"] = str_replace(" ", "", str_replace(",", ".", $fieldsValue));
settype($customFields["values"][0]["value"], "float");
} else if ($dealFieldsType[$fieldsKey] == "date" || $dealFieldsType[$fieldsKey] == "date_time" || $dealFieldsType[$fieldsKey] == "birthday") {
$customFields["values"][0]["value"] = strtotime($fieldsValue);
} else if ($dealFieldsType[$fieldsKey] == "multiselect" && is_array($fieldsValue)) {
foreach ($fieldsValue as $oneFieldsValue) {
$customFields["values"][]["value"] = $oneFieldsValue;
}
} else {
$customFields["values"][0]["value"] = $fieldsValue;
}
$dealData["custom_fields_values"][] = $customFields;
unset ($customFields);
}
}
}
if (is_array($input["tags"]) === true) {
if ($input["clearTags"] !== true && $input["dealId"] != NULL) {
$getDealData = json_decode(send_bearer($amo_url."/api/v4/leads/".$input["dealId"], $access["token"]), true);
$dealData["_embedded"]["tags"] = $getDealData["_embedded"]["tags"];
foreach ($dealData["_embedded"]["tags"] as &$tempTag) {
unset($tempTag["color"]);
}
}
foreach ($input["tags"] as $oneTag) {
$dealData["_embedded"]["tags"][]["name"] = $oneTag;
}
}
// Создание/обновление сделки
if ($input["dealId"] != NULL) {
$updateDeal = json_decode(send_bearer($amo_url."/api/v4/leads/".$input["dealId"], $access["token"], "PATCH", $dealData), true);
$result["action"] = "update";
$result["result"] = $updateDeal;
$result["send"] = $dealData;
} else {
$dealsData[] = $dealData;
$createDeal = json_decode(send_bearer($amo_url."/api/v4/leads", $access["token"], "POST", $dealsData), true);
$result["action"] = "create";
$result["result"] = $createDeal;
$result["send"] = $dealsData;
}
echo json_encode($result);