<?php
class Employee
{
public $isChief;
public $rank;
public function __construct($isChief, $rank)
{
$this->isChief = $isChief;
$this->rank = $rank;
if ($isChief == 1) {
$this->coffeeConsumption *= 2;
$this->paperConsumption = 0;
}
}
public function getSalary()
{
$salary = $this->baseRate;
if ($this->rank == 2) {
$salary *= 1.25;
} elseif ($this->rank == 3) {
$salary *= 1.5;
}
if ($this->isChief == 1) {
$salary *= 1.5;
}
return $salary;
}
}
class Manager extends Employee
{
public $baseRate = 500;
public $coffeeConsumption = 20;
public $paperConsumption = 200;
}
class Marketing extends Employee
{
public $baseRate = 400;
public $coffeeConsumption = 15;
public $paperConsumption = 150;
}
class Engineer extends Employee
{
public $baseRate = 200;
public $coffeeConsumption = 5;
public $paperConsumption = 50;
}
class Analyst extends Employee
{
public $baseRate = 800;
public $coffeeConsumption = 50;
public $paperConsumption = 5;
}
class Department
{
public $name;
public $employees;
public function __construct ($name, $employees)
{
$this->name = $name;
$this->employees = $employees;
}
public function getEmployeesCount()
{
return count($this->employees); }
public function getEmployeesSalary()
{
$employeesSalary = 0;
foreach ($this->employees as $employee) {
$employeesSalary += $employee->getSalary();
}
return $employeesSalary;
}
public function getConsumptionOfCoffee()
{
$consumptionOfCoffee = 0;
foreach ($this->employees as $employee) {
$consumptionOfCoffee += $employee->coffeeConsumption;
}
return $consumptionOfCoffee;
}
public function getPaperConsumption()
{
$paperConsumption = 0;
foreach ($this->employees as $employee) {
$paperConsumption += $employee->paperConsumption;
}
return $paperConsumption;
}
public function getCostPerPage()
{
return round($this->getEmployeesSalary() / $this->getPaperConsumption(), 2); }
}
function generateEmployeesList ($name, $isChief, $rank, $count, $employees)
{
for ($i = 0; $i < $count; ++$i) {
$employees[] = new $name($isChief, $rank);
}
return $employees;
}
//Создаем департаменты
$employees = generateEmployeesList('Manager', 0, 1, 9, $employees);
$employees = generateEmployeesList('Manager', 0, 2, 3, $employees);
$employees = generateEmployeesList('Manager', 0, 3, 2, $employees);
$employees = generateEmployeesList('Marketing', 0, 1, 2, $employees);
$employees = generateEmployeesList('Manager', 1, 2, 1, $employees);
$departmentOfProcurement = new Department('Закупок', $employees);
$employees = generateEmployeesList('Manager', 0, 1, 12, $employees);
$employees = generateEmployeesList('Marketing', 0, 1, 6, $employees);
$employees = generateEmployeesList('Analyst', 0, 1, 3, $employees);
$employees = generateEmployeesList('Analyst', 0, 2, 2, $employees);
$employees = generateEmployeesList('Marketing', 1, 2, 1, $employees);
$salesDepartment = new Department('Продаж', $employees);
$employees = generateEmployeesList('Marketing', 0, 1, 15, $employees);
$employees = generateEmployeesList('Marketing', 0, 2, 10, $employees);
$employees = generateEmployeesList('Manager', 0, 1, 8, $employees);
$employees = generateEmployeesList('Engineer', 0, 1, 2, $employees);
$employees = generateEmployeesList('Marketing', 1, 3, 1, $employees);
$departmentOfAdvertising = new Department('Рекламы', $employees);
$employees = generateEmployeesList('Manager', 0, 1, 13, $employees);
$employees = generateEmployeesList('Manager', 0, 2, 5, $employees);
$employees = generateEmployeesList('Engineer', 0, 1, 5, $employees);
$employees = generateEmployeesList('Manager', 1, 1, 1, $employees);
$logisticDepartment = new Department('Логистики', $employees);
echo "Сотрудников " . $departmentOfProcurement->getEmployeesCount() . "\n";
echo "Зарплата " . $departmentOfProcurement->getEmployeesSalary() . "\n";
echo "Кофе " . $departmentOfProcurement->getConsumptionOfCoffee() . "\n";
echo "Страниц " . $departmentOfProcurement->getPaperConsumption() . "\n";
echo "Стоимость страницы " . $departmentOfProcurement->getCostPerPage() . "\n";
PD9waHAKCmNsYXNzIEVtcGxveWVlCnsKICAgIHB1YmxpYyAkaXNDaGllZjsKICAgIHB1YmxpYyAkcmFuazsKCiAgICBwdWJsaWMgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJGlzQ2hpZWYsICRyYW5rKQogICAgewogICAgICAgICR0aGlzLT5pc0NoaWVmID0gJGlzQ2hpZWY7CiAgICAgICAgJHRoaXMtPnJhbmsgPSAkcmFuazsKCiAgICAgICAgaWYgKCRpc0NoaWVmID09IDEpIHsKICAgICAgICAgICAgJHRoaXMtPmNvZmZlZUNvbnN1bXB0aW9uICo9IDI7CiAgICAgICAgICAgICR0aGlzLT5wYXBlckNvbnN1bXB0aW9uID0gMDsKICAgICAgICB9CiAgICB9CiAgICBwdWJsaWMgZnVuY3Rpb24gZ2V0U2FsYXJ5KCkKICAgIHsKICAgICAgICAkc2FsYXJ5ID0gJHRoaXMtPmJhc2VSYXRlOwogICAgICAgIGlmICgkdGhpcy0+cmFuayA9PSAyKSB7CiAgICAgICAgICAgICRzYWxhcnkgKj0gMS4yNTsKICAgICAgICB9IGVsc2VpZiAoJHRoaXMtPnJhbmsgPT0gMykgewogICAgICAgICAgICAkc2FsYXJ5ICo9IDEuNTsKICAgICAgICB9CiAgICAgICAgaWYgKCR0aGlzLT5pc0NoaWVmID09IDEpIHsKICAgICAgICAgICAgJHNhbGFyeSAqPSAxLjU7CiAgICAgICAgfQogICAgICAgIHJldHVybiAkc2FsYXJ5OwogICAgfQp9CgpjbGFzcyBNYW5hZ2VyIGV4dGVuZHMgRW1wbG95ZWUKewogICAgcHVibGljICRiYXNlUmF0ZSA9IDUwMDsKICAgIHB1YmxpYyAkY29mZmVlQ29uc3VtcHRpb24gPSAyMDsKICAgIHB1YmxpYyAkcGFwZXJDb25zdW1wdGlvbiA9IDIwMDsKfQoKY2xhc3MgTWFya2V0aW5nIGV4dGVuZHMgRW1wbG95ZWUKewogICAgcHVibGljICRiYXNlUmF0ZSA9IDQwMDsKICAgIHB1YmxpYyAkY29mZmVlQ29uc3VtcHRpb24gPSAxNTsKICAgIHB1YmxpYyAkcGFwZXJDb25zdW1wdGlvbiA9IDE1MDsKfQoKY2xhc3MgRW5naW5lZXIgZXh0ZW5kcyBFbXBsb3llZQp7CiAgICBwdWJsaWMgJGJhc2VSYXRlID0gMjAwOwogICAgcHVibGljICRjb2ZmZWVDb25zdW1wdGlvbiA9IDU7CiAgICBwdWJsaWMgJHBhcGVyQ29uc3VtcHRpb24gPSA1MDsKfQoKY2xhc3MgQW5hbHlzdCBleHRlbmRzIEVtcGxveWVlCnsKICAgIHB1YmxpYyAkYmFzZVJhdGUgPSA4MDA7CiAgICBwdWJsaWMgJGNvZmZlZUNvbnN1bXB0aW9uID0gNTA7CiAgICBwdWJsaWMgJHBhcGVyQ29uc3VtcHRpb24gPSA1Owp9CgpjbGFzcyBEZXBhcnRtZW50CnsKICAgIHB1YmxpYyAkbmFtZTsKICAgIHB1YmxpYyAkZW1wbG95ZWVzOwoKICAgIHB1YmxpYyBmdW5jdGlvbiBfX2NvbnN0cnVjdCAoJG5hbWUsICRlbXBsb3llZXMpCiAgICB7CiAgICAgICAgJHRoaXMtPm5hbWUgPSAkbmFtZTsKICAgICAgICAkdGhpcy0+ZW1wbG95ZWVzID0gJGVtcGxveWVlczsKICAgIH0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRFbXBsb3llZXNDb3VudCgpCiAgICB7CiAgICAgICAgcmV0dXJuIGNvdW50KCR0aGlzLT5lbXBsb3llZXMpOwogICAgfQogICAgcHVibGljIGZ1bmN0aW9uIGdldEVtcGxveWVlc1NhbGFyeSgpCiAgICB7CiAgICAgICAgJGVtcGxveWVlc1NhbGFyeSA9IDA7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmVtcGxveWVlcyBhcyAkZW1wbG95ZWUpIHsKICAgICAgICAgICAgJGVtcGxveWVlc1NhbGFyeSArPSAkZW1wbG95ZWUtPmdldFNhbGFyeSgpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gJGVtcGxveWVlc1NhbGFyeTsKICAgIH0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb25zdW1wdGlvbk9mQ29mZmVlKCkKICAgIHsKICAgICAgICAkY29uc3VtcHRpb25PZkNvZmZlZSA9IDA7CiAgICAgICAgZm9yZWFjaCAoJHRoaXMtPmVtcGxveWVlcyBhcyAkZW1wbG95ZWUpIHsKICAgICAgICAgICAgJGNvbnN1bXB0aW9uT2ZDb2ZmZWUgKz0gJGVtcGxveWVlLT5jb2ZmZWVDb25zdW1wdGlvbjsKICAgICAgICB9CiAgICAgICAgcmV0dXJuICRjb25zdW1wdGlvbk9mQ29mZmVlOwogICAgfQogICAgcHVibGljIGZ1bmN0aW9uIGdldFBhcGVyQ29uc3VtcHRpb24oKQogICAgewogICAgICAgICRwYXBlckNvbnN1bXB0aW9uID0gMDsKICAgICAgICBmb3JlYWNoICgkdGhpcy0+ZW1wbG95ZWVzIGFzICRlbXBsb3llZSkgewogICAgICAgICAgICAkcGFwZXJDb25zdW1wdGlvbiArPSAkZW1wbG95ZWUtPnBhcGVyQ29uc3VtcHRpb247CiAgICAgICAgfQogICAgICAgIHJldHVybiAkcGFwZXJDb25zdW1wdGlvbjsKICAgIH0KICAgIHB1YmxpYyBmdW5jdGlvbiBnZXRDb3N0UGVyUGFnZSgpCiAgICB7CiAgICAgICAgcmV0dXJuIHJvdW5kKCR0aGlzLT5nZXRFbXBsb3llZXNTYWxhcnkoKSAvICR0aGlzLT5nZXRQYXBlckNvbnN1bXB0aW9uKCksIDIpOwogICAgfQp9CgpmdW5jdGlvbiBnZW5lcmF0ZUVtcGxveWVlc0xpc3QgKCRuYW1lLCAkaXNDaGllZiwgJHJhbmssICRjb3VudCwgJGVtcGxveWVlcykKewogICAgZm9yICgkaSA9IDA7ICRpIDwgJGNvdW50OyArKyRpKSB7CiAgICAgICAgJGVtcGxveWVlc1tdID0gbmV3ICRuYW1lKCRpc0NoaWVmLCAkcmFuayk7CiAgICB9CiAgICByZXR1cm4gJGVtcGxveWVlczsKfQoKLy/QodC+0LfQtNCw0LXQvCDQtNC10L/QsNGA0YLQsNC80LXQvdGC0YsKJGVtcGxveWVlcyA9IGFycmF5KCk7CiRlbXBsb3llZXMgPSBnZW5lcmF0ZUVtcGxveWVlc0xpc3QoJ01hbmFnZXInLCAwLCAxLCA5LCAkZW1wbG95ZWVzKTsKJGVtcGxveWVlcyA9IGdlbmVyYXRlRW1wbG95ZWVzTGlzdCgnTWFuYWdlcicsIDAsIDIsIDMsICRlbXBsb3llZXMpOwokZW1wbG95ZWVzID0gZ2VuZXJhdGVFbXBsb3llZXNMaXN0KCdNYW5hZ2VyJywgMCwgMywgMiwgJGVtcGxveWVlcyk7CiRlbXBsb3llZXMgPSBnZW5lcmF0ZUVtcGxveWVlc0xpc3QoJ01hcmtldGluZycsIDAsIDEsIDIsICRlbXBsb3llZXMpOwokZW1wbG95ZWVzID0gZ2VuZXJhdGVFbXBsb3llZXNMaXN0KCdNYW5hZ2VyJywgMSwgMiwgMSwgJGVtcGxveWVlcyk7CiRkZXBhcnRtZW50T2ZQcm9jdXJlbWVudCA9IG5ldyBEZXBhcnRtZW50KCfQl9Cw0LrRg9C/0L7QuicsICRlbXBsb3llZXMpOwoKJGVtcGxveWVlcyA9IGFycmF5KCk7CiRlbXBsb3llZXMgPSBnZW5lcmF0ZUVtcGxveWVlc0xpc3QoJ01hbmFnZXInLCAwLCAxLCAxMiwgJGVtcGxveWVlcyk7CiRlbXBsb3llZXMgPSBnZW5lcmF0ZUVtcGxveWVlc0xpc3QoJ01hcmtldGluZycsIDAsIDEsIDYsICRlbXBsb3llZXMpOwokZW1wbG95ZWVzID0gZ2VuZXJhdGVFbXBsb3llZXNMaXN0KCdBbmFseXN0JywgMCwgMSwgMywgJGVtcGxveWVlcyk7CiRlbXBsb3llZXMgPSBnZW5lcmF0ZUVtcGxveWVlc0xpc3QoJ0FuYWx5c3QnLCAwLCAyLCAyLCAkZW1wbG95ZWVzKTsKJGVtcGxveWVlcyA9IGdlbmVyYXRlRW1wbG95ZWVzTGlzdCgnTWFya2V0aW5nJywgMSwgMiwgMSwgJGVtcGxveWVlcyk7CiRzYWxlc0RlcGFydG1lbnQgPSBuZXcgRGVwYXJ0bWVudCgn0J/RgNC+0LTQsNC2JywgJGVtcGxveWVlcyk7CgokZW1wbG95ZWVzID0gYXJyYXkoKTsKJGVtcGxveWVlcyA9IGdlbmVyYXRlRW1wbG95ZWVzTGlzdCgnTWFya2V0aW5nJywgMCwgMSwgMTUsICRlbXBsb3llZXMpOwokZW1wbG95ZWVzID0gZ2VuZXJhdGVFbXBsb3llZXNMaXN0KCdNYXJrZXRpbmcnLCAwLCAyLCAxMCwgJGVtcGxveWVlcyk7CiRlbXBsb3llZXMgPSBnZW5lcmF0ZUVtcGxveWVlc0xpc3QoJ01hbmFnZXInLCAwLCAxLCA4LCAkZW1wbG95ZWVzKTsKJGVtcGxveWVlcyA9IGdlbmVyYXRlRW1wbG95ZWVzTGlzdCgnRW5naW5lZXInLCAwLCAxLCAyLCAkZW1wbG95ZWVzKTsKJGVtcGxveWVlcyA9IGdlbmVyYXRlRW1wbG95ZWVzTGlzdCgnTWFya2V0aW5nJywgMSwgMywgMSwgJGVtcGxveWVlcyk7CiRkZXBhcnRtZW50T2ZBZHZlcnRpc2luZyA9IG5ldyBEZXBhcnRtZW50KCfQoNC10LrQu9Cw0LzRiycsICRlbXBsb3llZXMpOwoKJGVtcGxveWVlcyA9IGFycmF5KCk7CiRlbXBsb3llZXMgPSBnZW5lcmF0ZUVtcGxveWVlc0xpc3QoJ01hbmFnZXInLCAwLCAxLCAxMywgJGVtcGxveWVlcyk7CiRlbXBsb3llZXMgPSBnZW5lcmF0ZUVtcGxveWVlc0xpc3QoJ01hbmFnZXInLCAwLCAyLCA1LCAkZW1wbG95ZWVzKTsKJGVtcGxveWVlcyA9IGdlbmVyYXRlRW1wbG95ZWVzTGlzdCgnRW5naW5lZXInLCAwLCAxLCA1LCAkZW1wbG95ZWVzKTsKJGVtcGxveWVlcyA9IGdlbmVyYXRlRW1wbG95ZWVzTGlzdCgnTWFuYWdlcicsIDEsIDEsIDEsICRlbXBsb3llZXMpOwokbG9naXN0aWNEZXBhcnRtZW50ID0gbmV3IERlcGFydG1lbnQoJ9Cb0L7Qs9C40YHRgtC40LrQuCcsICRlbXBsb3llZXMpOwoKZWNobyAi0KHQvtGC0YDRg9C00L3QuNC60L7QsiAiIC4gJGRlcGFydG1lbnRPZlByb2N1cmVtZW50LT5nZXRFbXBsb3llZXNDb3VudCgpIC4gIlxuIjsKZWNobyAi0JfQsNGA0L/Qu9Cw0YLQsCAiIC4gJGRlcGFydG1lbnRPZlByb2N1cmVtZW50LT5nZXRFbXBsb3llZXNTYWxhcnkoKSAuICJcbiI7CmVjaG8gItCa0L7RhNC1ICIgLiAkZGVwYXJ0bWVudE9mUHJvY3VyZW1lbnQtPmdldENvbnN1bXB0aW9uT2ZDb2ZmZWUoKSAuICJcbiI7CmVjaG8gItCh0YLRgNCw0L3QuNGGICIgLiAkZGVwYXJ0bWVudE9mUHJvY3VyZW1lbnQtPmdldFBhcGVyQ29uc3VtcHRpb24oKSAuICJcbiI7CmVjaG8gItCh0YLQvtC40LzQvtGB0YLRjCDRgdGC0YDQsNC90LjRhtGLICAiIC4gJGRlcGFydG1lbnRPZlByb2N1cmVtZW50LT5nZXRDb3N0UGVyUGFnZSgpIC4gIlxuIjs=