cms-token/@core/app/Http/Controllers/CourseLessonController.php

119 lines
4.1 KiB
PHP

<?php
namespace App\Http\Controllers;
use App\CourseCurriculmLang;
use App\CourseLession;
use App\CourseLessionLang;
use App\Helpers\NexelitHelpers;
use App\Language;
use http\Exception\UnexpectedValueException;
use Illuminate\Http\Request;
use Illuminate\Support\Str;
class CourseLessonController extends Controller
{
const BASE_PATH = 'backend.courses.lesson.';
private $all_languages ;
public function __construct(){
$this->all_languages = $this->all_languages ?? Language::all();
}
public function ajax_new(Request $request){
$lession_id = CourseLession::create([
'course_id' => $request->course_id,
'curriculum_id' => $request->curriculum_id,
'status' => 'publish'
])->id;
foreach ($this->all_languages as $lang){
CourseLessionLang::create([
'lession_id' => $lession_id,
'lang' => $lang->slug,
'title' => __('lesson title')
]);
}
return response()->json($lession_id);
}
public function ajax_delete(Request $request){
CourseLession::findOrFail($request->lesson_id)->delete();
CourseLessionLang::where('id',$request->lesson_id)->delete();
return response()->json('ok');
}
public function all(){
$all_lesson = CourseLession::with('lang')->get();
return view(self::BASE_PATH.'lesson-all')->with(['all_lesson' => $all_lesson]);
}
public function delete($id){
CourseLession::findOrFail($id)->delete();
CourseLessionLang::where('id',$id)->delete();
return back()->with(NexelitHelpers::item_delete());
}
public function edit($id){
$lesson = CourseLession::where('id',$id)->first();
return view(self::BASE_PATH.'lesson-edit')->with(['lesson' => $lesson,'all_languages' => $this->all_languages]);
}
public function update(Request $request){
$this->validate($request,[
'title' => 'check_array:1',
'description' => 'check_array:1',
'video_embed_code' => 'nullable|string',
'duration' => 'nullable|string',
'duration_type' => 'nullable|string',
'status' => 'required|string',
'file' => 'nullable|mimes:jpg,jpeg,png,pdf,doc,docx,txt,zip|max:30000'
],[
'title.check_array' => __('enter title for all language')
]);
$lesson = CourseLession::findOrFail($request->id);
CourseLession::findOrFail($request->id)->update([
'video_embed_code' => $request->video_embed_code,
'status' => $request->status,
'duration' => $request->duration,
'duration_type' => $request->duration_type,
'preview' => $request->preview,
]);
//write code for add upload file option in lesson
if ($request->hasFile('file')){
$file = $request->file;
$image_extenstion = $file->getClientOriginalExtension();
$image_name_with_ext = $file->getClientOriginalName();
$image_name = pathinfo($image_name_with_ext, PATHINFO_FILENAME);
$image_name = strtolower(Str::slug($image_name));
$image_db = $image_name . time() . '.' . $image_extenstion;
$folder_path = 'assets/uploads/course-lesson/';
$request->file->move($folder_path, $image_db);
//delete old file
if (file_exists('assets/uploads/course-lesson/'.$lesson->file)){
@unlink('assets/uploads/course-lesson/'.$lesson->file);
}
CourseLession::findOrFail($request->id)->update(['file' => $image_db]);
}
foreach ($this->all_languages as $lang){
CourseLessionLang::updateOrCreate(
['lession_id'=> $request->id,'lang' => $lang->slug]
,
[ 'lession_id' => $request->id,
'lang' => $lang->slug,
'title' => $request->title[$lang->slug] ?? '',
'description' => $request->description[$lang->slug] ?? ''
]);
}
return back()->with(NexelitHelpers::item_update());
}
}