Advertisement
cindex1a

Untitled

Nov 1st, 2021
925
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 4.89 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers;
  4.  
  5. use App\Course;
  6. use App\MyCourses;
  7. use App\Mentor;
  8. use App\Review;
  9. use App\Chapter;
  10. use Illuminate\Http\Request;
  11. use Illuminate\Support\Facades\Validator;
  12.  
  13. class CourseController extends Controller
  14. {
  15.     public function index(Request $request){
  16.         $course = Course::query();
  17.  
  18.         $q = $request->query('q');
  19.         $status = $request->query('status');
  20.         $course->when($q, function($query)use ($q){
  21.             return $query->whereRaw("name LIKE'%".strtolower($q)."%'");
  22.          });
  23.  
  24.          $course->when($status, function($query) use($status){
  25.             return $query->where('status','=',$status);
  26.          });
  27.         return response()->json([
  28.             'status'=> 'success',
  29.             'data' => $course->paginate(10)
  30.         ]);
  31.     }
  32.  
  33.     public function show($id){
  34.         $course = Course::with('chapters.lessons')
  35.             ->with('mentor')
  36.             ->with('images')
  37.             ->find($id);
  38.         if (!$course){
  39.             return response()->json([
  40.                 'status' => 'error',
  41.                 'message' => 'course not found'
  42.             ]);
  43.         }
  44.  
  45.         $review = Review::where('course_id', '=', $id)->get()->toArray();
  46.         if (count($review) > 0 ){
  47.             $userIds = array_column($review, 'user_id');
  48.             $users = getUserByIds($userIds);
  49.             // echo "<pre>".print_r($users, 1)."</pre>";
  50.             if ($users['status'] === 'error'){
  51.                 $review = [];
  52.             }
  53.         }
  54.         $totalStudent = MyCourses::where('course_id' , '=', $id)->count();
  55.  
  56.         $course['reviews'] = $review;
  57.         $couse['total_student'] = $totalStudent;
  58.         return response()->json([
  59.             'status' => 'success',
  60.             'data'=> $course
  61.         ]);
  62.     }
  63.     public function create(Request $request){
  64.         $rules = [
  65.             'name' => 'required|string',
  66.             'certificate' => 'required|boolean',
  67.             'thumbnail' => 'string|url',
  68.             'type'=> 'required|in:free,premium',
  69.             'status' => 'required|in:draft, published',
  70.             'price'=>'integer',
  71.             'level'=>'required|in:all-level,beginner,intermediate,advance',
  72.             'mentor_id' => 'required|integer',
  73.             'description'=>'string'
  74.         ];
  75.  
  76.         $data = $request->all();
  77.  
  78.         $validator = Validator::make($data, $rules);
  79.  
  80.         if($validator->fails()){
  81.             return response()->json([
  82.                 'status'=>'error',
  83.                 'message'=>$validator->errors()
  84.             ],400);
  85.         }
  86.         $mentorId = $request->input('mentor_id');
  87.         $mentor = Mentor::find($mentorId);
  88.         if(!$mentor){
  89.             return response()->json([
  90.                 'status'=>'error',
  91.                 'message'=>'mentor not found'
  92.             ],404);
  93.         }
  94.  
  95.         $course = Course::create($data);
  96.         return response()->json([
  97.             'status'=>'success',
  98.             'data' => $course
  99.         ]);
  100.  
  101.     }
  102.  
  103.     public function update(Request $request, $id){
  104.         $rules = [
  105.             'name' => 'string',
  106.             'certificate' => 'boolean',
  107.             'thumbnail' => 'string|url',
  108.             'type'=> 'in:free,premium',
  109.             'status' => 'in:draft, published',
  110.             'price'=>'integer',
  111.             'level'=>'in:all-level,beginner,intermediate,advance',
  112.             'mentor_id' => 'integer',
  113.             'description'=>'string'
  114.         ];
  115.  
  116.         $data = $request->all();
  117.  
  118.         $validator = Validator::make($data, $rules);
  119.  
  120.         if($validator->fails()){
  121.             return response()->json([
  122.                 'status'=>'error',
  123.                 'message'=>$validator->errors()
  124.             ],400);
  125.         }
  126.         $course = Course::find($id);
  127.         if (!$course){
  128.             return response()->json([
  129.                 'status'=> 'error',
  130.                 'message'=> 'course not found'
  131.             ], 404);
  132.         }
  133.  
  134.         $mentorId = $request->input('mentor_id');
  135.  
  136.         if ($mentorId){
  137.             $mentor = Mentor::find($mentorId);
  138.             if(!$mentor){
  139.                 return response()->json([
  140.                     'status'=> 'error',
  141.                     'message'=> 'mentor not found'
  142.                 ], 404);
  143.             }
  144.         }
  145.  
  146.         $course->fill($data);
  147.         $course->save();
  148.  
  149.         return response()->json([
  150.             'status'=> 'success',
  151.             'data' => $course
  152.         ]);
  153.  
  154.     }
  155.  
  156.     public function destroy($id){
  157.         $course = Course::find($id);
  158.  
  159.         if(!$course){
  160.             return response()->json([
  161.                 'status'=> 'error',
  162.                 'message'=> 'course not found'
  163.             ],404);
  164.         }
  165.  
  166.         $course->delete();
  167.  
  168.         return response()->json([
  169.             'status'=>'success',
  170.             'message'=> 'courses deleted'
  171.         ]);
  172.     }
  173. }
  174.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement