I am trying to check the given input is already existed between the c_start and c_end through query, but it is not working. Here is my controller.. for example if person 1 booked a room from 10 to 12 then person can't book the same room at same date from 11 to 12 or any time between the existing booked time.
/* namespace App\booking; */
namespace App\Http\Controllers;
use App\booking;
use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Facades\Auth;
use DB;
use App\Quotation;
use DateTime;
class RoombookController extends Controller {
public function insert_check(Request $request) {
$roomname = $request->input('roomname');
$book = $request->input('bookdate');
$dbstime = explode(':', $request->input('starttime'));
$dbetime = explode(':', $request->input('endtime'));
$dbstime[0] = $dbstime[0] * 60;
$dbetime[0] = $dbetime[0] * 60;
$dbsum = array_sum($dbstime);
$dbesum = array_sum($dbetime);
$users = DB::table("bookings")
->select("id")
->where('bookdate', '=', $request->input('bookdate'))
->where('roomname', '=', $request->input('roomname'))
->where(function ($query){
$query->where('c_start', '<', $dbsum);
$query->orWhere('c_end', '>', $dbsum);
})
->orWhere(function($query){
$query->where('c_start', '<', $dbesum);
$query->orWhere('c_end', '>', $dbesum);
});
if ($users->count() == 0) {
$booking = new booking;
$booking->bookdate = $request->input('bookdate');
$booking->roomname = $request->input('roomname');
$booking->starttime = $startTime = $request->input('starttime');
$booking->endtime = $finishTime = $request->input('endtime');
$booking->purpose = $request->input('Purpose');
$booking->booked_by = Auth::user()->id;
$smstime = explode(':', $startTime);
$emstime = explode(':', $finishTime);
$smstime[0] = $smstime[0] * 60;
$emstime[0] = $emstime[0] * 60;
$startsum = array_sum($smstime);
$endsum = array_sum($emstime);
$booking_time = $startTime . ' to ' . $finishTime;
$booking->c_start = $startsum;
$booking->c_end = $endsum;
$booking->booking_time = $booking_time;
$time = ($etime - $stime) / 60;
$booking->total_duration = $time;
$booking->save();
return view("bookmessage");
} else {
return view("duplicateValue");
}
}
}