複数の医師のキャビネットから1人の医師との会議を予約できるように、利用可能な時間帯の日単位のカレンダーを作成する必要があります。オーバーラップするタイムスロットの配列を無効にする方法
私は
がところで私はLaravel 5.5
を使用ここでは一例です。..この説明は、すでにあまりにも奇妙ではないことを願っています:キャビネットの
デフォルトスケジュール:19時00分9:00
医師1は月曜日で、彼は唯一の役に立つだろうと述べている月曜日に、彼は夜03時
医師2に13:00からのみ利用可能になるだろうと述べています10時から14時00分
にでき、私は利用可能なタイムスロット照会する場合:
$ids = Doctor::all()->pluck('id');
$workingSchedules = WorkingSchedule::whereIn('user_id', $ids)
->orderBy('start_date')
->whereDate('start_date', '=', $this->datetime->format('Y-m-d'))
->get();
を私が取得:
0 => [
"start_date" => "2017-09-18 10:00:00"
"end_date" => "2017-09-18 14:00:00"
]
1 => [
"start_date" => "2017-09-18 13:00:00"
"end_date" => "2017-09-18 15:00:00"
]
そして何もデータベースから現れていないならば、私はデフォルトを使用キャビネット時間。
次に、Carbon diffInMinutes()
メソッドを使用して、(ユーザーが選択できる)日付範囲の間に30分のタイムスロットの配列を作成します。私は、この例では2つのタイムスロットを持っていたよう
0 => [
"start_date" => "2017-09-18 10:00:00"
"end_date" => "2017-09-18 15:00:00"
]
が、それは簡単な解決策になるかもしれませんが、私は可能性があります:私のスクリプトは正しく機能させるためにため
とにかく、私は私がこれにお見せした結果を変換する必要があります
可能性のあるすべてのケースをカバーする洗練されたソリューションを見つけるのを誰かが助けてくれるのですか?
ありがとうございます。
デフォルトのスケジュールの役割は何ですか?結果を決定するのは無関係ですか? – trincot
医者1は13:00から15:00まで、医者2は16:00から17:00まで利用できますか? –
@trincot医師が就業予定を入力しない場合、デフォルトの営業時間が使用されるようになります。 –