【Laravel】【ホテル予約管理】予約時に解錠ナンバーを発行する。

前回までの状況はこちら。

最新ソースはこちら(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コードに変換する処理を作成します。