|
|
|
<?php
|
|
|
|
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
|
|
|
|
|
|
|
|
|
use App\Models\Appointment;
|
|
|
|
use Illuminate\Http\Request;
|
|
|
|
use Carbon\Carbon;
|
|
|
|
|
|
|
|
class AppointmentController extends Controller
|
|
|
|
{
|
|
|
|
protected $view = 'admin.appointment.';
|
|
|
|
protected $redirect = 'admin/appointments';
|
|
|
|
// protected $service;
|
|
|
|
|
|
|
|
public function education_appointments()
|
|
|
|
{
|
|
|
|
$appointments = Appointment::where('service_type', '1')->orderBy('id', 'DESC');
|
|
|
|
if (\request('date')) {
|
|
|
|
$date = \request('date');
|
|
|
|
$appointments = $appointments->whereDate('date', $date);
|
|
|
|
}
|
|
|
|
if (\request('status')) {
|
|
|
|
$status = \request('status');
|
|
|
|
$appointments = $appointments->where('status', $status);
|
|
|
|
}
|
|
|
|
if (\request('is_booked')) {
|
|
|
|
$is_booked = (\request('is_booked')) == '1' ? true : false;
|
|
|
|
$appointments = $appointments->where('is_booked', $is_booked);
|
|
|
|
}
|
|
|
|
$appointments = $appointments->paginate(20);
|
|
|
|
$service = 'Education';
|
|
|
|
$is_booked = $is_booked ?? null;
|
|
|
|
$date = $date ?? null;
|
|
|
|
$status = $status ?? null;
|
|
|
|
return view($this->view . 'index', compact('appointments', 'service', 'is_booked', 'date', 'status'));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function visa_appointments()
|
|
|
|
{
|
|
|
|
$appointments = Appointment::where('service_type', '2')->orderBy('id', 'DESC');
|
|
|
|
if (\request('date')) {
|
|
|
|
$date = \request('date');
|
|
|
|
$appointments = $appointments->whereDate('date', $date);
|
|
|
|
}
|
|
|
|
if (\request('status')) {
|
|
|
|
$status = \request('status');
|
|
|
|
$appointments = $appointments->where('status', $status);
|
|
|
|
}
|
|
|
|
if (\request('is_booked')) {
|
|
|
|
|
|
|
|
$is_booked = (\request('is_booked')) == '1' ? true : false;
|
|
|
|
$appointments = $appointments->where('is_booked', $is_booked);
|
|
|
|
}
|
|
|
|
$appointments = $appointments->paginate(20);
|
|
|
|
$is_booked = $is_booked ?? null;
|
|
|
|
$date = $date ?? null;
|
|
|
|
$status = $status ?? null;
|
|
|
|
$service = 'Migration|Visa';
|
|
|
|
return view($this->view . 'index', compact('appointments', 'service', 'is_booked', 'date', 'status'));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function create()
|
|
|
|
{
|
|
|
|
return view($this->view . 'create');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function store(Request $request)
|
|
|
|
{
|
|
|
|
$request->validate([
|
|
|
|
'date' => 'required|date',
|
|
|
|
'start_time' => 'required|date_format:H:i',
|
|
|
|
'end_time' => 'required|date_format:H:i',
|
|
|
|
// 'location' => 'required|max:255',
|
|
|
|
// 'description' => 'required',
|
|
|
|
]);
|
|
|
|
$start_time = Carbon::createFromFormat('H:i', $request->get('start_time'))->format('H:i A');
|
|
|
|
$end_time = Carbon::createFromFormat('H:i', $request->get('end_time'))->format('H:i A');
|
|
|
|
$appointment = new Appointment([
|
|
|
|
'date' => $request->get('date'),
|
|
|
|
'start_time' => $start_time,
|
|
|
|
'end_time' => $end_time,
|
|
|
|
'location' => $request->get('location'),
|
|
|
|
'description' => $request->get('description'),
|
|
|
|
'service_type' => $request->get('service_type'),
|
|
|
|
]);
|
|
|
|
|
|
|
|
$appointment->save();
|
|
|
|
|
|
|
|
return redirect($this->redirect)->with('success', 'Appointment has been added');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function edit($id)
|
|
|
|
{
|
|
|
|
$appointment = Appointment::findorfail($id);
|
|
|
|
$start_time = explode(" ", $appointment->start_time);
|
|
|
|
$start_time = $start_time[0];
|
|
|
|
|
|
|
|
$end_time = explode(" ", $appointment->end_time);
|
|
|
|
$end_time = $end_time[0];
|
|
|
|
$appointment['start_time'] = $start_time;
|
|
|
|
$appointment['end_time'] = $end_time;
|
|
|
|
return view($this->view . 'edit', compact('appointment'));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function update(Request $request, $id)
|
|
|
|
{
|
|
|
|
$request->validate([
|
|
|
|
'date' => 'required|date',
|
|
|
|
'start_time' => 'required|date_format:H:i',
|
|
|
|
'end_time' => 'required|date_format:H:i',
|
|
|
|
// 'location' => 'required|max:255',
|
|
|
|
// 'description' => 'required',
|
|
|
|
]);
|
|
|
|
$start_time = Carbon::createFromFormat('H:i', $request->get('start_time'))->format('H:i A');
|
|
|
|
$end_time = Carbon::createFromFormat('H:i', $request->get('end_time'))->format('H:i A');
|
|
|
|
|
|
|
|
$appointment = Appointment::find($id);
|
|
|
|
$appointment->date = $request->get('date');
|
|
|
|
$appointment->start_time = $start_time;
|
|
|
|
$appointment->end_time = $end_time;
|
|
|
|
$appointment->location = $request->get('location');
|
|
|
|
$appointment->description = $request->get('description');
|
|
|
|
$appointment->service_type = $request->get('service_type');
|
|
|
|
$appointment->status = $request->get('status');
|
|
|
|
$appointment->save();
|
|
|
|
|
|
|
|
return redirect($this->redirect)->with('success', 'Appointment has been updated');
|
|
|
|
}
|
|
|
|
|
|
|
|
public function show($id)
|
|
|
|
{
|
|
|
|
$appointment = Appointment::with('appointment_booking_detail')->findorfail($id);
|
|
|
|
|
|
|
|
return view($this->view . 'show', compact('appointment'));
|
|
|
|
}
|
|
|
|
|
|
|
|
public function destroy($id)
|
|
|
|
{
|
|
|
|
$appointment = Appointment::find($id);
|
|
|
|
$appointment->delete();
|
|
|
|
|
|
|
|
return redirect($this->redirect)->with('success', 'Appointment has been deleted');
|
|
|
|
}
|
|
|
|
}
|