Spamworldpro Mini Shell
Spamworldpro


Server : Apache
System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64
User : corals ( 1002)
PHP Version : 7.4.33
Disable Function : exec,passthru,shell_exec,system
Directory :  /home/corals/mcoil.corals.io/app/Http/Controllers/Admin/Customers/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/corals/mcoil.corals.io/app/Http/Controllers/Admin/Customers/CustomerController.php
<?php

namespace App\Http\Controllers\Admin\Customers;

use App\Shop\Customers\Customer;
use App\Shop\Customers\Repositories\CustomerRepository;
use App\Shop\Customers\Repositories\Interfaces\CustomerRepositoryInterface;
use App\Shop\Customers\Requests\CreateCustomerRequest;
use App\Shop\Customers\Requests\UpdateCustomerRequest;
use App\Shop\Customers\Transformations\CustomerTransformable;
use App\Shop\Orders\Order;
use App\Http\Controllers\Controller;
use App\Shop\Orders\Transformers\OrderTransformable;
use App\Shop\Addresses\Repositories\Interfaces\AddressRepositoryInterface;
use App\Shop\Addresses\Address;
use App\Shop\Addresses\Repositories\AddressRepository;
use Illuminate\Http\Request;
class CustomerController extends Controller {
    use CustomerTransformable;
    use OrderTransformable;

    /**
     * @var CustomerRepositoryInterface
     */
    private $customerRepo;

    /**
     * CustomerController constructor.
     * @param CustomerRepositoryInterface $customerRepository
     */
    public function __construct(CustomerRepositoryInterface $customerRepository,AddressRepositoryInterface $addressRepository) {
        $this->customerRepo = $customerRepository;
        $this->addressRepo = $addressRepository;
    }

    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index() {
        return view('admin.customers.list');
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create() {
        return view('admin.customers.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  CreateCustomerRequest $request
     * @return \Illuminate\Http\Response
     */
    public function store(CreateCustomerRequest $request)
    {
    	$data = $request->except('_token', '_method');
    	$data['name'] = $data['fname'] . ' ' . $data['lname'];
    	$data['phone'] = $request->has('address_phone') ? $request->input('address_phone') : '';
        $customer = $this->customerRepo->createCustomer($data);
        $address_data['address_1']=$request->has('address_1') ? $request->input('address_1') : '';
        $address_data['address_2']=$request->has('address_2') ? $request->input('address_2') : '';
        $address_data['town'] = $request->has('town') ? $request->input('town') : '';
        $address_data['county'] = $request->has('county') ? $request->input('county') : '';
        $address_data['zip'] = $request->has('zip') ? $request->input('zip') : '';
        $address_data['phone'] = $request->has('address_phone') ? $request->input('address_phone') : '';
        $address_data['customer'] = isset($customer->id) ?  $customer->id : '';
        $address_data['status'] = $request->has('status') ? $request->input('status') : 0;
        $this->addressRepo->createAddress($address_data);
        return redirect()->route('admin.customers.index')->with('message', 'Customer added successfully.');
    }

    /**
     * Display the specified resource.
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function show(int $id) {
        $customer = $this->customerRepo->findCustomerById($id);
        // Fetch all orders
        $orders = Order::leftJoin('customers','customers.id','=','orders.driver_id')
                    ->select('orders.*','customers.name as driver_name')
                    ->where(['orders.customer_id' => $id])->get();
        $orders->transform(function (Order $order) {
            return $this->transformOrder($order);
        });
        $orders->load('products');
        // $allOrders = $this->customerRepo->paginateArrayResults($orders->toArray(), 15);
        return view('admin.customers.show', [
            'customer' => $customer,
            'addresses' => $customer->addresses,
            'orders' => $orders->toArray(),
        ]);
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id) {
        $addresses =  Address::where('customer_id',$id)->first();
      
        return view('admin.customers.edit', ['customer' => $this->customerRepo->findCustomerById($id),'address'=>$addresses]);
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  UpdateCustomerRequest $request
     * @param  int $id
     * @return \Illuminate\Http\Response
     */
    public function update(UpdateCustomerRequest $request, $id) {
        $customer = $this->customerRepo->findCustomerById($id);
        $update = new CustomerRepository($customer);
        $data = $request->except('_method', '_token', 'password');
        if ($request->has('password') && $request->input('password') != '') {
            $data['password'] = bcrypt($request->input('password'));
        }
        $data['name'] = $data['fname'] . ' ' . $data['lname'];
        $data['phone'] = $request->has('address_phone') ? $request->input('address_phone') : '';
        $update->updateCustomer($data);
        $addressId = $request->input('address_id');

        $address = $this->addressRepo->findAddressById($addressId);
        $update = new AddressRepository($address);
         $address_data['address_1']=$request->has('address_1') ? $request->input('address_1') : '';
        $address_data['address_2']=$request->has('address_2') ? $request->input('address_2') : '';
        $address_data['town'] = $request->has('town') ? $request->input('town') : '';
        $address_data['county'] = $request->has('county') ? $request->input('county') : '';
        $address_data['zip'] = $request->has('zip') ? $request->input('zip') : '';
        $address_data['phone'] = $request->has('address_phone') ? $request->input('address_phone') : '';
        $address_data['status'] = $request->has('status') ? $request->input('status') : 0;
        $update->updateAddress($address_data);
        //$request->session()->flash('message', 'Update successful');
        //return redirect()->route('admin.customers.edit', $id);
        return redirect()->route('admin.customers.index')->with('message', 'Customer updated successfully.');
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int $id
     *
     * @return \Illuminate\Http\Response
     * @throws \Exception
     */
    public function destroy(int $id) {
      
         
        Address::where("customer_id",$id)->delete();    
        \DB::table('customers')->where('id',$id)->delete();

       
        return redirect()->route('admin.customers.index')->with('message', 'Delete successful');
    }
    
    public function paginateCustomers(Request $request){
        $columns = array( 
                            0 =>'id', 
                            1 =>'name',
                            2=> 'email',
                            3=> 'created_at',
                            4=> 'status',
                            5=> 'actions',
                           
                           
                        );

        $totalData = Customer::where('is_driver','0')->count();
        $totalFiltered = $totalData;
        $start = $request->input('start');
        $limit = $request->input('length');
        $order = $columns[$request->input('order.0.column')];
        $dir = $request->input('order.0.dir');
        $data =[];
        if(empty($request->input('search.value'))){
            $list = Customer::where('is_driver','0') ->offset($start)
                         ->limit($limit)->orderBy($order,$dir)->get();
            if(count($list) > 0){
                foreach($list as $cus){
                    $check_order = Order::where('customer_id',$cus->id)->first();
                    if($check_order){
                        $btn = "<button type='submit' id='{ $cus->id }' title='Delete' class='btn btn-danger' disabled><i class='fa fa-times'></i> Delete</button>";
                    }else{
                        $btn = "<button type='submit' id='{ $cus->id }' title='Delete' class='btn btn-danger delete_submit'><i class='fa fa-times'></i> Delete</button>";
                    }
                    if($cus->status != '1'){
                        $status = '<span class="badge font-badge badge-danger">disabled</span>';
                    }else{
                        $status = '<span class="badge font-badge badge-success">enabled</span>';
                    }
                    $destroy = route('admin.customers.destroy', $cus->id);
                    $show = route('admin.customers.show', $cus->id);
                    $edit = route('admin.customers.edit', $cus->id);
                    $csrf_token = csrf_token();
                    $actions = "<form action='{$destroy}' method='post' id='remove-from-form' class='form-horizontal'><input type='hidden' name='id' value='{ $cus->id }'><input type='hidden' name='_token' value='{$csrf_token}' /> <input type='hidden' name='_method' value='delete'><div class='btn-group'><a href='{$show}' class='btn btn-default'><i class='fa fa-eye'></i> View</a>
                        <a href='{$edit}' class='btn btn-dark'><i class='fa fa-pencil'></i> Edit</a>
                        ".$btn."</div></form>";

                   
                    
                    $nestedData['id'] = $cus->id;
                    $nestedData['name'] = $cus->name;
                    $nestedData['email'] = $cus->email;
                    $nestedData['created_at'] = date('M d, Y h:i a', strtotime($cus->created_at));
                    //$nestedData['status'] = $date;
                    $nestedData['total'] = $totalData;
                    $nestedData['status'] = $status;
                    
                    $nestedData['actions'] = $actions;
                    $data[] = $nestedData;
                }
            }             
        }else{
            $search = $request->input('search.value');
            $list = Customer::where('is_driver','0');
            $list = $list->where(function($query) use($search){
                $query->where('name','LIKE','%'.$search.'%')
                ->orWhere('email','LIKE','%'.$search.'%')
                 ->orWhere('id','LIKE','%'.$search.'%')
                  ->orWhere(\DB::raw("(STR_TO_DATE(created_at,'%b %d %Y %H:%i:%s'))"), "LIKE", "%{$search}%");
            });
            $totalFiltered = $list->count();
            $list = $list->offset($start)
                         ->limit($limit)->orderBy($order,$dir)->get();
            if(count($list) > 0){
                foreach($list as $cus){
                    $check_order = Order::where('customer_id',$cus->id)->first();
                    if($check_order){
                        $btn = "<button type='submit' id='{ $cus->id }' title='Delete' class='btn btn-danger' disabled><i class='fa fa-times'></i> Delete</button>";
                    }else{
                        $btn = "<button type='submit' id='{ $cus->id }' title='Delete' class='btn btn-danger delete_submit'><i class='fa fa-times'></i> Delete</button>";
                    }
                    if($cus->status != '1'){
                        $status = '<span class="badge font-badge badge-danger">disabled</span>';
                    }else{
                        $status = '<span class="badge font-badge badge-success">enabled</span>';
                    }
                    $destroy = route('admin.customers.destroy', $cus->id);
                    $show = route('admin.customers.show', $cus->id);
                    $edit = route('admin.customers.edit', $cus->id);
                    $csrf_token = csrf_token();
                    $actions = "<form action='{$destroy}' method='post' id='remove-from-form' class='form-horizontal'><input type='hidden' name='id' value='{ $cus->id }'><input type='hidden' name='_token' value='{$csrf_token}' /> <input type='hidden' name='_method' value='delete'><div class='btn-group'><a href='{$show}' class='btn btn-default'><i class='fa fa-eye'></i> View</a>
                        <a href='{$edit}' class='btn btn-dark'><i class='fa fa-pencil'></i> Edit</a>
                        ".$btn."</div></form>";

                   
                    
                    $nestedData['id'] = $cus->id;
                    $nestedData['name'] = $cus->name;
                    $nestedData['email'] = $cus->email;
                    $nestedData['created_at'] = date('M d, Y h:i a', strtotime($cus->created_at));
                    //$nestedData['status'] = $date;
                    $nestedData['total'] = $totalData;
                    $nestedData['status'] = $status;
                    
                    $nestedData['actions'] = $actions;
                    $data[] = $nestedData;
                }
            }  
        }
        $json_data = array(
                    "draw"            => intval($request->input('draw')),  
                    "recordsTotal"    => intval($totalData),  
                    "recordsFiltered" => intval($totalFiltered), 
                    "data"            => $data   
                    );
            
        echo json_encode($json_data);   
    }
}

Spamworldpro Mini