<?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;
}
 
}
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;
	
}
 
$quest = new ProcurementDivision;
$countOfWorker = count($quest->workers);
echo "всего {$countOfWorker} сотрудников";
foreach ($quest->workers->w as $w->endStavka = $value)
{
	$wotkerRate+=$value;
}
echo "Общая зарплата {$wotkerRate}";