Sh3ll
OdayForums


Server : Apache
System : Linux 145.162.205.92.host.secureserver.net 5.14.0-611.45.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Apr 1 05:56:53 EDT 2026 x86_64
User : tradze ( 1001)
PHP Version : 8.1.34
Disable Function : NONE
Directory :  /home/tradze/.trash/app_old/Modules/Postcodes/Http/Controllers/Admin/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /home/tradze/.trash/app_old/Modules/Postcodes/Http/Controllers/Admin/PostcodeImportController.php
<?php
namespace App\Modules\Postcodes\Http\Controllers\Admin;

use App\Http\Controllers\AdminController;
use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Modules\Postcodes\Http\Requests\PostcodeRequest;
use App\Modules\Postcodes\Models\Postcode;
use App\Modules\Postcodes\Models\Zone;
use App\Modules\Services\Http\Requests\ServiceDurationRequest;
use App\Modules\Services\Models\ServiceDuration;
use App\Modules\Services\Models\ServiceDurationCategory;
use App\User;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Laracasts\Flash\Flash;
use Maatwebsite\Excel\Excel;
use Yajra\Datatables\Datatables;
use Yajra\Datatables\Engines\CollectionEngine;

class PostcodeImportController extends AdminController
{

    public $zones;

    public function import()
    {
        $files = [
//            'public/postcodes/AL.csv',
//            'public/postcodes/BR.csv',
//            'public/postcodes/CM.csv',
//            'public/postcodes/CR.csv',
//            'public/postcodes/DA.csv',
            'storage/app/postcodes/E.csv',
//            'public/postcodes/EC.csv',
//            'public/postcodes/EN.csv',
//            'public/postcodes/GU.csv',
//            'public/postcodes/HA.csv',
//            'public/postcodes/HP.csv',
//            'public/postcodes/IG.csv',
//            'public/postcodes/KT.csv',
//            'public/postcodes/N.csv',
//            'public/postcodes/NW.csv',
//            'public/postcodes/RM.csv',
//            'public/postcodes/SE.csv',
//            'public/postcodes/SL.csv',
//            'public/postcodes/SM.csv',
//            'public/postcodes/SW.csv',
//            'public/postcodes/TW.csv',
//            'public/postcodes/UB.csv',
//            'public/postcodes/W.csv',
//            'public/postcodes/WC.csv',
//            'public/postcodes/WD.csv',
        ];

        foreach($files as $path)
            $status = $this->process_import($path);
            return $status;
    }

    /**
     * Process Import method
     */
    public function process_import($path)
    {
        ini_set('memory_limit',-1);
        ini_set('max_execution_time', 0);
        set_time_limit(0);

        $data = \Excel::load($path)->get();

        if (!$data->count())
            return;

        $postcodes = collect();
        foreach($data as $post){
            $row = [
                'postcode'=>trim($post->postcode),
                'in_use'=>trim($post->in_use),
                'latitude'=>trim($post->latitude),
                'longitude'=>trim($post->longitude),
                'easting'=>trim($post->easting),
                'northing'=>trim($post->northing),
                'gridref'=>trim($post->grid_ref),
                'county'=>trim($post->county),
                'district'=>trim($post->district),
                'ward'=>trim($post->ward),
                'districtcode'=>trim($post->district_code),
                'wardcode'=>trim($post->ward_code),
                'country'=>trim($post->country),
                'countycode'=>trim($post->county_code),
                'constituency'=>trim($post->constituency),
                'introduced'=>trim($post->introduced),
                'terminated'=>trim($post->terminated),
                'parish'=>trim($post->parish),
                'nationalpark'=>trim($post->national_park),
                'population'=>trim($post->population),
                'households'=>trim($post->households),
                'built_up_area'=>trim($post->built_up_area),
                'built_up_sub_division'=>trim($post->built_up_sub_division),
                'lower_layer_super_output_area'=>trim($post->lower_layer_super_output_area),
                'ruralurban'=>trim($post->ruralurban),
                'region'=>trim($post->region),
                'altitude'=>trim($post->altitude),
            ];
            $postcodes->push($row);
        } //endforeach


        DB::beginTransaction();
        $status=false;
        foreach($postcodes->chunk(250) as $chunk){
            $status=false;
            Postcode::insert($chunk->toArray());
            $status=true;
        } //endforeach

        if ($status){
            DB::commit();
            return ['success'=>true,'items'=>$postcodes->count()];
        }
        else{
            DB::rollBack();
            return ['success'=>false,'items'=>0];
        }

    }

    /**
     * Associates zones to each postcode
     */
    public function associate_zone()
    {
        ini_set('memory_limit',-1);
        ini_set('max_execution_time', 0);

        //get all zone
        $this->zones = Zone::pluck('id','name');

        //get all postcodes with no associated zone
        $postcodes = Postcode::where('zone_id',0)->get();

        foreach($postcodes->chunk(250) as $chunk){
            foreach($chunk as $pcode){
                $zoneArr = $this->zones->keys()->all();
                $pcodezone = explode(' ',$pcode->postcode)[0];

                //get zone id or create new one
                if (array_key_exists($pcodezone,$zoneArr)){
                    $zone_id = $this->zones->$pcodezone;
                }
                else{
                    //create new zone
                    $newzone = Zone::firstOrCreate(['name'=>$pcodezone,'county'=>$pcode->county,'district'=>$pcode->district]);
                    $this->zones = Zone::pluck('id','name');
                    $zone_id = $newzone->id;
                } //end elseif

                //attach zone_id to the postcode
                $pcode->zone_id = $zone_id;
                $pcode->save();
            } //endforeach

//            dd([
//               'chunk'=>$chunk
//            ]);
        } //endforeach

        dd('end');
    }

    
}

ZeroDay Forums Mini