いまはハンドシェイクの実装をやっているわけですね。メールに記載されたトークンつきURLにアクセスして許可するか拒否するかっていう簡単な仕組みですね。
ここを作り終えれば25日までの目標は達成できることになるので、できれば1日早い今日で完成させたいところですねって思ったんですが、動作確認する時間がなさそうなので諦めですね。とりあえず枠だけ作って、明日は一日バグフィクスですね・・・・・・。
バグがでなかったらいいなああり得ないけど。
さて、このフローでネックとなるロジックが、タイトルにあげた
日付期間の重複チェックです。
具体的にいうと、例えば9月26日から3泊するお客様を受け入れることにしたとしましょう。
その瞬間、同じ9月26日にハンドシェイクを送ってきた人全てにお断りの処理を入れなくてはなりませんね。ホテルと違って何部屋もないですし。まぁこの処理は簡単です。簡単に日付のカラムで検索をかければ良いだけですからね。
問題は連泊です。
まず1つ目のパターンとして、9月27日、9月28日が開始日になっている人も拒否対象になりますが、まぁこれは比較的簡単に導けますね。
もう一つの厄介なパターンが、9月25日から2泊、というハンドシェイクです。
DB上の情報は現状「開始日」+「連泊数」という情報しか持っていないので、その連泊数から終了する日付を計算しなくてはなりません。
これはSQL文でどう書けばいいんですかね?まぁ書けたところであまりにもコストがかかるように感じられ、将来性がないように思えますね。まぁ、こねくり回せば書けますが、もっとエレガントな方法がないのかと思って調べてみると、
なんだか良さそうな公式を見つけました。
つまり
「連泊数」だけでなく「宿泊終了日」もレコードに入れてしまえばいいわけですね。
ちょっと冗長な情報になりますが、現実的な解決策ではありますね。連泊数は計算で出せるので要らないっちゃ要らないんですが、フォーム上から送信する値なので入れといた方が利便性良さそうですね。
進度としては悪くないですが、これ以上今日は書くことがないのであとは明日・・・・・・。
ぶっちゃけ、殆ど既存の知識で作ってるからとりたてて日記で書く必要ないんだよな、、、
とはいえ、Eloquentとか使うともちっと楽ができそうな感じもしなくもないみたいな記事を見つけてしまって、うーんって感じ。
やっぱ自分でコード書きたくないよ(笑)(笑)(笑)(笑)しんどい(笑)(笑)(笑)(笑)
せっかくなのでおまけ。
今のとこ自分で書いて作ったファイルを広げてみるとこんな感じになります。結構な量を作っていますね・・・・・・。
実は以前作った
Anonymousよりファイル量としては多いです。ただ、一つ一つのコントローラーが肥大化しないように作り分けてるっていう功績もあるってだけでコード量としてはわかんないですけどね。
興味半分でAnonymousのメインコントローラーと思われるファイルを覗いてみたら500行超えてました。ただの神クラスですね。チラ見しただけでうわっ・・・・・・ってなってしまいました。(笑)
これからまだまだ書かなきゃいけないって考えると気が滅入りますね・・・・・・。時間をお金で買いたい・・・・・・つかれた・・・・・・(笑)
でも再就職とか絶対に無理というか、自分の性格上、一般的な社会人生活を送るのに絶大なストレスを感じることを確信持ってしまっているので、しんどくてもやらねばなりません、、、
まぁ考えてみりゃ当然なんですけどね。やろうと思えば(当たるかどうかは別として)ビジネスができるスキルを身に着けたのに、なんでそれを人に搾取されなあかんねんって思っちゃいますもんね。
あと、純粋に人に自分の生活リズム決められるのが腹立つんですよね(うわぁ)
なんで眠い時に寝られへんねん・・・・・・しんどい時は素直に寝たいねん(笑)(笑)(笑)(笑)みたいな(笑)(笑)
まぁそんなわがままを叶えるためには起業以外に道がないですしやるっきゃないんですけどね。