예제 #1
0
파일: Area.php 프로젝트: zyxist/cantiga
 public function update(Connection $conn)
 {
     $groupName = null;
     if (null !== $this->group) {
         $groupName = $this->group->getName();
     }
     if (!DataMappers::same($this->oldGroup, $this->group)) {
         DataMappers::recount($conn, CoreTables::GROUP_TBL, $this->oldGroup, $this->group, 'areaNum', 'id');
     }
     if (!DataMappers::same($this->oldStatus, $this->status)) {
         DataMappers::recount($conn, CoreTables::AREA_STATUS_TBL, $this->oldStatus, $this->status, 'areaNum', 'id');
     }
     if (!DataMappers::same($this->oldTerritory, $this->territory)) {
         DataMappers::recount($conn, CoreTables::TERRITORY_TBL, $this->oldTerritory, $this->territory, 'areaNum', 'id');
     }
     $this->entity->setName($this->name);
     $this->entity->update($conn);
     $this->lastUpdatedAt = time();
     return $conn->update(CoreTables::AREA_TBL, DataMappers::pick($this, ['name', 'group', 'territory', 'status', 'lastUpdatedAt', 'percentCompleteness'], ['customData' => json_encode($this->customData), 'groupName' => $groupName]), DataMappers::pick($this, ['id']));
 }
예제 #2
0
 public function remove(Connection $conn)
 {
     $this->status = $conn->fetchColumn('SELECT `status` FROM `' . CoreTables::AREA_REQUEST_TBL . '` WHERE `id` = :id', [':id' => $this->id]);
     if ($this->canRemove()) {
         DataMappers::recount($conn, CoreTables::TERRITORY_TBL, $this->territory, null, 'requestNum', 'id');
         $conn->delete(CoreTables::AREA_REQUEST_TBL, DataMappers::pick($this, ['id']));
     }
 }