'if_exist|numeric', 'user_id' => 'if_exist|trim|string', 'passwd' => 'if_exist|trim|string', // 'confirmpassword' => 'if_exist|trim|matches[passwd]', 'user_name' => 'if_exist|trim|string', 'user_state' => 'if_exist|trim|string', 'user_email' => 'if_exist|trim|valid_email', 'user_level' => 'if_exist|numeric', 'user_point' => 'if_exist|numeric', // 'proxied' => 'if_exist|in_list[on,off]', // 'fixed' => 'if_exist|in_list[on,off]', // 'locked' => 'if_exist|in_list[on,off]', // 'updated_at' => 'if_exist|valid_date', // 'created_at' => 'if_exist|valid_date', ]; public function setPoint(UserEntity $entity, int $point, $sign = '+'): UserEntity { switch ($sign) { case '-': if ($entity->getPoint() < $point) { throw new \Exception("기존포인트:{$entity->getPoint()}가 감소 포인트:-{$point} 작습니다.\n"); } $entity->setPoint($entity->getPoint() - $point); break; case '+': $entity->setPoint($entity->getPoint() + $point); break; default: throw new \Exception("{$sign}에 해당하는 작업은 수행할수 없습니다.\n"); // break; } return $this->setEntity($entity); } private function getLevelByPoint(UserEntity $entity): int { return intval($entity->getPoint() / MANGBOARD['point']['unit'] * MANGBOARD['point']['unit'] / MANGBOARD['point']['unit']); } final public function setLevel(UserEntity $entity): UserEntity { //관리자면 변경불가 if ($entity->getUserID() == MANGBOARD['admin']['level']) { return $entity; } //운영자면 변경불가 if (MANGBOARD['manager']['level']['min'] <= $entity->getLevel() <= MANGBOARD['manager']['level']['max']) { return $entity; } //사용자 Point별 Level 계산 $level = $this->getLevelByPoint($entity); //사용자 Level 1~5; $level = $level < MANGBOARD['user']['level']['min'] ? MANGBOARD['user']['level']['min'] : $level; $level = MANGBOARD['user']['level']['max'] < $level ? MANGBOARD['user']['level']['max'] : $level; $entity->setLevel($level); return $this->setEntity($entity); } }