0

So, I am trying to add 3 more columns to the already existing table by fetching data from MongoDB. But, it’s giving me a headache.

Code in Controller:

public function checkPendingPickups(){
        $last2DaysDate = date('Y-m-d',  strtotime(date('Y-m-d').' -30 days'));
        $orderids = AppModelsCart::where('created_at','>=',new DateTime($last2DaysDate))->whereIn('order_status',['open'])->whereNotIn('cancel_by',['system','customer'])->whereNotIn('status',['-1'])->lists('order_id')->toArray();

        $receivedOrders = $this->packageService->receivedOrders($last2DaysDate);
        $receviedNDocketNoUpdatedOrders = $this->packageService->getOrdersNotDeliveredDocketStatus($receivedOrders);

        if(!empty($receviedNDocketNoUpdatedOrders)){
            $allOrderids = array_merge($receviedNDocketNoUpdatedOrders,$orderids);
            $allOrderids = array_unique($allOrderids);
        }else{
            $allOrderids = array_unique($orderids);
        }

    if(!empty($allOrderids)){
        echo '<table>';
        echo '<tr>';
        echo '  <th>Pickup Number </th>';
        echo '  <th>Pickup Date </th>';
        echo '  <th>Docket Number</th>';
        echo '  <th>Carrier Name</th>';
        echo '  <th>Account Name</th>';
        echo '  <th>Docket Status</th>';
        echo '  <th>Order Date </th>';
        echo '  <th>Sender Pincode </th>';
        echo '  <th>Sender Phone Number </th>';
        echo '  <th>Sender Pickup State </th>';
        echo '</tr>';  
        foreach ($allOrderids as $oid){

            // $last2MonthsDate = date('Y-m-d',  strtotime(date('Y-m-d').' -2 month'));

            $cartsData  = AppModelsCart::where('order_id',(int)$oid)->where('created_at','>=',new DateTime($last2DaysDate))->whereIn('order_status',['open'])->whereNotIn('cancel_by',['system','customer'])->whereNotIn('status',['-1'])->get()->toArray();
            $order = AppModelsOrder::where('_id',(int)$oid)->select('created_at')->first();

            if(!empty($cartsData)){
                foreach ($cartsData as $value){
                    if(!isset($value['courier_code']) || !isset($value['tracking_no'])){
                        //check for package couriers 
                        
                        $packageIds = AppModelsPackage::where('order_id',(int)$value['order_id'])->lists('_id')->toArray();
                        if(!empty($packageIds)){
                            $shippingData = AppModelsShippingPackages::where('carrier','courier')->whereIn('package_id',array_map('intval',$packageIds))->get()->toArray();
                            if(!empty($shippingData)){
                                foreach ($shippingData as $shippingValue){
                                    $genieData = AppModelsGenie::where('_id',(int)$value['customer_id'])->select('name')->first();
                                    $OrderTrackingData = AppModelsOrderTracking::where('order_id',(int)$value['order_id'])->where('docket_num' , $shippingValue['docket_num'])->select('status')->first();
                                    $pickup_number = isset($shippingValue['pickup_num'])?$shippingValue['pickup_num']:"Not Available";
                                    $pickup_date = isset($shippingValue['pickup_date'])?$shippingValue['pickup_date']:"Not Available"; 
                                    $doeckt_number = isset($shippingValue['docket_num'])?$shippingValue['docket_num']:"Not Available";
                                    $carrier_name = isset($shippingValue['courier_name'])?$shippingValue['courier_name']:"Not Available";
                                    $account_name = isset($genieData['name'])?$genieData['name']:"Not Available";
                                    $status = isset($OrderTrackingData['status'])?$OrderTrackingData['status']:"Not Available"; 

                                    echo '<tr><td>' . $pickup_number . '&nbsp;&nbsp;</td><td>' . $pickup_date . '&nbsp;&nbsp;</td><td>' . $doeckt_number . 
                                        '&nbsp;&nbsp;</td><td>' . $carrier_name . '&nbsp;&nbsp;</td><td>' . $account_name . '&nbsp;&nbsp;</td><td>' . $status .'&nbsp;&nbsp;</td><td>' . date("d/m/Y", strtotime($order['created_at'])) . '&nbsp;&nbsp;</td></tr>';

                                }// close of foreach
                            }
                        }

                    }else{
                        $genieData = AppModelsGenie::where('_id',(int)$value['customer_id'])->select('name')->first();
                        $OrderTrackingData = AppModelsOrderTracking::where('order_id',(int)$value['order_id'])->where('docket_num' , $value['tracking_no'])->select('status')->first();
                        $pickup_number = isset($value['pickup_num'])?$value['pickup_num']:"Not Available";
                        $pickup_date = isset($value['pickup_date'])?$value['pickup_date']:"Not Available"; 
                        $doeckt_number = isset($value['tracking_no'])?$value['tracking_no']:"Not Available";
                        $carrier_name = isset($value['courier_code'])?$value['courier_code']:"Not Available";
                        $account_name = isset($genieData['name'])?$genieData['name']:"Not Available";
                        $status = isset($OrderTrackingData['status'])?$OrderTrackingData['status']:"Not Available"; 

                        echo '<tr><td>' . $pickup_number . '&nbsp;&nbsp;</td><td>' . $pickup_date . '&nbsp;&nbsp;</td><td>' . $doeckt_number . 
                            '&nbsp;&nbsp;</td><td>' . $carrier_name . '&nbsp;&nbsp;</td><td>' . $account_name . '&nbsp;&nbsp;</td><td>' . $status .'&nbsp;&nbsp;</td><td>' . date("d/m/Y", strtotime($order['created_at'])) . '&nbsp;&nbsp;</td></tr>';
                    }
                }
            }
        }
        echo '</table>';
    }
}

What are the required changes I should do in this existing code to add the three columns which are Sender Pincode, Sender Phone Number & Sender Pickup Address.
Am I supposed to make any changes in MongoDB? Please help.