前回までの状況はこちら。
最新ソースはこちら(gitHub)
https://github.com/takishita2nd/hotel-mng
今回は予約時に部屋の鍵を解錠する番号を発行する、という処理を作ります。
まずはマイグレーション。
class AddLockNumberUsersReserve extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('reserve_managements', function (Blueprint $table) {
$table->string('lock_number');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('reserve_managements', function (Blueprint $table) {
$table->dropColumn('lock_number');
});
}
}
解錠ナンバーは予約テーブルに追加しました。
解錠するときは、入力日時と部屋番号、解錠ナンバーがインプットとなり、一致すれば解錠される、という仕組みを考えています。
では、予約登録処理。
public function add($param, $room, $user)
{
Log::debug(print_r($param ,true));
$model = new ReserveManagement;
foreach($this->paramNames as $name)
{
$model->$name = $param[$name];
}
$model->lock_number = $this->generateLockNumber();
$model->save();
$this->attachToRoom($model, $room);
$this->attachToSchedule($model);
$this->attachToUser($model, $user);
}
generateLockNumber()という関数を追加しました。
この関数で解錠ナンバーを作成します。
これは、予約登録時に作成され、編集を行っても変更しません。
では、generateLockNumber()の実装。
public function generateLockNumber()
{
return rand(0,9).rand(0,9).rand(0,9).rand(0,9);
}
簡単で、0〜9の範囲の数字をrand()で発生させ、それを4つつなげるだけです。
うまくできたようです。
次回は、これをQRコードに変換する処理を作成します。