2 namespace Company\Entity;
4 use Doctrine\ORM\Mapping as ORM;
10 * @ORM\HasLifecycleCallbacks
11 * @ORM\Table(name="company_retail")
17 * Can archive records.
21 * Pull Synchronization Strategy for this table.
23 const PULL_SYNCH_STRATEGY = false;
25 * Push Synchronization Strategy for this table.
27 const PUSH_SYNCH_STRATEGY = false;
32 * @ORM\Column(type="integer");
33 * @ORM\GeneratedValue(strategy="AUTO")
38 * @ORM\ManyToOne(targetEntity="Company", inversedBy="retailers")
39 * @ORM\JoinColumn(name="company_id", referencedColumnName="id")
44 * @ORM\ManyToOne(targetEntity="\Retail\Entity\Retail")
45 * @ORM\JoinColumn(name="retail_id", referencedColumnName="id")
50 * @ORM\Column(type="string", length=150)
55 * @ORM\Column(type="string", length=150)
60 * @ORM\Column(type="string", length=64)
66 * @ORM\Column(type="datetime");
71 * @ORM\Column(type="datetime", nullable=true);
76 * @ORM\Column(type="boolean");
78 protected $archived = 0;
83 * Magic getter to expose protected properties.
84 * @param string $property
87 public function __get($property)
89 return $this->$property;
93 * Magic setter to save protected properties.
94 * @param string $property
97 public function __set($property, $value)
99 $this->$property = $value;
106 public function setCreateTime()
108 $this->created = new \DateTime("now");
109 $this->company = \Utility\Registry::resolveCompanyContext($this->company);
110 if (empty($this->name) || is_null($this->name))
112 $this->name = $this->retail->name;
119 public function setUpdateTime()
121 $this->updated = new \DateTime("now");
124 public function fromArray($data)
126 isset($data['company'])
127 && $this->company = $data['company'];
128 isset($data['retail'])
129 && $this->retail = $data['retail'];
131 && $this->name = $data['name'];
132 isset($data['username'])
133 && $this->username = $data['username'];
134 isset($data['password'])
135 && $this->password = $data['password'];
136 isset($data['archived'])
137 && $this->archived = $data['archived'];
140 public function toArray(
141 array $expand = array(), array $intersect = array(),
142 $showIdentifiers = false, $expandAll = 0
145 $intersect = array_flip($intersect);
146 $includeAll = empty($intersect);
147 $dateTimeFormat = \Utility\Definitions\Locale::getDateTimeFormat();
149 $data['id'] = $this->id;
150 ($includeAll || isset($intersect['company']))
151 && $data['company'] = (in_array('company', $expand) || $expandAll || $showIdentifiers)
152 && !is_null($this->company)
153 ? (!$showIdentifiers || in_array('company', $expand) ? $this->company->toArray(
154 $expand, $intersect, $showIdentifiers, ($expandAll - 1)
155 ) : $this->company->id)
157 ($includeAll || isset($intersect['retail']))
158 && $data['retail'] = (in_array('retail', $expand) || $expandAll || $showIdentifiers)
159 && !is_null($this->retail)
160 ? (!$showIdentifiers || in_array('retail', $expand) ? $this->retail->toArray(
161 $expand, $intersect, $showIdentifiers, ($expandAll - 1)
162 ) : $this->retail->id)
164 $data['name'] = $this->name;
165 $data['username'] = $this->username;
166 $data['password'] = $this->password;
167 $data['created'] = $this->created->format($dateTimeFormat);
168 $data['updated'] = !is_null($this->updated)
169 ? $this->updated->format($dateTimeFormat)
171 $data['archived'] = $this->archived;