mirror of
https://github.com/Bigherollc/wticreatorstudio.git
synced 2026-09-28 18:13:06 -04:00
167 lines
5.6 KiB
PHP
167 lines
5.6 KiB
PHP
<?php
|
|
namespace Modules\JobPortalPayout\Admin;
|
|
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\Support\Facades\Auth;
|
|
use Modules\JobPortal\Http\Controllers\JobPortalAdminController;
|
|
use Modules\JobPortal\Entities\Location;
|
|
use Modules\JobPortalPayout\Commands\CreatePayoutsCommand;
|
|
use Modules\JobPortal\Entities\VendorPayout;
|
|
use Modules\JobPortal\Entities\VendorPayoutAccount;
|
|
use Illuminate\Support\Facades\Artisan;
|
|
|
|
class PayoutController extends JobPortalAdminController
|
|
{
|
|
/**
|
|
* @var VendorPayout
|
|
*/
|
|
protected $vendorPayoutClass;
|
|
|
|
public function __construct()
|
|
{
|
|
$this->vendorPayoutClass = VendorPayout::class;
|
|
}
|
|
|
|
public function candidateIndex(Request $request)
|
|
{
|
|
if(!VendorPayout::isEnable()) {
|
|
return redirect('/');
|
|
}
|
|
$this->checkPermission('candidate_payout_manage');
|
|
//$this->setActiveMenu('payout');
|
|
$user = Auth::user();
|
|
$data = [
|
|
'page_title'=>__('Payouts'),
|
|
'payouts'=>$user->payouts()->orderBy('id','desc')->paginate(20),
|
|
'currentUser'=>Auth::user(),
|
|
"current_payout"=>$user->current_payout,
|
|
'payout_account'=>$user->payout_account
|
|
];
|
|
|
|
return view("jobportalpayout::admin.payouts.candidate-index",$data);
|
|
}
|
|
public function storePayoutAccount(Request $request){
|
|
if(!VendorPayout::isEnable()) {
|
|
return redirect('/');
|
|
}
|
|
$this->checkPermission('candidate_payout_manage');
|
|
|
|
$request->validate([
|
|
'payout_method'=>"required",
|
|
"account_info"=>'required|array'
|
|
]);
|
|
|
|
$user = Auth::user();
|
|
$payout_account = $user->payout_account;
|
|
if(!$payout_account){
|
|
$payout_account = new VendorPayoutAccount();
|
|
$payout_account->vendor_id = $user->id;
|
|
}
|
|
|
|
$account_info = $request->input('account_info');
|
|
$payout_method = $request->input('payout_method');
|
|
if(empty($account_info[$payout_method])){
|
|
return $this->sendError(__("Please enter payout account info"));
|
|
}
|
|
|
|
$data = [
|
|
'payout_method'=>$request->input('payout_method'),
|
|
'account_info'=>[$account_info[$payout_method]]
|
|
];
|
|
$payout_account->fillByAttr(array_keys($data),$data);
|
|
|
|
$payout_account->save();
|
|
|
|
return $this->sendSuccess([
|
|
"message"=>__("Your account information has been saved")
|
|
]);
|
|
|
|
}
|
|
public function index(Request $request)
|
|
{
|
|
if (!VendorPayout::isEnable()) {
|
|
return redirect('/');
|
|
}
|
|
|
|
$this->checkPermission('admin_payout_manage');
|
|
|
|
$payouts = $this->vendorPayoutClass::query()
|
|
->with([
|
|
'candidate'
|
|
])
|
|
->when(auth()->user()->role->type === 'superadmin', function ($query) use ($request) {
|
|
$query->when($request->filled('vendor_id'), fn ($query) => $query->where('vendor_id', $request->vendor_id))
|
|
->when($request->filled('s'), fn ($query) => $query->where('id', $request->s));
|
|
})
|
|
->when(auth()->user()->role->type !== 'superadmin', fn ($query) => $query->where('vendor_id', auth()->id()))
|
|
->orderBy('id', 'desc')
|
|
->paginate(20);
|
|
|
|
$data = [
|
|
'rows' => $payouts,
|
|
'page_title' => __("Payout Management"),
|
|
'all_statuses' => $this->vendorPayoutClass::getAllStatuses()
|
|
];
|
|
|
|
return view('jobportalpayout::admin.payouts.index', $data);
|
|
}
|
|
|
|
public function bulkEdit(Request $request)
|
|
{
|
|
$this->checkPermission('admin_payout_manage');
|
|
|
|
$ids = $request->input('ids');
|
|
$action = $request->input('action');
|
|
if (empty($ids) or !is_array($ids)) {
|
|
return $this->sendError(__('No items selected!'));
|
|
}
|
|
if (empty($action)) {
|
|
return $this->sendError(__('Please select an action!'));
|
|
}
|
|
|
|
$all_statuses = $this->vendorPayoutClass::getAllStatuses();
|
|
|
|
switch ($action){
|
|
case "delete":
|
|
foreach ($ids as $id) {
|
|
$query = $this->vendorPayoutClass::find($id);
|
|
if(!empty($query)){
|
|
//event(new PayoutRequestEvent('delete',$query));
|
|
$query->delete();
|
|
}
|
|
}
|
|
return $this->sendSuccess(__('Deleted success!'));
|
|
break;
|
|
default:
|
|
// Change status
|
|
if(!array_key_exists($action,$all_statuses)){
|
|
abort(404);
|
|
}
|
|
foreach ($ids as $id) {
|
|
$payout = $this->vendorPayoutClass::find($id);
|
|
if($payout){
|
|
$payout->status = $action;
|
|
if(\request()->input('pay_date'))
|
|
{
|
|
$payout->pay_date = $request->input('pay_date');
|
|
}
|
|
if(\request()->input('note_to_vendor'))
|
|
{
|
|
$payout->note_to_vendor = $request->input('note_to_vendor');
|
|
}
|
|
|
|
$payout->save();
|
|
|
|
if($action == 'rejected'){
|
|
//event(new PayoutRequestEvent('reject',$payout));
|
|
}else{
|
|
//event(new PayoutRequestEvent('update',$payout));
|
|
}
|
|
}
|
|
}
|
|
return $this->sendSuccess( __('Update success!'));
|
|
break;
|
|
}
|
|
}
|
|
}
|