Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers;
- use App\Course;
- use App\MyCourses;
- use App\Mentor;
- use App\Review;
- use App\Chapter;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Validator;
- class CourseController extends Controller
- {
- public function index(Request $request){
- $course = Course::query();
- $q = $request->query('q');
- $status = $request->query('status');
- $course->when($q, function($query)use ($q){
- return $query->whereRaw("name LIKE'%".strtolower($q)."%'");
- });
- $course->when($status, function($query) use($status){
- return $query->where('status','=',$status);
- });
- return response()->json([
- 'status'=> 'success',
- 'data' => $course->paginate(10)
- ]);
- }
- public function show($id){
- $course = Course::with('chapters.lessons')
- ->with('mentor')
- ->with('images')
- ->find($id);
- if (!$course){
- return response()->json([
- 'status' => 'error',
- 'message' => 'course not found'
- ]);
- }
- $review = Review::where('course_id', '=', $id)->get()->toArray();
- if (count($review) > 0 ){
- $userIds = array_column($review, 'user_id');
- $users = getUserByIds($userIds);
- // echo "<pre>".print_r($users, 1)."</pre>";
- if ($users['status'] === 'error'){
- $review = [];
- }
- }
- $totalStudent = MyCourses::where('course_id' , '=', $id)->count();
- $course['reviews'] = $review;
- $couse['total_student'] = $totalStudent;
- return response()->json([
- 'status' => 'success',
- 'data'=> $course
- ]);
- }
- public function create(Request $request){
- $rules = [
- 'name' => 'required|string',
- 'certificate' => 'required|boolean',
- 'thumbnail' => 'string|url',
- 'type'=> 'required|in:free,premium',
- 'status' => 'required|in:draft, published',
- 'price'=>'integer',
- 'level'=>'required|in:all-level,beginner,intermediate,advance',
- 'mentor_id' => 'required|integer',
- 'description'=>'string'
- ];
- $data = $request->all();
- $validator = Validator::make($data, $rules);
- if($validator->fails()){
- return response()->json([
- 'status'=>'error',
- 'message'=>$validator->errors()
- ],400);
- }
- $mentorId = $request->input('mentor_id');
- $mentor = Mentor::find($mentorId);
- if(!$mentor){
- return response()->json([
- 'status'=>'error',
- 'message'=>'mentor not found'
- ],404);
- }
- $course = Course::create($data);
- return response()->json([
- 'status'=>'success',
- 'data' => $course
- ]);
- }
- public function update(Request $request, $id){
- $rules = [
- 'name' => 'string',
- 'certificate' => 'boolean',
- 'thumbnail' => 'string|url',
- 'type'=> 'in:free,premium',
- 'status' => 'in:draft, published',
- 'price'=>'integer',
- 'level'=>'in:all-level,beginner,intermediate,advance',
- 'mentor_id' => 'integer',
- 'description'=>'string'
- ];
- $data = $request->all();
- $validator = Validator::make($data, $rules);
- if($validator->fails()){
- return response()->json([
- 'status'=>'error',
- 'message'=>$validator->errors()
- ],400);
- }
- $course = Course::find($id);
- if (!$course){
- return response()->json([
- 'status'=> 'error',
- 'message'=> 'course not found'
- ], 404);
- }
- $mentorId = $request->input('mentor_id');
- if ($mentorId){
- $mentor = Mentor::find($mentorId);
- if(!$mentor){
- return response()->json([
- 'status'=> 'error',
- 'message'=> 'mentor not found'
- ], 404);
- }
- }
- $course->fill($data);
- $course->save();
- return response()->json([
- 'status'=> 'success',
- 'data' => $course
- ]);
- }
- public function destroy($id){
- $course = Course::find($id);
- if(!$course){
- return response()->json([
- 'status'=> 'error',
- 'message'=> 'course not found'
- ],404);
- }
- $course->delete();
- return response()->json([
- 'status'=>'success',
- 'message'=> 'courses deleted'
- ]);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement