HEX
Server: Apache
System: Linux c27.eelserver.com 5.14.0-503.22.1.el9_5.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Jan 24 03:55:12 EST 2025 x86_64
User: promosig (1506)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/promosig/testing-development.com/app/Http/Controllers/CoursesController.php
<?php

namespace App\Http\Controllers;

use App\Models\StaffMember;
use Illuminate\Http\Request;
use App\Models\Course;
use App\Models\Slots;
use Illuminate\Support\Str;
use App\Models\CourseSubscribe;
use Carbon\Carbon;
use DateTime;
use DateTimeZone;
class CoursesController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index()
    {
        try {
            $data= Course::where('status',1)->get();
            $staff=StaffMember::all();
        return view('front-app.courses',$data,);
        } catch (\Throwable $th) {
            return back()->with('error','Something went wrong');
        }

    }

    /**
     * Show the form for creating a new resource.
     */

     public function add_course(){
        try {
            return view('backend_app.courses.addcourse');
        } catch (\Throwable $th) {
            return back()->with('error',$th->getMessage());
        }
     }
    public function create(Request $request)
    {
        $request->validate([
            'name'=>'required',
            'price'=>'required',
        ]);
            $data= new course;
            $data->name=$request->name;
            $url = $request->name;
            $slug = Str::slug($url, '-'); // Slugify the URL
            $hyphenatedUrl = str_replace(' ', '-', $slug);
            $data->slug = $hyphenatedUrl;
            $data->price=$request->price;
            $data->sale_price=$request->sale_price;
            $data->description=$request->description;

            $data->video=$request->video_link;

            $data->order_number=$request->order_number;
            $data->seats=$request->seats;
            $data->meta_title=$request->meta_title;
            $data->meta_description=$request->meta_description;

            if ($request->hasFile('img')) {
                $image=$request->file('img');
                $imgname=$request->file('img')->getClientOriginalName();
                $img = Str::slug($imgname, '-'); // Slugify the URL
                $imgconcate = str_replace(' ', '-', $img);
                $destinationpath=public_path('assets/courses/');
                $image->move($destinationpath,$imgconcate);
                $data->img=$imgconcate;
            }
            $data->save();
            return redirect(route('all-courses'))->with('success',$data->name.' has been added');
    }


    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     */
    public function show()
    {
        try {
            $data= Course::with('slots')->paginate(5);
            $all_courses= Course::with('slots')->where('status',1)->get();

            $staff=StaffMember::all();
        return view('backend_app.courses.courses',compact('data','staff','all_courses'));
        } catch (\Throwable $th) {
            return back()->with('error','Something went wrong');
        }

    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit($id)
    {
        try {
            $data=Course::find($id);
            return view('backend_app.courses.edit_course',compact('data'));
        } catch (\Throwable $th) {
            return back()->with('eror','Something went wrong');
        }

    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request,$id)
    {

        $request->validate([
            'name'=>'required',
            'price'=>'required',
        ]);

        try {
            $data=Course::find($id);
            $data->name=$request->name;
            $url = $request->name;
            $slug = Str::slug($url, '-'); // Slugify the URL
            $hyphenatedUrl = str_replace(' ', '-', $slug);
            $data->slug = $hyphenatedUrl;
            $data->price=$request->price;
            $data->sale_price=$request->sale_price;
            $data->description=$request->description;
            $data->video=$request->video_link;

          
            $data->seats=$request->seats;
            $data->order_number=$request->order_number;
            $data->meta_title=$request->meta_title;
            $data->meta_description=$request->meta_description;

            if ($request->hasFile('img')) {
                $image=$request->file('img');
                $imgname=$request->file('img')->getClientOriginalName();
                $img = Str::slug($imgname, '-'); // Slugify the URL
                $imgconcate = str_replace(' ', '-', $img);
                $destinationpath=public_path('assets/courses/');
                $image->move($destinationpath,$imgconcate);
                $data->img=$imgconcate;
            }
            $data->save();
            return redirect(route('all-courses'))->with('success',$data->name.' has been updated');

        } catch (\Throwable $th) {
           return back()->with('error',$th->getMessage());
        }
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy(string $id)
    {
        try {
            Course::destroy($id);
            return back()->with('success','Your course has been deleted');
        } catch (\Throwable $th) {
           return back()->with('error',$th->getMessage());
        }

    }
    public function Slots($id){
    $data=Course::find($id);
    $slots=Slots::where('course_id',$id)->get();
    $staffs = StaffMember::all();
    return view('backend_app.courses.courses_slots',compact('data','slots','staffs'));
    }

    
    public function AddSlot(Request $request){

        try {
        $data=new Slots;
        $data->course_id=$request->course_id;
        $data->start_time=$request->start_time;
        $data->end_time=$request->end_time;
        $data->location=$request->location;
        $data->staff_id=$request->staff;
        $data->repeat=$request->repeat;
        $data->date=$request->date;

        $data->save();
        return back()->with("success",'New  Class Session has been added');
} catch (\Throwable $th) {
    return back()->with("error","Please fill all the fields");
}
    }

    public function updateSlot(Request $request,$id){

        try {
        $data=Slots::find($id);
        $data->update([
        'start_time'=>$request->start_time,
        'end_time'=>$request->end_time,
        'location'=>$request->location,
        'staff_id'=>$request->staff,
        'repeat'=>$request->repeat,
        'date'=>$request->date
        ]);
        
        return back()->with("success",'Class Session has been updated');
} catch (\Throwable $th) {
    return back()->with("error","Please fill all the fields");
}
    }

    

    public function DeleteSlot($id){
        try {
        Slots::destroy($id);
        return back()->with("success",'Slot has been deleted successfully');
            } catch (\Throwable $th) {
                return back()->with("success",$$th->getmessage());
            }
}
public function coursesFilter(Request $request){
    $date = $request->date;
    $time=$request->date;
    $data = Slots::where('date', $date)->orderBy('start_time', 'asc')->get();

return view('backend_app.courses.courses_filter',compact('data','time'));
}
public function coursesSessions(){
    $date = today()->toDateString();
    $time= today()->toDateString();
    $courses=Course::all();
    $data = Slots::where('date', $date)->orderBy('start_time', 'asc')->get();
return view('backend_app.courses.courses_filter',compact('data','time','courses'));
}
public function findCourses(Request $request){
    $formattedDate = Carbon::createFromFormat('F j, Y', $request->date)->format('Y-m-d');

    // Use the formatted date in your query
    $data = Slots::with('course','staff')
                  ->where('date', $formattedDate)
                  ->get();
                  return response()->json($data);
}
public function Allslots(){
        $data=Slots::with('course','staff')->get();
  
        $events = [];

foreach ($data as $event) {

    $formattedDate = Carbon::createFromFormat('Y-m-d', $event['date'])->format('F j, Y');

    // Assuming 'type' is some value you want to add to each event
    $type = 'event'; // Change this to the actual type you want to add

    $events[] = [
        'date' => $formattedDate,
        'type' => $type,
        'description' => "Repeat:".$event->repeat,
        'everyYear'=>true,
        'name'=>$event->course->name,
        'id'=>$event->id,
        'badge'=>$event->staff->name,
        'staff'=>$event->staff->img,
        'staff_name'=>$event->staff->name,
        'start_time'=>$event->start_time,
        'end_time'=>$event->end_time,
        'location'=>$event->location

    ];
}
return response()->json($events);
}

public function course_participents(){
    return view('backend_app.participents_calender.calender');
}

public function get_subscriptions(){
    $data = CourseSubscribe::with('courses', 'users')->get();
    $responseData = [];

    foreach($data as $subscription){
        $date = $subscription->date;
        $courseName = $subscription->courses->name;
        $totalSeats = $subscription->courses->seats;
        $starTime = $subscription->start_time;
        $endTime = $subscription->end_time;



        // Count the bookings for each date
        if (!isset($responseData[$date])) {
            $responseData[$date] = [
                'start_date' => $date,
                'end_date' => date('Y-m-d', strtotime($date . ' +1 day')),
                'total_seats' => $totalSeats,
                'bookings' => 0,
                'course_name' => $courseName,
                'users' => [],
                'start_time'=>$starTime,
                'end_time'=>$endTime,

            ];
        }

        $responseData[$date]['bookings']++;
        $responseData[$date]['users'][] = $subscription->first_name . ' ' . $subscription->last_name;
    }


    // Re-index the array with numeric keys
    $responseData = array_values($responseData);

    return response()->json($responseData);
}

public function status(Request $request){

    try {
        $course=Course::findOrFail($request->id);
        $course->status= $request->status;
        $course->save();
        $response=[
            'status'=>200,
            'message'=>"Course Status has been updated successfully",
        ];
        return response()->json($response);
    } catch (\Throwable $th) {
        $response=[
            'status'=>200,
            'message'=>$th->getMessage(),
        ];
        return response()->json($response);
    }

}
    public function filter(Request $request){
        try {
            $staff=StaffMember::all();
            $data = Course::where('name', 'like', $request->name . '%')->paginate(5);
            return view('backend_app.courses.courses', compact('data','staff'));
        } catch (\Throwable $th) {
            return back()->with('error',$th->getMessage());
        }
    }




}