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'])); }
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'])); } }