314 lines
12 KiB
PHP
314 lines
12 KiB
PHP
<?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;
|
|
}
|
|
|
|
|
|
}
|