fork download
  1. <?php
  2.  
  3. class Company {
  4.  
  5. var $departments = [];
  6.  
  7. function __construct($departments) {
  8.  
  9. $this->departments = $departments;
  10.  
  11. }
  12.  
  13. public function totalEmployees()
  14. {
  15.  
  16. $totalEmployees = 0;
  17. foreach ($this->departments as $department){
  18. $totalEmployees += $department->dpEmployees($department->employees);
  19. }
  20. return $totalEmployees;
  21.  
  22. }
  23.  
  24. public function totalCoffeConsumption()
  25. {
  26.  
  27. $totalCoffeConsumption = 0;
  28. foreach ($this->departments as $department) {
  29. $totalCoffeConsumption += $department->dpCoffeConusmption($department->employees);
  30. }
  31. return $totalCoffeConsumption;
  32.  
  33. }
  34.  
  35. public function totalSalary()
  36. {
  37.  
  38. $totalSalary = 0;
  39. foreach ($this->departments as $department) {
  40. $totalSalary += $department->dpSalary($department->employees);
  41. }
  42. return $totalSalary;
  43.  
  44. }
  45.  
  46. public function totalReports()
  47. {
  48.  
  49. $totalReports = 0;
  50. foreach ($this->departments as $department) {
  51. $totalReports += $department->dpReports($department->employees);
  52. }
  53. return $totalReports;
  54.  
  55. }
  56.  
  57. public function totalMainReports()
  58. {
  59.  
  60. $totalMainReports = 0;
  61. foreach ($this->departments as $department) {
  62. $totalMainReports += $department->dpMainReports($department->employees);
  63. }
  64. return $totalMainReports;
  65.  
  66. }
  67.  
  68. public function totalBlueprints()
  69. {
  70.  
  71. $totalBlueprints = 0;
  72. foreach ($this->departments as $department) {
  73. $totalBlueprints += $department->dpBlueprints($department->employees);
  74. }
  75. return $totalBlueprints;
  76.  
  77. }
  78.  
  79. public function avarageEmployees()
  80. {
  81.  
  82. return $avarageEmployees = totalEmployees($this->departments) / count($this->departments);
  83.  
  84. }
  85.  
  86. }
  87.  
  88. class Department
  89. {
  90.  
  91. var $employees = [];
  92.  
  93. function __construct($name, $employees)
  94. {
  95.  
  96. $this->name = $name;
  97. $this->employees = $employees;
  98.  
  99. }
  100.  
  101. public function dpEmployees()
  102. {
  103.  
  104. return count($this->employees);
  105.  
  106. }
  107.  
  108. public function dpCoffeConusmption ()
  109. {
  110.  
  111. $dpCoffeConsumption = 0;
  112. foreach ($this->employees as $employee){
  113. if ($employee->isBoss == true) {
  114. $dpCoffeConsumption += $employee->amountOfCoffe * 2;
  115. } else {
  116. $dpCoffeConsumption += $employee->amountOfCoffe;
  117. }
  118. }
  119. return $dpCoffeConsumption;
  120.  
  121. }
  122.  
  123. public function dpSalary ()
  124. {
  125.  
  126. $dpSalary = 0;
  127. foreach ($this->employees as $employee) {
  128. if ($employee->rank == 3) {
  129. $dpSalary += $employee->baseSalary + ($employee->baseSalary * 0.5);
  130. } elseif ($employee->rank == 2) {
  131. $dpSalary += $employee->baseSalary + ($employee->baseSalary * 0.25);
  132. } else {
  133. $dpSalary += $employee->baseSalary;
  134. }
  135. }
  136. return $dpSalary;
  137. }
  138.  
  139. public function dpReports ()
  140. {
  141.  
  142. $dpReports = 0;
  143. foreach ($this->employees as $employee) {
  144. $dpReports += $employee->reports;
  145. }
  146. return $dpReports;
  147. }
  148.  
  149. public function dpBlueprints ()
  150. {
  151.  
  152. $dpBlueprints = 0;
  153. foreach ($this->employees as $employee) {
  154. $dpBlueprints += $employee->blueprints;
  155. }
  156. return $dpBlueprints;
  157. }
  158.  
  159. public function dpMainReports ()
  160. {
  161.  
  162. $dpMainReports = 0;
  163. foreach ($this->employees as $employee) {
  164. $dpMainReports += $employee->mainReports;
  165. }
  166. return $dpMainReports;
  167. }
  168.  
  169.  
  170.  
  171.  
  172. }
  173.  
  174. class Employee
  175. {
  176. function __construct ($rank, $isBoss)
  177. {
  178. $this->isBoss = $isBoss;
  179. $this->rank = $rank;
  180.  
  181. }
  182.  
  183. public $amountOfCoffe;
  184. public $baseSalary;
  185. public $reports;
  186. public $mainReports;
  187. public $blueprints;
  188.  
  189. }
  190.  
  191. class Manager extends Employee
  192. {
  193.  
  194. public $baseSalary = 500;
  195. public $amountOfCoffe = 25;
  196. public $reports = 200;
  197.  
  198. }
  199.  
  200. class Engeneer extends Employee
  201. {
  202.  
  203. public $baseSalary = 200;
  204. public $amountOfCoffe = 5;
  205. public $blueprints = 50;
  206.  
  207. }
  208.  
  209. class Marketolog extends Employee
  210. {
  211.  
  212. public $baseSalary = 400;
  213. public $amountOfCoffe = 20;
  214. public $reports = 150;
  215.  
  216. }
  217.  
  218. class Analyst extends Employee
  219. {
  220.  
  221. public $baseSalary = 800;
  222. public $amountOfCoffe = 45;
  223. public $mainReports = 5;
  224.  
  225. }
  226.  
  227.  
  228. $pdEmployees = [
  229. $pdBoss = new Manager(2, true),
  230. $pdMe = new Manager(1, false),
  231. $pdMe = new Manager(1, false),
  232. $pdMe = new Manager(1, false),
  233. $pdMe = new Manager(1, false),
  234. $pdMe = new Manager(1, false),
  235. $pdMe = new Manager(1, false),
  236. $pdMe = new Manager(1, false),
  237. $pdMe = new Manager(1, false),
  238. $pdMe = new Manager(1, false),
  239. $pdMe = new Manager(2, false),
  240. $pdMe = new Manager(2, false),
  241. $pdMe = new Manager(2, false),
  242. $pdMe = new Manager(3, false),
  243. $pdMe = new Manager(3, false),
  244. ];
  245. $sdEmployees = [
  246. $sdBoss = new Marketolog(2, true),
  247. $sdMe = new Manager(1, false),
  248. $sdMe = new Manager(1, false),
  249. $sdMe = new Manager(1, false),
  250. $sdMe = new Manager(1, false),
  251. $sdMe = new Manager(1, false),
  252. $sdMe = new Manager(1, false),
  253. $sdMe = new Manager(1, false),
  254. $sdMe = new Manager(1, false),
  255. $sdMe = new Manager(1, false),
  256. $sdMe = new Manager(1, false),
  257. $sdMe = new Manager(1, false),
  258. $sdMe = new Manager(1, false),
  259. $sdMa = new Marketolog(1, false),
  260. $sdMa = new Marketolog(1, false),
  261. $sdMa = new Marketolog(1, false),
  262. $sdMa = new Marketolog(1, false),
  263. $sdMa = new Marketolog(1, false),
  264. $sdMa = new Marketolog(1, false),
  265. $sdMa = new Marketolog(1, false),
  266. $sdMa = new Marketolog(1, false),
  267. $sdMa = new Marketolog(1, false),
  268. $sdMa = new Marketolog(1, false),
  269. $sdAn = new Analyst(1, false),
  270. ];
  271. $mdEmployees = [
  272. $mdBoss = new Marketolog(3, true),
  273. $mdMa = new Marketolog(1, false),
  274. $mdMa = new Marketolog(1, false),
  275. $mdMa = new Marketolog(1, false),
  276. $mdMa = new Marketolog(1, false),
  277. $mdMa = new Marketolog(1, false),
  278. $mdMa = new Marketolog(1, false),
  279. $mdMa = new Marketolog(1, false),
  280. $mdMa = new Marketolog(1, false),
  281. $mdMa = new Marketolog(1, false),
  282. $mdMa = new Marketolog(1, false),
  283. $mdMa = new Marketolog(1, false),
  284. $mdMa = new Marketolog(1, false),
  285. $mdMa = new Marketolog(1, false),
  286. $mdMa = new Marketolog(1, false),
  287. $mdMa = new Marketolog(1, false),
  288. $mdMa = new Marketolog(2, false),
  289. $mdMa = new Marketolog(2, false),
  290. $mdMa = new Marketolog(2, false),
  291. $mdMa = new Marketolog(2, false),
  292. $mdMa = new Marketolog(2, false),
  293. $mdMa = new Marketolog(2, false),
  294. $mdMa = new Marketolog(2, false),
  295. $mdMa = new Marketolog(2, false),
  296. $mdMa = new Marketolog(2, false),
  297. $mdMa = new Marketolog(2, false),
  298. $mdMe = new Manager(1, false),
  299. $mdMe = new Manager(1, false),
  300. $mdMe = new Manager(1, false),
  301. $mdMe = new Manager(1, false),
  302. $mdMe = new Manager(1, false),
  303. $mdMe = new Manager(1, false),
  304. $mdMe = new Manager(1, false),
  305. $mdMe = new Manager(1, false),
  306. $mdEn = new Engeneer(1, false),
  307. $mdEn = new Engeneer(1, false),
  308. $mdEn = new Engeneer(1, false),
  309. $mdEn = new Engeneer(1, false),
  310. $mdEn = new Engeneer(1, false),
  311. ];
  312. $ldEmployees = [
  313. $ldBoss = new Manager(1, true),
  314. $ldMe = new Manager(1, false),
  315. $ldMe = new Manager(1, false),
  316. $ldMe = new Manager(1, false),
  317. $ldMe = new Manager(1, false),
  318. $ldMe = new Manager(1, false),
  319. $ldMe = new Manager(1, false),
  320. $ldMe = new Manager(1, false),
  321. $ldMe = new Manager(1, false),
  322. $ldMe = new Manager(1, false),
  323. $ldMe = new Manager(1, false),
  324. $ldMe = new Manager(1, false),
  325. $ldMe = new Manager(1, false),
  326. $ldMe = new Manager(1, false),
  327. $ldMe = new Manager(2, false),
  328. $ldMe = new Manager(2, false),
  329. $ldMe = new Manager(2, false),
  330. $ldMe = new Manager(2, false),
  331. $ldMe = new Manager(2, false),
  332. $ldEn = new Engeneer(1, false),
  333. $ldEn = new Engeneer(1, false),
  334. $ldEn = new Engeneer(1, false),
  335. $ldEn = new Engeneer(1, false),
  336. $ldEn = new Engeneer(1, false),
  337. ];
  338. $pdDepartment = new Department("Purchase", $pdEmployees);
  339. $mdDepartment = new Department("Marketing", $mdEmployees);
  340. $sdDepartment = new Department("Sellers", $sdEmployees);
  341. $ldDepartment = new Department("Logistic", $ldEmployees);
  342.  
  343.  
  344. $departments = [$pdDepartment, $sdDepartment, $mdDepartment, $ldDepartment];
  345.  
  346. $company = new Company($departments);
  347.  
  348.  
  349. foreach ($departments as $department){
  350. echo $department->name . "Department" . "\n" .
  351. "Employees: " . $department->dpEmployees() . "\n" .
  352. "Coffe: " . $department->dpCoffeConusmption() . "\n" .
  353. "Salary: " . $department->dpSalary() . "\n" .
  354. "Reports: " . $department->dpReports() . "\n" .
  355. "MainReports: " . $department->dpMainReports() . "\n" .
  356. "Blueprints: " . $department->dpBlueprints() . "\n" ;
  357.  
  358. echo str_repeat("__", 30) . "\n";
  359. }
  360.  
  361. echo "Total Employees: " . $company->totalEmployees($departments) . "\n" .
  362. "Total coffe: " . $company->totalCoffeConsumption($departments) . "\n" .
  363. "Total salary: " . $company->totalSalary($departments) . "\n" .
  364. "Total reports: " . $company->totalReports($departments) . "\n" .
  365. "Total main reports: " . $company->totalMainReports($departments) . "\n" .
  366. "Total blueprints: " . $company->totalBlueprints($departments) . "\n";
  367.  
  368. echo str_repeat("__", 30) . "\n";
  369.  
  370. echo "Avarage Employees: " . round($company->totalEmployees($departments) / count($departments), 2) . "\n" .
  371. "Avarage coffe: " . round($company->totalCoffeConsumption($departments) / count($departments), 2) . "\n" .
  372. "Avarage salary: " . round($company->totalSalary($departments) / count($departments), 2) . "\n" .
  373. "Avarage reports: " . round($company->totalReports($departments) / count($departments), 2) . "\n" .
  374. "Avarage main reports: " . round($company->totalMainReports($departments) / count($departments), 2) . "\n" .
  375. "Avarage blueprints: " . round($company->totalBlueprints($departments) / count($departments), 2) . "\n";
  376.  
Success #stdin #stdout 0.03s 23512KB
stdin
Standard input is empty
stdout
PurchaseDepartment
Employees: 15
Coffe: 400
Salary: 8500
Reports: 3000
MainReports: 0
Blueprints: 0
____________________________________________________________
SellersDepartment
Employees: 24
Coffe: 585
Salary: 11300
Reports: 4050
MainReports: 5
Blueprints: 0
____________________________________________________________
MarketingDepartment
Employees: 39
Coffe: 765
Salary: 16600
Reports: 5500
MainReports: 0
Blueprints: 250
____________________________________________________________
LogisticDepartment
Employees: 24
Coffe: 525
Salary: 11125
Reports: 3800
MainReports: 0
Blueprints: 250
____________________________________________________________
Total Employees: 102
Total coffe: 2275
Total salary: 47525
Total reports: 16350
Total main reports: 5
Total blueprints: 500
____________________________________________________________
Avarage Employees: 25.5
Avarage coffe: 568.75
Avarage salary: 11881.25
Avarage reports: 4087.5
Avarage main reports: 1.25
Avarage blueprints: 125