<?
class Company{
static private $instance = NULL;
public $data = array();
public $docs = array();
public $dataEx = array( 'bonus'=>array('1'=>100,110,120,130,140,160,180,200,220,240,260,280,310,340,370,400,450,500,550,600),
'price'=>array('1'=>500,1000,1500,2000,3000,4000,5000,6000,7000,8000,10000,12000,14000,16000,18000,20000,22000,24000,27000,30000));
private $db;
public $companyData = false;
public $rating = false;
public $isMy = false;
public $statuses = array('Рабочий', 'Бухгалтер' , 'Менеджер' , 'Инженер' , 'Зам.Директора' , 'Ген.Директор');
public $bucks = array(1=>10,20,50,100,250,500,1000,2500);
public $money = array(1=>100000,250000,500000,1000000,5000000,50000000,100000000,500000000,1000000000000,10000000000000,100000000000000,1000000000000000);
public $upgrade = array(1=>array('count'=>1,'price'=>100),
array('count'=>3,'price'=>270),
array('count'=>5,'price'=>400),
array('count'=>10,'price'=>700),
array('count'=>50,'price'=>3000)
);
public function __construct($id=false,$data = false){
$this->db = DB::a()->d;
$this->companyData = User::a()->user;
$this->isMy = true;
if($data!==false){
$this->companyData = $data;
$this->isMy = false;
if($this->companyData['cid']==User::a()->user['IdCompany'])$this->isMy = true;
}
if($id!==false){
$id = abs(intval($id));
$this->companyData = $this->searchCompany(false,$id);
if($this->companyData === false)return false;
$this->isMy = false;
if($id==User::a()->user['IdCompany'])$this->isMy = true;
}
/*Уровни компаний*/
$this->rating = rating_collective($this->companyData['companyRating']);
if($this->companyData['companyLevel'] != $this->rating[2]) {
DB::a()->d->query("
UPDATE `Company`
SET `companyLevel` = ".$this->rating[2]." ,
`companyMaxUsers` = `companyMaxUsers` + 1
WHERE `cid` = ".$this->companyData['cid']." LIMIT 1");
$this->companyData['companyLevel'] = $this->rating[2];
}
/*Документы*/
$this->docs[1] = array( 'name' => 'Сертификат Лунапарка',
'base'=>'DocLunapark',
'text' => 'Документ дает скидку всем участникам компании на улучшение аттракционов.Каждый уровень уменьшает стоимость на 5%.',
'price_d'=> array(1=>1000,2000,3500,5000,7000,10000,13000,16000,20000,25000) ,
'price_m'=> array(1=>1000000,3000000,7000000,11000000,15000000,20000000,25000000,30000000,35000000,40000000)
);
$this->docs[] = array( 'name' => 'Сертификат Торговца',
'base'=>'DocTrade',
'text' => 'Документ дает скидку всем участникам компании на покупку мест в торговле.Каждый уровень уменьшает стоимость на 5%.',
'price_d'=> array(1=>1000,2000,3500,5000,7000,10000,13000,16000,20000,25000) ,
'price_m'=> array(1=>1000000,3000000,7000000,11000000,15000000,20000000,25000000,30000000,35000000,40000000)
);
$this->docs[] = array( 'name' => 'Диплом Торговца',
'base'=>'DocTradeTime',
'text' => 'Документ ускоряет заказы в торговле каждого участника компании.Каждый уровень ускоряет заказы на 5%.',
'price_d'=> array(1=>1000,2000,3500,5000,7000,10000,13000,16000,20000,25000) ,
'price_m'=> array(1=>1000000,3000000,7000000,11000000,15000000,20000000,25000000,30000000,35000000,40000000)
);
$this->docs[] = array( 'name' => 'Сертификат Тендера',
'base'=>'DocTender',
'text' => 'Документ увеличивает кол-во клиентов в тендере.Каждый уровень увеличивает кол-во клиентов на 5%.',
'price_d'=> array(1=>1000,2000,3500,5000,7000,10000,13000,16000,20000,25000) ,
'price_m'=> array(1=>1000000,3000000,7000000,11000000,15000000,20000000,25000000,30000000,35000000,40000000)
);
}
/*Методы совета компании*/
public function getChat($page){
if(!$page) $page = 1;
if($page>5)$this->loc();
$page = abs(intval($page));
$start = $page * MAX_MESS_CHAT - MAX_MESS_CHAT;
$result = $this->db->query("SELECT COUNT(*) FROM `CompanyChat` WHERE `company` = ".$this->companyData['cid'])->fetchColumn();
if($result>0){
$chat = $this->db->query("SELECT `CompanyChat`.*, ".User::a()->join."
FROM `CompanyChat` JOIN `users`
ON `users`.`id` = `CompanyChat`.`user` WHERE `CompanyChat`.`company` = '".$this->companyData['cid']."'
ORDER BY `CompanyChat`.`id` DESC LIMIT ".$start.",".MAX_MESS_CHAT)->fetchAll();
return array('count' => $result, 'chat' => $chat);
}
return array('count' => 0, 'chat' => false);
}
public function add($text){
$ins = $this->db->prepare("INSERT INTO `CompanyChat` (`company`,`user`,`text`,`time`) VALUES ('".$this->companyData['cid']."','".User::a()->user['id']."', :text,'".time()."')");
$ins->bindParam(':text', $text ,PDO::PARAM_STR);
$ins->execute();
return $true;
}
/**/
static function a($id=false,$data = false){
if(self::$instance==NULL)self::$instance=new Company($id=false,$data = false);
return self::$instance;
}
public function getUsers() {
$users;
$result = $this->db->query("SELECT `users`.`id`,`users`.`LevelCompany`,".User::a()->join."
FROM `users` WHERE `IdCompany` = '".$this->companyData['cid']."' ORDER BY `LevelCompany` DESC,`level` DESC")->fetchAll();
foreach($result as $value){
$users.= User::a()->getLink($value['id'],$value)." <span class='small minor'>(".$this->statuses[$value['LevelCompany']].",".$value['level']." ур)</span><br>";
}
return $users;
}
public function searchCompany($name=false,$id=false) {
if($id===false){
$value = htmlspecialchars(strip_tags(trim($name)));
$col = 'companyName';
}
if($name===false){
$value = htmlspecialchars(strip_tags(trim($id)));
$col = 'cid';
}
$stmt = $this->db->prepare("SELECT * FROM `Company` WHERE `".$col."` = :value LIMIT 1");
$stmt->bindParam(':value', $value ,PDO::PARAM_STR);
$stmt->execute();
$result = $stmt->fetch();
if($result===FALSE)return false;
return $result;
}
public function addKassa($text){
if(!file_exists('data/kassa/'.User::a()->user['IdCompany']))$data = false;
else{$data = json_decode(file_get_contents('data/kassa/'.User::a()->user['IdCompany']),true);}
if($data==false){
$data = array(array('user'=>User::a()->user['id'],'text'=>$text,'time'=>time()));
}else{
$data[] = array('user'=>User::a()->user['id'],'text'=>$text,'time'=>time());
}
$data_mailMe = json_encode($data);
file_put_contents('data/kassa/'.User::a()->user['IdCompany'],$data_mailMe);
return true;
}
public function getKassa($page){
if(!file_exists('data/kassa/'.User::a()->user['IdCompany']))return false;
$dat = json_decode(file_get_contents('data/kassa/'.User::a()->user['IdCompany']),true);
if(count($dat)==0)return false;
$total=count($dat);
krsort($dat);
foreach($dat as $value){
$data[]=$value;
}
if(!$page) $page = 1;
$page = abs(intval($page));
if($page == 1)$start = 1;
else $start = 15*($page-1)+1;
$ml=array();
$users=array();
for($i=$start;$i<=15*$page;$i++){
if(array_key_exists($i-1,$data))
{
$users[] = $this->db->query("SELECT `id`,".User::a()->join." FROM `users` WHERE `id` = '".$data[$i-1]['user']."' LIMIT 1")->fetch();
$ml[]=$data[$i-1];
}
}
if(count($ml)==0)header('Location:/Lunapark/');
return array('data' => $ml , 'users'=>$users , 'total'=>$total);
}
}