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 "
";
print_r($summ_cart);
echo ""; */
}
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;
}
}