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.
 
 
 
 

114 lines
3.8 KiB

<?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';
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(30);
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',
]);
$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');
}
}