· last year · Apr 01, 2024, 05:30 PM
1diff --git a/.gitignore b/.gitignore
2index 28cb1cb..19d3ddb 100644
3--- a/.gitignore
4+++ b/.gitignore
5@@ -32,6 +32,7 @@ sensor/log_test.txt
6 yandex_9f7c39d954ff4229.html
7
8 .idea
9+.editorconfig
10 pma/*
11 include/IntervalsClass.php.bak
12 *.bak
13diff --git a/admin/save_data.php b/admin/save_data.php
14index 07c026b..9395bc1 100644
15--- a/admin/save_data.php
16+++ b/admin/save_data.php
17@@ -3,6 +3,7 @@ include('../config.php');
18 include('../connect_db.php');
19 include('../functions.php');
20 require_once(__DIR__ . '/../include/TimeZone.php');
21+require_once(__DIR__ . '/../include/Util.php');
22 require_once(__DIR__ . '/../api3/objects/DeviceSettingsStorage.php');
23 require_once(__DIR__ . '/../api3/objects/DeviceSettingsCurrent.php');
24 require_once(__DIR__ . '/../api3/objects/Devices.php');
25@@ -13,686 +14,692 @@ error_reporting(1);
26 $_POST[u] = $_COOKIE[u];
27
28 if ($_POST[action]) {
29- $res = mysql_query("select * from users where id in (select userID from session where session='$_POST[u]')");
30- if ($res and mysql_num_rows($res)>0) {
31- $userData = mysql_fetch_array($res);
32- }
33- if ($userData[email]) mysql_query("insert save_log (user, action, query) values ('$userData[email]', '$_POST[action]', '".print_r($_POST,true)."')");
34+ $res = mysql_query("select * from users where id in (select userID from session where session='$_POST[u]')");
35+ if ($res and mysql_num_rows($res) > 0) {
36+ $userData = mysql_fetch_array($res);
37+ }
38+ if ($userData[email]) mysql_query("insert save_log (user, action, query) values ('$userData[email]', '$_POST[action]', '" . print_r($_POST, true) . "')");
39 }
40
41 switch ($_POST[action]) {
42- case "del_defect_type":
43- mysql_query("delete from defect_type where id='{$_POST['id']}'");
44- mysql_query("delete from defect_type_equipment where defect_type_id='{$_POST['id']}'");
45- mysql_query("delete from defect_type_production_group where defect_type_id='{$_POST['id']}'");
46- header("Location: ./?action=defect_type");
47- break;
48- case "add_del_defect":
49- mysql_query("insert defect_type (name, dop_id) values ('{$_POST['name']}', '{$_POST['dop_id']}')");
50- $defect_type_id = mysql_insert_id();
51- foreach ($_POST['defect_type_equipment'] as $key => $value) {
52- mysql_query("insert defect_type_equipment (defect_type_id, equipment_group) values ('{$defect_type_id}', '{$value}')");
53- }
54- foreach ($_POST['defect_type_production_group'] as $key => $value) {
55- mysql_query("insert defect_type_production_group (defect_type_id, production_group) values ('{$defect_type_id}', '{$value}')");
56- }
57- header("Location: ./?action=defect_type&id=".$defect_type_id);
58- break;
59- case "update_defect_type":
60- mysql_query("update defect_type set name='{$_POST['name']}', dop_id='{$_POST['dop_id']}' where id='{$_POST['id']}'");
61- mysql_query("delete from defect_type_equipment where defect_type_id='{$_POST['id']}'");
62- foreach ($_POST['defect_type_equipment'] as $key => $value) {
63- mysql_query("insert defect_type_equipment (defect_type_id, equipment_group) values ('{$_POST['id']}', '{$value}')");
64- }
65- mysql_query("delete from defect_type_production_group where defect_type_id='{$_POST['id']}'");
66- foreach ($_POST['defect_type_production_group'] as $key => $value) {
67- mysql_query("insert defect_type_production_group (defect_type_id, production_group) values ('{$_POST['id']}', '{$value}')");
68- }
69- header("Location: ./?action=defect_type&id=".$_POST['id']);
70- break;
71- case "create_downtime_correction":
72- $res = mysql_query("select * from arm_tablo where update_time='{$_POST[time]}' and arm_serial='{$_POST['serial']}'");
73- if ($res and mysql_num_rows($res)>0) {
74- while ($r = mysql_fetch_assoc($res)) {
75- $original = $r;
76- }
77- }
78- mysql_query("insert arm_tablo_downtime_correction (update_time, arm_serial, user_modificator, downtime, comment) values ('{$_POST[time]}', '{$_POST['serial']}', '{$userData['id']}', '{$original['downtime']}', '{$original['comment']}')");
79- mysql_query("update arm_tablo set comment='{$_POST['comment']}', downtime='{$_POST['downtime']}' where update_time='{$_POST['time']}' and arm_serial='{$_POST['serial']}'");
80- header("Location: ./?action=downtime_report&from={$_POST[from]}&from_time={$_POST[from_time]}&to={$_POST[to]}&to_time={$_POST[to_time]}");
81- break;
82- case "delete_downtime_correction":
83- print_r($_POST);
84- $res = mysql_query("select * from arm_tablo_downtime_correction where update_time='{$_POST[time]}'");
85- if ($res and mysql_num_rows($res)>0) {
86- while ($r = mysql_fetch_assoc($res)) {
87- $correction = $r;
88- }
89- }
90- //print_r($correction);
91- mysql_query("update arm_tablo set comment='{$correction['comment']}', downtime='{$correction['downtime']}' where update_time='{$_POST['time']}'");
92- mysql_query("delete from arm_tablo_downtime_correction where update_time='{$_POST['time']}'");
93- header("Location: ./?action=downtime_report&from={$_POST[from]}&from_time={$_POST[from_time]}&to={$_POST[to]}&to_time={$_POST[to_time]}");
94- break;
95- case "delete_defect_correction":
96- $sql = "delete from arm_defect where time='{$_POST[id]}' and arm_serial='{$_POST[arm]}'";
97- mysql_query($sql);
98- $sql = "insert arm_defect select arm_serial, time, user, nom, mat, inst, defect, comment, defect_type from arm_defect_correction where time='{$_POST[id]}' and arm_serial='{$_POST[arm]}'";
99- mysql_query($sql);
100- // echo $sql;
101- // exit;
102- mysql_query("delete from arm_defect_correction where time='{$_POST[id]}' and arm_serial='{$_POST[arm]}'");
103- header("Location: ./?action=defect2&id={$_POST['id']}&from={$_POST[date_from]}&from_time={$_POST[time_from]}&to={$_POST[date_to]}&to_time={$_POST[time_to]}");
104- break;
105- case "create_defect_correction":
106- $sql = "insert into arm_defect_correction select *, '{$userData[id]}' as user_modificator from arm_defect where time='{$_POST[time]}' and arm_serial='{$_POST[arm]}'";
107- // echo $sql;
108- // exit;
109- mysql_query($sql);
110- $sql = "update arm_defect set defect='{$_POST[defect]}', comment='{$_POST[comment]}', defect_type='{$_POST[defect_type]}' where time='{$_POST[time]}' and arm_serial='{$_POST[arm]}'";
111- mysql_query($sql);
112- header("Location: ./?action=defect2&id={$_POST['id']}&from={$_POST[date_from]}&from_time={$_POST[time_from]}&to={$_POST[date_to]}&to_time={$_POST[time_to]}");
113- break;
114- case "del_correction":
115- mysql_query("delete from arm_circuit where time_begin='{$_POST[id]}'");
116- mysql_query("insert arm_circuit select arm_serial, time_begin, time_end, user, nom, mat, inst, multiplicator, consumption from arm_circuit_correction where time_begin='{$_POST[id]}'");
117- mysql_query("delete from arm_circuit_correction where time_begin='{$_POST[id]}'");
118- header("Location: ./?action=production_correction&id={$_POST['id']}");
119- break;
120- case "create_correction":
121- $res = mysql_query("select * from production where id='{$_POST[nom]}'");
122- if ($res and mysql_num_rows($res)>0) {
123- while ($r = mysql_fetch_assoc($res)) {
124- $consumption = $r[consumption];
125- $multiplicator = $r[multiplicator];
126- }
127- }
128- mysql_query("insert into arm_circuit_correction select *, '{$_POST[user_modificator]}' as user_modificator from arm_circuit where time_begin='{$_POST[id]}'");
129- mysql_query("update arm_circuit set multiplicator='{$multiplicator}', consumption='{$consumption}', nom='{$_POST[nom]}', mat='{$_POST[mat]}', inst='{$_POST[inst]}' where time_begin='{$_POST[id]}'");
130- header("Location: ./?action=production_correction&id={$_POST['id']}");
131- break;
132- case "arm_message":
133- mysql_query("insert arm_message (arm_serial, message, sender) values ('{$_POST[id]}', '{$_POST['message']}', '{$_POST['sender']}')");
134- break;
135- case "update_event_conditions":
136- if (checkskey($_POST['id'])) {
137- if ($_POST[downtime_id] and $_POST[downtime_duration] and $_POST['type'] == 'downtime_continue') {
138- $params = "params='{\"id\" : {$_POST[downtime_id]}, \"duration\" : {$_POST[downtime_duration]} }', ";
139- }
140- mysql_query("update event_conditions set {$params} type='{$_POST['type']}', equipment_id='".implode(',',$_POST['equipment_id'])."', admin_id='".implode(',',$_POST['admin_id'])."', pause='{$_POST['pause']}', counter='{$_POST['counter']}', back_time='{$_POST['back_time']}' where id='{$_POST['id']}'");
141- }
142- header("Location: ./?action=event_conditions&id={$_POST['id']}");
143- break;
144- case "add_event_conditions":
145- if (checkskey()) {
146- $params = '';
147- if ($_POST[downtime_id] and $_POST[downtime_duration]) {
148- $params = "{\"id\" : {$_POST[downtime_id]}, \"duration\" : {$_POST[downtime_duration]} }";
149- }
150- $sql = "insert event_conditions (params, type, equipment_id, admin_id, pause, counter, back_time) values ('{$params}', '{$_POST['type']}', '".implode(',',$_POST['equipment_id'])."', '".implode(',',$_POST['admin_id'])."', '{$_POST['pause']}', '{$_POST['counter']}', '{$_POST['back_time']}')";
151- mysql_query($sql);
152- $k = mysql_affected_rows();
153- if ($res and $k>-1) {
154- $id = mysql_insert_id();
155- header("Location: ./?action=event_conditions&id={$id}&msg=1");
156- } else {
157- header("Location: ./?action=event_conditions&id={$id}&msg=2");
158- }
159- } else {
160- header("Location: ./?action=event_conditions");
161- }
162- break;
163- case "del_plan_downtime":
164- if (checkskey($_POST['id'])) {
165- mysql_query("delete from plan_downtime where id='{$_POST['id']}'");
166- }
167- header("Location: ./?action=plan_downtime");
168- break;
169+ case "del_defect_type":
170+ mysql_query("delete from defect_type where id='{$_POST['id']}'");
171+ mysql_query("delete from defect_type_equipment where defect_type_id='{$_POST['id']}'");
172+ mysql_query("delete from defect_type_production_group where defect_type_id='{$_POST['id']}'");
173+ header("Location: ./?action=defect_type");
174+ break;
175+ case "add_del_defect":
176+ mysql_query("insert defect_type (name, dop_id) values ('{$_POST['name']}', '{$_POST['dop_id']}')");
177+ $defect_type_id = mysql_insert_id();
178+ foreach ($_POST['defect_type_equipment'] as $key => $value) {
179+ mysql_query("insert defect_type_equipment (defect_type_id, equipment_group) values ('{$defect_type_id}', '{$value}')");
180+ }
181+ foreach ($_POST['defect_type_production_group'] as $key => $value) {
182+ mysql_query("insert defect_type_production_group (defect_type_id, production_group) values ('{$defect_type_id}', '{$value}')");
183+ }
184+ header("Location: ./?action=defect_type&id=" . $defect_type_id);
185+ break;
186+ case "update_defect_type":
187+ mysql_query("update defect_type set name='{$_POST['name']}', dop_id='{$_POST['dop_id']}' where id='{$_POST['id']}'");
188+ mysql_query("delete from defect_type_equipment where defect_type_id='{$_POST['id']}'");
189+ foreach ($_POST['defect_type_equipment'] as $key => $value) {
190+ mysql_query("insert defect_type_equipment (defect_type_id, equipment_group) values ('{$_POST['id']}', '{$value}')");
191+ }
192+ mysql_query("delete from defect_type_production_group where defect_type_id='{$_POST['id']}'");
193+ foreach ($_POST['defect_type_production_group'] as $key => $value) {
194+ mysql_query("insert defect_type_production_group (defect_type_id, production_group) values ('{$_POST['id']}', '{$value}')");
195+ }
196+ header("Location: ./?action=defect_type&id=" . $_POST['id']);
197+ break;
198+ case "create_downtime_correction":
199+ $res = mysql_query("select * from arm_tablo where update_time='{$_POST[time]}' and arm_serial='{$_POST['serial']}'");
200+ if ($res and mysql_num_rows($res) > 0) {
201+ while ($r = mysql_fetch_assoc($res)) {
202+ $original = $r;
203+ }
204+ }
205+ mysql_query("insert arm_tablo_downtime_correction (update_time, arm_serial, user_modificator, downtime, comment) values ('{$_POST[time]}', '{$_POST['serial']}', '{$userData['id']}', '{$original['downtime']}', '{$original['comment']}')");
206+ mysql_query("update arm_tablo set comment='{$_POST['comment']}', downtime='{$_POST['downtime']}' where update_time='{$_POST['time']}' and arm_serial='{$_POST['serial']}'");
207+ header("Location: ./?action=downtime_report&from={$_POST[from]}&from_time={$_POST[from_time]}&to={$_POST[to]}&to_time={$_POST[to_time]}");
208+ break;
209+ case "delete_downtime_correction":
210+ print_r($_POST);
211+ $res = mysql_query("select * from arm_tablo_downtime_correction where update_time='{$_POST[time]}'");
212+ if ($res and mysql_num_rows($res) > 0) {
213+ while ($r = mysql_fetch_assoc($res)) {
214+ $correction = $r;
215+ }
216+ }
217+ //print_r($correction);
218+ mysql_query("update arm_tablo set comment='{$correction['comment']}', downtime='{$correction['downtime']}' where update_time='{$_POST['time']}'");
219+ mysql_query("delete from arm_tablo_downtime_correction where update_time='{$_POST['time']}'");
220+ header("Location: ./?action=downtime_report&from={$_POST[from]}&from_time={$_POST[from_time]}&to={$_POST[to]}&to_time={$_POST[to_time]}");
221+ break;
222+ case "delete_defect_correction":
223+ $sql = "delete from arm_defect where time='{$_POST[id]}' and arm_serial='{$_POST[arm]}'";
224+ mysql_query($sql);
225+ $sql = "insert arm_defect select arm_serial, time, user, nom, mat, inst, defect, comment, defect_type from arm_defect_correction where time='{$_POST[id]}' and arm_serial='{$_POST[arm]}'";
226+ mysql_query($sql);
227+ // echo $sql;
228+ // exit;
229+ mysql_query("delete from arm_defect_correction where time='{$_POST[id]}' and arm_serial='{$_POST[arm]}'");
230+ header("Location: ./?action=defect2&id={$_POST['id']}&from={$_POST[date_from]}&from_time={$_POST[time_from]}&to={$_POST[date_to]}&to_time={$_POST[time_to]}");
231+ break;
232+ case "create_defect_correction":
233+ $sql = "insert into arm_defect_correction select *, '{$userData[id]}' as user_modificator from arm_defect where time='{$_POST[time]}' and arm_serial='{$_POST[arm]}'";
234+ // echo $sql;
235+ // exit;
236+ mysql_query($sql);
237+ $sql = "update arm_defect set defect='{$_POST[defect]}', comment='{$_POST[comment]}', defect_type='{$_POST[defect_type]}' where time='{$_POST[time]}' and arm_serial='{$_POST[arm]}'";
238+ mysql_query($sql);
239+ header("Location: ./?action=defect2&id={$_POST['id']}&from={$_POST[date_from]}&from_time={$_POST[time_from]}&to={$_POST[date_to]}&to_time={$_POST[time_to]}");
240+ break;
241+ case "del_correction":
242+ mysql_query("delete from arm_circuit where time_begin='{$_POST[id]}'");
243+ mysql_query("insert arm_circuit select arm_serial, time_begin, time_end, user, nom, mat, inst, multiplicator, consumption from arm_circuit_correction where time_begin='{$_POST[id]}'");
244+ mysql_query("delete from arm_circuit_correction where time_begin='{$_POST[id]}'");
245+ header("Location: ./?action=production_correction&id={$_POST['id']}");
246+ break;
247+ case "create_correction":
248+ $res = mysql_query("select * from production where id='{$_POST[nom]}'");
249+ if ($res and mysql_num_rows($res) > 0) {
250+ while ($r = mysql_fetch_assoc($res)) {
251+ $consumption = $r[consumption];
252+ $multiplicator = $r[multiplicator];
253+ }
254+ }
255+ mysql_query("insert into arm_circuit_correction select *, '{$_POST[user_modificator]}' as user_modificator from arm_circuit where time_begin='{$_POST[id]}'");
256+ mysql_query("update arm_circuit set multiplicator='{$multiplicator}', consumption='{$consumption}', nom='{$_POST[nom]}', mat='{$_POST[mat]}', inst='{$_POST[inst]}' where time_begin='{$_POST[id]}'");
257+ header("Location: ./?action=production_correction&id={$_POST['id']}");
258+ break;
259+ case "arm_message":
260+ mysql_query("insert arm_message (arm_serial, message, sender) values ('{$_POST[id]}', '{$_POST['message']}', '{$_POST['sender']}')");
261+ break;
262+ case "update_event_conditions":
263+ if (checkskey($_POST['id'])) {
264+ if ($_POST[downtime_id] and $_POST[downtime_duration] and $_POST['type'] == 'downtime_continue') {
265+ $params = "params='{\"id\" : {$_POST[downtime_id]}, \"duration\" : {$_POST[downtime_duration]} }', ";
266+ }
267+ mysql_query("update event_conditions set {$params} type='{$_POST['type']}', equipment_id='" . implode(',', $_POST['equipment_id']) . "', admin_id='" . implode(',', $_POST['admin_id']) . "', pause='{$_POST['pause']}', counter='{$_POST['counter']}', back_time='{$_POST['back_time']}' where id='{$_POST['id']}'");
268+ }
269+ header("Location: ./?action=event_conditions&id={$_POST['id']}");
270+ break;
271+ case "add_event_conditions":
272+ if (checkskey()) {
273+ $params = '';
274+ if ($_POST[downtime_id] and $_POST[downtime_duration]) {
275+ $params = "{\"id\" : {$_POST[downtime_id]}, \"duration\" : {$_POST[downtime_duration]} }";
276+ }
277+ $sql = "insert event_conditions (params, type, equipment_id, admin_id, pause, counter, back_time) values ('{$params}', '{$_POST['type']}', '" . implode(',', $_POST['equipment_id']) . "', '" . implode(',', $_POST['admin_id']) . "', '{$_POST['pause']}', '{$_POST['counter']}', '{$_POST['back_time']}')";
278+ mysql_query($sql);
279+ $k = mysql_affected_rows();
280+ if ($res and $k > -1) {
281+ $id = mysql_insert_id();
282+ header("Location: ./?action=event_conditions&id={$id}&msg=1");
283+ } else {
284+ header("Location: ./?action=event_conditions&id={$id}&msg=2");
285+ }
286+ } else {
287+ header("Location: ./?action=event_conditions");
288+ }
289+ break;
290+ case "del_plan_downtime":
291+ if (checkskey($_POST['id'])) {
292+ mysql_query("delete from plan_downtime where id='{$_POST['id']}'");
293+ }
294+ header("Location: ./?action=plan_downtime");
295+ break;
296
297- case "del_plan_oee":
298- if (checkskey($_POST['id'])) {
299- mysql_query("delete from plan_oee where id='{$_POST['id']}'");
300- }
301- header("Location: ./?action=plan_oee");
302- break;
303+ case "del_plan_oee":
304+ if (checkskey($_POST['id'])) {
305+ mysql_query("delete from plan_oee where id='{$_POST['id']}'");
306+ }
307+ header("Location: ./?action=plan_oee");
308+ break;
309
310- case "update_plan_oee":
311- mysql_query("update plan_oee set year='{$_POST['year']}', month='{$_POST['month']}', param='{$_POST['param']}', percent='{$_POST['percent']}', user='{$userData['id']}' where id='{$_POST['id']}'");
312- header("Location: ./?action=plan_oee&id={$_POST['id']}&msg=1");
313- break;
314+ case "update_plan_oee":
315+ mysql_query("update plan_oee set year='{$_POST['year']}', month='{$_POST['month']}', param='{$_POST['param']}', percent='{$_POST['percent']}', user='{$userData['id']}' where id='{$_POST['id']}'");
316+ header("Location: ./?action=plan_oee&id={$_POST['id']}&msg=1");
317+ break;
318
319- case "add_plan_oee":
320- $sql = "select * from plan_oee where year='{$_POST[year]}' and month='{$_POST[month]}' and param='{$_POST[param]}'";
321- $res = mysql_query($sql);
322- if ($res and mysql_num_rows($res)>0) {
323- header("Location: ./?action=plan_oee&id={$_POST['id']}&msg=3");
324- exit;
325- } else {
326- $sql = "insert plan_oee (year, month, param, percent, user) values ('{$_POST['year']}', '{$_POST['month']}', '{$_POST['param']}', '{$_POST['percent']}', '{$userData['id']}')";
327- mysql_query($sql);
328- $k = mysql_affected_rows();
329- if ($res and $k>-1) {
330- $id = mysql_insert_id();
331- header("Location: ./?action=plan_oee&id={$id}&msg=1");
332- } else {
333- header("Location: ./?action=plan_oee&id={$id}&msg=2");
334- }
335- }
336- break;
337+ case "add_plan_oee":
338+ $sql = "select * from plan_oee where year='{$_POST[year]}' and month='{$_POST[month]}' and param='{$_POST[param]}'";
339+ $res = mysql_query($sql);
340+ if ($res and mysql_num_rows($res) > 0) {
341+ header("Location: ./?action=plan_oee&id={$_POST['id']}&msg=3");
342+ exit;
343+ } else {
344+ $sql = "insert plan_oee (year, month, param, percent, user) values ('{$_POST['year']}', '{$_POST['month']}', '{$_POST['param']}', '{$_POST['percent']}', '{$userData['id']}')";
345+ mysql_query($sql);
346+ $k = mysql_affected_rows();
347+ if ($res and $k > -1) {
348+ $id = mysql_insert_id();
349+ header("Location: ./?action=plan_oee&id={$id}&msg=1");
350+ } else {
351+ header("Location: ./?action=plan_oee&id={$id}&msg=2");
352+ }
353+ }
354+ break;
355
356- case "del_event_conditions":
357- if (checkskey($_POST['id'])) {
358- mysql_query("delete from event_conditions where id='{$_POST['id']}'");
359- }
360- header("Location: ./?action=event_conditions");
361- break;
362- case "update_plan_downtime":
363- mysql_query("update plan_downtime set equipment_id='{$_POST['equipment_id']}', comment='{$_POST['comment']}', begin_time='{$_POST['begin_date']} {$_POST['begin_time']}', duration='{$_POST['duration']}' where id='{$_POST['id']}'");
364- header("Location: ./?action=plan_downtime&id={$_POST['id']}");
365- break;
366+ case "del_event_conditions":
367+ if (checkskey($_POST['id'])) {
368+ mysql_query("delete from event_conditions where id='{$_POST['id']}'");
369+ }
370+ header("Location: ./?action=event_conditions");
371+ break;
372+ case "update_plan_downtime":
373+ mysql_query("update plan_downtime set equipment_id='{$_POST['equipment_id']}', comment='{$_POST['comment']}', begin_time='{$_POST['begin_date']} {$_POST['begin_time']}', duration='{$_POST['duration']}' where id='{$_POST['id']}'");
374+ header("Location: ./?action=plan_downtime&id={$_POST['id']}");
375+ break;
376
377- case "add_plan_downtime":
378- if (checkskey()) {
379- mysql_query("insert plan_downtime (equipment_id, begin_time, duration, comment) values ('{$_POST['equipment_id']}', '{$_POST['begin_date']} {$_POST['begin_time']}', '{$_POST['duration']}', '{$_POST['comment']}')");
380- $k = mysql_affected_rows();
381- if ($res and $k>-1) {
382- $id = mysql_insert_id();
383- header("Location: ./?action=plan_downtime&id={$id}&msg=1");
384- } else {
385- header("Location: ./?action=plan_downtime&id={$id}&msg=2");
386- }
387- } else {
388- header("Location: ./?action=plan_downtime");
389- }
390- break;
391+ case "add_plan_downtime":
392+ if (checkskey()) {
393+ mysql_query("insert plan_downtime (equipment_id, begin_time, duration, comment) values ('{$_POST['equipment_id']}', '{$_POST['begin_date']} {$_POST['begin_time']}', '{$_POST['duration']}', '{$_POST['comment']}')");
394+ $k = mysql_affected_rows();
395+ if ($res and $k > -1) {
396+ $id = mysql_insert_id();
397+ header("Location: ./?action=plan_downtime&id={$id}&msg=1");
398+ } else {
399+ header("Location: ./?action=plan_downtime&id={$id}&msg=2");
400+ }
401+ } else {
402+ header("Location: ./?action=plan_downtime");
403+ }
404+ break;
405
406- case "update_plan_smena":
407- if (checkskey($_POST['id'])) {
408- mysql_query("update plan_smena set date='{$_POST['date']}', shift='{$_POST['shift']}', equipment_id='{$_POST['equipment_id']}', emp_id='{$_POST['emp_id']}', nom='{$_POST['nom']}', mat='{$_POST['mat']}', inst='{$_POST['inst']}', quantity='{$_POST['quantity']}' where id='{$_POST['id']}'");
409- }
410- header("Location: ./?action=plan_smena&id={$_POST['id']}&msg=1");
411- break;
412- case "add_plan_smena":
413- if (checkskey()) {
414- mysql_query("insert plan_smena (date, shift, equipment_id, emp_id, nom, mat, inst, quantity) values ('{$_POST['date']}', '{$_POST['shift']}', '{$_POST['equipment_id']}', '{$_POST['emp_id']}', '{$_POST['nom']}', '{$_POST['mat']}', '{$_POST['inst']}', '{$_POST['quantity']}')");
415- $k = mysql_affected_rows();
416- if ($res and $k>-1) {
417- $id = mysql_insert_id();
418- header("Location: ./?action=plan_smena&id={$id}&msg=1");
419- } else {
420- header("Location: ./?action=plan_smena&id={$id}&msg=2");
421- }
422- } else {
423- header("Location: ./?action=plan_smena");
424- }
425- break;
426- case "del_plan_smena":
427- if (checkskey($_POST['id'])) {
428- mysql_query("delete from plan_smena where id='{$_POST['id']}'");
429- }
430- header("Location: ./?action=plan_smena");
431- break;
432- case "del_time_interval":
433- if (checkskey($_POST['id'])) {
434- seveLog("time_interval");
435- mysql_query("delete from time_interval where id='{$_POST['id']}'");
436- }
437- header("Location: ./?action=time_interval");
438- break;
439- case "update_time_interval":
440- if (checkskey($_POST['id'])) {
441- seveLog("time_interval");
442- $tb = explode(':',$_POST['time_begin']);
443- if (strlen($tb[0])<2) {
444- $_POST['time_begin'] = '0'.$_POST['time_begin'];
445- }
446- $tb = explode(':',$_POST['time_end']);
447- if (strlen($tb[0])<2) {
448- $_POST['time_end'] = '0'.$_POST['time_end'];
449- }
450- $res = mysql_query("update time_interval set name='{$_POST['name']}', time_begin='{$_POST['time_begin']}', time_end='{$_POST['time_end']}' where id='{$_POST['id']}'");
451- $k = mysql_affected_rows();
452- if ($res and $k>-1) {
453- header("Location: ./?action=time_interval&id={$_POST['id']}&msg=1");
454- } else {
455- header("Location: ./?action=time_interval&id={$_POST['id']}&msg=2");
456- }
457- } else {
458- header("Location: ./?action=time_interval&&id={$_POST['id']}&msg=3");
459- }
460- break;
461- case "add_time_interval":
462- if (checkskey()) {
463- seveLog("time_interval");
464- $tb = explode(':',$_POST['time_begin']);
465- if (strlen($tb[0])<2) {
466- $_POST['time_begin'] = '0'.$_POST['time_begin'];
467- }
468- $tb = explode(':',$_POST['time_end']);
469- if (strlen($tb[0])<2) {
470- $_POST['time_end'] = '0'.$_POST['time_end'];
471- }
472- $res = mysql_query("insert time_interval (name, time_begin, time_end) values ('{$_POST['name']}', '{$_POST['time_begin']}', '{$_POST['time_end']}')");
473- $k = mysql_affected_rows();
474- if ($res and $k>-1) {
475- $id = mysql_insert_id();
476- header("Location: ./?action=time_interval&id={$id}&msg=1");
477- } else {
478- header("Location: ./?action=time_interval&id={$id}&msg=2");
479- }
480- } else {
481- header("Location: ./?action=time_interval&&id={$_POST['id']}&msg=3");
482- }
483- break;
484- case "del_news":
485- if (checkskey($_POST['id'])) {
486- mysql_query("delete from news where id='{$_POST['id']}'");
487- }
488- header("Location: ./?action=news_admin");
489- break;
490- case "update_news":
491- if (checkskey($_POST['id'])) {
492- $res = mysql_query("update news set title='{$_POST['title']}', date='{$_POST['date']}', content='{$_POST['content']}', publish=".($_POST['publish'] ? 1 : 0)." where id='{$_POST['id']}'");
493- $k = mysql_affected_rows();
494- if ($res and $k>-1) {
495- header("Location: ./?action=news_admin&id={$_POST['id']}&msg=1");
496- } else {
497- header("Location: ./?action=news_admin&id={$_POST['id']}&msg=2");
498- }
499- } else {
500- header("Location: ./?action=news_admin&&id={$_POST['id']}&msg=3");
501- }
502- break;
503- case "add_news":
504- if (checkskey()) {
505- $res = mysql_query("insert news (title, date, content, publish ) values ('{$_POST['title']}', '{$_POST['date']}', '{$_POST['content']}', ".($_POST['publish'] ? 1 : 0).")");
506- $k = mysql_affected_rows();
507- if ($res and $k>-1) {
508- $id = mysql_insert_id();
509- header("Location: ./?action=news_admin&id={$id}&msg=1");
510- } else {
511- header("Location: ./?action=news_admin&id={$id}&msg=2");
512- }
513- } else {
514- header("Location: ./?action=news_admin&&id={$_POST['id']}&msg=3");
515- }
516- break;
517+ case "update_plan_smena":
518+ if (checkskey($_POST['id'])) {
519+ mysql_query("update plan_smena set date='{$_POST['date']}', shift='{$_POST['shift']}', equipment_id='{$_POST['equipment_id']}', emp_id='{$_POST['emp_id']}', nom='{$_POST['nom']}', mat='{$_POST['mat']}', inst='{$_POST['inst']}', quantity='{$_POST['quantity']}' where id='{$_POST['id']}'");
520+ }
521+ header("Location: ./?action=plan_smena&id={$_POST['id']}&msg=1");
522+ break;
523+ case "add_plan_smena":
524+ if (checkskey()) {
525+ mysql_query("insert plan_smena (date, shift, equipment_id, emp_id, nom, mat, inst, quantity) values ('{$_POST['date']}', '{$_POST['shift']}', '{$_POST['equipment_id']}', '{$_POST['emp_id']}', '{$_POST['nom']}', '{$_POST['mat']}', '{$_POST['inst']}', '{$_POST['quantity']}')");
526+ $k = mysql_affected_rows();
527+ if ($res and $k > -1) {
528+ $id = mysql_insert_id();
529+ header("Location: ./?action=plan_smena&id={$id}&msg=1");
530+ } else {
531+ header("Location: ./?action=plan_smena&id={$id}&msg=2");
532+ }
533+ } else {
534+ header("Location: ./?action=plan_smena");
535+ }
536+ break;
537+ case "del_plan_smena":
538+ if (checkskey($_POST['id'])) {
539+ mysql_query("delete from plan_smena where id='{$_POST['id']}'");
540+ }
541+ header("Location: ./?action=plan_smena");
542+ break;
543+ case "del_time_interval":
544+ if (checkskey($_POST['id'])) {
545+ seveLog("time_interval");
546+ mysql_query("delete from time_interval where id='{$_POST['id']}'");
547+ }
548+ header("Location: ./?action=time_interval");
549+ break;
550+ case "update_time_interval":
551+ if (checkskey($_POST['id'])) {
552+ seveLog("time_interval");
553+ $tb = explode(':', $_POST['time_begin']);
554+ if (strlen($tb[0]) < 2) {
555+ $_POST['time_begin'] = '0' . $_POST['time_begin'];
556+ }
557+ $tb = explode(':', $_POST['time_end']);
558+ if (strlen($tb[0]) < 2) {
559+ $_POST['time_end'] = '0' . $_POST['time_end'];
560+ }
561+ $res = mysql_query("update time_interval set name='{$_POST['name']}', time_begin='{$_POST['time_begin']}', time_end='{$_POST['time_end']}' where id='{$_POST['id']}'");
562+ $k = mysql_affected_rows();
563+ if ($res and $k > -1) {
564+ header("Location: ./?action=time_interval&id={$_POST['id']}&msg=1");
565+ } else {
566+ header("Location: ./?action=time_interval&id={$_POST['id']}&msg=2");
567+ }
568+ } else {
569+ header("Location: ./?action=time_interval&&id={$_POST['id']}&msg=3");
570+ }
571+ break;
572+ case "add_time_interval":
573+ if (checkskey()) {
574+ seveLog("time_interval");
575+ $tb = explode(':', $_POST['time_begin']);
576+ if (strlen($tb[0]) < 2) {
577+ $_POST['time_begin'] = '0' . $_POST['time_begin'];
578+ }
579+ $tb = explode(':', $_POST['time_end']);
580+ if (strlen($tb[0]) < 2) {
581+ $_POST['time_end'] = '0' . $_POST['time_end'];
582+ }
583+ $res = mysql_query("insert time_interval (name, time_begin, time_end) values ('{$_POST['name']}', '{$_POST['time_begin']}', '{$_POST['time_end']}')");
584+ $k = mysql_affected_rows();
585+ if ($res and $k > -1) {
586+ $id = mysql_insert_id();
587+ header("Location: ./?action=time_interval&id={$id}&msg=1");
588+ } else {
589+ header("Location: ./?action=time_interval&id={$id}&msg=2");
590+ }
591+ } else {
592+ header("Location: ./?action=time_interval&&id={$_POST['id']}&msg=3");
593+ }
594+ break;
595+ case "del_news":
596+ if (checkskey($_POST['id'])) {
597+ mysql_query("delete from news where id='{$_POST['id']}'");
598+ }
599+ header("Location: ./?action=news_admin");
600+ break;
601+ case "update_news":
602+ if (checkskey($_POST['id'])) {
603+ $res = mysql_query("update news set title='{$_POST['title']}', date='{$_POST['date']}', content='{$_POST['content']}', publish=" . ($_POST['publish'] ? 1 : 0) . " where id='{$_POST['id']}'");
604+ $k = mysql_affected_rows();
605+ if ($res and $k > -1) {
606+ header("Location: ./?action=news_admin&id={$_POST['id']}&msg=1");
607+ } else {
608+ header("Location: ./?action=news_admin&id={$_POST['id']}&msg=2");
609+ }
610+ } else {
611+ header("Location: ./?action=news_admin&&id={$_POST['id']}&msg=3");
612+ }
613+ break;
614+ case "add_news":
615+ if (checkskey()) {
616+ $res = mysql_query("insert news (title, date, content, publish ) values ('{$_POST['title']}', '{$_POST['date']}', '{$_POST['content']}', " . ($_POST['publish'] ? 1 : 0) . ")");
617+ $k = mysql_affected_rows();
618+ if ($res and $k > -1) {
619+ $id = mysql_insert_id();
620+ header("Location: ./?action=news_admin&id={$id}&msg=1");
621+ } else {
622+ header("Location: ./?action=news_admin&id={$id}&msg=2");
623+ }
624+ } else {
625+ header("Location: ./?action=news_admin&&id={$_POST['id']}&msg=3");
626+ }
627+ break;
628
629- case "del_circuit_min_time":
630- if (checkskey($_POST['id'])) {
631- seveLog("circuit_min_time");
632- mysql_query("delete from arm_circuit_min_time where nom='{$_POST['id']}'");
633- }
634- header("Location: ./?action=circuit_min_time");
635- break;
636- case "add_circuit_min_time":
637- if (checkskey()) {
638- seveLog("circuit_min_time");
639- mysql_query("delete from arm_circuit_min_time where nom='{$_POST['nom']}'");
640- mysql_query("insert arm_circuit_min_time (nom, time) values ('{$_POST['nom']}', '{$_POST['time']}') ");
641- }
642- header("Location: ./?action=circuit_min_time&nom={$_POST['nom']}&msg=1");
643- break;
644- case "update_matrix_short_stop":
645- seveLog("action_matrix_short_stop");
646- if (checkskey($_POST['id'])) {
647- $res = mysql_query("update short_stop set equipment='{$_POST['equipment']}', production='{$_POST['production']}', time='{$_POST['time']}' where id='{$_POST['id']}'");
648- $k = mysql_affected_rows();
649- if ($res and $k>-1) {
650- header("Location: ./?action=action_matrix_short_stop&id={$_POST['id']}&msg=1");
651- } else {
652- header("Location: ./?action=action_matrix_short_stop&id={$_POST['id']}&msg=2");
653- }
654- }
655- break;
656- case "add_matrix_short_stop":
657- seveLog("action_matrix_short_stop");
658- if (checkskey()) {
659- $res = mysql_query("insert short_stop (equipment, production, `time`) values ('{$_POST['equipment']}', '{$_POST['production']}', '{$_POST['time']}')");
660- $k = mysql_affected_rows();
661- if ($res and $k>-1) {
662- $id = mysql_insert_id();
663- header("Location: ./?action=action_matrix_short_stop&id={$id}&msg=1");
664- } else {
665- header("Location: ./?action=action_matrix_short_stop&id={$id}&msg=2");
666- }
667- }
668- break;
669- case "del_matrix_short_stop":
670- seveLog("action_matrix_short_stop");
671- if (checkskey($_POST['id'])) {
672- mysql_query("delete from short_stop where id='{$_POST['id']}'");
673- }
674- header("Location: ./?action=action_matrix_short_stop");
675- break;
676- case "settings":
677- if (checkskey()) {
678- seveLog($_POST[action]);
679- //$time_zone_name = mysqli_real_escape_string(DB::$dblink, $_POST['time_zone_name']);
680- $TimeZone = new TimeZone($_POST['time_zone_name']);
681- if (!strpos($_POST['short_stop'], ':')) {
682- $_POST['short_stop'] = '0:0:'.$_POST['short_stop'];
683- }
684- $t = explode(':',$_POST['short_stop']);
685- if (count($t)==2) $_POST['short_stop'] = '0:'.$_POST['short_stop'];
686- $parsed = date_parse($_POST['short_stop']);
687- $short_stop = $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
688+ case "del_circuit_min_time":
689+ if (checkskey($_POST['id'])) {
690+ seveLog("circuit_min_time");
691+ mysql_query("delete from arm_circuit_min_time where nom='{$_POST['id']}'");
692+ }
693+ header("Location: ./?action=circuit_min_time");
694+ break;
695+ case "add_circuit_min_time":
696+ if (checkskey()) {
697+ seveLog("circuit_min_time");
698+ mysql_query("delete from arm_circuit_min_time where nom='{$_POST['nom']}'");
699+ mysql_query("insert arm_circuit_min_time (nom, time) values ('{$_POST['nom']}', '{$_POST['time']}') ");
700+ }
701+ header("Location: ./?action=circuit_min_time&nom={$_POST['nom']}&msg=1");
702+ break;
703+ case "update_matrix_short_stop":
704+ seveLog("action_matrix_short_stop");
705+ if (checkskey($_POST['id'])) {
706+ $res = mysql_query("update short_stop set equipment='{$_POST['equipment']}', production='{$_POST['production']}', time='{$_POST['time']}' where id='{$_POST['id']}'");
707+ $k = mysql_affected_rows();
708+ if ($res and $k > -1) {
709+ header("Location: ./?action=action_matrix_short_stop&id={$_POST['id']}&msg=1");
710+ } else {
711+ header("Location: ./?action=action_matrix_short_stop&id={$_POST['id']}&msg=2");
712+ }
713+ }
714+ break;
715+ case "add_matrix_short_stop":
716+ seveLog("action_matrix_short_stop");
717+ if (checkskey()) {
718+ $res = mysql_query("insert short_stop (equipment, production, `time`) values ('{$_POST['equipment']}', '{$_POST['production']}', '{$_POST['time']}')");
719+ $k = mysql_affected_rows();
720+ if ($res and $k > -1) {
721+ $id = mysql_insert_id();
722+ header("Location: ./?action=action_matrix_short_stop&id={$id}&msg=1");
723+ } else {
724+ header("Location: ./?action=action_matrix_short_stop&id={$id}&msg=2");
725+ }
726+ }
727+ break;
728+ case "del_matrix_short_stop":
729+ seveLog("action_matrix_short_stop");
730+ if (checkskey($_POST['id'])) {
731+ mysql_query("delete from short_stop where id='{$_POST['id']}'");
732+ }
733+ header("Location: ./?action=action_matrix_short_stop");
734+ break;
735+ case "settings":
736+ if (checkskey()) {
737+ seveLog($_POST[action]);
738+ //$time_zone_name = mysqli_real_escape_string(DB::$dblink, $_POST['time_zone_name']);
739+ $TimeZone = new TimeZone($_POST['time_zone_name']);
740+ if (!strpos($_POST['short_stop'], ':')) {
741+ $_POST['short_stop'] = '0:0:' . $_POST['short_stop'];
742+ }
743+ $t = explode(':', $_POST['short_stop']);
744+ if (count($t) == 2) $_POST['short_stop'] = '0:' . $_POST['short_stop'];
745+ $parsed = date_parse($_POST['short_stop']);
746+ $short_stop = $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
747
748
749- // if (!strpos($_POST['circuit_min_time'], ':')) {
750- // $_POST['circuit_min_time'] = '0:0:'.$_POST['circuit_min_time'];
751- // }
752- // $t = explode(':',$_POST['circuit_min_time']);
753- // if (count($t)==2) $_POST['circuit_min_time'] = '0:'.$_POST['circuit_min_time'];
754- // $parsed = date_parse($_POST['circuit_min_time']);
755- // $circuit_min_time = $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
756- $circuit_min_time = $_POST['circuit_min_time'];
757+ // if (!strpos($_POST['circuit_min_time'], ':')) {
758+ // $_POST['circuit_min_time'] = '0:0:'.$_POST['circuit_min_time'];
759+ // }
760+ // $t = explode(':',$_POST['circuit_min_time']);
761+ // if (count($t)==2) $_POST['circuit_min_time'] = '0:'.$_POST['circuit_min_time'];
762+ // $parsed = date_parse($_POST['circuit_min_time']);
763+ // $circuit_min_time = $parsed['hour'] * 3600 + $parsed['minute'] * 60 + $parsed['second'];
764+ $circuit_min_time = $_POST['circuit_min_time'];
765
766- mysql_query("delete from `config` where `key` = 'short_stop'");
767- mysql_query("delete from `config` where `key` = 'fluctuation'");
768- mysql_query("delete from `config` where `key` = 'instrument_report'");
769- mysql_query("delete from `config` where `key` = 'circuit_min_time'");
770- mysql_query("delete from `config` where `key` = 'defect'");
771- mysql_query("delete from `config` where `key` = 'defect_type'");
772- mysql_query("delete from `config` where `key` = 'report_encoding'");
773- mysql_query("delete from `config` where `key` = 'report_filetype'");
774- mysql_query("delete from `config` where `key` = 'arm_user_change'");
775- mysql_query("delete from `config` where `key` = 'plan_downtime_info'");
776- mysql_query("delete from `config` where `key` = 'autostop_by_circle'");
777- mysql_query("delete from `config` where `key` = 'eq_allavlb'");
778- mysql_query("delete from `config` where `key` = 'widget_7_param'");
779+ mysql_query("delete from `config` where `key` = 'short_stop'");
780+ mysql_query("delete from `config` where `key` = 'fluctuation'");
781+ mysql_query("delete from `config` where `key` = 'instrument_report'");
782+ mysql_query("delete from `config` where `key` = 'circuit_min_time'");
783+ mysql_query("delete from `config` where `key` = 'defect'");
784+ mysql_query("delete from `config` where `key` = 'defect_type'");
785+ mysql_query("delete from `config` where `key` = 'report_encoding'");
786+ mysql_query("delete from `config` where `key` = 'report_filetype'");
787+ mysql_query("delete from `config` where `key` = 'arm_user_change'");
788+ mysql_query("delete from `config` where `key` = 'plan_downtime_info'");
789+ mysql_query("delete from `config` where `key` = 'autostop_by_circle'");
790+ mysql_query("delete from `config` where `key` = 'eq_allavlb'");
791+ mysql_query("delete from `config` where `key` = 'widget_7_param'");
792
793- mysql_query("insert into `config` (`key`, `value`) values ('widget_7_param', '{$_POST['widget_7_param']}')");
794- mysql_query("insert into `config` (`key`, `value`) values ('eq_allavlb', '{$_POST['eq_allavlb']}')");
795- mysql_query("insert into `config` (`key`, `value`) values ('circuit_min_time', '{$circuit_min_time}')");
796- mysql_query("insert into `config` (`key`, `value`) values ('short_stop', '{$short_stop}')");
797- mysql_query("insert into `config` (`key`, `value`) values ('fluctuation', '{$_POST['fluctuation']}')");
798- if ($_POST['defect']) {
799- mysql_query("insert into `config` (`key`, `value`) values ('defect', 1)");
800- }
801- if ($_POST['defect_type']) {
802- mysql_query("insert into `config` (`key`, `value`) values ('defect_type', 1)");
803- }
804- if ($_POST['instrument_report']) {
805- mysql_query("insert into `config` (`key`, `value`) values ('instrument_report', 1)");
806- }
807- if ($_POST['arm_user_change']) {
808- mysql_query("insert into `config` (`key`, `value`) values ('arm_user_change', 1)");
809- }
810- if ($_POST['report_encoding']) {
811- mysql_query("insert into `config` (`key`, `value`) values ('report_encoding', '{$_POST['report_encoding']}')");
812- }
813- if ($_POST['report_filetype']) {
814- mysql_query("insert into `config` (`key`, `value`) values ('report_filetype', '{$_POST['report_filetype']}')");
815- }
816- if ($_POST['plan_downtime_info']) {
817- mysql_query("insert into `config` (`key`, `value`) values ('plan_downtime_info', 1)");
818- }
819- if ($_POST['autostop_by_circle']) {
820- mysql_query("insert into `config` (`key`, `value`) values ('autostop_by_circle', 1)");
821- }
822+ mysql_query("insert into `config` (`key`, `value`) values ('widget_7_param', '{$_POST['widget_7_param']}')");
823+ mysql_query("insert into `config` (`key`, `value`) values ('eq_allavlb', '{$_POST['eq_allavlb']}')");
824+ mysql_query("insert into `config` (`key`, `value`) values ('circuit_min_time', '{$circuit_min_time}')");
825+ mysql_query("insert into `config` (`key`, `value`) values ('short_stop', '{$short_stop}')");
826+ mysql_query("insert into `config` (`key`, `value`) values ('fluctuation', '{$_POST['fluctuation']}')");
827+ if ($_POST['defect']) {
828+ mysql_query("insert into `config` (`key`, `value`) values ('defect', 1)");
829+ }
830+ if ($_POST['defect_type']) {
831+ mysql_query("insert into `config` (`key`, `value`) values ('defect_type', 1)");
832+ }
833+ if ($_POST['instrument_report']) {
834+ mysql_query("insert into `config` (`key`, `value`) values ('instrument_report', 1)");
835+ }
836+ if ($_POST['arm_user_change']) {
837+ mysql_query("insert into `config` (`key`, `value`) values ('arm_user_change', 1)");
838+ }
839+ if ($_POST['report_encoding']) {
840+ mysql_query("insert into `config` (`key`, `value`) values ('report_encoding', '{$_POST['report_encoding']}')");
841+ }
842+ if ($_POST['report_filetype']) {
843+ mysql_query("insert into `config` (`key`, `value`) values ('report_filetype', '{$_POST['report_filetype']}')");
844+ }
845+ if ($_POST['plan_downtime_info']) {
846+ mysql_query("insert into `config` (`key`, `value`) values ('plan_downtime_info', 1)");
847+ }
848+ if ($_POST['autostop_by_circle']) {
849+ mysql_query("insert into `config` (`key`, `value`) values ('autostop_by_circle', 1)");
850+ }
851
852- DB::connect(DB_NAME, DB_HOST, DB_USER, DB_PASS);
853- //mysql_query("update organizations set time_zone='{$_POST[time_zone]}' where domen='{$customer[domen]}'");
854- mysql_query("update organizations set time_zone='".($TimeZone->getUTCOffset()/(60*60) - 3)."',client_timezone='".$TimeZone->getName()."' where domen='{$customer[domen]}'");//-3 mean Moscow
855- }
856- header("Location: ./?action=settings");
857- break;
858- case "add_resource":
859- if (checkskey($_POST[id])) {
860- seveLog("resources");
861- mysql_query("insert resources (name, units, price) values ('{$_POST[name]}', '{$_POST[units]}', '{$_POST[price]}')");
862- $id = mysql_insert_id();
863- }
864- header("Location: ./?action=resources&id={$id}");
865- break;
866- case "update_resource":
867- if (checkskey($_POST[id])) {
868- seveLog("resources");
869- mysql_query("update resources set name='{$_POST[name]}', units='{$_POST[units]}', price='{$_POST[price]}' where id='{$_POST[id]}'");
870- }
871- header("Location: ./?action=resources&id=$_POST[id]");
872- break;
873- case "del_resource":
874- if (checkskey($_POST[id])) {
875- seveLog("resources");
876- mysql_query("delete from resources where id='$_POST[id]'");
877- }
878- header("Location: ./?action=resources&id=$_POST[id]");
879- break;
880- case "create_service_task":
881- if (checkskey()) {
882- $_POST[content] = addslashes($_POST[content]);
883- while (list($key, $val) = each($_POST[responce_2])) {
884- $responce_2 .= "$val,";
885- }
886- $responce_2 = substr($responce_2,0,-1);
887- $_POST[request_id] = ($_POST[request_id] ? $_POST[request_id] : 0);
888- $sql = "insert service_task (created, service_type, equipment_id, responce, responce_2, request_id, creator, date_plan, hours_plan, content, status) values (
889- now(), '{$_POST[service_type]}', '{$_POST[equipment_id]}', '{$_POST[responce]}', '{$responce_2}', '{$_POST[request_id]}', '{$userData[id]}', '{$_POST[date]} {$_POST[time]}', '{$_POST[hours_plan]}', '{$_POST[content]}', ".($_POST[status] ? 1 : 0).")";
890- mysql_query($sql);
891- // echo $sql;
892- // exit;
893- }
894- header("Location: ./?action=service_request_list&id=$_POST[request_id]");
895- break;
896+ DB::connect(DB_NAME, DB_HOST, DB_USER, DB_PASS);
897+ //mysql_query("update organizations set time_zone='{$_POST[time_zone]}' where domen='{$customer[domen]}'");
898+ mysql_query("update organizations set time_zone='" . ($TimeZone->getUTCOffset() / (60 * 60) - 3) . "',client_timezone='" . $TimeZone->getName() . "' where domen='{$customer[domen]}'");//-3 mean Moscow
899+ }
900+ header("Location: ./?action=settings");
901+ break;
902+ case "add_resource":
903+ if (checkskey($_POST[id])) {
904+ seveLog("resources");
905+ mysql_query("insert resources (name, units, price) values ('{$_POST[name]}', '{$_POST[units]}', '{$_POST[price]}')");
906+ $id = mysql_insert_id();
907+ }
908+ header("Location: ./?action=resources&id={$id}");
909+ break;
910+ case "update_resource":
911+ if (checkskey($_POST[id])) {
912+ seveLog("resources");
913+ mysql_query("update resources set name='{$_POST[name]}', units='{$_POST[units]}', price='{$_POST[price]}' where id='{$_POST[id]}'");
914+ }
915+ header("Location: ./?action=resources&id=$_POST[id]");
916+ break;
917+ case "del_resource":
918+ if (checkskey($_POST[id])) {
919+ seveLog("resources");
920+ mysql_query("delete from resources where id='$_POST[id]'");
921+ }
922+ header("Location: ./?action=resources&id=$_POST[id]");
923+ break;
924+ case "create_service_task":
925+ if (checkskey()) {
926+ $_POST[content] = addslashes($_POST[content]);
927+ while (list($key, $val) = each($_POST[responce_2])) {
928+ $responce_2 .= "$val,";
929+ }
930+ $responce_2 = substr($responce_2, 0, -1);
931+ $_POST[request_id] = ($_POST[request_id] ? $_POST[request_id] : 0);
932+ $sql = "insert service_task (created, service_type, equipment_id, responce, responce_2, request_id, creator, date_plan, hours_plan, content, status) values (
933+ now(), '{$_POST[service_type]}', '{$_POST[equipment_id]}', '{$_POST[responce]}', '{$responce_2}', '{$_POST[request_id]}', '{$userData[id]}', '{$_POST[date]} {$_POST[time]}', '{$_POST[hours_plan]}', '{$_POST[content]}', " . ($_POST[status] ? 1 : 0) . ")";
934+ mysql_query($sql);
935+ // echo $sql;
936+ // exit;
937+ }
938+ header("Location: ./?action=service_request_list&id=$_POST[request_id]");
939+ break;
940
941- case 'cancel_task':
942- mysql_query("update service_task set status='".ST_CANCEL."' where id='{$_POST[id]}'");
943- header("Location: ./?action=service_task_list&id=$_POST[id]");
944- break;
945- case 'move_task':
946- mysql_query("update service_task set date_plan='{$_POST[task_new_time]}' where id='{$_POST[id]}'");
947- header("Location: ./?action=service_task_shedule&date=$_POST[date]");
948- break;
949- case "update_service_task":
950- if (checkskey()) {
951- $_POST[content] = addslashes($_POST[content]);
952- while (list($key, $val) = each($_POST[responce_2])) {
953- $responce_2 .= "$val,";
954- }
955- $responce_2 = substr($responce_2,0,-1);
956- $sql = "update service_task set created=now(), status='".($_POST[status] ? 1 : 0)."', service_type='{$_POST[service_type]}', equipment_id='{$_POST[equipment_id]}', responce='{$_POST[responce]}', responce_2='{$responce_2}', creator='{$userData[id]}', date_plan='{$_POST[date]} {$_POST[time]}', hours_plan='{$_POST[hours_plan]}', content='{$_POST[content]}' where id='{$_POST[id]}'";
957- mysql_query($sql);
958- }
959- header("Location: ./?action=service_task_list&id=$_POST[id]");
960- break;
961+ case 'cancel_task':
962+ mysql_query("update service_task set status='" . ST_CANCEL . "' where id='{$_POST[id]}'");
963+ header("Location: ./?action=service_task_list&id=$_POST[id]");
964+ break;
965+ case 'move_task':
966+ mysql_query("update service_task set date_plan='{$_POST[task_new_time]}' where id='{$_POST[id]}'");
967+ header("Location: ./?action=service_task_shedule&date=$_POST[date]");
968+ break;
969+ case "update_service_task":
970+ if (checkskey()) {
971+ $_POST[content] = addslashes($_POST[content]);
972+ while (list($key, $val) = each($_POST[responce_2])) {
973+ $responce_2 .= "$val,";
974+ }
975+ $responce_2 = substr($responce_2, 0, -1);
976+ $sql = "update service_task set created=now(), status='" . ($_POST[status] ? 1 : 0) . "', service_type='{$_POST[service_type]}', equipment_id='{$_POST[equipment_id]}', responce='{$_POST[responce]}', responce_2='{$responce_2}', creator='{$userData[id]}', date_plan='{$_POST[date]} {$_POST[time]}', hours_plan='{$_POST[hours_plan]}', content='{$_POST[content]}' where id='{$_POST[id]}'";
977+ mysql_query($sql);
978+ }
979+ header("Location: ./?action=service_task_list&id=$_POST[id]");
980+ break;
981
982- case 'del_task':
983- if (checkskey($_POST[id])) {
984- mysql_query("delete from service_task where id='{$_POST[id]}'");
985- }
986- header("Location: ./?action=service_task_list&id=$_POST[id]");
987- break;
988+ case 'del_task':
989+ if (checkskey($_POST[id])) {
990+ mysql_query("delete from service_task where id='{$_POST[id]}'");
991+ }
992+ header("Location: ./?action=service_task_list&id=$_POST[id]");
993+ break;
994
995- case 'accept_service_task':
996- $autoclose = implode(',', array_keys($_POST[autoclose]));
997- if (checkskey()) {
998- mysql_query("update service_task set accept_date=now(), accept_grade='{$_POST[accept_grade]}', accept_comment='{$_POST[accept_comment]}', acceptor='{$userData[id]}' where id={$_POST[id]}");
999+ case 'accept_service_task':
1000+ $autoclose = implode(',', array_keys($_POST[autoclose]));
1001+ if (checkskey()) {
1002+ mysql_query("update service_task set accept_date=now(), accept_grade='{$_POST[accept_grade]}', accept_comment='{$_POST[accept_comment]}', acceptor='{$userData[id]}' where id={$_POST[id]}");
1003
1004- // $res = mysql_query("select id from service_task where responce_2='' and accept_date is NULL and request_id in (select request_id from service_task where id={$_POST[id]}) ");
1005- // if ($res and mysql_num_rows($res)>0) {
1006- // while ($r = mysql_fetch_assoc($res)) {
1007- // $ids .= $r[id].",";
1008- // }
1009- // $ids = substr($ids, 0, -1);
1010- // mysql_query("update service_task set accept_date=now(), accept_grade='{$_POST[accept_grade]}', accept_comment='{$_POST[accept_comment]}', acceptor='{$userData[id]}' where id in ($ids)");
1011- // }
1012- mysql_query("update service_task set finished=now(), finisher='{$userData[id]}', accept_date=now(), accept_grade='{$_POST[accept_grade]}', accept_comment='{$_POST[accept_comment]}', acceptor='{$userData[id]}' where id in ($autoclose)");
1013- }
1014- header("Location: ./?action=service_task_list&id=$_POST[id]");
1015- break;
1016+ // $res = mysql_query("select id from service_task where responce_2='' and accept_date is NULL and request_id in (select request_id from service_task where id={$_POST[id]}) ");
1017+ // if ($res and mysql_num_rows($res)>0) {
1018+ // while ($r = mysql_fetch_assoc($res)) {
1019+ // $ids .= $r[id].",";
1020+ // }
1021+ // $ids = substr($ids, 0, -1);
1022+ // mysql_query("update service_task set accept_date=now(), accept_grade='{$_POST[accept_grade]}', accept_comment='{$_POST[accept_comment]}', acceptor='{$userData[id]}' where id in ($ids)");
1023+ // }
1024+ mysql_query("update service_task set finished=now(), finisher='{$userData[id]}', accept_date=now(), accept_grade='{$_POST[accept_grade]}', accept_comment='{$_POST[accept_comment]}', acceptor='{$userData[id]}' where id in ($autoclose)");
1025+ }
1026+ header("Location: ./?action=service_task_list&id=$_POST[id]");
1027+ break;
1028
1029- case "decline_service_request":
1030- mysql_query("update service_request set status=10 where id='{$_POST[id]}'");
1031- header("Location: ./?action=service_request_list&id=$_POST[id]");
1032- break;
1033- case "update_notifications":
1034- if ($_POST[message]) {
1035- mysql_query("replace into notifications_button_message (status, message, n_type) values ('{$_POST[status]}', '{$_POST[message]}', '{$_POST[n_type]}') ");
1036- mysql_query("delete from notifications_button_user where status='{$_POST[status]}' and n_type='{$_POST[n_type]}'");
1037+ case "decline_service_request":
1038+ mysql_query("update service_request set status=10 where id='{$_POST[id]}'");
1039+ header("Location: ./?action=service_request_list&id=$_POST[id]");
1040+ break;
1041+ case "update_notifications":
1042+ if ($_POST[message]) {
1043+ mysql_query("replace into notifications_button_message (status, message, n_type) values ('{$_POST[status]}', '{$_POST[message]}', '{$_POST[n_type]}') ");
1044+ mysql_query("delete from notifications_button_user where status='{$_POST[status]}' and n_type='{$_POST[n_type]}'");
1045
1046- while (list($key, $val) = each($_POST[users])) {
1047- echo "insert notifications_button_user (status, user, n_type) values ('{$_POST[status]}', '{$val}', '{$_POST[n_type]}')";
1048- mysql_query("insert notifications_button_user (status, user, n_type) values ('{$_POST[status]}', '{$val}', '{$_POST[n_type]}')");
1049- }
1050- } else {
1051- mysql_query("delete from notifications_button_message where status='{$_POST[status]}' and n_type='{$_POST[n_type]}'");
1052- mysql_query("delete from notifications_button_user where status='{$_POST[status]}' and n_type='{$_POST[n_type]}'");
1053- }
1054- header("Location: ./?action=notifications&status=$_POST[status]&n_type=$_POST[n_type]");
1055- break;
1056- case "del_device": // удаление устройства
1057- if (checkskey($_POST[id])) {
1058- seveLog("devices");
1059- $device_id = (int)$_POST['id'];
1060- $Devices = new Devices();
1061- $Devices->delete(array('id'=>$device_id));
1062- /*
1063- $Devices_read = $Devices->read(array('id'=>$device_id));
1064- //var_dump($Devices_read);die;
1065- if (!empty($Devices_read)) {
1066- $device_serial = $Devices_read[0]['serialNumber'];
1067- $DeviceSettingsStorage = new DeviceSettingsStorage();
1068- $DeviceSettingsStorage->delete(array('device_id'=>$device_serial));
1069- $DeviceSettingsCurrent = new DeviceSettingsCurrent();
1070- $DeviceSettingsCurrent->delete(array('device_id'=>$device_serial));
1071+ while (list($key, $val) = each($_POST[users])) {
1072+ echo "insert notifications_button_user (status, user, n_type) values ('{$_POST[status]}', '{$val}', '{$_POST[n_type]}')";
1073+ mysql_query("insert notifications_button_user (status, user, n_type) values ('{$_POST[status]}', '{$val}', '{$_POST[n_type]}')");
1074+ }
1075+ } else {
1076+ mysql_query("delete from notifications_button_message where status='{$_POST[status]}' and n_type='{$_POST[n_type]}'");
1077+ mysql_query("delete from notifications_button_user where status='{$_POST[status]}' and n_type='{$_POST[n_type]}'");
1078+ }
1079+ header("Location: ./?action=notifications&status=$_POST[status]&n_type=$_POST[n_type]");
1080+ break;
1081+ case "del_device": // удаление устройства
1082+ if (checkskey($_POST[id])) {
1083+ seveLog("devices");
1084+ $device_id = (int)$_POST['id'];
1085+ $Devices = new Devices();
1086+ $Devices->delete(array('id' => $device_id));
1087+ /*
1088+ $Devices_read = $Devices->read(array('id'=>$device_id));
1089+ //var_dump($Devices_read);die;
1090+ if (!empty($Devices_read)) {
1091+ $device_serial = $Devices_read[0]['serialNumber'];
1092+ $DeviceSettingsStorage = new DeviceSettingsStorage();
1093+ $DeviceSettingsStorage->delete(array('device_id'=>$device_serial));
1094+ $DeviceSettingsCurrent = new DeviceSettingsCurrent();
1095+ $DeviceSettingsCurrent->delete(array('device_id'=>$device_serial));
1096+ }
1097+
1098+ //mysql_query("delete from devices where id='{$_POST[id]}'");
1099+ $sql = 'delete from devices where id='.$device_id;
1100+ mysql_query($sql);
1101+ $res = mysql_query("select * from sensors where device_id='$_POST[id]' order by channel");
1102+ if ($res and mysql_num_rows($res)>0) {
1103+ while ($r = mysql_fetch_assoc($res)) {
1104+ mysql_query("delete from equipment_sensors where sensor_id='{$r[id]}'");
1105 }
1106+ }
1107+ //mysql_query("delete from sensors where device_id='{$_POST[id]}'");
1108+ $sql = 'delete from sensors where device_id='.$device_id;
1109+ mysql_query($sql);
1110+ */
1111+ }
1112+ header("Location: ./?action=devices");
1113+ break;
1114+ case "del_arm": // удаление устройства
1115+ if (checkskey($_POST[id])) {
1116+ seveLog("arm");
1117+ mysql_query("delete from arm where id='{$_POST[id]}'");
1118+ }
1119+ header("Location: ./?action=arm");
1120+ break;
1121+ case "add_arm":
1122+ if (checkskey()) {
1123+ seveLog("arm");
1124+ if ($_POST['is_virtual']) {
1125+ $v_link = md5($_POST[serial] . "" . time());
1126+ }
1127+ $sql = "insert arm (name, serial, widget1, widget2, widget3, widget4, screensaver, rele, publish, is_virtual, virtual_link, info_screen) values ('$_POST[name]', '$_POST[serial]', '$_POST[widget1]', '$_POST[widget2]', '$_POST[widget3]', '$_POST[widget4]', '" . ($_POST[screensaver] ? 1 : 0) . "', '" . ($_POST[rele] ? 1 : 0) . "', '" . ($_POST[publish] ? 1 : 0) . "', '" . ($_POST['is_virtual'] ? 1 : 0) . "', '{$v_link}', '{$_POST['info_screen']}')";
1128+ $res = mysql_query($sql);
1129+ $k = mysql_affected_rows();
1130+ if ($res and $k > -1) {
1131+ $id = mysql_insert_id();
1132+ header("Location: ./?action=arm&id={$id}&msg=1");
1133+ } else {
1134+ header("Location: ./?action=arm&msg=2");
1135+ }
1136+ } else {
1137+ header("Location: ./?action=arm");
1138+ }
1139+ break;
1140
1141- //mysql_query("delete from devices where id='{$_POST[id]}'");
1142- $sql = 'delete from devices where id='.$device_id;
1143- mysql_query($sql);
1144- $res = mysql_query("select * from sensors where device_id='$_POST[id]' order by channel");
1145- if ($res and mysql_num_rows($res)>0) {
1146- while ($r = mysql_fetch_assoc($res)) {
1147- mysql_query("delete from equipment_sensors where sensor_id='{$r[id]}'");
1148+ case "update_arm":
1149+ if (checkskey($_POST[id])) {
1150+ seveLog("arm");
1151+ $sql = "update arm set info_screen='{$_POST['info_screen']}', name='$_POST[name]', serial='$_POST[serial]', widget1='$_POST[widget1]', widget2='$_POST[widget2]', widget3='$_POST[widget3]', widget4='$_POST[widget4]', screensaver='" . ($_POST[screensaver] ? 1 : 0) . "', rele='" . ($_POST[rele] ? 1 : 0) . "', publish='" . ($_POST[publish] ? 1 : 0) . "' where id='{$_POST[id]}'";
1152+ $res = mysql_query($sql);
1153+ $k = mysql_affected_rows();
1154+ if ($res and $k > -1) {
1155+ header("Location: ./?action=arm&id={$_POST[id]}&msg=1");
1156+ } else {
1157+ header("Location: ./?action=arm&msg=2");
1158+ }
1159+ } else {
1160+ header("Location: ./?action=arm");
1161+ }
1162+ break;
1163+ case "add_device": // добавление нового устройства
1164+ if (checkskey()) {
1165+ seveLog("devices");
1166+ $sql = "INSERT devices (title, serialNumber, publish, equipment_id, discrete, is_dhcp, ip, mac, netmask, gw, time_zone, host, debug_cmd)
1167+ VALUES ('$_POST[title]', '$_POST[serialNumber]', '" . ($_POST[publish] ? 1 : 0) . "', '$_POST[newequipment]', '$_POST[newdiscrete]', '" . ($_POST[is_dhcp] ? 1 : 0) . "', '$_POST[ip]', '$_POST[mac]', '$_POST[netmask]', '$_POST[gw]', '$_POST[time_zone]', '$_POST[host]', '$_POST[debug_cmd]')";
1168+ $res = mysql_query($sql);
1169+ $k = mysql_affected_rows();
1170+ if ($res and $k > -1) {
1171+ $id = mysql_insert_id();
1172+ foreach ($_POST[sensor] as $k => $v) {
1173+ $_POST[sensor_type][$k] = ($_POST[sensor_type][$k] ? $_POST[sensor_type][$k] : 1);
1174+ $_POST[discret_ch][$k] = ($_POST[discret_ch][$k] ? $_POST[discret_ch][$k] : 15);
1175+ $_POST[channel][$k] = ($_POST[channel][$k] ? $_POST[channel][$k] : 0);
1176+ $sql = "insert sensors (title, channel, sensor_type, device_id, discrete, measure, max_value, divider) values ('$v', '" . ($_POST[channel][$k] * 1) . "', '" . ($_POST[sensor_type][$k] * 1) . "', '$id', '" . $_POST[discret_ch][$k] . "', '" . $_POST[measure][$k] . "', '" . $_POST['max_value'][$k] . "', '" . str_replace(',', '.', $_POST[divider][$k]) . "')";
1177+ echo $sql;
1178+ mysql_query($sql);
1179+ $sensor_id = mysql_insert_id();
1180+ if ($_POST['equipments'][$k]) {
1181+ // Добавляем связь с оборудованими
1182+ Sensor::bindEquipment($sensor_id, $_POST['equipments'][$k]);
1183 }
1184 }
1185- //mysql_query("delete from sensors where device_id='{$_POST[id]}'");
1186- $sql = 'delete from sensors where device_id='.$device_id;
1187- mysql_query($sql);
1188- */
1189- }
1190- header("Location: ./?action=devices");
1191- break;
1192- case "del_arm": // удаление устройства
1193- if (checkskey($_POST[id])) {
1194- seveLog("arm");
1195- mysql_query("delete from arm where id='{$_POST[id]}'");
1196- }
1197- header("Location: ./?action=arm");
1198- break;
1199- case "add_arm":
1200- if (checkskey()) {
1201- seveLog("arm");
1202- if ($_POST['is_virtual']) {
1203- $v_link = md5($_POST[serial]."".time());
1204- }
1205- $sql = "insert arm (name, serial, widget1, widget2, widget3, widget4, screensaver, rele, publish, is_virtual, virtual_link, info_screen) values ('$_POST[name]', '$_POST[serial]', '$_POST[widget1]', '$_POST[widget2]', '$_POST[widget3]', '$_POST[widget4]', '".($_POST[screensaver] ? 1 : 0)."', '".($_POST[rele] ? 1 : 0)."', '".($_POST[publish] ? 1 : 0)."', '".($_POST['is_virtual'] ? 1 : 0)."', '{$v_link}', '{$_POST['info_screen']}')";
1206- $res = mysql_query($sql);
1207- $k = mysql_affected_rows();
1208- if ($res and $k>-1) {
1209- $id = mysql_insert_id();
1210- header("Location: ./?action=arm&id={$id}&msg=1");
1211- } else {
1212- header("Location: ./?action=arm&msg=2");
1213- }
1214- } else {
1215- header("Location: ./?action=arm");
1216- }
1217- break;
1218
1219- case "update_arm":
1220- if (checkskey($_POST[id])) {
1221- seveLog("arm");
1222- $sql = "update arm set info_screen='{$_POST['info_screen']}', name='$_POST[name]', serial='$_POST[serial]', widget1='$_POST[widget1]', widget2='$_POST[widget2]', widget3='$_POST[widget3]', widget4='$_POST[widget4]', screensaver='".($_POST[screensaver] ? 1 : 0)."', rele='".($_POST[rele] ? 1 : 0)."', publish='".($_POST[publish] ? 1 : 0)."' where id='{$_POST[id]}'";
1223- $res = mysql_query($sql);
1224- $k = mysql_affected_rows();
1225- if ($res and $k>-1) {
1226- header("Location: ./?action=arm&id={$_POST[id]}&msg=1");
1227- } else {
1228- header("Location: ./?action=arm&msg=2");
1229- }
1230- } else {
1231- header("Location: ./?action=arm");
1232- }
1233- break;
1234- case "add_device": // добавление нового устройства
1235- if (checkskey()) {
1236- seveLog("devices");
1237- $sql = "INSERT devices (title, serialNumber, publish, equipment_id, discrete, is_dhcp, ip, mac, netmask, gw, time_zone, host, debug_cmd)
1238- VALUES ('$_POST[title]', '$_POST[serialNumber]', '".($_POST[publish] ? 1 : 0)."', '$_POST[newequipment]', '$_POST[newdiscrete]', '".($_POST[is_dhcp] ? 1 : 0)."', '$_POST[ip]', '$_POST[mac]', '$_POST[netmask]', '$_POST[gw]', '$_POST[time_zone]', '$_POST[host]', '$_POST[debug_cmd]')";
1239- $res = mysql_query($sql);
1240- $k = mysql_affected_rows();
1241- if ($res and $k>-1) {
1242- $id = mysql_insert_id();
1243- foreach($_POST[sensor] as $k => $v){
1244- $_POST[sensor_type][$k] = ($_POST[sensor_type][$k] ? $_POST[sensor_type][$k] : 1);
1245- $_POST[discret_ch][$k] = ($_POST[discret_ch][$k] ? $_POST[discret_ch][$k] : 15);
1246- $_POST[channel][$k] = ($_POST[channel][$k] ? $_POST[channel][$k] : 0);
1247- $sql = "insert sensors (title, channel, sensor_type, device_id, discrete, measure, max_value, divider) values ('$v', '".($_POST[channel][$k]*1)."', '".($_POST[sensor_type][$k]*1)."', '$id', '".$_POST[discret_ch][$k]."', '".$_POST[measure][$k]."', '".$_POST['max_value'][$k]."', '".str_replace(',','.',$_POST[divider][$k])."')";
1248- echo $sql;
1249- mysql_query($sql);
1250- $sensor_id = mysql_insert_id();
1251- if ($_POST['equipments'][$k]) {
1252- // Добавляем связь с оборудованими
1253- Sensor::bindEquipment($sensor_id, $_POST['equipments'][$k]);
1254- }
1255- }
1256+ // Ответственные
1257+ foreach ($_POST['users'] as $k => $v) {
1258+ // записываем новые роли
1259+ mysql_query("insert users_notify (user_id, device_id) values ('$v', '$id')");
1260+ }
1261
1262- // Ответственные
1263- foreach($_POST['users'] as $k => $v){
1264- // записываем новые роли
1265- mysql_query("insert users_notify (user_id, device_id) values ('$v', '$id')");
1266- }
1267+ // создаем таблицы для записи данных
1268+ // DESCRIBE `z_device_2`
1269+ // ALTER TABLE `z_device_1` CHANGE `data` `data` FLOAT(7,2) NOT NULL;
1270+ mysql_query("CREATE TABLE IF NOT EXISTS `z_device_$id` ( `timestamp` datetime NOT NULL, `sensor` tinyint(1) unsigned NOT NULL, `data` float(7,2) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
1271+ mysql_query("CREATE TABLE IF NOT EXISTS `z_device_$id" . "_arc` ( `timestamp` datetime NOT NULL, `sensor` tinyint(1) unsigned NOT NULL, `data` float(7,2) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
1272+ mysql_query("ALTER TABLE `z_device_$id` ADD UNIQUE KEY `timestamp` (`timestamp`,`sensor`)");
1273+ header("Location: ./?action=devices&msg=1&id=$id&$k");
1274
1275- // создаем таблицы для записи данных
1276- // DESCRIBE `z_device_2`
1277- // ALTER TABLE `z_device_1` CHANGE `data` `data` FLOAT(7,2) NOT NULL;
1278- mysql_query("CREATE TABLE IF NOT EXISTS `z_device_$id` ( `timestamp` datetime NOT NULL, `sensor` tinyint(1) unsigned NOT NULL, `data` float(7,2) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
1279- mysql_query("CREATE TABLE IF NOT EXISTS `z_device_$id"."_arc` ( `timestamp` datetime NOT NULL, `sensor` tinyint(1) unsigned NOT NULL, `data` float(7,2) NOT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8;");
1280- mysql_query("ALTER TABLE `z_device_$id` ADD UNIQUE KEY `timestamp` (`timestamp`,`sensor`)");
1281- header("Location: ./?action=devices&msg=1&id=$id&$k");
1282- } else {
1283- header("Location: ./?action=devices&msg=2&$k");
1284- }
1285- }
1286- break;
1287- case "update_device": // изменение параметров устройства
1288- if (checkskey($_POST['id'])) {
1289- seveLog("devices");
1290- $deviseData = Device::getOne($_POST['id']);
1291- $modif = $deviseData['modified']; // текущее значение "изменены ли данные"
1292- $modif_data = false; // изменены ли основные данные
1293- $modif_sensors = false; // изменены ли сенсоры
1294- $modif_data_and_sensors = false; // изменены и основные данные и сенсоры
1295+ // Начало создания записи о гарантии на устройство
1296+ /** @var ModelDBT_DeviceWarranty $deviceWarranty */
1297+ $deviceWarranty = QCGA::API3()->objectFactory('ModelDBT_DeviceWarranty');
1298+ $deviceWarranty->createForCurrentCustomer($_POST['serialNumber']);
1299+ // Конец создания записи о гарантии на устройство
1300+ } else {
1301+ header("Location: ./?action=devices&msg=2&$k");
1302+ }
1303+ }
1304+ break;
1305+ case "update_device": // изменение параметров устройства
1306+ if (checkskey($_POST['id'])) {
1307+ seveLog("devices");
1308+ $deviseData = Device::getOne($_POST['id']);
1309+ $modif = $deviseData['modified']; // текущее значение "изменены ли данные"
1310+ $modif_data = false; // изменены ли основные данные
1311+ $modif_sensors = false; // изменены ли сенсоры
1312+ $modif_data_and_sensors = false; // изменены и основные данные и сенсоры
1313
1314- // Проверяем на изменение основных данных
1315- if (
1316- $_POST['title'] != $deviseData['title'] ||
1317- $_POST['serialNumber'] != $deviseData['serialNumber'] ||
1318- $_POST['publish'] != $deviseData['publish'] ||
1319- $_POST['discrete'] != $deviseData['discrete'] ||
1320- $_POST['is_dhcp'] != $deviseData['is_dhcp'] ||
1321- $_POST['ip'] != $deviseData['ip'] ||
1322- $_POST['mac'] != $deviseData['mac'] ||
1323- $_POST['netmask'] != $deviseData['netmask'] ||
1324- $_POST['gw'] != $deviseData['gw'] ||
1325- $_POST['time_zone'] != $deviseData['time_zone'] ||
1326- $_POST['host'] != $deviseData['host'] ||
1327- $_POST['debug_cmd'] != $deviseData['debug_cmd']
1328- ) {
1329- $modif_data = true;
1330- }
1331+ // Проверяем на изменение основных данных
1332+ if (
1333+ $_POST['title'] != $deviseData['title'] ||
1334+ $_POST['serialNumber'] != $deviseData['serialNumber'] ||
1335+ $_POST['publish'] != $deviseData['publish'] ||
1336+ $_POST['discrete'] != $deviseData['discrete'] ||
1337+ $_POST['is_dhcp'] != $deviseData['is_dhcp'] ||
1338+ $_POST['ip'] != $deviseData['ip'] ||
1339+ $_POST['mac'] != $deviseData['mac'] ||
1340+ $_POST['netmask'] != $deviseData['netmask'] ||
1341+ $_POST['gw'] != $deviseData['gw'] ||
1342+ $_POST['time_zone'] != $deviseData['time_zone'] ||
1343+ $_POST['host'] != $deviseData['host'] ||
1344+ $_POST['debug_cmd'] != $deviseData['debug_cmd']
1345+ ) {
1346+ $modif_data = true;
1347+ }
1348
1349- $sql = "UPDATE devices
1350+ $sql = "UPDATE devices
1351 SET
1352 modified='$modif',
1353 discrete='$_POST[discrete]',
1354 title='$_POST[title]',
1355 serialNumber='$_POST[serialNumber]',
1356- publish='".($_POST[publish] ? 1 : 0)."',
1357- is_dhcp='".($_POST[is_dhcp] ? 1 : 0)."',
1358+ publish='" . ($_POST[publish] ? 1 : 0) . "',
1359+ is_dhcp='" . ($_POST[is_dhcp] ? 1 : 0) . "',
1360 ip = '$_POST[ip]',
1361 mac = '$_POST[mac]',
1362 netmask = '$_POST[netmask]',
1363@@ -701,916 +708,925 @@ switch ($_POST[action]) {
1364 host = '$_POST[host]',
1365 debug_cmd = '$_POST[debug_cmd]'
1366 WHERE id='$_POST[id]'";
1367- $res = mysql_query($sql);
1368- $k = mysql_affected_rows();
1369- if ($res and $k>-1) {
1370- mysql_query("update devices set equipment_id=0 where equipment_id='$_POST[equipment]' and id<>'$_POST[id]'");
1371- }
1372- $mdf = 0;
1373- foreach($_POST['sensor'] as $k => $v) {
1374- $sensorId = $k;
1375- $sensorName = trim($v);
1376- $sensorChannel = (int) trim($_POST['channel'][$sensorId]);
1377- $hasSensorData = ($sensorName && $sensorChannel);
1378- $_POST[sensor_type][$k] = ($_POST[sensor_type][$k] ? $_POST[sensor_type][$k] : 1);
1379- $_POST[discret_ch][$k] = ($_POST[discret_ch][$k] ? $_POST[discret_ch][$k] : 15);
1380- $_POST[channel][$k] = ($_POST[channel][$k] ? $_POST[channel][$k] : 0);
1381+ $res = mysql_query($sql);
1382+ $k = mysql_affected_rows();
1383+ if ($res and $k > -1) {
1384+ mysql_query("update devices set equipment_id=0 where equipment_id='$_POST[equipment]' and id<>'$_POST[id]'");
1385+ }
1386+ $mdf = 0;
1387+ foreach ($_POST['sensor'] as $k => $v) {
1388+ $sensorId = $k;
1389+ $sensorName = trim($v);
1390+ $sensorChannel = (int)trim($_POST['channel'][$sensorId]);
1391+ $hasSensorData = ($sensorName && $sensorChannel);
1392+ $_POST[sensor_type][$k] = ($_POST[sensor_type][$k] ? $_POST[sensor_type][$k] : 1);
1393+ $_POST[discret_ch][$k] = ($_POST[discret_ch][$k] ? $_POST[discret_ch][$k] : 15);
1394+ $_POST[channel][$k] = ($_POST[channel][$k] ? $_POST[channel][$k] : 0);
1395
1396- if ($sensorId > 0) {
1397+ if ($sensorId > 0) {
1398
1399- // изменяем данные существующих датчиков
1400- $sql = "update sensors set divider='".str_replace(',','.',$_POST[divider][$k])."', measure='".$_POST[measure][$k]."', discrete='".$_POST[discret_ch][$k]."', title='$v', channel='".$_POST[channel][$k]."', sensor_type='".$_POST[sensor_type][$k]."', max_value='".$_POST['max_value'][$k]."' where id='$k'";
1401- //echo $sql;
1402- mysql_query($sql);
1403- if (mysql_affected_rows()) {
1404- /*if ($_POST[sensor_type][$k] == $releTypeID) {
1405- $modif = $modif | MODIFIED_RELE; // изменилось значение реле
1406- } else {
1407- $modif = $modif | MODIFIED_CHANNELS; // изменилось значение дискретности опроса оборудования дитчиком
1408- }*/
1409- $mdf = 1;
1410- $modif_sensors = true;
1411- }
1412- } else if ($hasSensorData) {
1413- // добавляем новые датчики, если они есть
1414- $sql = "insert sensors (title, channel, sensor_type, device_id, equipment_id, discrete, measure, divider, max_value)
1415- values ('$sensorName', '$sensorChannel', '".($_POST[sensor_type][$k]*1)."', '$_POST[id]', '".$_POST['equipments'][ $k ][0]."', '".$_POST[discret_ch][$k]."', '".$_POST[measure][$k]."', '".$_POST[divider][$k]."', '".$_POST['max_value'][$k]."')";
1416- // print_r($_POST);
1417- // echo $sql;
1418- // exit;
1419- mysql_query($sql);
1420- /*if ($_POST[sensor_type][$k] == $releTypeID) {
1421- $modif = $modif | MODIFIED_RELE;
1422- } else {
1423- $modif = $modif | MODIFIED_CHANNELS;
1424- }*/
1425- $mdf = 2;
1426- $modif_sensors = true;
1427- $sensorId = mysql_insert_id(); // ID добавленного датчика
1428- }
1429+ // изменяем данные существующих датчиков
1430+ $sql = "update sensors set divider='" . str_replace(',', '.', $_POST[divider][$k]) . "', measure='" . $_POST[measure][$k] . "', discrete='" . $_POST[discret_ch][$k] . "', title='$v', channel='" . $_POST[channel][$k] . "', sensor_type='" . $_POST[sensor_type][$k] . "', max_value='" . $_POST['max_value'][$k] . "' where id='$k'";
1431+ //echo $sql;
1432+ mysql_query($sql);
1433+ if (mysql_affected_rows()) {
1434+ /*if ($_POST[sensor_type][$k] == $releTypeID) {
1435+ $modif = $modif | MODIFIED_RELE; // изменилось значение реле
1436+ } else {
1437+ $modif = $modif | MODIFIED_CHANNELS; // изменилось значение дискретности опроса оборудования дитчиком
1438+ }*/
1439+ $mdf = 1;
1440+ $modif_sensors = true;
1441+ }
1442+ } else if ($hasSensorData) {
1443+ // добавляем новые датчики, если они есть
1444+ $sql = "insert sensors (title, channel, sensor_type, device_id, equipment_id, discrete, measure, divider, max_value)
1445+ values ('$sensorName', '$sensorChannel', '" . ($_POST[sensor_type][$k] * 1) . "', '$_POST[id]', '" . $_POST['equipments'][$k][0] . "', '" . $_POST[discret_ch][$k] . "', '" . $_POST[measure][$k] . "', '" . $_POST[divider][$k] . "', '" . $_POST['max_value'][$k] . "')";
1446+ // print_r($_POST);
1447+ // echo $sql;
1448+ // exit;
1449+ mysql_query($sql);
1450+ /*if ($_POST[sensor_type][$k] == $releTypeID) {
1451+ $modif = $modif | MODIFIED_RELE;
1452+ } else {
1453+ $modif = $modif | MODIFIED_CHANNELS;
1454+ }*/
1455+ $mdf = 2;
1456+ $modif_sensors = true;
1457+ $sensorId = mysql_insert_id(); // ID добавленного датчика
1458+ }
1459
1460- if (!$sensorId) {
1461- continue;
1462- }
1463+ if (!$sensorId) {
1464+ continue;
1465+ }
1466
1467- if ($hasSensorData) {
1468- // Добавляем связь с оборудованими
1469- Sensor::bindEquipment($sensorId, $_POST['equipments'][$k]);
1470- } else {
1471- Sensor::deleteOne($sensorId); // удаляем не нужные датчики
1472- Sensor::unbindEquipment($sensorId); // удаляем связь с оборудованиями
1473- $modif_sensors = true;
1474- }
1475-}
1476-// Cтавим признаки измененных данных
1477-if (!$modif && ($modif_data || $modif_sensors)) {
1478- if ($modif_data && $modif_sensors) {
1479- $modif = MODIFIED_DEVICE_AND_SENSORS_DATA;
1480- } else {
1481- if ($modif_data) {
1482- $modif = MODIFIED_DEVICE_DATA;
1483- } else {
1484- $modif = MODIFIED_SENSORS_DATA;
1485- }
1486- }
1487- mysql_query("update devices set modified='$modif' where id='$_POST[id]'");
1488-}
1489+ if ($hasSensorData) {
1490+ // Добавляем связь с оборудованими
1491+ Sensor::bindEquipment($sensorId, $_POST['equipments'][$k]);
1492+ } else {
1493+ Sensor::deleteOne($sensorId); // удаляем не нужные датчики
1494+ Sensor::unbindEquipment($sensorId); // удаляем связь с оборудованиями
1495+ $modif_sensors = true;
1496+ }
1497+ }
1498+ // Cтавим признаки измененных данных
1499+ if (!$modif && ($modif_data || $modif_sensors)) {
1500+ if ($modif_data && $modif_sensors) {
1501+ $modif = MODIFIED_DEVICE_AND_SENSORS_DATA;
1502+ } else {
1503+ if ($modif_data) {
1504+ $modif = MODIFIED_DEVICE_DATA;
1505+ } else {
1506+ $modif = MODIFIED_SENSORS_DATA;
1507+ }
1508+ }
1509+ mysql_query("update devices set modified='$modif' where id='$_POST[id]'");
1510+ }
1511
1512-// Ответственные
1513-mysql_query("delete from users_notify where device_id='$_POST[id]'");
1514-foreach($_POST['users'] as $k => $v){
1515- // записываем новые роли
1516- mysql_query("insert users_notify (user_id, device_id) values ('$v', '$_POST[id]')");
1517-}
1518-//exit;
1519-header("Location: ./?action=devices&msg=1&id=$_POST[id]&".($mdf));
1520-}
1521-break;
1522-case "upload_plan": // загрузка картинки с планом помещения
1523-move_uploaded_file($_FILES["myfile"]["tmp_name"],"plan/{$customer['planpath']}/".$_POST[upid].".png");
1524-header("Location: ./?action=departments&msg=1&id=$_POST[id]");
1525-break;
1526-case "update_department": // изменение данных опомещении
1527-if (checkskey($_POST[id])) {
1528- $res = mysql_query("update departments set camera='$_POST[camera]', name='$_POST[name]', publish='".($_POST[publish] ? 1 : 0)."' where id='$_POST[id]'");
1529- $k = mysql_affected_rows();
1530- if ($res and $k>-1) {
1531- header("Location: ./?action=departments&msg=1&id=$_POST[id]");
1532- } else {
1533- header("Location: ./?action=departments&msg=2&id=$_POST[id]");
1534- }
1535-}
1536-break;
1537-case "add_department": // добавление нового помещения
1538-if (checkskey('')) {
1539- $res = mysql_query("insert departments (name, publish, camera) values ('$_POST[name]', '".($_POST[publish] ? 1 : 0)."', '$_POST[camera]')");
1540- $k = mysql_affected_rows();
1541- if ($res and $k>-1) {
1542- $id = mysql_insert_id();
1543- header("Location: ./?action=departments&msg=1&id=$id&$k");
1544- } else {
1545- header("Location: ./?action=departments&msg=2&$k");
1546- }
1547-}
1548-break;
1549-case "update_user": // изменение данных пользователя
1550-if (checkskey($_POST[id])) {
1551- seveLog("users");
1552- $res = mysql_query("update users set ".($_POST[password] ? " passwd='".md5($_POST[password])."', " : "")." telegram_id='$_POST[telegram_id]', name='$_POST[name]', notification_link='$_POST[notification_link]', fname='$_POST[fname]', email='$_POST[email]', publish='".($_POST[publish] ? 1 : 0)."' where id='$_POST[id]'");
1553- $k = mysql_affected_rows();
1554- if ($res and $k>-1) {
1555- mysql_query("delete from user_role where userID='$_POST[id]'");
1556- foreach($_POST[role] as $k => $v){
1557- mysql_query("insert user_role (userID, role) values ('$_POST[id]', '$v')");
1558- }
1559- mysql_query("delete from users_email_reports where user_id='$_POST[id]'");
1560- foreach($_POST[users_email_reports] as $k => $v){
1561- mysql_query("insert users_email_reports (user_id, report_slug) values ('$_POST[id]', '$v')");
1562- }
1563- header("Location: ./?action=users&msg=1&id=$_POST[id]");
1564- } else {
1565- header("Location: ./?action=users&msg=2&id=$_POST[id]");
1566- }
1567-}
1568-break;
1569-case "add_user": // добавление нового пользователя
1570-if (checkskey('')) {
1571- seveLog("users");
1572- $res = mysql_query("insert users (name, fname, email, publish, passwd, notification_link, telegram_id) values ('$_POST[name]', '$_POST[fname]', '$_POST[email]', '".($_POST[publish] ? 1 : 0)."', '".md5($_POST[password])."', '$_POST[notification_link]', '$_POST[telegram_id]')");
1573- $k = mysql_affected_rows();
1574- if ($res and $k>-1) {
1575- $id = mysql_insert_id();
1576- foreach($_POST[role] as $k => $v){
1577- mysql_query("insert user_role (userID, role) values ('$id', '$v')");
1578- }
1579- foreach($_POST[users_email_reports] as $k => $v){
1580- mysql_query("insert users_email_reports (user_id, report_slug) values ('$id', '$v')");
1581- }
1582- header("Location: ./?action=users&msg=1&id=$id&$k");
1583- } else {
1584- header("Location: ./?action=users&msg=2&$k");
1585- }
1586-}
1587-break;
1588-case "del_user":
1589-if (checkskey($_POST[id])) {
1590- seveLog("users");
1591- mysql_query("delete from users WHERE id='$_POST[id]'");
1592- header("Location: ./?action=users");
1593-}
1594-break;
1595-case "update_employee": // изменение данных сотрудника
1596-$msg = 1;
1597-$res = mysql_query("select * from employees where pin='{$_POST[pin]}'");
1598-if ($_POST[pin] and $res and mysql_num_rows($res)>0) {
1599- while ($r = mysql_fetch_assoc($res)) {
1600- $msg = 3;
1601- }
1602-}
1603-if (checkskey($_POST['id'])) {
1604- seveLog("employees");
1605- $res = mysql_query("UPDATE employees
1606+ // Начало создания записи о гарантии на устройство
1607+ // Когда серийный номер устройства изменяется, предполагается, что это теперь другое устройство.
1608+ if ($_POST['serialNumber'] !== $deviseData['serialNumber']) {
1609+ /** @var ModelDBT_DeviceWarranty $deviceWarranty */
1610+ $deviceWarranty = QCGA::API3()->objectFactory('ModelDBT_DeviceWarranty');
1611+ $deviceWarranty->createForCurrentCustomer($_POST['serialNumber']);
1612+ }
1613+ // Конец создания записи о гарантии на устройство
1614+
1615+ // Ответственные
1616+ mysql_query("delete from users_notify where device_id='$_POST[id]'");
1617+ foreach ($_POST['users'] as $k => $v) {
1618+ // записываем новые роли
1619+ mysql_query("insert users_notify (user_id, device_id) values ('$v', '$_POST[id]')");
1620+ }
1621+ //exit;
1622+ header("Location: ./?action=devices&msg=1&id=$_POST[id]&" . ($mdf));
1623+ }
1624+ break;
1625+ case "upload_plan": // загрузка картинки с планом помещения
1626+ move_uploaded_file($_FILES["myfile"]["tmp_name"], "plan/{$customer['planpath']}/" . $_POST[upid] . ".png");
1627+ header("Location: ./?action=departments&msg=1&id=$_POST[id]");
1628+ break;
1629+ case "update_department": // изменение данных опомещении
1630+ if (checkskey($_POST[id])) {
1631+ $res = mysql_query("update departments set camera='$_POST[camera]', name='$_POST[name]', publish='" . ($_POST[publish] ? 1 : 0) . "' where id='$_POST[id]'");
1632+ $k = mysql_affected_rows();
1633+ if ($res and $k > -1) {
1634+ header("Location: ./?action=departments&msg=1&id=$_POST[id]");
1635+ } else {
1636+ header("Location: ./?action=departments&msg=2&id=$_POST[id]");
1637+ }
1638+ }
1639+ break;
1640+ case "add_department": // добавление нового помещения
1641+ if (checkskey('')) {
1642+ $res = mysql_query("insert departments (name, publish, camera) values ('$_POST[name]', '" . ($_POST[publish] ? 1 : 0) . "', '$_POST[camera]')");
1643+ $k = mysql_affected_rows();
1644+ if ($res and $k > -1) {
1645+ $id = mysql_insert_id();
1646+ header("Location: ./?action=departments&msg=1&id=$id&$k");
1647+ } else {
1648+ header("Location: ./?action=departments&msg=2&$k");
1649+ }
1650+ }
1651+ break;
1652+ case "update_user": // изменение данных пользователя
1653+ if (checkskey($_POST[id])) {
1654+ seveLog("users");
1655+ $res = mysql_query("update users set " . ($_POST[password] ? " passwd='" . md5($_POST[password]) . "', " : "") . " telegram_id='$_POST[telegram_id]', name='$_POST[name]', notification_link='$_POST[notification_link]', fname='$_POST[fname]', email='$_POST[email]', publish='" . ($_POST[publish] ? 1 : 0) . "' where id='$_POST[id]'");
1656+ $k = mysql_affected_rows();
1657+ if ($res and $k > -1) {
1658+ mysql_query("delete from user_role where userID='$_POST[id]'");
1659+ foreach ($_POST[role] as $k => $v) {
1660+ mysql_query("insert user_role (userID, role) values ('$_POST[id]', '$v')");
1661+ }
1662+ mysql_query("delete from users_email_reports where user_id='$_POST[id]'");
1663+ foreach ($_POST[users_email_reports] as $k => $v) {
1664+ mysql_query("insert users_email_reports (user_id, report_slug) values ('$_POST[id]', '$v')");
1665+ }
1666+ header("Location: ./?action=users&msg=1&id=$_POST[id]");
1667+ } else {
1668+ header("Location: ./?action=users&msg=2&id=$_POST[id]");
1669+ }
1670+ }
1671+ break;
1672+ case "add_user": // добавление нового пользователя
1673+ if (checkskey('')) {
1674+ seveLog("users");
1675+ $res = mysql_query("insert users (name, fname, email, publish, passwd, notification_link, telegram_id) values ('$_POST[name]', '$_POST[fname]', '$_POST[email]', '" . ($_POST[publish] ? 1 : 0) . "', '" . md5($_POST[password]) . "', '$_POST[notification_link]', '$_POST[telegram_id]')");
1676+ $k = mysql_affected_rows();
1677+ if ($res and $k > -1) {
1678+ $id = mysql_insert_id();
1679+ foreach ($_POST[role] as $k => $v) {
1680+ mysql_query("insert user_role (userID, role) values ('$id', '$v')");
1681+ }
1682+ foreach ($_POST[users_email_reports] as $k => $v) {
1683+ mysql_query("insert users_email_reports (user_id, report_slug) values ('$id', '$v')");
1684+ }
1685+ header("Location: ./?action=users&msg=1&id=$id&$k");
1686+ } else {
1687+ header("Location: ./?action=users&msg=2&$k");
1688+ }
1689+ }
1690+ break;
1691+ case "del_user":
1692+ if (checkskey($_POST[id])) {
1693+ seveLog("users");
1694+ mysql_query("delete from users WHERE id='$_POST[id]'");
1695+ header("Location: ./?action=users");
1696+ }
1697+ break;
1698+ case "update_employee": // изменение данных сотрудника
1699+ $msg = 1;
1700+ $res = mysql_query("select * from employees where pin='{$_POST[pin]}'");
1701+ if ($_POST[pin] and $res and mysql_num_rows($res) > 0) {
1702+ while ($r = mysql_fetch_assoc($res)) {
1703+ $msg = 3;
1704+ }
1705+ }
1706+ if (checkskey($_POST['id'])) {
1707+ seveLog("employees");
1708+ $res = mysql_query("UPDATE employees
1709 SET first_name='$_POST[first_name]',
1710 last_name='$_POST[last_name]',
1711- RFID='$_POST[rfid]',".
1712- ($msg == 3 ? "": " pin='$_POST[pin]', ")."
1713+ RFID='$_POST[rfid]'," .
1714+ ($msg == 3 ? "" : " pin='$_POST[pin]', ") . "
1715 phone='$_POST[phone]',
1716- publish='".($_POST[publish] ? 1 : 0)."'
1717+ publish='" . ($_POST[publish] ? 1 : 0) . "'
1718 WHERE id='$_POST[id]'");
1719- $k = mysql_affected_rows();
1720- if ($res and $k>-1) {
1721- // обнуляем роли
1722- mysql_query("delete from employees_roles_bind where id='$_POST[id]'");
1723- foreach($_POST[role] as $k => $v){
1724- // записываем новые роли
1725- mysql_query("insert employees_roles_bind (id, role) values ('$_POST[id]', '$v')");
1726- }
1727- // обнуляем группы оборудования
1728- mysql_query("delete from employees_equipment_group_bind where id='$_POST[id]'");
1729- foreach($_POST[equipments] as $k => $v){
1730- // записываем новые роли
1731- mysql_query("insert employees_equipment_group_bind (id, equipment_group) values ('$_POST[id]', '$v')");
1732- }
1733- header("Location: ./?action=employees&msg={$msg}&id=$_POST[id]");
1734- } else {
1735- header("Location: ./?action=employees&msg=2&id=$_POST[id]");
1736- }
1737- }
1738- break;
1739- case "add_employee": // добавление нового сотрудника
1740- $msg = 1;
1741- $res = mysql_query("select * from employees where pin='{$_POST[pin]}'");
1742- if ($_POST[pin] and $res and mysql_num_rows($res)>0) {
1743- while ($r = mysql_fetch_assoc($res)) {
1744- $msg = 4;
1745- }
1746- }
1747+ $k = mysql_affected_rows();
1748+ if ($res and $k > -1) {
1749+ // обнуляем роли
1750+ mysql_query("delete from employees_roles_bind where id='$_POST[id]'");
1751+ foreach ($_POST[role] as $k => $v) {
1752+ // записываем новые роли
1753+ mysql_query("insert employees_roles_bind (id, role) values ('$_POST[id]', '$v')");
1754+ }
1755+ // обнуляем группы оборудования
1756+ mysql_query("delete from employees_equipment_group_bind where id='$_POST[id]'");
1757+ foreach ($_POST[equipments] as $k => $v) {
1758+ // записываем новые роли
1759+ mysql_query("insert employees_equipment_group_bind (id, equipment_group) values ('$_POST[id]', '$v')");
1760+ }
1761+ header("Location: ./?action=employees&msg={$msg}&id=$_POST[id]");
1762+ } else {
1763+ header("Location: ./?action=employees&msg=2&id=$_POST[id]");
1764+ }
1765+ }
1766+ break;
1767+ case "add_employee": // добавление нового сотрудника
1768+ $msg = 1;
1769+ $res = mysql_query("select * from employees where pin='{$_POST[pin]}'");
1770+ if ($_POST[pin] and $res and mysql_num_rows($res) > 0) {
1771+ while ($r = mysql_fetch_assoc($res)) {
1772+ $msg = 4;
1773+ }
1774+ }
1775
1776- if (checkskey('')) {
1777- seveLog("employees");
1778- $res = mysql_query("INSERT INTO employees (first_name, last_name, RFID, ".($msg == 4 ? "" : "pin, ")." publish, phone) VALUES ('$_POST[first_name]', '$_POST[last_name]', '$_POST[rfid]', ".($msg == 4 ? "" : "'$_POST[pin]', ")."'".($_POST[publish] ? 1 : 0)."', '{$_POST[phone]}')");
1779- $k = mysql_affected_rows();
1780- if ($res and $k>-1) {
1781- $id = mysql_insert_id();
1782- foreach($_POST[role] as $k => $v){
1783- // записываем роли
1784- mysql_query("insert employees_roles_bind (id, role) values ('$id', '$v')");
1785- }
1786- foreach($_POST[equipments] as $k => $v){
1787- // записываем группы оборудования
1788- mysql_query("insert employees_equipment_group_bind (id, equipment_group) values ('$id', '$v')");
1789- }
1790- header("Location: ./?action=employees&msg={$msg}&id=$id&$k");
1791- } else {
1792- header("Location: ./?action=employees&msg=2&$k");
1793- }
1794- }
1795- break;
1796- case "update_employees_roles":
1797- if (checkskey($_POST['id'])) {
1798- if (trim($_POST[name]) and checkskey($_POST[id])) {
1799- mysql_query("update employees_roles set name='$_POST[name]' where id='$_POST[id]'");
1800- echo '{"ok" : "1"}';
1801- }
1802- }
1803- break;
1804- case "add_employees_roles":
1805- if (trim($_POST[newgroupname]) and checkskey($_POST[newgroupname])) {
1806- mysql_query("insert employees_roles (name) values ('$_POST[newgroupname]')");
1807- echo '{"ok" : "1"}';
1808- }
1809- break;
1810- case "del_employees_roles":
1811- if (checkskey($_POST[id])) {
1812- mysql_query("delete from employees_roles where id='$_POST[id]'");
1813- mysql_query("delete from employees_roles_bind where role='$_POST[id]'");
1814- echo '{"ok" : "1"}';
1815- }
1816- break;
1817- case "add_production":
1818- if (checkskey('')) {
1819- seveLog("production");
1820- $_POST[consumption] = $_POST[consumption]*1;
1821- $sql = "INSERT INTO production (name, multiplicator, consumption, publish, production_group) VALUES ('$_POST[name]', '$_POST[multiplicator]', '$_POST[consumption]', '".($_POST[publish] ? 1 : 0)."', '$_POST[production_group]')";
1822- $res = mysql_query($sql);
1823- $k = mysql_affected_rows();
1824- //var_dump($k);var_dump($sql);die('aaa');
1825- if ($res and $k>-1) {
1826- $id = mysql_insert_id();
1827- foreach($_POST[material] as $k => $v){
1828- mysql_query("insert production_material_bind (id, material) values ('$id', '$v')");
1829- }
1830- foreach($_POST[instrument] as $k => $v){
1831- mysql_query("insert production_instrument_bind (id, instrument) values ('$id', '$v')");
1832- }
1833- foreach($_POST[equipments] as $k => $v){
1834- // записываем группы оборудования
1835- mysql_query("insert production_equipment_group_bind (id, equipment_group) values ('$id', '$v')");
1836- }
1837- header("Location: ./?action=production&msg=1&id=$id&$k");
1838- } else {
1839- header("Location: ./?action=production&msg=2&$k");
1840- }
1841- }
1842- break;
1843- case "del_production_group":
1844- if (checkskey($_POST[id])) {
1845- seveLog("del_production_group");
1846- mysql_query("delete from production_group_list WHERE id='$_POST[id]'");
1847- mysql_query("update production set production_group=0 where production_group='$_POST[id]'");
1848- header("Location: ./?action=production_group");
1849- }
1850- break;
1851- case "add_production_group":
1852- if (checkskey('')) {
1853- seveLog("production_group");
1854- $sql = "INSERT INTO production_group_list (name) VALUES ('{$_POST[name]}')";
1855- $res = mysql_query($sql);
1856- $k = mysql_affected_rows();
1857- if ($res and $k>-1) {
1858- $id = mysql_insert_id();
1859- header("Location: ./?action=production_group&msg=1&id=$id&$k");
1860- } else {
1861- header("Location: ./?action=production_group&msg=2&$k");
1862- }
1863- }
1864- break;
1865- case "update_production_group":
1866- if (checkskey($_POST[id])) {
1867- seveLog("production_group");
1868- $sql = "update production_group_list set name='{$_POST[name]}' where id = {$_POST[id]}";
1869- $res = mysql_query($sql);
1870- header("Location: ./?action=production_group&msg=1&id={$_POST[id]}");
1871- }
1872- break;
1873- case "update_production":
1874- if (checkskey($_POST['id'])) {
1875- seveLog("production");
1876- $res = mysql_query("UPDATE production
1877+ if (checkskey('')) {
1878+ seveLog("employees");
1879+ $res = mysql_query("INSERT INTO employees (first_name, last_name, RFID, " . ($msg == 4 ? "" : "pin, ") . " publish, phone) VALUES ('$_POST[first_name]', '$_POST[last_name]', '$_POST[rfid]', " . ($msg == 4 ? "" : "'$_POST[pin]', ") . "'" . ($_POST[publish] ? 1 : 0) . "', '{$_POST[phone]}')");
1880+ $k = mysql_affected_rows();
1881+ if ($res and $k > -1) {
1882+ $id = mysql_insert_id();
1883+ foreach ($_POST[role] as $k => $v) {
1884+ // записываем роли
1885+ mysql_query("insert employees_roles_bind (id, role) values ('$id', '$v')");
1886+ }
1887+ foreach ($_POST[equipments] as $k => $v) {
1888+ // записываем группы оборудования
1889+ mysql_query("insert employees_equipment_group_bind (id, equipment_group) values ('$id', '$v')");
1890+ }
1891+ header("Location: ./?action=employees&msg={$msg}&id=$id&$k");
1892+ } else {
1893+ header("Location: ./?action=employees&msg=2&$k");
1894+ }
1895+ }
1896+ break;
1897+ case "update_employees_roles":
1898+ if (checkskey($_POST['id'])) {
1899+ if (trim($_POST[name]) and checkskey($_POST[id])) {
1900+ mysql_query("update employees_roles set name='$_POST[name]' where id='$_POST[id]'");
1901+ echo '{"ok" : "1"}';
1902+ }
1903+ }
1904+ break;
1905+ case "add_employees_roles":
1906+ if (trim($_POST[newgroupname]) and checkskey($_POST[newgroupname])) {
1907+ mysql_query("insert employees_roles (name) values ('$_POST[newgroupname]')");
1908+ echo '{"ok" : "1"}';
1909+ }
1910+ break;
1911+ case "del_employees_roles":
1912+ if (checkskey($_POST[id])) {
1913+ mysql_query("delete from employees_roles where id='$_POST[id]'");
1914+ mysql_query("delete from employees_roles_bind where role='$_POST[id]'");
1915+ echo '{"ok" : "1"}';
1916+ }
1917+ break;
1918+ case "add_production":
1919+ if (checkskey('')) {
1920+ seveLog("production");
1921+ $_POST[consumption] = $_POST[consumption] * 1;
1922+ $sql = "INSERT INTO production (name, multiplicator, consumption, publish, production_group) VALUES ('$_POST[name]', '$_POST[multiplicator]', '$_POST[consumption]', '" . ($_POST[publish] ? 1 : 0) . "', '$_POST[production_group]')";
1923+ $res = mysql_query($sql);
1924+ $k = mysql_affected_rows();
1925+ //var_dump($k);var_dump($sql);die('aaa');
1926+ if ($res and $k > -1) {
1927+ $id = mysql_insert_id();
1928+ foreach ($_POST[material] as $k => $v) {
1929+ mysql_query("insert production_material_bind (id, material) values ('$id', '$v')");
1930+ }
1931+ foreach ($_POST[instrument] as $k => $v) {
1932+ mysql_query("insert production_instrument_bind (id, instrument) values ('$id', '$v')");
1933+ }
1934+ foreach ($_POST[equipments] as $k => $v) {
1935+ // записываем группы оборудования
1936+ mysql_query("insert production_equipment_group_bind (id, equipment_group) values ('$id', '$v')");
1937+ }
1938+ header("Location: ./?action=production&msg=1&id=$id&$k");
1939+ } else {
1940+ header("Location: ./?action=production&msg=2&$k");
1941+ }
1942+ }
1943+ break;
1944+ case "del_production_group":
1945+ if (checkskey($_POST[id])) {
1946+ seveLog("del_production_group");
1947+ mysql_query("delete from production_group_list WHERE id='$_POST[id]'");
1948+ mysql_query("update production set production_group=0 where production_group='$_POST[id]'");
1949+ header("Location: ./?action=production_group");
1950+ }
1951+ break;
1952+ case "add_production_group":
1953+ if (checkskey('')) {
1954+ seveLog("production_group");
1955+ $sql = "INSERT INTO production_group_list (name) VALUES ('{$_POST[name]}')";
1956+ $res = mysql_query($sql);
1957+ $k = mysql_affected_rows();
1958+ if ($res and $k > -1) {
1959+ $id = mysql_insert_id();
1960+ header("Location: ./?action=production_group&msg=1&id=$id&$k");
1961+ } else {
1962+ header("Location: ./?action=production_group&msg=2&$k");
1963+ }
1964+ }
1965+ break;
1966+ case "update_production_group":
1967+ if (checkskey($_POST[id])) {
1968+ seveLog("production_group");
1969+ $sql = "update production_group_list set name='{$_POST[name]}' where id = {$_POST[id]}";
1970+ $res = mysql_query($sql);
1971+ header("Location: ./?action=production_group&msg=1&id={$_POST[id]}");
1972+ }
1973+ break;
1974+ case "update_production":
1975+ if (checkskey($_POST['id'])) {
1976+ seveLog("production");
1977+ $res = mysql_query("UPDATE production
1978 SET name='$_POST[name]',
1979 multiplicator='$_POST[multiplicator]',
1980 consumption='$_POST[consumption]',
1981 production_group='$_POST[production_group]',
1982- publish='".($_POST[publish] ? 1 : 0)."'
1983+ publish='" . ($_POST[publish] ? 1 : 0) . "'
1984 WHERE id='$_POST[id]'");
1985- $k = mysql_affected_rows();
1986- if ($res and $k>-1) {
1987- mysql_query("delete from production_material_bind where id='$_POST[id]'");
1988- foreach($_POST[material] as $k => $v){
1989- mysql_query("insert production_material_bind (id, material) values ('$_POST[id]', '$v')");
1990- }
1991- mysql_query("delete from production_instrument_bind where id='$_POST[id]'");
1992- foreach($_POST[instrument] as $k => $v){
1993- mysql_query("insert production_instrument_bind (id, instrument) values ('$_POST[id]', '$v')");
1994- }
1995- // обнуляем группы оборудования
1996- mysql_query("delete from production_equipment_group_bind where id='$_POST[id]'");
1997- foreach($_POST[equipments] as $k => $v){
1998- // записываем новые роли
1999- mysql_query("insert production_equipment_group_bind (id, equipment_group) values ('$_POST[id]', '$v')");
2000- }
2001- header("Location: ./?action=production&msg=1&id=$_POST[id]");
2002- } else {
2003- header("Location: ./?action=production&msg=2&id=$_POST[id]");
2004- }
2005- }
2006- break;
2007- case "del_production":
2008- if (checkskey($_POST[id])) {
2009- seveLog("production");
2010- mysql_query("delete from production WHERE id='$_POST[id]'");
2011- header("Location: ./?action=production");
2012- }
2013- break;
2014- case "update_norma":
2015- seveLog("norma");
2016- if (checkskey($_POST['id'])) {
2017- $res = mysql_query("UPDATE norma
2018+ $k = mysql_affected_rows();
2019+ if ($res and $k > -1) {
2020+ mysql_query("delete from production_material_bind where id='$_POST[id]'");
2021+ foreach ($_POST[material] as $k => $v) {
2022+ mysql_query("insert production_material_bind (id, material) values ('$_POST[id]', '$v')");
2023+ }
2024+ mysql_query("delete from production_instrument_bind where id='$_POST[id]'");
2025+ foreach ($_POST[instrument] as $k => $v) {
2026+ mysql_query("insert production_instrument_bind (id, instrument) values ('$_POST[id]', '$v')");
2027+ }
2028+ // обнуляем группы оборудования
2029+ mysql_query("delete from production_equipment_group_bind where id='$_POST[id]'");
2030+ foreach ($_POST[equipments] as $k => $v) {
2031+ // записываем новые роли
2032+ mysql_query("insert production_equipment_group_bind (id, equipment_group) values ('$_POST[id]', '$v')");
2033+ }
2034+ header("Location: ./?action=production&msg=1&id=$_POST[id]");
2035+ } else {
2036+ header("Location: ./?action=production&msg=2&id=$_POST[id]");
2037+ }
2038+ }
2039+ break;
2040+ case "del_production":
2041+ if (checkskey($_POST[id])) {
2042+ seveLog("production");
2043+ mysql_query("delete from production WHERE id='$_POST[id]'");
2044+ header("Location: ./?action=production");
2045+ }
2046+ break;
2047+ case "update_norma":
2048+ seveLog("norma");
2049+ if (checkskey($_POST['id'])) {
2050+ $res = mysql_query("UPDATE norma
2051 SET time='$_POST[time]',
2052 percent='{$_POST['percent']}',
2053 material='$_POST[material]',
2054 instrument='$_POST[instrument]',
2055 product='$_POST[product]'
2056 WHERE id='$_POST[id]'");
2057- $k = mysql_affected_rows();
2058- if ($res and $k>-1) {
2059- header("Location: ./?action=norma&msg=1&id=$_POST[id]");
2060- } else {
2061- header("Location: ./?action=norma&msg=2&id=$_POST[id]");
2062- }
2063- }
2064- break;
2065- case "add_norma":
2066- if (checkskey($_POST['id'])) {
2067- seveLog("norma");
2068- $res = mysql_query("INSERT INTO norma (time, percent, material, instrument, product) VALUES ('$_POST[time]', '{$_POST['percent']}', '$_POST[material]', '$_POST[instrument]', '$_POST[product]')");
2069- $k = mysql_affected_rows();
2070- if ($res and $k>-1) {
2071- $id = mysql_insert_id();
2072- header("Location: ./?action=norma&msg=1&id={$id}");
2073- } else {
2074- header("Location: ./?action=norma&msg=2&id=$_POST[id]");
2075- }
2076- }
2077- break;
2078- case "del_norma":
2079- if (checkskey($_POST[id])) {
2080- seveLog("norma");
2081- mysql_query("delete from norma WHERE id='$_POST[id]'");
2082- header("Location: ./?action=norma");
2083- }
2084- break;
2085- case "add_instrument":
2086- if (checkskey('')) {
2087- seveLog("instrument");
2088- $res = mysql_query("INSERT INTO instrument (name, circles_before_to, divider, publish) VALUES ('$_POST[name]', '$_POST[circles_before_to]', '$_POST[divider]', '".($_POST[publish] ? 1 : 0)."')");
2089- $k = mysql_affected_rows();
2090- if ($res and $k>-1) {
2091- $id = mysql_insert_id();
2092- foreach($_POST[material] as $k => $v){
2093- // записываем роли
2094- mysql_query("insert instrument_material_bind (id, material) values ('$id', '$v')");
2095- }
2096- foreach($_POST[equipments] as $k => $v){
2097- // записываем группы оборудования
2098- mysql_query("insert instrument_equipment_group_bind (id, equipment_group) values ('$id', '$v')");
2099- }
2100- header("Location: ./?action=instrument&msg=1&id=$id&$k");
2101- } else {
2102- header("Location: ./?action=instrument&msg=2&$k");
2103- }
2104- }
2105- break;
2106- case "update_instrument":
2107- if (checkskey($_POST['id'])) {
2108- seveLog("instrument");
2109- $res = mysql_query("UPDATE instrument
2110+ $k = mysql_affected_rows();
2111+ if ($res and $k > -1) {
2112+ header("Location: ./?action=norma&msg=1&id=$_POST[id]");
2113+ } else {
2114+ header("Location: ./?action=norma&msg=2&id=$_POST[id]");
2115+ }
2116+ }
2117+ break;
2118+ case "add_norma":
2119+ if (checkskey($_POST['id'])) {
2120+ seveLog("norma");
2121+ $res = mysql_query("INSERT INTO norma (time, percent, material, instrument, product) VALUES ('$_POST[time]', '{$_POST['percent']}', '$_POST[material]', '$_POST[instrument]', '$_POST[product]')");
2122+ $k = mysql_affected_rows();
2123+ if ($res and $k > -1) {
2124+ $id = mysql_insert_id();
2125+ header("Location: ./?action=norma&msg=1&id={$id}");
2126+ } else {
2127+ header("Location: ./?action=norma&msg=2&id=$_POST[id]");
2128+ }
2129+ }
2130+ break;
2131+ case "del_norma":
2132+ if (checkskey($_POST[id])) {
2133+ seveLog("norma");
2134+ mysql_query("delete from norma WHERE id='$_POST[id]'");
2135+ header("Location: ./?action=norma");
2136+ }
2137+ break;
2138+ case "add_instrument":
2139+ if (checkskey('')) {
2140+ seveLog("instrument");
2141+ $res = mysql_query("INSERT INTO instrument (name, circles_before_to, divider, publish) VALUES ('$_POST[name]', '$_POST[circles_before_to]', '$_POST[divider]', '" . ($_POST[publish] ? 1 : 0) . "')");
2142+ $k = mysql_affected_rows();
2143+ if ($res and $k > -1) {
2144+ $id = mysql_insert_id();
2145+ foreach ($_POST[material] as $k => $v) {
2146+ // записываем роли
2147+ mysql_query("insert instrument_material_bind (id, material) values ('$id', '$v')");
2148+ }
2149+ foreach ($_POST[equipments] as $k => $v) {
2150+ // записываем группы оборудования
2151+ mysql_query("insert instrument_equipment_group_bind (id, equipment_group) values ('$id', '$v')");
2152+ }
2153+ header("Location: ./?action=instrument&msg=1&id=$id&$k");
2154+ } else {
2155+ header("Location: ./?action=instrument&msg=2&$k");
2156+ }
2157+ }
2158+ break;
2159+ case "update_instrument":
2160+ if (checkskey($_POST['id'])) {
2161+ seveLog("instrument");
2162+ $res = mysql_query("UPDATE instrument
2163 SET name='$_POST[name]',
2164 circles_before_to='$_POST[circles_before_to]',
2165 divider='$_POST[divider]',
2166- publish='".($_POST[publish] ? 1 : 0)."'
2167+ publish='" . ($_POST[publish] ? 1 : 0) . "'
2168 WHERE id='$_POST[id]'");
2169- $k = mysql_affected_rows();
2170- if ($res and $k>-1) {
2171- mysql_query("delete from instrument_material_bind where id='$_POST[id]'");
2172- foreach($_POST[material] as $k => $v){
2173- mysql_query("insert instrument_material_bind (id, material) values ('$_POST[id]', '$v')");
2174- }
2175- // обнуляем группы оборудования
2176- mysql_query("delete from instrument_equipment_group_bind where id='$_POST[id]'");
2177- foreach($_POST[equipments] as $k => $v){
2178- // записываем новые роли
2179- mysql_query("insert instrument_equipment_group_bind (id, equipment_group) values ('$_POST[id]', '$v')");
2180- }
2181- header("Location: ./?action=instrument&msg=1&id=$_POST[id]");
2182- } else {
2183- header("Location: ./?action=instrument&msg=2&id=$_POST[id]");
2184- }
2185- }
2186- break;
2187- case "del_instrument":
2188- if (checkskey($_POST[id])) {
2189- seveLog("instrument");
2190- mysql_query("delete from instrument WHERE id='$_POST[id]'");
2191- header("Location: ./?action=instrument");
2192- }
2193- break;
2194- case "add_reason":
2195- if (checkskey('')) {
2196- seveLog("reasons");
2197- $res = mysql_query("INSERT INTO reasons (name, color, publish, plan, autostop) VALUES ('{$_POST[name]}', '{$_POST[color]}', '".($_POST[publish] ? 1 : 0)."', '".($_POST[plan] ? 1 : 0)."', '".($_POST[autostop] ? 1 : 0)."')");
2198- $k = mysql_affected_rows();
2199- if ($res and $k>-1) {
2200- $id = mysql_insert_id();
2201- foreach($_POST[role] as $k => $v){
2202- // записываем роли
2203- mysql_query("insert reasons_roles_bind (id, role) values ('$id', '$v')");
2204- }
2205- foreach($_POST[equipments] as $k => $v){
2206- // записываем группы оборудования
2207- mysql_query("insert reasons_equipment_group_bind (id, equipment_group) values ('$id', '$v')");
2208- }
2209- header("Location: ./?action=reasons&msg=1&id=$id&$k");
2210- } else {
2211- header("Location: ./?action=reasons&msg=2&$k");
2212- }
2213- }
2214- break;
2215- case "update_reason":
2216- if (checkskey($_POST['id'])) {
2217- seveLog("reasons");
2218- $res = mysql_query("UPDATE reasons
2219+ $k = mysql_affected_rows();
2220+ if ($res and $k > -1) {
2221+ mysql_query("delete from instrument_material_bind where id='$_POST[id]'");
2222+ foreach ($_POST[material] as $k => $v) {
2223+ mysql_query("insert instrument_material_bind (id, material) values ('$_POST[id]', '$v')");
2224+ }
2225+ // обнуляем группы оборудования
2226+ mysql_query("delete from instrument_equipment_group_bind where id='$_POST[id]'");
2227+ foreach ($_POST[equipments] as $k => $v) {
2228+ // записываем новые роли
2229+ mysql_query("insert instrument_equipment_group_bind (id, equipment_group) values ('$_POST[id]', '$v')");
2230+ }
2231+ header("Location: ./?action=instrument&msg=1&id=$_POST[id]");
2232+ } else {
2233+ header("Location: ./?action=instrument&msg=2&id=$_POST[id]");
2234+ }
2235+ }
2236+ break;
2237+ case "del_instrument":
2238+ if (checkskey($_POST[id])) {
2239+ seveLog("instrument");
2240+ mysql_query("delete from instrument WHERE id='$_POST[id]'");
2241+ header("Location: ./?action=instrument");
2242+ }
2243+ break;
2244+ case "add_reason":
2245+ if (checkskey('')) {
2246+ seveLog("reasons");
2247+ $res = mysql_query("INSERT INTO reasons (name, color, publish, plan, autostop) VALUES ('{$_POST[name]}', '{$_POST[color]}', '" . ($_POST[publish] ? 1 : 0) . "', '" . ($_POST[plan] ? 1 : 0) . "', '" . ($_POST[autostop] ? 1 : 0) . "')");
2248+ $k = mysql_affected_rows();
2249+ if ($res and $k > -1) {
2250+ $id = mysql_insert_id();
2251+ foreach ($_POST[role] as $k => $v) {
2252+ // записываем роли
2253+ mysql_query("insert reasons_roles_bind (id, role) values ('$id', '$v')");
2254+ }
2255+ foreach ($_POST[equipments] as $k => $v) {
2256+ // записываем группы оборудования
2257+ mysql_query("insert reasons_equipment_group_bind (id, equipment_group) values ('$id', '$v')");
2258+ }
2259+ header("Location: ./?action=reasons&msg=1&id=$id&$k");
2260+ } else {
2261+ header("Location: ./?action=reasons&msg=2&$k");
2262+ }
2263+ }
2264+ break;
2265+ case "update_reason":
2266+ if (checkskey($_POST['id'])) {
2267+ seveLog("reasons");
2268+ $res = mysql_query("UPDATE reasons
2269 SET name='$_POST[name]',
2270 color='$_POST[color]',
2271- publish='".($_POST[publish] ? 1 : 0)."',
2272- autostop='".($_POST[autostop] ? 1 : 0)."',
2273- plan='".($_POST[plan] ? 1 : 0)."'
2274+ publish='" . ($_POST[publish] ? 1 : 0) . "',
2275+ autostop='" . ($_POST[autostop] ? 1 : 0) . "',
2276+ plan='" . ($_POST[plan] ? 1 : 0) . "'
2277 WHERE id='$_POST[id]'");
2278- $k = mysql_affected_rows();
2279- if ($res and $k>-1) {
2280- // обнуляем роли
2281- mysql_query("delete from reasons_roles_bind where id='$_POST[id]'");
2282- foreach($_POST[role] as $k => $v){
2283- // записываем новые роли
2284- mysql_query("insert reasons_roles_bind (id, role) values ('$_POST[id]', '$v')");
2285- }
2286- // обнуляем группы оборудования
2287- mysql_query("delete from reasons_equipment_group_bind where id='$_POST[id]'");
2288- foreach($_POST[equipments] as $k => $v){
2289- // записываем новые роли
2290- mysql_query("insert reasons_equipment_group_bind (id, equipment_group) values ('$_POST[id]', '$v')");
2291- }
2292- header("Location: ./?action=reasons&msg=1&id=$_POST[id]");
2293- } else {
2294- header("Location: ./?action=reasons&msg=2&id=$_POST[id]");
2295- }
2296- }
2297- break;
2298- case "del_reason":
2299- if (checkskey($_POST[id])) {
2300- seveLog("reasons");
2301- mysql_query("delete from reasons WHERE id='$_POST[id]'");
2302- header("Location: ./?action=reasons");
2303- }
2304- break;
2305- case "add_material":
2306- if (checkskey('')) {
2307- seveLog("material");
2308- $sql = "INSERT INTO material (name, publish) VALUES ('{$_POST[name]}', ".($_POST[publish] ? 1 : 0).")";
2309- $res = mysql_query($sql);
2310- $k = mysql_affected_rows();
2311- if ($res and $k>-1) {
2312- $id = mysql_insert_id();
2313- header("Location: ./?action=material&msg=1&id=$id&$k");
2314- } else {
2315- header("Location: ./?action=material&msg=2&$k");
2316- }
2317- }
2318- break;
2319- case "del_material":
2320- if (checkskey($_POST[id])) {
2321- seveLog("material");
2322- $sql = "delete from material where id = {$_POST[id]}";
2323- $res = mysql_query($sql);
2324- header("Location: ./?action=material&msg=1");
2325- }
2326- break;
2327- case "update_material":
2328- if (checkskey($_POST[id])) {
2329- seveLog("material");
2330- $sql = "update material set name='{$_POST[name]}', publish=".($_POST[publish] ? 1 : 0)." where id = {$_POST[id]}";
2331- $res = mysql_query($sql);
2332- header("Location: ./?action=material&msg=1&id={$_POST[id]}");
2333- }
2334- break;
2335- case "del_employe":
2336- if (checkskey($_POST[id])) {
2337- seveLog("employees");
2338- mysql_query("delete from employees WHERE id='$_POST[id]'");
2339- header("Location: ./?action=employees");
2340- }
2341- break;
2342- case "add_equipment": // добавление нового оборудования
2343- if (checkskey('')) {
2344- seveLog("equipment");
2345- if ($_POST[now]) {
2346- $wts = "now()";
2347- } else {
2348- $wts = ($_POST[work_time_start] ? "'{$_POST[work_time_start]}'" : "NULL");
2349- }
2350- if ($_POST[arm]) {
2351- mysql_query("update equipment_list set arm=0 where arm='{$_POST[arm]}'");
2352- }
2353- $res = mysql_query("insert equipment_list (name, arm, publish, time_tracking, camera, camera_token, can_plan, no_notifications, work_time_start, average_working_time, downtime_limit) values ('$_POST[name]', '$_POST[arm]', '".($_POST[publish] ? 1 : 0)."', '$_POST[time_tracking]', '$_POST[camera]', '$_POST[camera_token]', '$_POST[can_plan]', '".($_POST[no_notifications] ? 1 : 0)."', {$wts}, '{$_POST[average_working_time]}', '{$_POST['downtime_limit']}')");
2354- mysql_query("insert equipment_condition (timestamp, equipment, status) values ('1970-01-01 00:00:00', '{$_POST[id]}', 0)");
2355- $k = mysql_affected_rows();
2356- if ($res and $k>-1) {
2357- $id = mysql_insert_id();
2358- mysql_query("update devices set equipment_id='$id' where id='$_POST[newdevice]'");
2359- mysql_query("update devices set equipment_id=0 where equipment_id='$id' and id<>'$_POST[newdevice]'");
2360- foreach($_POST[group] as $k => $v){
2361- mysql_query("insert equipment_group (equipmentID, groupID) values ('$id', '$v')");
2362- }
2363- header("Location: ./?action=equipment&active_only={$_POST[active_only]}&msg=1&id=$id&$k");
2364- } else {
2365- header("Location: ./?action=equipment&active_only={$_POST[active_only]}&msg=2&$k");
2366- }
2367- }
2368- break;
2369- case "update_equipment":
2370- if (checkskey($_POST[id])) {
2371- seveLog("equipment");
2372- if ($_POST[now]) {
2373- $wts = "now()";
2374- } else {
2375- $wts = ($_POST[work_time_start] ? "'{$_POST[work_time_start]}'" : "NULL");
2376- }
2377- if ($_POST[arm]) {
2378- mysql_query("update equipment_list set arm=0 where arm='{$_POST[arm]}' and id != '{$_POST[id]}'");
2379- }
2380- mysql_query("delete from equipment_sensors where equipment_id='{$_POST[id]}'");
2381- foreach($_POST[connected_sensor] as $key => $val){
2382- $sql = "insert equipment_sensors (equipment_id, sensor_id, is_units_counter, is_cirquit_channel, is_counter_to_circle) values ('{$_POST[id]}', '{$key}', '".($key == $_POST['units_counter'] ? 1 : 0)."', '".($key == $_POST['cirquit_channel'] ? 1 : 0)."', '".($key == $_POST['counter_to_circle'] ? 1 : 0)."' )";
2383- //echo $sql."\n";
2384- mysql_query($sql);
2385- }
2386- //exit;
2387- $res = mysql_query("update equipment_list set arm='{$_POST[arm]}', work_time_start={$wts}, average_working_time='{$_POST[average_working_time]}', can_plan='".($_POST[can_plan] ? 1 : 0)."', no_notifications='".($_POST[no_notifications] ? 1 : 0)."', camera='$_POST[camera]', camera_token='$_POST[camera_token]', name='$_POST[name]', publish='".($_POST[publish] ? 1 : 0)."', time_tracking='$_POST[time_tracking]', downtime_limit='{$_POST['downtime_limit']}' where id='$_POST[id]'");
2388+ $k = mysql_affected_rows();
2389+ if ($res and $k > -1) {
2390+ // обнуляем роли
2391+ mysql_query("delete from reasons_roles_bind where id='$_POST[id]'");
2392+ foreach ($_POST[role] as $k => $v) {
2393+ // записываем новые роли
2394+ mysql_query("insert reasons_roles_bind (id, role) values ('$_POST[id]', '$v')");
2395+ }
2396+ // обнуляем группы оборудования
2397+ mysql_query("delete from reasons_equipment_group_bind where id='$_POST[id]'");
2398+ foreach ($_POST[equipments] as $k => $v) {
2399+ // записываем новые роли
2400+ mysql_query("insert reasons_equipment_group_bind (id, equipment_group) values ('$_POST[id]', '$v')");
2401+ }
2402+ header("Location: ./?action=reasons&msg=1&id=$_POST[id]");
2403+ } else {
2404+ header("Location: ./?action=reasons&msg=2&id=$_POST[id]");
2405+ }
2406+ }
2407+ break;
2408+ case "del_reason":
2409+ if (checkskey($_POST[id])) {
2410+ seveLog("reasons");
2411+ mysql_query("delete from reasons WHERE id='$_POST[id]'");
2412+ header("Location: ./?action=reasons");
2413+ }
2414+ break;
2415+ case "add_material":
2416+ if (checkskey('')) {
2417+ seveLog("material");
2418+ $sql = "INSERT INTO material (name, publish) VALUES ('{$_POST[name]}', " . ($_POST[publish] ? 1 : 0) . ")";
2419+ $res = mysql_query($sql);
2420+ $k = mysql_affected_rows();
2421+ if ($res and $k > -1) {
2422+ $id = mysql_insert_id();
2423+ header("Location: ./?action=material&msg=1&id=$id&$k");
2424+ } else {
2425+ header("Location: ./?action=material&msg=2&$k");
2426+ }
2427+ }
2428+ break;
2429+ case "del_material":
2430+ if (checkskey($_POST[id])) {
2431+ seveLog("material");
2432+ $sql = "delete from material where id = {$_POST[id]}";
2433+ $res = mysql_query($sql);
2434+ header("Location: ./?action=material&msg=1");
2435+ }
2436+ break;
2437+ case "update_material":
2438+ if (checkskey($_POST[id])) {
2439+ seveLog("material");
2440+ $sql = "update material set name='{$_POST[name]}', publish=" . ($_POST[publish] ? 1 : 0) . " where id = {$_POST[id]}";
2441+ $res = mysql_query($sql);
2442+ header("Location: ./?action=material&msg=1&id={$_POST[id]}");
2443+ }
2444+ break;
2445+ case "del_employe":
2446+ if (checkskey($_POST[id])) {
2447+ seveLog("employees");
2448+ mysql_query("delete from employees WHERE id='$_POST[id]'");
2449+ header("Location: ./?action=employees");
2450+ }
2451+ break;
2452+ case "add_equipment": // добавление нового оборудования
2453+ if (checkskey('')) {
2454+ seveLog("equipment");
2455+ if ($_POST[now]) {
2456+ $wts = "now()";
2457+ } else {
2458+ $wts = ($_POST[work_time_start] ? "'{$_POST[work_time_start]}'" : "NULL");
2459+ }
2460+ if ($_POST[arm]) {
2461+ mysql_query("update equipment_list set arm=0 where arm='{$_POST[arm]}'");
2462+ }
2463+ $res = mysql_query("insert equipment_list (name, arm, publish, time_tracking, camera, camera_token, can_plan, no_notifications, work_time_start, average_working_time, downtime_limit) values ('$_POST[name]', '$_POST[arm]', '" . ($_POST[publish] ? 1 : 0) . "', '$_POST[time_tracking]', '$_POST[camera]', '$_POST[camera_token]', '$_POST[can_plan]', '" . ($_POST[no_notifications] ? 1 : 0) . "', {$wts}, '{$_POST[average_working_time]}', '{$_POST['downtime_limit']}')");
2464+ mysql_query("insert equipment_condition (timestamp, equipment, status) values ('1970-01-01 00:00:00', '{$_POST[id]}', 0)");
2465+ $k = mysql_affected_rows();
2466+ if ($res and $k > -1) {
2467+ $id = mysql_insert_id();
2468+ mysql_query("update devices set equipment_id='$id' where id='$_POST[newdevice]'");
2469+ mysql_query("update devices set equipment_id=0 where equipment_id='$id' and id<>'$_POST[newdevice]'");
2470+ foreach ($_POST[group] as $k => $v) {
2471+ mysql_query("insert equipment_group (equipmentID, groupID) values ('$id', '$v')");
2472+ }
2473+ header("Location: ./?action=equipment&active_only={$_POST[active_only]}&msg=1&id=$id&$k");
2474+ } else {
2475+ header("Location: ./?action=equipment&active_only={$_POST[active_only]}&msg=2&$k");
2476+ }
2477+ }
2478+ break;
2479+ case "update_equipment":
2480+ if (checkskey($_POST[id])) {
2481+ seveLog("equipment");
2482+ if ($_POST[now]) {
2483+ $wts = "now()";
2484+ } else {
2485+ $wts = ($_POST[work_time_start] ? "'{$_POST[work_time_start]}'" : "NULL");
2486+ }
2487+ if ($_POST[arm]) {
2488+ mysql_query("update equipment_list set arm=0 where arm='{$_POST[arm]}' and id != '{$_POST[id]}'");
2489+ }
2490+ mysql_query("delete from equipment_sensors where equipment_id='{$_POST[id]}'");
2491+ foreach ($_POST[connected_sensor] as $key => $val) {
2492+ $sql = "insert equipment_sensors (equipment_id, sensor_id, is_units_counter, is_cirquit_channel, is_counter_to_circle) values ('{$_POST[id]}', '{$key}', '" . ($key == $_POST['units_counter'] ? 1 : 0) . "', '" . ($key == $_POST['cirquit_channel'] ? 1 : 0) . "', '" . ($key == $_POST['counter_to_circle'] ? 1 : 0) . "' )";
2493+ //echo $sql."\n";
2494+ mysql_query($sql);
2495+ }
2496+ //exit;
2497+ $res = mysql_query("update equipment_list set arm='{$_POST[arm]}', work_time_start={$wts}, average_working_time='{$_POST[average_working_time]}', can_plan='" . ($_POST[can_plan] ? 1 : 0) . "', no_notifications='" . ($_POST[no_notifications] ? 1 : 0) . "', camera='$_POST[camera]', camera_token='$_POST[camera_token]', name='$_POST[name]', publish='" . ($_POST[publish] ? 1 : 0) . "', time_tracking='$_POST[time_tracking]', downtime_limit='{$_POST['downtime_limit']}' where id='$_POST[id]'");
2498
2499- $k = mysql_affected_rows();
2500- if ($res and $k>-1) {
2501- mysql_query("insert equipment_condition (timestamp, equipment, status) values ('1970-01-01 00:00:00', '{$_POST[id]}', 0)");
2502- mysql_query("update devices set equipment_id='$_POST[id]' where id='$_POST[device]'");
2503- mysql_query("update devices set equipment_id=0 where equipment_id='$_POST[id]' and id<>'$_POST[device]'");
2504- mysql_query("delete from equipment_group where equipmentID='$_POST[id]'");
2505- foreach($_POST[group] as $k => $v){
2506- mysql_query("insert equipment_group (equipmentID, groupID) values ('$_POST[id]', '$v')");
2507- }
2508- header("Location: ./?action=equipment&active_only={$_POST[active_only]}&msg=1&id=$_POST[id]");
2509- } else {
2510- header("Location: ./?action=equipment&active_only={$_POST[active_only]}&msg=2&id=$_POST[id]");
2511- }
2512- }
2513- break;
2514- case "update_equipment_worked":
2515- seveLog("equipment_worked");
2516- if ($_POST[now]) {
2517- $wts = "now()";
2518- } else {
2519- $wts = ($_POST[work_time_start] ? "'{$_POST[work_time_start]}'" : "NULL");
2520- }
2521- $res = mysql_query("update equipment_list set work_time_start={$wts}, average_working_time='{$_POST[average_working_time]}' where id='$_POST[id]'");
2522- header("Location: ./?action=equipment_worked&active_only={$_POST[active_only]}&id=$_POST[id]");
2523- break;
2524- case "del_equipment":
2525- if (checkskey($_POST[id])) {
2526- mysql_query("delete from equipment_list WHERE id='$_POST[id]'");
2527- header("Location: ./?action=equipment&active_only={$_POST[active_only]}");
2528- }
2529- break;
2530- case "del_group":
2531- if (checkskey($_POST[id])) {
2532- mysql_query("delete from equipment_group_list where id='$_POST[id]'");
2533- mysql_query("delete from equipment_group where groupID='$_POST[id]'");
2534- echo '{"ok" : "1"}';
2535- }
2536- break;
2537- case "add_group":
2538- if (trim($_POST[newgroupname]) and checkskey($_POST[newgroupname])) {
2539- mysql_query("insert equipment_group_list (name) values ('$_POST[newgroupname]')");
2540- echo '{"ok" : "1"}';
2541- }
2542- break;
2543- case "update_group":
2544- if (trim($_POST[name]) and checkskey($_POST[id])) {
2545- mysql_query("update equipment_group_list set name='$_POST[name]' where id='$_POST[id]'");
2546- echo '{"ok" : "1"}';
2547- }
2548- break;
2549- case "save_equipment_coord":
2550- if (checkskey($_POST[id])) {
2551- mysql_query("update equipment_list set department='$_POST[department]', y='$_POST[y]', x='$_POST[x]', x2='$_POST[x2]', y2='$_POST[y2]' where id='$_POST[id]'");
2552- echo '{"ok" : "1"}';
2553- }
2554- break;
2555- case "del_equipment_coord":
2556- if (checkskey($_POST[id])) {
2557- mysql_query("update equipment_list set department='0', y='0', x='0', x2='0', y2='0' where id='$_POST[id]'");
2558- echo '{"ok" : "1"}';
2559- }
2560- break;
2561- case "copy_formula":
2562- if (checkskey($_POST[IDto])) {
2563- seveLog("formula");
2564- $res = mysql_query("select * from formuls where device_id='$_POST[IDfrom]'");
2565- if ($res and mysql_num_rows($res)>0) {
2566- while ($r = mysql_fetch_array($res)) {
2567- mysql_query("insert formuls (title, device_id, status_id, formula) values ('$r[title]', '$_POST[IDto]', '$r[status_id]', '$r[formula]')");
2568- }
2569- }
2570- header("Location: ./?action=formula&device_id=$_POST[IDto]");
2571- }
2572- break;
2573- case "copy_formula_energy":
2574- if (checkskey($_POST[IDto])) {
2575- seveLog("formula_energy");
2576- $res = mysql_query("select * from formuls_energy where equipment_id='$_POST[IDfrom]'");
2577- if ($res and mysql_num_rows($res)>0) {
2578- while ($r = mysql_fetch_array($res)) {
2579- mysql_query("insert formuls_energy (title, equipment_id, formula, resource_id) values ('$r[title]', '$_POST[IDto]', '$r[formula]', '$r[resource_id]')");
2580- }
2581- }
2582- header("Location: ./?action=formula_energy&equipment_id=$_POST[IDto]&resource_id=$_POST[resource_id]");
2583- }
2584- break;
2585- case "del_formula":
2586- if (checkskey($_POST[device_id])) {
2587- seveLog("formula");
2588- mysql_query("DELETE FROM formuls WHERE id='$_POST[id]' LIMIT 1");
2589- }
2590- header("Location: ./?action=formula&device_id=$_POST[device_id]");
2591- break;
2592- case "del_formula_energy":
2593- if (checkskey($_POST[device_id])) {
2594- seveLog("formula_energy");
2595- mysql_query("DELETE FROM formuls_energy WHERE id='$_POST[id]' LIMIT 1");
2596- }
2597- header("Location: ./?action=formula_energy&device_id=$_POST[device_id]");
2598- break;
2599- case "add_status":
2600- case "update_status":
2601- seveLog("statuses");
2602- include_once '../models/Status.php';
2603- $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2604- if (checkskey($id)) {
2605- $data = [
2606- 'title' => htmlspecialchars($_POST['title']),
2607- 'is_it_work' => (!empty($_POST['is_it_work'])) ? 1 : 0,
2608- 'subtitle' => (!empty($_POST['subtitle'])) ? 1 : 0,
2609- 'color' => htmlspecialchars($_POST['color']),
2610- ];
2611- if ($_POST['action'] == 'add_status') {
2612- Status::insert($data);
2613- $id = Status::insertId();
2614- }
2615- if ($_POST['action'] == 'update_status') {
2616- Status::update($data, $id);
2617- }
2618- header("Location: ./?action=statuses&id={$id}");
2619- }
2620- break;
2621- case 'change_status' :
2622- if (checkskey()) {
2623- $equipment = isset($_POST['equipment']) ? intval($_POST['equipment']) : null;
2624- $status = isset($_POST['status']) ? intval($_POST['status']) : null;
2625- if ($equipment !== null && $status !== null) {
2626- $time = date('Y-m-d H:i:s');
2627- DB::query("INSERT INTO `equipment_condition` (`timestamp`, `equipment`, `status`, `source`)
2628+ $k = mysql_affected_rows();
2629+ if ($res and $k > -1) {
2630+ mysql_query("insert equipment_condition (timestamp, equipment, status) values ('1970-01-01 00:00:00', '{$_POST[id]}', 0)");
2631+ mysql_query("update devices set equipment_id='$_POST[id]' where id='$_POST[device]'");
2632+ mysql_query("update devices set equipment_id=0 where equipment_id='$_POST[id]' and id<>'$_POST[device]'");
2633+ mysql_query("delete from equipment_group where equipmentID='$_POST[id]'");
2634+ foreach ($_POST[group] as $k => $v) {
2635+ mysql_query("insert equipment_group (equipmentID, groupID) values ('$_POST[id]', '$v')");
2636+ }
2637+ header("Location: ./?action=equipment&active_only={$_POST[active_only]}&msg=1&id=$_POST[id]");
2638+ } else {
2639+ header("Location: ./?action=equipment&active_only={$_POST[active_only]}&msg=2&id=$_POST[id]");
2640+ }
2641+ }
2642+ break;
2643+ case "update_equipment_worked":
2644+ seveLog("equipment_worked");
2645+ if ($_POST[now]) {
2646+ $wts = "now()";
2647+ } else {
2648+ $wts = ($_POST[work_time_start] ? "'{$_POST[work_time_start]}'" : "NULL");
2649+ }
2650+ $res = mysql_query("update equipment_list set work_time_start={$wts}, average_working_time='{$_POST[average_working_time]}' where id='$_POST[id]'");
2651+ header("Location: ./?action=equipment_worked&active_only={$_POST[active_only]}&id=$_POST[id]");
2652+ break;
2653+ case "del_equipment":
2654+ if (checkskey($_POST[id])) {
2655+ mysql_query("delete from equipment_list WHERE id='$_POST[id]'");
2656+ header("Location: ./?action=equipment&active_only={$_POST[active_only]}");
2657+ }
2658+ break;
2659+ case "del_group":
2660+ if (checkskey($_POST[id])) {
2661+ mysql_query("delete from equipment_group_list where id='$_POST[id]'");
2662+ mysql_query("delete from equipment_group where groupID='$_POST[id]'");
2663+ echo '{"ok" : "1"}';
2664+ }
2665+ break;
2666+ case "add_group":
2667+ if (trim($_POST[newgroupname]) and checkskey($_POST[newgroupname])) {
2668+ mysql_query("insert equipment_group_list (name) values ('$_POST[newgroupname]')");
2669+ echo '{"ok" : "1"}';
2670+ }
2671+ break;
2672+ case "update_group":
2673+ if (trim($_POST[name]) and checkskey($_POST[id])) {
2674+ mysql_query("update equipment_group_list set name='$_POST[name]' where id='$_POST[id]'");
2675+ echo '{"ok" : "1"}';
2676+ }
2677+ break;
2678+ case "save_equipment_coord":
2679+ if (checkskey($_POST[id])) {
2680+ mysql_query("update equipment_list set department='$_POST[department]', y='$_POST[y]', x='$_POST[x]', x2='$_POST[x2]', y2='$_POST[y2]' where id='$_POST[id]'");
2681+ echo '{"ok" : "1"}';
2682+ }
2683+ break;
2684+ case "del_equipment_coord":
2685+ if (checkskey($_POST[id])) {
2686+ mysql_query("update equipment_list set department='0', y='0', x='0', x2='0', y2='0' where id='$_POST[id]'");
2687+ echo '{"ok" : "1"}';
2688+ }
2689+ break;
2690+ case "copy_formula":
2691+ if (checkskey($_POST[IDto])) {
2692+ seveLog("formula");
2693+ $res = mysql_query("select * from formuls where device_id='$_POST[IDfrom]'");
2694+ if ($res and mysql_num_rows($res) > 0) {
2695+ while ($r = mysql_fetch_array($res)) {
2696+ mysql_query("insert formuls (title, device_id, status_id, formula) values ('$r[title]', '$_POST[IDto]', '$r[status_id]', '$r[formula]')");
2697+ }
2698+ }
2699+ header("Location: ./?action=formula&device_id=$_POST[IDto]");
2700+ }
2701+ break;
2702+ case "copy_formula_energy":
2703+ if (checkskey($_POST[IDto])) {
2704+ seveLog("formula_energy");
2705+ $res = mysql_query("select * from formuls_energy where equipment_id='$_POST[IDfrom]'");
2706+ if ($res and mysql_num_rows($res) > 0) {
2707+ while ($r = mysql_fetch_array($res)) {
2708+ mysql_query("insert formuls_energy (title, equipment_id, formula, resource_id) values ('$r[title]', '$_POST[IDto]', '$r[formula]', '$r[resource_id]')");
2709+ }
2710+ }
2711+ header("Location: ./?action=formula_energy&equipment_id=$_POST[IDto]&resource_id=$_POST[resource_id]");
2712+ }
2713+ break;
2714+ case "del_formula":
2715+ if (checkskey($_POST[device_id])) {
2716+ seveLog("formula");
2717+ mysql_query("DELETE FROM formuls WHERE id='$_POST[id]' LIMIT 1");
2718+ }
2719+ header("Location: ./?action=formula&device_id=$_POST[device_id]");
2720+ break;
2721+ case "del_formula_energy":
2722+ if (checkskey($_POST[device_id])) {
2723+ seveLog("formula_energy");
2724+ mysql_query("DELETE FROM formuls_energy WHERE id='$_POST[id]' LIMIT 1");
2725+ }
2726+ header("Location: ./?action=formula_energy&device_id=$_POST[device_id]");
2727+ break;
2728+ case "add_status":
2729+ case "update_status":
2730+ seveLog("statuses");
2731+ include_once '../models/Status.php';
2732+ $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2733+ if (checkskey($id)) {
2734+ $data = [
2735+ 'title' => htmlspecialchars($_POST['title']),
2736+ 'is_it_work' => (!empty($_POST['is_it_work'])) ? 1 : 0,
2737+ 'subtitle' => (!empty($_POST['subtitle'])) ? 1 : 0,
2738+ 'color' => htmlspecialchars($_POST['color']),
2739+ ];
2740+ if ($_POST['action'] == 'add_status') {
2741+ Status::insert($data);
2742+ $id = Status::insertId();
2743+ }
2744+ if ($_POST['action'] == 'update_status') {
2745+ Status::update($data, $id);
2746+ }
2747+ header("Location: ./?action=statuses&id={$id}");
2748+ }
2749+ break;
2750+ case 'change_status' :
2751+ if (checkskey()) {
2752+ $equipment = isset($_POST['equipment']) ? intval($_POST['equipment']) : null;
2753+ $status = isset($_POST['status']) ? intval($_POST['status']) : null;
2754+ if ($equipment !== null && $status !== null) {
2755+ $time = date('Y-m-d H:i:s');
2756+ DB::query("INSERT INTO `equipment_condition` (`timestamp`, `equipment`, `status`, `source`)
2757 VALUES('$time', '$equipment', '$status', 'change_status')");
2758- }
2759- echo json_encode('OK');
2760- }
2761- break;
2762+ }
2763+ echo json_encode('OK');
2764+ }
2765+ break;
2766
2767- // Технологические этапы
2768- case "add_tplan_stage":
2769- case "update_tplan_stage":
2770- include_once '../models/TplanStage.php';
2771- $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2772- if (checkskey($id)) {
2773- $data = [
2774- 'name' => htmlspecialchars($_POST['name']),
2775- 'equipment_count' => count($_POST['equipment']),
2776- 'sort' => intval($_POST['sort']),
2777- 'active' => (!empty($_POST['active'])) ? 1 : 0,
2778- 'color' => htmlspecialchars($_POST['color']),
2779- 'bg_color' => htmlspecialchars($_POST['bg_color'])
2780- ];
2781+ // Технологические этапы
2782+ case "add_tplan_stage":
2783+ case "update_tplan_stage":
2784+ include_once '../models/TplanStage.php';
2785+ $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2786+ if (checkskey($id)) {
2787+ $data = [
2788+ 'name' => htmlspecialchars($_POST['name']),
2789+ 'equipment_count' => count($_POST['equipment']),
2790+ 'sort' => intval($_POST['sort']),
2791+ 'active' => (!empty($_POST['active'])) ? 1 : 0,
2792+ 'color' => htmlspecialchars($_POST['color']),
2793+ 'bg_color' => htmlspecialchars($_POST['bg_color'])
2794+ ];
2795
2796- if ($_POST['action'] == 'add_tplan_stage') {
2797- TplanStage::insert($data);
2798- $id = TplanStage::insertId();
2799- }
2800- if ($_POST['action'] == 'update_tplan_stage') {
2801- TplanStage::update($data, $id);
2802- }
2803+ if ($_POST['action'] == 'add_tplan_stage') {
2804+ TplanStage::insert($data);
2805+ $id = TplanStage::insertId();
2806+ }
2807+ if ($_POST['action'] == 'update_tplan_stage') {
2808+ TplanStage::update($data, $id);
2809+ }
2810
2811- // Обновляем оборудования
2812- TplanStage::updateEquipments($id, $_POST['equipment']);
2813+ // Обновляем оборудования
2814+ TplanStage::updateEquipments($id, $_POST['equipment']);
2815
2816- header("Location: ./?action=tplan_stage&id={$id}");
2817- }
2818- break;
2819+ header("Location: ./?action=tplan_stage&id={$id}");
2820+ }
2821+ break;
2822
2823- // Технологические цепочки
2824- case "add_tplan_line":
2825- case "update_tplan_line":
2826- include_once '../models/TplanLine.php';
2827- include_once '../models/TplanLineTime.php';
2828- $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2829- if (checkskey($id)) {
2830- $data = [
2831- 'name' => htmlspecialchars($_POST['name']),
2832- 'active' => (!empty($_POST['active'])) ? 1 : 0,
2833- ];
2834- if ($_POST['action'] == 'add_tplan_line') {
2835- TplanLine::insert($data);
2836- $id = TplanLine::insertId();
2837- }
2838- if ($_POST['action'] == 'update_tplan_line') {
2839- TplanLine::update($data, $id);
2840- }
2841+ // Технологические цепочки
2842+ case "add_tplan_line":
2843+ case "update_tplan_line":
2844+ include_once '../models/TplanLine.php';
2845+ include_once '../models/TplanLineTime.php';
2846+ $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2847+ if (checkskey($id)) {
2848+ $data = [
2849+ 'name' => htmlspecialchars($_POST['name']),
2850+ 'active' => (!empty($_POST['active'])) ? 1 : 0,
2851+ ];
2852+ if ($_POST['action'] == 'add_tplan_line') {
2853+ TplanLine::insert($data);
2854+ $id = TplanLine::insertId();
2855+ }
2856+ if ($_POST['action'] == 'update_tplan_line') {
2857+ TplanLine::update($data, $id);
2858+ }
2859
2860- // Обновляем этапы
2861- TplanLine::updateStages($id, $_POST);
2862+ // Обновляем этапы
2863+ TplanLine::updateStages($id, $_POST);
2864
2865- header("Location: ./?action=tplan_line&id={$id}");
2866- }
2867- break;
2868+ header("Location: ./?action=tplan_line&id={$id}");
2869+ }
2870+ break;
2871
2872- // Роли пользователей
2873- case "add_role":
2874- case "update_role":
2875- include_once '../models/Role.php';
2876- $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2877- if (checkskey($id)) {
2878- seveLog("role");
2879- $data = [
2880- 'name' => htmlspecialchars($_POST['name']),
2881- ];
2882+ // Роли пользователей
2883+ case "add_role":
2884+ case "update_role":
2885+ include_once '../models/Role.php';
2886+ $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2887+ if (checkskey($id)) {
2888+ seveLog("role");
2889+ $data = [
2890+ 'name' => htmlspecialchars($_POST['name']),
2891+ ];
2892
2893- if ($_POST['action'] == 'add_role') {
2894- Role::insert($data);
2895- $id = Role::insertId();
2896- }
2897- if ($_POST['action'] == 'update_role') {
2898- Role::update($data, $id);
2899- }
2900+ if ($_POST['action'] == 'add_role') {
2901+ Role::insert($data);
2902+ $id = Role::insertId();
2903+ }
2904+ if ($_POST['action'] == 'update_role') {
2905+ Role::update($data, $id);
2906+ }
2907
2908- // Обновляем разрешенные действия
2909- Role::updateActions($id, $_POST['actions']);
2910+ // Обновляем разрешенные действия
2911+ Role::updateActions($id, $_POST['actions']);
2912
2913- header("Location: ./?action=role&id={$id}");
2914- }
2915- break;
2916+ header("Location: ./?action=role&id={$id}");
2917+ }
2918+ break;
2919
2920- case "add_tplan_order":
2921- case "update_tplan_order":
2922- include_once '../models/TplanOrder.php';
2923- include_once '../models/TplanOrderLine.php';
2924- $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2925- if (checkskey($id)) {
2926- $data = [
2927- 'name' => htmlspecialchars($_POST['name']),
2928- 'date_plan' => htmlspecialchars($_POST['date_plan']),
2929- 'date_extra' => htmlspecialchars($_POST['date_extra']),
2930- ];
2931- if ($_POST['action'] == 'add_tplan_order') {
2932- TplanOrder::insert($data);
2933- $id = TplanOrder::insertId();
2934- }
2935- if ($_POST['action'] == 'update_tplan_order') {
2936- TplanOrder::update($data, $id);
2937- }
2938+ case "add_tplan_order":
2939+ case "update_tplan_order":
2940+ include_once '../models/TplanOrder.php';
2941+ include_once '../models/TplanOrderLine.php';
2942+ $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2943+ if (checkskey($id)) {
2944+ $data = [
2945+ 'name' => htmlspecialchars($_POST['name']),
2946+ 'date_plan' => htmlspecialchars($_POST['date_plan']),
2947+ 'date_extra' => htmlspecialchars($_POST['date_extra']),
2948+ ];
2949+ if ($_POST['action'] == 'add_tplan_order') {
2950+ TplanOrder::insert($data);
2951+ $id = TplanOrder::insertId();
2952+ }
2953+ if ($_POST['action'] == 'update_tplan_order') {
2954+ TplanOrder::update($data, $id);
2955+ }
2956
2957- // Обновляем детали
2958- TplanOrder::updateLines($id, $_POST['lines'], $_POST);
2959+ // Обновляем детали
2960+ TplanOrder::updateLines($id, $_POST['lines'], $_POST);
2961
2962- header("Location: ./?action=tplan_order&id={$id}");
2963- }
2964- break;
2965+ header("Location: ./?action=tplan_order&id={$id}");
2966+ }
2967+ break;
2968
2969- // Перемещение деталей
2970- case "update_tplan_matrix":
2971- include_once '../models/TplanMatrix.php';
2972- $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2973- if (checkskey($id)) {
2974- TplanMatrix::save($id, $_POST['equipments']);
2975- header("Location: ./?action=tplan_matrix_input&id={$id}");
2976- }
2977- break;
2978+ // Перемещение деталей
2979+ case "update_tplan_matrix":
2980+ include_once '../models/TplanMatrix.php';
2981+ $id = isset($_POST['id']) ? intval($_POST['id']) : '';
2982+ if (checkskey($id)) {
2983+ TplanMatrix::save($id, $_POST['equipments']);
2984+ header("Location: ./?action=tplan_matrix_input&id={$id}");
2985+ }
2986+ break;
2987
2988- // Сохранение времени перемещения детали
2989- case "update_tplan_matrix_time":
2990- include_once '../models/TplanMatrix.php';
2991- if (checkskey()) {
2992- TplanMatrix::updateTime($_POST);
2993- echo json_encode(['value'=>$_POST['value']]);
2994- }
2995- break;
2996+ // Сохранение времени перемещения детали
2997+ case "update_tplan_matrix_time":
2998+ include_once '../models/TplanMatrix.php';
2999+ if (checkskey()) {
3000+ TplanMatrix::updateTime($_POST);
3001+ echo json_encode(['value' => $_POST['value']]);
3002+ }
3003+ break;
3004
3005- // Сохранение отрезка сетки плана
3006- case "update_tplan":
3007- include_once '../models/Tplan.php';
3008- if (checkskey()) {
3009- $noSave = $_POST['no_save'] ?? null;
3010- $error = 0; // по умолчанию - нет ошибок
3011- // Данные отрезка до перемещения
3012- $barData = Tplan::getBarData(
3013- intval($_POST['order_line_id']),
3014- intval($_POST['stage_id']),
3015- htmlspecialchars($_POST['grid_date_start'])
3016- );
3017- // Если нужно сохранять
3018- if (!$noSave) {
3019- // Если без ошибок, в barData возвращаем новые данные отрезка
3020- if (!$error = Tplan::save($_POST)) {
3021- $barData = Tplan::getBarData(
3022- intval($_POST['order_line_id']),
3023- intval($_POST['stage_id']),
3024- htmlspecialchars($_POST['grid_date_start'])
3025- );
3026- }
3027- }
3028- echo json_encode([
3029- 'error' => $error,
3030- 'bar' => $barData,
3031- ]);
3032- }
3033- break;
3034+ // Сохранение отрезка сетки плана
3035+ case "update_tplan":
3036+ include_once '../models/Tplan.php';
3037+ if (checkskey()) {
3038+ $noSave = $_POST['no_save'] ?? null;
3039+ $error = 0; // по умолчанию - нет ошибок
3040+ // Данные отрезка до перемещения
3041+ $barData = Tplan::getBarData(
3042+ intval($_POST['order_line_id']),
3043+ intval($_POST['stage_id']),
3044+ htmlspecialchars($_POST['grid_date_start'])
3045+ );
3046+ // Если нужно сохранять
3047+ if (!$noSave) {
3048+ // Если без ошибок, в barData возвращаем новые данные отрезка
3049+ if (!$error = Tplan::save($_POST)) {
3050+ $barData = Tplan::getBarData(
3051+ intval($_POST['order_line_id']),
3052+ intval($_POST['stage_id']),
3053+ htmlspecialchars($_POST['grid_date_start'])
3054+ );
3055+ }
3056+ }
3057+ echo json_encode([
3058+ 'error' => $error,
3059+ 'bar' => $barData,
3060+ ]);
3061+ }
3062+ break;
3063
3064- // Удаление отрезков сетки плана указанной детали и заказа
3065- case "delete_tplan":
3066- include_once '../models/Tplan.php';
3067- if (checkskey()) {
3068- Tplan::deleteOrderLine(intval($_POST['order_line_id']), $_POST['with_order_line']??false);
3069- echo json_encode(['ok'=>1]);
3070- }
3071- break;
3072+ // Удаление отрезков сетки плана указанной детали и заказа
3073+ case "delete_tplan":
3074+ include_once '../models/Tplan.php';
3075+ if (checkskey()) {
3076+ Tplan::deleteOrderLine(intval($_POST['order_line_id']), $_POST['with_order_line'] ?? false);
3077+ echo json_encode(['ok' => 1]);
3078+ }
3079+ break;
3080
3081- // Удаление одного отрезка сетки плана указанной детали и заказа
3082- case "delete_one_bar":
3083- include_once '../models/Tplan.php';
3084- if (checkskey()) {
3085- Tplan::delete(intval($_POST['order_line_id']), intval($_POST['stage_id']) );
3086- echo json_encode(['ok'=>1]);
3087- }
3088- break;
3089+ // Удаление одного отрезка сетки плана указанной детали и заказа
3090+ case "delete_one_bar":
3091+ include_once '../models/Tplan.php';
3092+ if (checkskey()) {
3093+ Tplan::delete(intval($_POST['order_line_id']), intval($_POST['stage_id']));
3094+ echo json_encode(['ok' => 1]);
3095+ }
3096+ break;
3097
3098- // Добавление на сетку отрезков в первые попавшиеся позиции
3099- case "insert_tplan":
3100- include_once '../models/Tplan.php';
3101- if (checkskey()) {
3102- $result = Tplan::insertBarsGrid($_POST['date_start'], intval($_POST['order_line_id']));
3103- echo json_encode(['ok' => $result]);
3104- }
3105- break;
3106+ // Добавление на сетку отрезков в первые попавшиеся позиции
3107+ case "insert_tplan":
3108+ include_once '../models/Tplan.php';
3109+ if (checkskey()) {
3110+ $result = Tplan::insertBarsGrid($_POST['date_start'], intval($_POST['order_line_id']));
3111+ echo json_encode(['ok' => $result]);
3112+ }
3113+ break;
3114
3115- // Освобождаем время
3116- case "empty_time":
3117- include_once '../models/Tplan.php';
3118- if (checkskey()) {
3119- $result = Tplan::emptyTime($_POST['date_start'], $_POST['date_end']);
3120- echo json_encode(['ok' => $result]);
3121- }
3122- break;
3123+ // Освобождаем время
3124+ case "empty_time":
3125+ include_once '../models/Tplan.php';
3126+ if (checkskey()) {
3127+ $result = Tplan::emptyTime($_POST['date_start'], $_POST['date_end']);
3128+ echo json_encode(['ok' => $result]);
3129+ }
3130+ break;
3131
3132- // Чистим сетку
3133- case "clear_matrix":
3134- include_once '../models/Tplan.php';
3135- if (checkskey()) {
3136- $result = Tplan::clearMatrix($_POST['from']);
3137- echo json_encode(['ok' => $result]);
3138- }
3139- break;
3140- }
3141+ // Чистим сетку
3142+ case "clear_matrix":
3143+ include_once '../models/Tplan.php';
3144+ if (checkskey()) {
3145+ $result = Tplan::clearMatrix($_POST['from']);
3146+ echo json_encode(['ok' => $result]);
3147+ }
3148+ break;
3149+}
3150diff --git a/api3/objects/Devices.php b/api3/objects/Devices.php
3151index 99be0e6..2645599 100644
3152--- a/api3/objects/Devices.php
3153+++ b/api3/objects/Devices.php
3154@@ -6,10 +6,17 @@ require_once(__DIR__ . '/DeviceSettingsCurrent.php');
3155
3156 class Devices extends CRUD {
3157 const DEFAULT_DEVICE_NAME = '[NEW]';
3158- public function tableName(): string {
3159+
3160+ public function tableName(): string
3161+ {
3162 return 'devices';
3163 }
3164- public function createEmpty($serialNumber = '') {
3165+
3166+ /**
3167+ * @return false|string
3168+ */
3169+ public function createEmpty($serialNumber = '')
3170+ {
3171 //if (!empty($serialNumber)) {
3172 // $serialNumber = $this->real_escape_string($serialNumber);
3173 //}
3174@@ -36,23 +43,54 @@ class Devices extends CRUD {
3175
3176 return $this->create($create);
3177 }
3178- public function create(array $array, array $params = array()) {
3179+
3180+ /**
3181+ * @return false|string
3182+ */
3183+ public function create(array $array, array $params = array())
3184+ {
3185 //$sql_create_z_device =
3186 $device_id = parent::create($array, $params);
3187 if (empty($device_id)) {
3188 return $device_id;
3189 }
3190- $sql_create_z_device = 'CREATE TABLE `z_device_'.$device_id.'` (`timestamp` datetime NOT NULL, `sensor` tinyint(1) unsigned NOT NULL, `data` float(7,2) NOT NULL, UNIQUE KEY `timestamp` (`timestamp`,`sensor`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8';
3191+ $sql_create_z_device = 'CREATE TABLE `z_device_' . $device_id . '` (`timestamp` datetime NOT NULL, `sensor` tinyint(1) unsigned NOT NULL, `data` float(7,2) NOT NULL, UNIQUE KEY `timestamp` (`timestamp`,`sensor`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8';
3192 //echo $sql_create_z_device,PHP_EOL;
3193 $this->query($sql_create_z_device);
3194- $sql_create_z_device_arc = 'CREATE TABLE `z_device_'.$device_id.'_arc` ( `timestamp` datetime NOT NULL, `sensor` tinyint(1) unsigned NOT NULL, `data` float(7,2) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8';
3195+ $sql_create_z_device_arc = 'CREATE TABLE `z_device_' . $device_id . '_arc` ( `timestamp` datetime NOT NULL, `sensor` tinyint(1) unsigned NOT NULL, `data` float(7,2) NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8';
3196 //echo $sql_create_z_device_arc,PHP_EOL;
3197 $this->query($sql_create_z_device_arc);
3198
3199+ // Начало создания записи о гарантии на устройство
3200+ /** @var ModelDBT_DeviceWarranty $deviceWarranty */
3201+ $deviceWarranty = QCGA::API3()->objectFactory('ModelDBT_DeviceWarranty');
3202+ $deviceWarranty->createForCurrentCustomer($array['serialNumber']);
3203+ // Конец создания записи о гарантии на устройство
3204+
3205 return $device_id;
3206 }
3207
3208- public function delete(array $where) {
3209+
3210+ /**
3211+ * Метод не реализован, вернет null в любом случае.
3212+ * @return null
3213+ */
3214+ public function update(array $data, array $where = [])
3215+ {
3216+ // При реализации этого метода, не забыть про гарантии на устройства.
3217+ return null;
3218+// //Начало создания записи о гарантии на устройство
3219+// //Когда серийный номер устройства изменяется, предполагается, что это теперь другое устройство.
3220+// if ($data['serialNumber'] !== $deviseData['serialNumber']) {
3221+// /** @var ModelDBT_DeviceWarranty $deviceWarranty */
3222+// $deviceWarranty = QCGA::API3()->objectFactory('ModelDBT_DeviceWarranty');
3223+// $deviceWarranty->createForCurrentCustomer($array['serialNumber']);
3224+// }
3225+// //Конец создания записи о гарантии на устройство
3226+ }
3227+
3228+ public function delete(array $where): ?bool
3229+ {
3230 if (Util::isParameterIsEmpty($where, 'id') && Util::isParameterIsEmpty($where, 'serialNumber') ) {
3231 return false;
3232 }
3233@@ -125,7 +163,8 @@ class Devices extends CRUD {
3234 return parent::delete($where);
3235 }
3236
3237- function __construct($domain_name = '') {
3238+ function __construct($domain_name = '')
3239+ {
3240 parent::__construct($domain_name);
3241 $this->appendField('id', 'int(8) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY');
3242 $this->appendField('title', 'varchar(100) NOT NULL');
3243diff --git a/api3/objects/ModelDBT/ModelDBT_DeviceWarranty.php b/api3/objects/ModelDBT/ModelDBT_DeviceWarranty.php
3244new file mode 100644
3245index 0000000..90bbf3d
3246--- /dev/null
3247+++ b/api3/objects/ModelDBT/ModelDBT_DeviceWarranty.php
3248@@ -0,0 +1,150 @@
3249+<?php
3250+
3251+require_once(__DIR__ . '/../../ModelDBT.php');
3252+require_once(__DIR__ . '/../../../include/Util.php');
3253+require_once(__DIR__ . '/../../../include/qCanGlobalAccessor.php');
3254+
3255+/**
3256+ * <p><b>API3 модель для таблицы DeviceWarranty.</b></p><p>
3257+ * 'id' - идентификатор, авто инкремент.</p><p>
3258+ * 'device_serial' - серийный номер устройства.</p><p>
3259+ * 'organization_id' - id организации из таблицы organizations.</p><p>
3260+ * 'start_date' - дата начала эксплуатации устройства.</p><p>
3261+ * 'warranty_expiration_date' - дата истечения гаранитии на устройство.</p>
3262+ */
3263+class ModelDBT_DeviceWarranty extends ModelDBT
3264+{
3265+ private $deviceSerial = 'device_serial';
3266+ private $organizationId = 'organization_id';
3267+ private $startDate = 'start_date';
3268+ private $warrantyExpirationDate = 'warranty_expiration_date';
3269+
3270+ public function __construct($domain_name = '')
3271+ {
3272+ parent::__construct($domain_name);
3273+ $this->appendField($this->deviceSerial, 'VARCHAR(32)');
3274+ $this->appendField($this->organizationId, 'INT(6) UNSIGNED');
3275+ $this->appendField($this->startDate, 'DATETIME');
3276+ $this->appendField($this->warrantyExpirationDate, 'DATETIME');
3277+ }
3278+
3279+ /**
3280+ * Создает новую запись о гарантии на устройство, если для организации еще нет записи с таким серийным номером.
3281+ * @return false|string
3282+ */
3283+ public function createForCurrentCustomer(int $deviceSerial)
3284+ {
3285+ /** @var CurrentCustomer $currentCustomer */
3286+ $currentCustomer = QCGA::API3()->objectFactory('CurrentCustomer');
3287+ $organization = $currentCustomer->read();
3288+
3289+ return $this->create(['device_serial' => $deviceSerial, 'organization_id' => $organization['ID']]);
3290+ }
3291+
3292+ /**
3293+ * Создает новую запись о гарантии на устройство, если для организации еще нет записи с таким серийным номером.
3294+ * @return false|string
3295+ */
3296+ public function create(array $array, array $params = [])
3297+ {
3298+ $arrayKeysRequireIsEmptyChecking = [$this->deviceSerial, $this->organizationId,];
3299+ foreach ($arrayKeysRequireIsEmptyChecking as $key) {
3300+ if (Util::isParameterIsEmpty($array, $key)) {
3301+ if (Util::isParameterIsEmpty($params, 'debug')) {
3302+ echo "$key is empty", PHP_EOL;
3303+ }
3304+
3305+ return false;
3306+ }
3307+ }
3308+
3309+ if ($this->read($array) !== []) {
3310+ return false;
3311+ }
3312+
3313+ /** @var GlobalSettings $globalSettings */
3314+ $globalSettings = QCGA::API3()->objectFactory('GlobalSettings');
3315+ $warrantySettings = $globalSettings->read(['name' => 'WARRANTY_PERIOD_MONTHS']);
3316+ $warrantyLength = $warrantySettings['value'];
3317+
3318+ $array[$this->startDate] = $array[$this->startDate] ?? date('Y-m-d H:i:s');
3319+ $date = DateTime::createFromFormat('Y-m-d H:i:s', $array[$this->startDate]);
3320+ $date->modify("+$warrantyLength months");
3321+ $array[$this->warrantyExpirationDate] = $date->format('Y-m-d H:i:s');
3322+
3323+ return parent::create($array, $params);
3324+ }
3325+
3326+ /**
3327+ * Создает запись о гарантии на устройство для каждого устройства, <u>каждой зарегистрированной организации</u>.
3328+ * Рассчет времени начала эксплуатации устройства производится на основании самой ранней записи в базе данных.
3329+ * Если устройство создано, но записей о его работе нет, время начала эксплуатации устанавливается равным текущему времени.
3330+ * @return array - отчет о выполненных записях
3331+ */
3332+ public function calculateWarrantyForAllCustomers(): array
3333+ {
3334+ $resultsReport = [];
3335+ /** @var Organizations $organizations */
3336+ $organizations = QCGA::API3()->objectFactory('Organizations');
3337+ $organizationData = $organizations->read();
3338+ foreach ($organizationData as $organization) {
3339+ $resultsReport += $this->calculateWarrantyForCustomerById($organization['ID']);
3340+ }
3341+
3342+ return $resultsReport;
3343+ }
3344+
3345+ /**
3346+ * Создает запись о гарантии на устройство для каждого устройства <u>одной</u> организации, по ID.
3347+ * Рассчет времени начала эксплуатации устройства производится на основании самой ранней записи в базе данных.
3348+ * Если устройство создано, но записей о его работе нет, время начала эксплуатации устанавливается равным текущему времени.
3349+ * @param int $id ID организации
3350+ * @return array - отчет о выполненных записях
3351+ */
3352+ public function calculateWarrantyForCustomerById(int $id): array
3353+ {
3354+ $resultsReport = [];
3355+ /** @var Organizations $organizations */
3356+ $organizations = QCGA::API3()->objectFactory('Organizations');
3357+ $orgData = $organizations->read(['ID' => $id]);
3358+
3359+ $domainName = $orgData['domen'];
3360+
3361+ /** @var Devices $devices */
3362+ $devices = QCGA::API3()->objectFactory('Devices', $domainName);
3363+ $devicesData = $devices->read();
3364+ foreach ($devicesData as $device) {
3365+ $deviceId = $device['id'];
3366+ $deviceSerial = $device['serialNumber'];
3367+ $tableName = 'z_device_' . $deviceId;
3368+ $sql = "SELECT * FROM $tableName ORDER BY timestamp LIMIT 1";
3369+
3370+ $connection = new mysqli($orgData['db_host'], $orgData['db_user'], $orgData['db_pass'], $orgData['db']);
3371+ if ($connection->connect_errno) {
3372+ $resultsReport[$domainName . "_" . $tableName] = ['conn_err' => $connection->connect_error];
3373+ continue;
3374+ }
3375+ $result = $connection->query($sql);
3376+ if ($result && $result->num_rows > 0) {
3377+ $row = $result->fetch_assoc();
3378+ $startDate = $row['timestamp'];
3379+ $creationResult = $this->create([
3380+ $this->deviceSerial => $deviceSerial,
3381+ $this->organizationId => $id,
3382+ $this->startDate => $startDate,
3383+ ]);
3384+ } else {
3385+ $creationResult = $this->create([$this->deviceSerial => $deviceSerial, $this->organizationId => $id]);
3386+ }
3387+ $resultsReport[$domainName . "_" . $tableName] = ['creation_result' => $creationResult];
3388+ $result->free_result();
3389+ }
3390+
3391+ return $resultsReport;
3392+ }
3393+
3394+ public function db_connection(): mysqli
3395+ {
3396+ return QCGA::getCore()->getDbMasterConnection();
3397+ }
3398+}
3399diff --git a/api3/objects/ModelDBT/ModelDBT_ToolMaintenance.php b/api3/objects/ModelDBT/ModelDBT_ToolMaintenance.php
3400index da073e3..2e6ce18 100644
3401--- a/api3/objects/ModelDBT/ModelDBT_ToolMaintenance.php
3402+++ b/api3/objects/ModelDBT/ModelDBT_ToolMaintenance.php
3403@@ -3,6 +3,14 @@
3404 require_once(__DIR__ . '/../../ModelDBT.php');
3405 require_once(__DIR__ . '/../../../include/Util.php');
3406
3407+/**
3408+ * <p><b>API3 модель для работы с таблицей ToolMaintenance.</b></p><p>
3409+ * 'id' - идентификатор ТО, авто инкремент.</p><p>
3410+ * 'maintenance_date' - дата и время создания записи о ТО.</p><p>
3411+ * 'instrument_id' - id инструмента из таблицы instrument.</p><p>
3412+ * 'cycles_at_maintenance' - количество циклов работы инструмента на момент ТО.</p><p>
3413+ * 'user_id' - id пользователя из таблицы users.</p>
3414+ */
3415 class ModelDBT_ToolMaintenance extends ModelDBT
3416 {
3417 public function __construct($domain_name = '')
3418@@ -20,28 +28,32 @@ class ModelDBT_ToolMaintenance extends ModelDBT
3419 /**
3420 * @return false|string
3421 */
3422- public function create(array $array, array $params = array())
3423+ public function create(array $array, array $params = [])
3424 {
3425 if (Util::isParameterIsEmpty($array, 'instrument_id')) {
3426 if (Util::isParameterIsEmpty($params, 'debug')) {
3427 echo 'instrument_id is empty', PHP_EOL;
3428 }
3429+
3430 return false;
3431 }
3432 if (Util::isParameterIsEmpty($array, 'cycles_at_maintenance')) {
3433 if (Util::isParameterIsEmpty($params, 'debug')) {
3434 echo 'cycles_at_maintenance is empty', PHP_EOL;
3435 }
3436+
3437 return false;
3438 }
3439 if (Util::isParameterIsEmpty($array, 'user_id')) {
3440 if (Util::isParameterIsEmpty($params, 'debug')) {
3441 echo 'user_id is empty', PHP_EOL;
3442 }
3443+
3444 return false;
3445 }
3446 $array['maintenance_date'] = Util::currentCustomerNow();
3447+
3448 return parent::create($array, $params);
3449 }
3450
3451-}
3452\ No newline at end of file
3453+}
3454diff --git a/api3/objects/ModelDBT/ModelDBT_Tools.php b/api3/objects/ModelDBT/ModelDBT_Tools.php
3455index 3d81026..021778f 100644
3456--- a/api3/objects/ModelDBT/ModelDBT_Tools.php
3457+++ b/api3/objects/ModelDBT/ModelDBT_Tools.php
3458@@ -3,6 +3,14 @@
3459 require_once(__DIR__ . '/../../ModelDBT.php');
3460 require_once(__DIR__ . '/../../../include/Util.php');
3461
3462+/**
3463+ * <p><b>API3 модель для работы с таблицей instrument.</b></p><p>
3464+ * 'id' - идентификатор инструмента, авто инкремент.</p><p>
3465+ * 'name' - название инструмента.</p><p>
3466+ * 'cycles_before_to' - количество циклов работы инструмента до планового ТО.</p><p>
3467+ * 'divider' - делитель (что бы это не значило).</p><p>
3468+ * 'publish' - флаг публикации.</p>
3469+ */
3470 class ModelDBT_Tools extends ModelDBT
3471 {
3472 public function __construct($domain_name = '')
3473@@ -18,4 +26,4 @@ class ModelDBT_Tools extends ModelDBT
3474 {
3475 return 'instrument';
3476 }
3477-}
3478\ No newline at end of file
3479+}
3480diff --git a/api3/objects/Report/ReportToolList.php b/api3/objects/Report/ReportToolList.php
3481index 8cef454..89f88ea 100644
3482--- a/api3/objects/Report/ReportToolList.php
3483+++ b/api3/objects/Report/ReportToolList.php
3484@@ -30,7 +30,7 @@ class ReportToolList extends Report
3485 $result = $this->query($sql);
3486 if ($result && $result->num_rows > 0) {
3487 $row = $result->fetch_assoc();
3488- $maintenanceDate = $row['last_maintenance_date'];
3489+ $maintenanceDate = $row['last_maintenance_date'] ?? 0;
3490 } else {
3491 $maintenanceDate = 0;
3492 }
3493