This commit is contained in:
2018-10-17 11:14:36 +03:00
parent 75a35947e5
commit 04d60d7e2c
2716 changed files with 431449 additions and 0 deletions
+313
View File
@@ -0,0 +1,313 @@
<?php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
/**
* Description of Catriges
*
* @author andrey
*/
class Cartriges {
//put your code here
public static function getSumAllCarteiges(){ //получаем сумму всех картриджей(доставленных и замененных) по запросу ниже
/*SELECT c.name as Имя, sum(aC.value) as Сумма FROM actionsCartriges aC
INNER JOIN cartriges c ON aC.id_cartriges = c.id
GROUP BY c.name;*/
$db = Db::getConnection();
$sql = "SELECT c.name as name, sum(aC.action) as value FROM cartridges aC "
. "RIGHT JOIN cartriges c ON aC.id_cartrige = c.id "
. "WHERE c.action = 1 "
. "GROUP BY c.name";
$result = $db->query($sql);
$result->setFetchMode(PDO::FETCH_ASSOC);
$i = 0;
while($row = $result->fetch()){
$summ_cart[$i]['name'] = $row['name'];
$summ_cart[$i]['value'] = $row['value'];
if($summ_cart[$i]['value'] == NULL) $summ_cart[$i]['value'] = 0;
$i++;
}
return $summ_cart;
//return arr();
}
public static function getActivCartriges(){
$db = Db::getConnection();
$result = $db->query('SELECT id, name FROM cartriges WHERE action = 1');
$result->setFetchMode(PDO::FETCH_ASSOC);
$i = 0;
while($row = $result->fetch()){
$cart[$i]['id'] = $row['id'];
$cart[$i]['name'] = $row['name'];
$i++;
}
return $cart;
}
public static function getAllCartriges(){
$db = Db::getConnection();
$result = $db->query('SELECT id, name, action FROM cartriges');
$result->setFetchMode(PDO::FETCH_ASSOC);
$i = 0;
while($row = $result->fetch()){
$cart[$i]['id'] = $row['id'];
$cart[$i]['name'] = $row['name'];
$cart[$i]['action'] = $row['action'];
if(!Printer::getAllPrintersByCartrige($row['id'])) $cart[$i]['print_list'] = "Нет принтеров использующих данный картридж";
else $cart[$i]['print_list'] = Printer::getAllPrintersByCartrige($row['id']);
$i++;
}
return $cart;
}
public static function getHistoryCartridges($limit = 5){
$db = Db::getConnection();
$result = $db->query('SELECT hc.id, hc.user, hc.date, c.name, hc.action
FROM history_cartridges hc
LEFT JOIN cartriges c ON hc.id_cartridge = c.id
ORDER BY hc.id DESC
LIMIT '.$limit.';');
$result->setFetchMode(PDO::FETCH_ASSOC);
$i = 0;
while($row = $result->fetch()){
foreach($row as $key=>$value){
$cartridges[$i][$key] = $value;
}
$i++;
}
return $cartridges;
}
private static function setActionCartriges($user_name, $id_cartrige, $quatity, $act){
$db = Db::getConnection();
$date = date("Y-m-d H:i:s");
if($act == "out"){
$action = $quatity * -1;
}elseif ($act == "in" || "zaro") {
$action = $quatity;
}
/* история действий по картриджам */
if($act == "out"){
$actions = "Замена ".$quatity." шт";
}elseif ($act == "in") {
$actions = "Доставка ".$quatity." шт";
}elseif ($act == "zero") {
$actions = "!!!Обнуление: ".$quatity." шт";
}
Unit::setToHistoryCartridges($user_name, $id_cartrige, $actions);
/*end*/
//внесение денных об изменениях принтера в бд
$stmt = $db->prepare("INSERT INTO cartridges (date, id_cartrige, action, user) VALUES (:date, :id_cartrige, :action, :user)");
$stmt->bindParam(':date', $date);
$stmt->bindParam(':id_cartrige', $id_cartrige);
$stmt->bindParam(':action', $action);
$stmt->bindParam(':user', $user_name);
return $stmt->execute();
}
public static function ActionCartriges($post_data, $session_data){
for($i = 0; $i < count($post_data)-2; $i++){
self::setActionCartriges($session_data['user_id'], $post_data[$i]['cartrige'], $post_data[$i]['quatity'], $post_data['action']);
}
return "all right";
}
public static function colorRow($a){
if($a < 3 && $a >= 2) return "class='warning'";
elseif($a < 2) return "class='danger'";
else return "";
}
public static function resetToZero(){
$db = Db::getConnection();
$sql = "SELECT id_cartrige as id, sum(action) as value FROM cartridges GROUP BY id_cartrige";
$result = $db->query($sql);
$result->setFetchMode(PDO::FETCH_ASSOC);
$i = 0;
while($row = $result->fetch()){
$summ_cart[$i]['id'] = $row['id'];
$summ_cart[$i]['value'] = $row['value'];
if($summ_cart[$i]['value'] == NULL) $summ_cart[$i]['value'] = 0;
$i++;
}
for($i = 0; $i < count($summ_cart); $i++){
self::setActionCartriges($_SESSION["user_id"]."/resetToZero", $summ_cart[$i]['id'], $summ_cart[$i]['value']*-1, "zero");
}
/*return $stmt->execute();
echo "<pre>";
print_r($summ_cart);
echo "</pre>"; */
}
public static function addCartriges($cart){ //добавление действия с картриджеми
$db = Db::getConnection();
$name = $cart['name'];
(!$cart['action']) ? $action = 0 : $action = $cart['action'];
//добавление картриджа в бд
$stmt = $db->prepare("INSERT INTO cartriges (name, action) VALUES (:name, :action)");
$stmt->bindParam(':name', $name);
$stmt->bindParam(':action', $action);
return $stmt->execute();
}
//public static function RemoveCartriges()
public static function reactivCartriges($id){ // изменение статуза задействования принтера
$db = Db::getConnection();
$act_val = 0;
$cart = Printer::getCartrigeByID($id);
var_dump($cart);
($cart[0]['action'] == 1) ? $act_val = 0 : $act_val = 1;
//добавление картриджа в бд
$stmt = $db->prepare("UPDATE cartriges SET action = :action WHERE id=:id");
$stmt->bindParam(':action', $act_val);
$stmt->bindParam(':id', $id);
return $stmt->execute();
}
public static function orderCartriges($data){ //формирования массива принтеров для заказа картриджей
/*приходящие данные
* array(3) {
[0]=>
array(2) {
["cartrige"]=>
string(1) "1"
["quatity"]=>
string(1) "3"
}
[1]=>
array(2) {
["cartrige"]=>
string(1) "2"
["quatity"]=>
string(0) ""
}
["submit"]=>
string(0) ""
*}
*/
//запрос к базе - забираем список всех id принтеров по первому массиву заказа
//вставляем в массив $arr
$list = "";//список для IN
//случайные числа
for($j = 0; $j < count($data) - 1; $j++){
$arr = self::setListPrintByID($data[$j]['cartrige']); //id принетров
$quantity = ceil($data[$j]['quantity']/2);
//получаем нужные поля из таблицы с помощью случайного id из списка
if(count($arr)> 1){
if(count($arr) < $quantity) $quantity = count($arr);
$rand_key = array_rand($arr, $quantity);// подставляем в цикл случайное число из массива
for($i = 0; $i < $quantity; $i++){
$list .= $arr[$rand_key[$i]].",";
}
}elseif(count($arr)== 1){
$list .= $arr[0].",";
}
}
$list = substr($list, 0, -1);
//print_r ($list);
$data_ord = array();
$db = Db::getConnection();
$result = $db->query("SELECT model, name, unit, is_color FROM print WHERE id IN (".$list.")");
$result->setFetchMode(PDO::FETCH_ASSOC);
$i = 0;
while($row = $result->fetch()){
$data_ord[$i]['model'] = $row['model'];
$data_ord[$i]['name'] = $row['name'];
$data_ord[$i]['unit'] = $row['unit'];
$data_ord[$i]['is_color'] = $row['is_color'];
//if($row['is_color'] == 1) $data_ord[$i]['unit'] .= " (black, yellow, magenta, blue)";
$i++;
}
//print_r($data_ord);
return $data_ord;
//формируем нужный массив с данными для отправки письма
/*
*
* Array ( [0] => Array ( [model] => HP LJM1212 [name] => PRN0175 [unit] => 0055-7357 ) [1] => Array ( [model] => HP LJ 3030 [name] => DSK0173 [unit] => 0000-0297 ) [2] => Array ( [model] => HP LJ 3030 [name] => DKUR0151 [unit] => 0000-5280 ) [3] => Array ( [model] => HP LJ 3020 [name] => DSK4719 [unit] => 0000-5428 ) [4] => Array ( [model] => HP LJM1212 [name] => PRN0173 [unit] => 0053-3585 ) [5] => Array ( [model] => HP LJ 3030 [name] => dsk0651 [unit] => 0045-5575 ) [6] => Array ( [model] => HP LJM1212 [name] => prn0180 [unit] => 0043-8493 ) [7] => Array ( [model] => Ricoh Aficio SP 3510SF [name] => PRN0185 [unit] => 0045-1758 ) )
*
*/
}
private static function setListPrintByID($id){
$db = Db::getConnection();
$result = $db->query("SELECT id FROM print WHERE id_cartriges=".$id." AND id_status IN (1, 6, 8)");
//$result->setFetchMode(PDO::FETCH_ASSOC);
$i = 0;
while($row = $result->fetch()){
$ids[$i] = $row['id'];
$i++;
}
return $ids;
}
public static function changeIsPublic($id){
$db = Db::getConnection();
$result = $db->query('SELECT * FROM cartriges WHERE id='.$id);
$result->setFetchMode(PDO::FETCH_ASSOC);
$row = $result->fetch();
$is_publication = $row['action'];
if($is_publication == 0) $is_publication_new = 1;
else $is_publication_new = 0;
$stmt = $db->prepare("UPDATE cartriges SET action = :action WHERE id = :id");
$stmt->bindParam(':id', $id);
$stmt->bindParam(':action', $is_publication_new);
$stmt->execute();
return true;
}
}