JFIF x x C C " } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w !1AQ aq"2B #3Rbr{
File "TeamTrainingController.php"
Full Path: /home/palsarh/web/palsarh.in/public_html/app/Http/Controllers/Admin/TeamTrainingController.php
File size: 9.79 KB
MIME-type: text/x-php
Charset: utf-8
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Models\Course;
use App\Models\FileUploader;
use App\Models\TeamPackagePurchase;
use App\Models\TeamTrainingPackage;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Str;
use Illuminate\Validation\Rule;
class TeamTrainingController extends Controller
{
public function index()
{
$query = TeamTrainingPackage::join('courses', 'team_training_packages.course_id', 'courses.id')
->select('team_training_packages.*', 'courses.title as course_title', 'courses.slug as course_slug', 'courses.price as course_price')
->where('team_training_packages.user_id', auth()->user()->id);
if (request()->has('search')) {
$query = $query->where('team_training_packages.title', 'LIKE', "%" . request()->query('search') . "%");
}
$page_data['packages'] = $query->paginate(20)->appends(request()->query());
return view('admin.team_training.index', $page_data);
}
public function store(Request $request)
{
$package['title'] = $request->title;
$package['slug'] = slugify($request->title);
$package['course_privacy'] = $request->course_privacy;
$package['course_id'] = $request->course_id;
$package['allocation'] = $request->allocation;
$package['pricing_type'] = $request->pricing_type;
$package['price'] = $request->price;
$package['expiry_type'] = $request->expiry_type;
$package['date'] = $request->expiry_date;
$package['thumbnail'] = $request->thumbnail;
$validator = Validator::make($package, [
'title' => [
'required',
Rule::unique('team_training_packages')->where(function ($query) {
return $query->where('user_id', auth()->user()->id);
}),
],
'slug' => [
'required',
Rule::unique('team_training_packages')->where(function ($query) {
return $query->where('user_id', auth()->user()->id);
}),
],
'course_privacy' => 'required|in:public,private',
'allocation' => 'required|numeric|min:0',
'pricing_type' => 'required|in:0,1',
'price' => 'required_if:is_paid,1',
'expiry_type' => 'required_if:is_paid,1|in:limited,lifetime',
'date' => 'required_if:expiry_type,limited',
'thumbnail' => 'required|file|mimes:jpg,jpeg,png',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
if ($request->expiry_type == 'limited') {
$date = explode('-', $request->expiry_date);
$package['start_date'] = strtotime($date[0]);
$package['expiry_date'] = strtotime($date[1]);
}
unset($package['thumbnail']);
if ($request->thumbnail) {
$package['thumbnail'] = "uploads/team_training/thumbnail/" . nice_file_name($request->title, $request->thumbnail->extension());
FileUploader::upload($request->thumbnail, $package['thumbnail']);
}
$filter_features = array_filter($request->features, function ($value) {
return ! is_null($value);
});
$package['features'] = json_encode($filter_features);
$package['user_id'] = auth()->user()->id;
$package['status'] = 1;
TeamTrainingPackage::create($package);
return redirect()->back()->with('success', get_phrase('Package has been created.'));
}
public function edit($id)
{
$page_data['package'] = TeamTrainingPackage::join('courses', 'team_training_packages.course_id', 'courses.id')
->select('team_training_packages.*', 'courses.title as course_title', 'courses.slug as course_slug', 'courses.price as course_price')
->where('team_training_packages.id', $id)->first();
return view('admin.team_training.edit', $page_data);
}
public function update(Request $request, $id)
{
$package['title'] = $request->title;
$package['slug'] = slugify($request->title);
$package['course_privacy'] = $request->course_privacy;
$package['course_id'] = $request->course_id;
$package['allocation'] = $request->allocation;
$package['pricing_type'] = $request->pricing_type;
$package['price'] = $request->price;
$package['expiry_type'] = $request->expiry_type;
$package['date'] = $request->expiry_date;
$package['thumbnail'] = $request->thumbnail;
$validator = Validator::make($package, [
'title' => [
'required',
Rule::unique('team_training_packages')->where(function ($query) use ($id) {
return $query->where(['id' => ! $id, 'user_id' => auth()->user()->id]);
}),
],
'slug' => [
'required',
Rule::unique('team_training_packages')->where(function ($query) use ($id) {
return $query->where(['id' => ! $id, 'user_id' => auth()->user()->id]);
}),
],
'course_privacy' => 'required|in:public,private',
'allocation' => 'required|numeric|min:0',
'pricing_type' => 'required|in:0,1',
'price' => 'required_if:is_paid,1',
'expiry_type' => 'required_if:is_paid,1|in:limited,lifetime',
'date' => 'required_if:expiry_type,limited',
]);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
if ($request->expiry_type == 'limited') {
$date = explode('-', $request->expiry_date);
$package['start_date'] = strtotime($date[0]);
$package['expiry_date'] = strtotime($date[1]);
}
unset($package['thumbnail']);
if ($request->thumbnail) {
$package['thumbnail'] = "uploads/team_training/thumbnail/" . nice_file_name($request->title, $request->thumbnail->extension());
FileUploader::upload($request->thumbnail, $package['thumbnail']);
}
$filter_features = array_filter($request->features, function ($value) {
return ! is_null($value);
});
$package['features'] = json_encode(array_values($filter_features));
$package['user_id'] = auth()->user()->id;
TeamTrainingPackage::find($id)->update($package);
return redirect()->back()->with('success', get_phrase('Package has been updated.'));
}
public function delete($id)
{
TeamTrainingPackage::find($id)->delete();
return redirect()->back()->with('error', get_phrase('Package has been deleted.'));
}
public function duplicate($id)
{
$package = TeamTrainingPackage::find($id)->toArray();
$package['title'] = $package['title'] . ' copy';
$package['slug'] = slugify($package['title']);
unset($package['id'], $package['created_at'], $package['updated_at']);
$insert_id = TeamTrainingPackage::insertGetId($package);
return to_route('admin.team.packages.edit', $insert_id)->with('success', get_phrase('Package has been copied.'));
}
public function get_courses(Request $request)
{
if (isset($request->privacy) && in_array($request->privacy, ['public', 'private'])) {
$privacy = $request->privacy == 'public' ? 'active' : 'private';
$courses = Course::where('status', $privacy)->get();
return view('admin.team_training.load_courses', compact('courses'));
}
}
public function get_course_price(Request $request)
{
if (isset($request->course_id) && $request->course_id != '') {
$price = Course::where('id', $request->course_id)->value('price');
return $price;
}
}
public function toggle_status($id)
{
$package = TeamTrainingPackage::find($id);
$status = $package->status ? 0 : 1;
$package->update(['status' => $status]);
return redirect()->back()->with('success', get_phrase('Status has been updated.'));
}
public function purchase_history()
{
$page_data['purchases'] = TeamPackagePurchase::join('team_training_packages', 'team_package_purchases.package_id', 'team_training_packages.id')
->select(
'team_package_purchases.*',
'team_training_packages.user_id as author',
'team_training_packages.title',
'team_training_packages.slug',
'team_training_packages.price as amount',
)
->latest('team_package_purchases.id')->paginate(20)->appends(request()->query());
return view('admin.team_training.purchase_history', $page_data);
}
public function invoice($id)
{
$page_data['invoice'] = TeamPackagePurchase::join('team_training_packages', 'team_package_purchases.package_id', 'team_training_packages.id')
->where('team_training_packages.user_id', auth()->user()->id)
->where('team_package_purchases.id', $id)
->select('team_package_purchases.*', 'team_training_packages.title', 'team_training_packages.slug')
->first();
return view('admin.team_training.invoice', $page_data);
}
}