32d2abe80b50c2380fe3a50c1d97f7df6484db59
[shipsimu.git] / application / ship-simu / main / personell / company / class_CompanyEmployee.php
1 <?php
2 /**
3  * Campany employees may be handled and payed within this class
4  *
5  * @author              Roland Haeder <webmaster@ship-simu.org>
6  * @version             0.0.0
7  * @copyright   Copyright (c) 2007, 2008 Roland Haeder, this is free software
8  * @license             GNU GPL 3.0 or any newer version
9  * @link                http://www.ship-simu.org
10  *
11  * This program is free software: you can redistribute it and/or modify
12  * it under the terms of the GNU General Public License as published by
13  * the Free Software Foundation, either version 3 of the License, or
14  * (at your option) any later version.
15  *
16  * This program is distributed in the hope that it will be useful,
17  * but WITHOUT ANY WARRANTY; without even the implied warranty of
18  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  * GNU General Public License for more details.
20  *
21  * You should have received a copy of the GNU General Public License
22  * along with this program. If not, see <http://www.gnu.org/licenses/>.
23  */
24 class CompanyEmployee extends SimulatorPersonell {
25         // Employeee list
26         private $employeeList = null;
27
28         // Constructor
29         protected function __construct () {
30                 // Call parent constructor
31                 parent::__construct(__CLASS__);
32
33                 // Set description
34                 $this->setObjectDescription("Firmenangestellte(r)");
35
36                 // Create unique ID
37                 $this->generateUniqueId();
38
39                 // Clean up a little
40                 $this->removeSystemArray();
41         }
42
43         // Generate a specified amount of personell
44         public final static function createCompanyEmployee ($surname, $family, $gender, $year, $month, $day, $married, $salary) {
45                 // Get instance
46                 $personellInstance = new CompanyEmployee();
47
48                 // Debug message
49                 if (((defined('DEBUG_COMPANY_EMPLOYEE')) && (defined('DEBUG_PERSONELL'))) || (defined('DEBUG_ALL'))) {
50                         $personellInstance->debugOutput(sprintf("[%s:%d] Der/Die Angestellte <strong>%s %s</strong> wird angelegt.",
51                                 __CLASS__,
52                                 __LINE__,
53                                 $surname,
54                                 $family
55                         ));
56                 }
57
58                 // Ist the given birthday valid?
59                 if ($personellInstance->isDateValid($year, $month, $day)) {
60                         // Set birthday
61                         $personellInstance->setBirthday($year, $month, $day);
62                 } else {
63                         // Something is wrong ...
64                         throw new BirthdayInvalidException(array($year, $month, $day), self::EXCEPTION_BIRTH_DATE_IS_INVALID);
65                 }
66
67                 // Set as employed/marrital status
68                 $personellInstance->setEmployed(true);
69                 $personellInstance->setMarried($married);
70
71                 // Set surname/family/gender
72                 $personellInstance->setSurname($surname);
73                 $personellInstance->setFamily($family);
74                 $personellInstance->setGender($gender);
75
76                 // Set salary
77                 $personellInstance->increaseSalary($salary);
78
79                 // Tidy up a little
80                 $personellInstance->removeEmployeeList();
81                 $personellInstance->removeMinMaxAge();
82
83                 // Return prepared instance
84                 return $personellInstance;
85         }
86
87         // Remove the employee list
88         private function removeEmployeeList () {
89                 unset($this->employeeList);
90         }
91 }
92
93 // [EOF]
94 ?>