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/www/app/Modules/Postcodes/Http/Controllers/Admin/ |
<?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');
}
}