diff --git a/server/controllers/ticket/create.php b/server/controllers/ticket/create.php index 6b10b00a..46ddc615 100644 --- a/server/controllers/ticket/create.php +++ b/server/controllers/ticket/create.php @@ -50,7 +50,7 @@ class CreateController extends Controller { $ticket = new Ticket(); $ticket->setProperties(array( - 'ticketId' => '', + 'ticketNumber' => $ticket->generateUniqueTicketNumber(), 'title' => $this->title, 'content' => $this->content, 'language' => $this->language, diff --git a/server/libs/Hashing.php b/server/libs/Hashing.php index 7b296357..aa402cf5 100644 --- a/server/libs/Hashing.php +++ b/server/libs/Hashing.php @@ -10,4 +10,7 @@ class Hashing { public static function generateRandomToken() { return md5(uniqid(rand())); } + public static function getRandomTicketNumber($min,$max) { + return rand($min,$max); + } } \ No newline at end of file diff --git a/server/models/DataStore.php b/server/models/DataStore.php index 2799c289..f4d85991 100644 --- a/server/models/DataStore.php +++ b/server/models/DataStore.php @@ -16,6 +16,9 @@ abstract class DataStore { return ($bean) ? new static($bean) : new NullDataStore(); } + public static function count() { + RedBean::count(static::TABLE); + } private static function validateProp($propToValidate) { $validProp = false; diff --git a/server/models/Ticket.php b/server/models/Ticket.php index ff20334a..e39a3beb 100644 --- a/server/models/Ticket.php +++ b/server/models/Ticket.php @@ -29,7 +29,8 @@ class Ticket extends DataStore { public function getDefaultProps() { return array( - 'owner' => null + 'owner' => null, + 'ticketNumber' => $this->generateUniqueTicketNumber() ); } @@ -40,4 +41,20 @@ class Ticket extends DataStore { $this->author->store(); } } + public function generateUniqueTicketNumber() { + $ticketQuantity = Ticket::count('ticket'); + $minValue = 100000; + $maxValue = 999999; + + if ($ticketQuantity === 0) { + $ticketNumber = Hashing::getRandomTicketNumber($minValue, $maxValue); + } else { + $firstTicketNumber = Ticket::getTicket(1)->ticketNumber; + $gap = 176611; + + $ticketNumber = ($firstTicketNumber - $minValue + $ticketQuantity * $gap) % $maxValue + $minValue; + } + + return $ticketNumber; + } } \ No newline at end of file