JFIF  x x C         C     "        } !1AQa "q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz        w !1AQ aq"2B #3Rbr{ gilour

File "WithdrawController.php"

Full Path: /var/www/laravel_filter/app/Http/Controllers/Admin/WithdrawController.php
File size: 6.46 KB
MIME-type: text/x-php
Charset: utf-8

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\WithdrawMethod;
use App\Models\InfluencerWithdraw;
use App\Models\EmailTemplate;
use App\Models\Setting;
use App\Helpers\MailHelper;
use App\Mail\InfluencerWithdrawApproval;
use Mail;
use Auth;

class WithdrawController extends Controller
{
    public function __construct()
    {
        $this->middleware('auth:admin');
    }

    public function index(){
        $methods = WithdrawMethod::all();

        return view('admin.withdraw_method', compact('methods'));
    }

    public function create(){
        return view('admin.withdraw_method_create');
    }

    public function store(Request $request){
        $rules = [
            'name' => 'required',
            'minimum_amount' => 'required',
            'maximum_amount' => 'required',
            'withdraw_charge' => 'required',
            'description' => 'required',
        ];
        $customMessages = [
            'name.required' => trans('admin_validation.Name is required'),
            'minimum_amount.required' => trans('admin_validation.Min amount is required'),
            'maximum_amount.required' => trans('admin_validation.Max amount is required'),
            'withdraw_charge.required' => trans('admin_validation.Charge is required'),
            'description.required' => trans('admin_validation.Description is required'),
        ];
        $this->validate($request, $rules,$customMessages);

        $method = new WithdrawMethod();
        $method->name = $request->name;
        $method->min_amount = $request->minimum_amount;
        $method->max_amount = $request->maximum_amount;
        $method->withdraw_charge = $request->withdraw_charge;
        $method->description = $request->description;
        $method->status = 1;
        $method->save();

        $notification=trans('admin_validation.Create Successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->route('admin.withdraw-method.index')->with($notification);
    }

    public function edit($id){
        $method = WithdrawMethod::find($id);
        return view('admin.withdraw_method_edit', compact('method'));
    }

    public function update(Request $request, $id){

        $rules = [
            'name' => 'required',
            'minimum_amount' => 'required',
            'maximum_amount' => 'required',
            'withdraw_charge' => 'required',
            'description' => 'required',
        ];
        $customMessages = [
            'name.required' => trans('admin_validation.Name is required'),
            'minimum_amount.required' => trans('admin_validation.Min amount is required'),
            'maximum_amount.required' => trans('admin_validation.Max amount is required'),
            'withdraw_charge.required' => trans('admin_validation.Charge is required'),
            'description.required' => trans('admin_validation.Description is required'),
        ];
        $this->validate($request, $rules,$customMessages);

        $method = WithdrawMethod::find($id);
        $method->name = $request->name;
        $method->min_amount = $request->minimum_amount;
        $method->max_amount = $request->maximum_amount;
        $method->withdraw_charge = $request->withdraw_charge;
        $method->description = $request->description;
        $method->status = $request->status;
        $method->save();

        $notification=trans('admin_validation.Update Successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->route('admin.withdraw-method.index')->with($notification);
    }

    public function destroy($id){

        $method = WithdrawMethod::find($id);
        $method->delete();

        $notification=trans('admin_validation.Delete Successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->route('admin.withdraw-method.index')->with($notification);
    }

    public function influencer_withdraw(Request $request){
        $withdraws = InfluencerWithdraw::with('influencer')->orderBy('id','desc');

        if($request->influencer_id){
            $withdraws->where('influencer_id', $request->influencer_id);
        }

        $withdraws = $withdraws->get();

        return view('admin.withdraw_list', compact('withdraws'));
    }

    public function pending_withdraw(){
        $withdraws = InfluencerWithdraw::with('influencer')->orderBy('id','desc')->where('status',0)->get();

        return view('admin.withdraw_list', compact('withdraws'));
    }

    public function show_withdraw($id){

        $withdraw = InfluencerWithdraw::find($id);

        return view('admin.withdraw_show', compact('withdraw'));
    }

    public function destroy_withdraw($id){

        $withdraw = InfluencerWithdraw::find($id);
        $withdraw->delete();

        $notification = trans('admin_validation.Delete Successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->route('admin.influencer-withdraw')->with($notification);
    }

    public function approved_withdraw($id){

        $withdraw = InfluencerWithdraw::find($id);
        $withdraw->status = 1;
        $withdraw->approved_date = date('Y-m-d');
        $withdraw->save();

        $setting = Setting::first();

        $user = $withdraw->influencer;
        $template = EmailTemplate::where('id',5)->first();
        $message = $template->description;
        $subject = $template->subject;
        $message = str_replace('{{influencer_name}}',$user->name,$message);
        $message = str_replace('{{withdraw_method}}',$withdraw->method,$message);
        $message = str_replace('{{total_amount}}',$setting->currency_icon .$withdraw->total_amount,$message);
        $message = str_replace('{{withdraw_charge}}',$setting->currency_icon .($withdraw->total_amount - $withdraw->withdraw_amount),$message);
        $message = str_replace('{{withdraw_amount}}',$setting->currency_icon .$withdraw->withdraw_amount,$message);
        $message = str_replace('{{approval_date}}',$withdraw->approved_date,$message);
        MailHelper::setMailConfig();
        Mail::to($user->email)->send(new InfluencerWithdrawApproval($subject,$message));

        $notification = trans('admin_validation.Withdraw request approval successfully');
        $notification=array('messege'=>$notification,'alert-type'=>'success');
        return redirect()->route('admin.influencer-withdraw')->with($notification);

    }
}