You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
3.1 KiB
103 lines
3.1 KiB
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
|
|
|
|
use App\Models\Appointment;
|
|
use Illuminate\Http\Request;
|
|
|
|
class AppointmentController extends Controller
|
|
{
|
|
protected $view= 'admin.appointment.';
|
|
protected $redirect = 'admin/appointments';
|
|
|
|
public function index(){
|
|
$appointments = Appointment::orderBy('id','DESC');
|
|
if(\request('date')){
|
|
$key = \request('date');
|
|
$appointments = $appointments->whereDate('date',$key);
|
|
}
|
|
if(\request('status')){
|
|
$key = \request('status');
|
|
$appointments = $appointments->where('status',$key);
|
|
}
|
|
$appointments = $appointments->paginate(config('custom.per_page'));
|
|
return view($this->view.'index',compact('appointments'));
|
|
}
|
|
|
|
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',
|
|
]);
|
|
|
|
$appointment = new Appointment([
|
|
'date' => $request->get('date'),
|
|
'start_time' => $request->get('start_time'),
|
|
'end_time' => $request->get('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::find($id);
|
|
|
|
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',
|
|
]);
|
|
|
|
$appointment = Appointment::find($id);
|
|
$appointment->date = $request->get('date');
|
|
$appointment->start_time = $request->get('start_time');
|
|
$appointment->end_time = $request->get('end_time');
|
|
$appointment->location = $request->get('location');
|
|
$appointment->description = $request->get('description');
|
|
$appointment->service_type = $request->get('service_type');
|
|
$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');
|
|
}
|
|
}
|
|
|
|
|