PageRenderTime 26ms CodeModel.GetById 18ms RepoModel.GetById 0ms app.codeStats 0ms

/app/Http/Controllers/Admin/CourseController.php

https://bitbucket.org/coderpick/bdtutorial
PHP | 183 lines | 158 code | 22 blank | 3 comment | 14 complexity | ac8222b63581ca212a0e23483da69323 MD5 | raw file
Possible License(s): LGPL-2.1, MPL-2.0-no-copyleft-exception
  1. <?php
  2. namespace App\Http\Controllers\Admin;
  3. use App\Course;
  4. use App\CourseModules;
  5. use App\ProfessionalTraining;
  6. use App\Teacher;
  7. use Illuminate\Http\Request;
  8. use App\Http\Controllers\Controller;
  9. use Illuminate\Support\Facades\Session;
  10. class CourseController extends Controller
  11. {
  12. public function index(Request $request){
  13. $data['title']='Course List';
  14. $course = New Course();
  15. if ($request->search == 'trashed') {
  16. $course = $course->onlyTrashed();
  17. } elseif ($request->search == 'inactive') {
  18. $course = $course->where('status', 'inactive');
  19. }elseif ($request->search == 'active') {
  20. $course = $course->where('status', 'active');
  21. }
  22. $course = $course->orderBy('id', 'DESC')->paginate(10);
  23. if (isset($request->search)) {
  24. $render['search'] = $request->search;
  25. $course = $course->appends($render);
  26. }
  27. $data['courses'] = $course;
  28. $data['serial'] = managePagination($course);
  29. return view('professional_training.courses.index',$data);
  30. }
  31. public function create(){
  32. $data['title']='New Course Create';
  33. $data['category']=ProfessionalTraining::where('status','active')->pluck('name','slug');
  34. $data['teacher']=Teacher::where('status','active')->pluck('name','id');
  35. return view('professional_training.courses.create',$data);
  36. }
  37. public function store(Request $request){
  38. $this->validate($request, [
  39. 'name' => 'required',
  40. 'overview' => 'required',
  41. 'what_will_i_learn' => 'required',
  42. 'requirements' => 'required',
  43. 'topic_slug' => 'required',
  44. 'trainer_id' => 'required',
  45. 'url' => 'required',
  46. 'featured' => 'required',
  47. 'publish' => 'required',
  48. 'files' => 'required',
  49. 'status' => 'required',
  50. ]);
  51. $course= New Course();
  52. $course->name=$request->name;
  53. $course->slug=$this->_slug($request->name);
  54. $course->overview=$request->overview;
  55. $course->what_will_i_learn=$request->what_will_i_learn;
  56. $course->requirements=$request->requirements;
  57. $course->topic_slug=$request->topic_slug;
  58. $course->trainer_id=$request->trainer_id;
  59. $course->url=$request->url;
  60. $course->featured=$request->featured;
  61. $course->publish=$request->publish;
  62. $course->sequence=$request->sequence;
  63. if ($request->hasFile('files')) {
  64. $image = $request->file('files');
  65. $image_name = str_random(20);
  66. $ext = strtolower($image->getClientOriginalExtension());
  67. $image_full_name = $image_name . '.' . $ext;
  68. $upload_path = 'upload/course/';
  69. $image_url = $upload_path . $image_full_name;
  70. if ($ext=='jpg' || $ext=='png'|| $ext=='jpeg'){
  71. $image->move($upload_path, $image_full_name);
  72. $course->file = $image_url;
  73. }else{
  74. Session::flash('warning','File is not valid!!');
  75. return redirect()->back()->withInput();
  76. }
  77. }
  78. $course->status=$request->status;
  79. $course->save();
  80. Session::flash('message', 'Course Create Successfully.');
  81. return redirect()->route('course.index');
  82. }
  83. public function edit($id){
  84. $data['title'] = 'Edit Class Subject';
  85. $data['category']=ProfessionalTraining::where('status','active')->pluck('name','slug');
  86. $data['teacher']=Teacher::where('status','active')->pluck('name','id');
  87. $data['course'] = Course::withTrashed()->where('id', $id)->first();
  88. return view('professional_training.courses.edit',$data);
  89. }
  90. public function update(Request $request,$id){
  91. $course=Course::withTrashed()->where('id', $id)->first();
  92. $course->name=$request->name;
  93. $course->overview=$request->overview;
  94. $course->what_will_i_learn=$request->what_will_i_learn;
  95. $course->requirements=$request->requirements;
  96. $course->topic_slug=$request->topic_slug;
  97. $course->trainer_id=$request->trainer_id;
  98. $course->url=$request->url;
  99. $course->featured=$request->featured;
  100. $course->publish=$request->publish;
  101. $course->sequence=$request->sequence;
  102. $course->status=$request->status;
  103. if ($request->hasFile('files')) {
  104. $image = $request->file('files');
  105. $image_name = str_random(20);
  106. $ext = strtolower($image->getClientOriginalExtension());
  107. $image_full_name = $image_name . '.' . $ext;
  108. $upload_path = 'upload/course/';
  109. $image_url = $upload_path . $image_full_name;
  110. if ($ext=='jpg' || $ext=='png'|| $ext=='jpeg'){
  111. if($course->file!=null){
  112. @unlink($course->file);
  113. }
  114. $image->move($upload_path, $image_full_name);
  115. $course->file = $image_url;
  116. }else{
  117. Session::flash('warning','File is not valid!!');
  118. return redirect()->back()->withInput();
  119. }
  120. }
  121. $course->save();
  122. Session::flash('message', 'Course Update Successfully.');
  123. return redirect()->route('course.index');
  124. }
  125. public function trash($id)
  126. {
  127. Course::findorfail($id)->delete();
  128. Session::flash('message', 'Successfully Trashed.');
  129. return redirect()->back();
  130. }
  131. public function restore($id)
  132. {
  133. Course::withTrashed()->where('id', $id)->first()->restore();
  134. Session::flash('message', 'Successfully restored.');
  135. return redirect()->route('course.index');
  136. }
  137. public function destroy($id)
  138. {
  139. $course=Course::withTrashed()->where('id', $id)->first();
  140. if($course->file!=null){
  141. @unlink($course->file);
  142. }
  143. CourseModules::withTrashed()->where('course_id',$course->id)->forceDelete();
  144. $course->forceDelete();
  145. Session::flash('message', 'Successfully Deleted.');
  146. return redirect()->route('course.index');
  147. }
  148. public function _slug($value)
  149. {
  150. // make lower case
  151. $value = strtolower($value);
  152. // replace space with -
  153. $slug = str_replace(' ', '-', $value);
  154. // $slug = str_slug($value);
  155. if (Course::withTrashed()->where('slug', $slug)->exists()) {
  156. $slug = $slug . mt_rand(10, 99);
  157. $this->_slug($slug);
  158. }
  159. return $slug;
  160. }
  161. }