<?php
 
// archive-ipq-co.narod.ru
error_reporting(-1);
 
abstract class Worker
{
  
  public $rang; // Ранг сотрудника 1-3
  public $dicrementcoffe; // выжрано кофе 
  public $stavka; // начальная ставка
  public $mainingDocument; // Произвел документов
  public $endStavka; // окончательная ставка, вычисляется через функцию EndStavka
  public $boss = false; // является ли сотрудник начальником
 public function __construct(){$this->endStavka=$this->getendStavka();}
  
	 public function getendStavka()
	 { $percent=1;
		 if ($this->rang==2)
		 {
			 $percent=1.25;
		 }
		 elseif ($this->rang==3)
		 {
			 $percent=1.5;
		 }
		 else
		 {
			 $percent=1;
		 }
		 			 
     $endStavkaB = $this->stavka * $percent;
 
    if ($this->boss)
	{
      $endStavkaB *= 1.5;
    }
	return $endStavkaB;
  }
}
 
class Menedger extends Worker
{
 
 
	public $dicrementcoffe = 20;
	public $stavka = 500;
	public $mainingDocument = 200;	
}
class Market extends Worker
{
	public $dicrementcoffe = 15;
	public $stavka = 400;
	public $mainingDocument = 150;	
}
class Engeener extends Worker
{
	public $dicrementcoffe = 5;
	public $stavka = 200;
	public $mainingDocument = 50;	
}
class Analitic extends Worker
{
	public $dicrementcoffe = 50;
	public $stavka = 800;
	public $mainingDocument = 5;	
}
class Departament // возвращает массив с работниками в каждом департаменте
{ 
   	public $name;
	public $workers;
	public $menedgerA; //1 rang
	public $menedgerB; //2 rang
	public $menedgerC; //3 rang
	public $menedgerBoss;
	public $menedgerthere_Boss=0;//Руководитель 
// инженеры
	public $engeenerA;  //1 rang
	public $engeenerB; //2 rang
	public $engeenerC; //3 rang
	public $engeenerBoss;
	public $engeenerthere_Boss=0;//Руководитель 
//маркетологи
	public $marketA;//1 rang
	public $marketB;//2 rang
	public $marketC;//3 rang
	public $marketBoss;
	public $marketthere_Boss=0;//Руководитель (его ранг)
//аналитики
	public $analiticA; //1 rang
	public $analiticB; //2 rang
	public $analiticC; //3 rang
	public $analiticBoss; 
	public $analiticthere_Boss=0; 
	public function __construct(){$this->workers=$this->quantityWorker();}
	public function quantityWorker () // Возвращает массив с сотрудниками
{	
for ($i=0; $i<$this->menedgerA; $i++) // заносим в массив менеджеров 1й ранг
{	
	$w = new Menedger;
	$w->rang = 1;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
for ($i=0; $i<$this->menedgerB; $i++) // заносим в массив менеджеров 2й ранг
{	
	$w = new Menedger;
	$w->rang = 2;
	$w->getendStavka();
	$w->__construct();
	$workers[] = $w;
}for ($i=0; $i<$this->menedgerC; $i++) // заносим в массив менеджеров 1й ранг
{	
	$w = new Menedger;
	$w->rang = 3;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
for ($i=0; $i<$this->menedgerthere_Boss; $i++) // заносим в массив менеджеров руководителей 
{	
	$w = new Menedger;
	$w->rang = $this->menedgerBoss;
	$w->boss = true;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}for ($i=0; $i<$this->engeenerA; $i++) // заносим в массив инженеров 1й ранг
{	
	$w = new Engeener;
	$w->rang = 1;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}for ($i=0; $i<$this->engeenerB; $i++) // заносим в массив инжей 2й ранг
{	
	$w = new Engeener;
	$w->rang = 2;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}for ($i=0; $i<$this->engeenerC; $i++) // заносим в массив инжей 3й ранг
{	
	$w = new Engeener;
	$w->rang = 3;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
for ($i=0; $i<$this->engeenerthere_Boss; $i++) // заносим в массив инжей боссов
{	
	$w = new Engeener;
	$w->rang =$this->engeenerBoss;
	$w->boss = true;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
for ($i=0; $i<$this->marketA; $i++) // заносим в массив маркетологов 1
{	
	$w = new Market;
	$w->rang = 1;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
for ($i=0; $i<$this->marketB; $i++) // заносим в массив маркетологов 2
{	
	$w = new Market;
	$w->rang = 2;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
for ($i=0; $i<$this->marketC; $i++) // заносим в массив мfhrtnjkjujd 3
{	$w = new Market;
	$w->rang = 3;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
for ($i=0; $i<$this->marketthere_Boss; $i++) // заносим в массив Boss Market 
{	
	$w = new Market;
	$w->rang =$this->marketBoss;
	$w->boss = true;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
for ($i=0; $i<$this->analiticA; $i++) // заносим в массив Analitic 1
{	
	$w = new Analitic;
	$w->rang = 1;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}for ($i=0; $i<$this->analiticB; $i++) // заносим в массив Analitic 2
{	
	$w = new Analitic;
	$w->rang = 2;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}for ($i=0; $i<$this->analiticC; $i++) // Analitic 3
{	
	$w = new Analitic;
	$w->rang = 3;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
for ($i=0; $i<$this->analiticthere_Boss; $i++) // Analitic BoSS
{	
	$w = new Analitic;
	$w->rang = $this->analiticBoss;
	$w->boss = true;
	$w->getendStavka();
	$w->__construct(); 
	$workers[] = $w;
}
return $workers;
}
 
}
//Департамент продаж: 12×ме1, 6×ма1, 3×ан1, 2×ан2 + руководитель ма2
//Департамент рекламы: 15×ма1, 10×ма2, 8×ме1, 2×ин1 + руководитель ма3
//Департамент логистики: 13×ме1, 5×ме2, 5×ин1 + руководитель ме1
class ProcurementDivision extends Departament
{
	public $name = "Закупок";
	public $menedgerA=9;
	public $menedgerB=3;
	public $menedgerC=2;
	public $marketA=2;
	public $menedgerBoss=2;	//Ранг руководителя
	public $menedgerthere_Boss=1;
}
class MarketDivision extends Departament
{
	
	public $name = "Рекламы";
	public $menedgerA=8;
	public $engeenerA=2;
	public $marketA=15;
	public $marketB=10;
	public $marketBoss=3;	//Ранг руководителя
	public $marketthere_Boss=1;
}
class SellerDivision extends Departament
{   public $name = "Продаж";
	public $menedgerA=12;
	public $marketA=6;
	public $analiticA=3;
	public $marketBoss=2;	//Ранг руководителя
	public $marketthere_Boss=1;
}
class LogisticDivision extends Departament
{   public $name = "Логистики";
	public $menedgerA=13;
	public $menedgerB=5;
	public $engeenerA=5;
	public $menedgerBoss=1;
	public $menedgerthere_Boss=1;
}
class Calculator
{	public function keyInfo($quest)

	{
//echo "Общая зарплата сотрудника {$quest->workers[2]->endStavka}";
$countOfWorker = count($quest->workers);
for ($i=0; $i<$countOfWorker; $i++) // считает бабло,коффе и документы
   {
	$rate = $quest->workers[$i]->endStavka;
	$totalRate= $totalRate+$rate; //выплаченное бабло всем сотрудником
	$coffe = $quest->workers[$i]->$dicrementcoffe;
	$totalCoffe=$totalCoffe+$coffe;
	$document = $quest->workers[$i]->$mainingDocument;
	$totalDocument = $totalDocument + $document;
		}


echo "всего {$totalRate} выплачено тугриков";
echo "всего {$totalCoffe} выпито кофе";
echo "всего создано {$totalDocument} документа";
	
}
 

}	

$quest= new ProcurementDivision;
function keyInfo($quest)