JFIF  x x C         C     "        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        w !1AQ aq"2B #3Rbr{ gilour
<?php namespace App\Http\Controllers\student; use App\Http\Controllers\Controller; use App\Models\Enrollment; use App\Models\OfflinePayment; use App\Models\TeamPackageMember; use App\Models\TeamPackagePurchase; use App\Models\TeamTrainingPackage; use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Session; class MyTeamPackageController extends Controller { public function index() { $page_data['packages'] = TeamPackagePurchase::join('team_training_packages', 'team_package_purchases.package_id', 'team_training_packages.id') ->join('courses', 'team_training_packages.course_id', 'courses.id') ->where('team_package_purchases.user_id', auth()->user()->id) ->where('team_package_purchases.status', 1) ->select( 'team_training_packages.*', 'courses.title as course_title', 'courses.slug as course_slug' ) ->latest('id')->paginate(10)->appends(request()->query()); // check the expiry of purchased packages $packages = TeamPackagePurchase::join('team_training_packages', 'team_package_purchases.package_id', 'team_training_packages.id') ->where('team_package_purchases.status', 1) ->where('team_package_purchases.user_id', auth()->user()->id) ->where('team_training_packages.expiry_type', 'limited') ->where('team_training_packages.expiry_date', '<', time()) ->pluck('team_package_purchases.package_id')->toArray(); foreach ($packages as $package) { TeamPackagePurchase::where('user_id', auth()->user()->id)->where('package_id', $package)->update(['status' => 0]); } return view('frontend.default.student.my_team_packages.index', $page_data); } public function show($slug) { // check purchase $package = TeamPackagePurchase::join('team_training_packages', 'team_package_purchases.package_id', 'team_training_packages.id') ->join('courses', 'team_training_packages.course_id', 'courses.id') ->where('team_package_purchases.user_id', auth()->user()->id) ->where('team_package_purchases.status', 1) ->where('team_training_packages.slug', $slug) ->select( 'team_training_packages.*', 'courses.title as course_title', 'courses.slug as course_slug' )->first(); if (! $package) { Session::flash('error', get_phrase('Data not found.')); return redirect()->back(); } $page_data['package'] = $package; $page_data['members'] = TeamPackageMember::join('users', 'team_package_members.member_id', 'users.id') ->join('team_training_packages', 'team_package_members.team_package_id', 'team_training_packages.id') ->select('team_package_members.*', 'users.name as name', 'users.email as email', 'users.photo as photo', 'team_training_packages.course_id') ->where([ 'team_package_members.leader_id' => auth()->user()->id, 'team_package_members.team_package_id' => $package->id, ])->paginate(10); $page_data['purchased_packages'] = TeamPackagePurchase::join('team_training_packages', 'team_package_purchases.package_id', 'team_training_packages.id') ->where('team_package_purchases.user_id', auth()->user()->id) ->where('team_package_purchases.package_id', $package->id) ->select('team_package_purchases.*', 'team_training_packages.title', 'team_training_packages.slug') ->latest('id')->paginate(15); return view('frontend.default.student.my_team_packages.details', $page_data); } public function search_members(Request $request, $package_id = '') { $user = User::where('email', $request->email)->select('users.id', 'users.name', 'users.email', 'users.photo')->first(); if ($package_id && $user) { $status = TeamPackageMember::where('team_package_id', $package_id)->where('member_id', $user->id)->exists() ? 1 : 0; $page_data['user'] = $user; $page_data['status'] = $status; $page_data['package_id'] = $package_id; return view('frontend.default.student.my_team_packages.search_member', $page_data); } } public function member_action($action) { $packageId = request()->query('package_id'); $userId = request()->query('user_id'); $package = TeamTrainingPackage::find($packageId); $user = User::find($userId); // Check if the user is the team leader if ($user->email === auth()->user()->email) { Session::flash('error', get_phrase('You are the team leader.')); return redirect()->back(); } // check purchase $purchased_package = TeamPackagePurchase::where('user_id', auth()->user()->id)->where('package_id', $package->id)->first(); if (! $purchased_package) { return redirect()->back()->with('error', get_phrase('Forbidden! Access denied.')); } $package_member = TeamPackageMember::where('leader_id', auth()->user()->id) ->where('team_package_id', $package->id)->where('member_id', $user->id)->first(); // enrollment query $user_enrollment = Enrollment::where('course_id', $package->course_id)->where('user_id', $user->id)->first(); if ($action == 'register') { // count reserved members if (reserved_team_members($package->id) >= $package->allocation) { return redirect()->back()->with('error', 'Not enough space to add a member.'); } if (! $package_member) { $data['leader_id'] = auth()->user()->id; $data['team_package_id'] = $package->id; $data['member_id'] = $user->id; TeamPackageMember::insert($data); // enroll member to course $enroll['course_id'] = $package->course_id; $enroll['user_id'] = $user->id; $enroll['enrollment_type'] = 'team_package'; $enroll['entry_date'] = strtotime('now'); if ($package->expiry_type == 'limited') { $enroll['expiry_date'] = $package->expiry_date; } if (! $user_enrollment) { Enrollment::insert($enroll); } else { if (ctype_digit($user_enrollment->expiry_date) && $package->expiry_type == 'limited') { $expiry = max($user_enrollment->expiry_date, $package->expiry_date); $user_enrollment->update(['expiry_date' => $expiry]); } } Session::flash('success', get_phrase('Member has been added to team.')); } else { Session::flash('error', get_phrase('Member already exists in the team.')); } } elseif ($action == 'remove') { if ($package_member) { $package_member->delete(); // remove enrolled student Enrollment::where('course_id', $package->course_id)->where('user_id', $user->id)->delete(); Session::flash('success', get_phrase('Member has been removed to team.')); } else { Session::flash('error', get_phrase('Member not found in the team.')); } } return redirect()->back(); } public function purchase($id) { $package = TeamTrainingPackage::find($id); // check package owner if ($package->user_id == auth()->user()->id) { Session::flash('error', get_phrase('You own this item.')); return redirect()->back(); } // check item is purchased or not if (TeamPackagePurchase::where('user_id', auth()->user()->id)->where('package_id', $id)->where('status', 1)->exists()) { Session::flash('error', get_phrase('Item is already purchased.')); return redirect()->back(); } // check any offline processing data $processing_payments = OfflinePayment::where([ 'user_id' => auth()->user()->id, 'items' => $package->id, 'item_type' => 'team_package', 'status' => 0, ]) ->first(); if ($processing_payments) { Session::flash('warning', get_phrase('Your request is in process.')); return redirect()->back(); } // prepare team package payment data $payment_details = [ 'items' => [ [ 'id' => $package->id, 'title' => $package->title, 'subtitle' => '', 'price' => $package->price, 'discount_price' => '', ], ], 'custom_field' => [ 'item_type' => 'package', 'pay_for' => get_phrase('Team Training Package'), ], 'success_method' => [ 'model_name' => 'TeamPackagePurchase', 'function_name' => 'purchase_team_package', ], 'payable_amount' => round($package->price, 2), 'tax' => 0, 'cancel_url' => route('team.package.details', $package->slug), 'success_url' => route('payment.success', ''), ]; Session::put(['payment_details' => $payment_details]); return redirect()->route('payment'); } public function invoice($id) { $page_data['package'] = TeamPackagePurchase::join('team_training_packages', 'team_package_purchases.package_id', 'team_training_packages.id') ->join('users', 'team_package_purchases.user_id', 'users.id') ->select('team_package_purchases.*', 'team_training_packages.title', 'team_training_packages.slug', 'users.name as user_name') ->where('team_package_purchases.user_id', auth()->user()->id) ->where('team_package_purchases.id', $id) ->first(); return view('frontend.default.student.my_team_packages.print_invoice', $page_data); } }