<?php
/**
 * Created by PhpStorm.
 * User: sunilkhorwal
 * Date: 2019-05-30
 * Time: 15:57
 */

namespace App\Avanse\Database;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\DB;

class DatabaseImport{

    private $request;

    public function __construct(Request $request){
        $this->request = $request;

        ini_set('max_execution_time', -1);
        set_time_limit(0);
        ini_set('memory_limit', '-1');
    }

    public function init(){
        $this->StorageToDatabaseImport();
    }

    private function StorageToDatabaseImport(){
        $googleDisk = Storage::disk('storage_base');
        $masterDatabase = $googleDisk->listContents('/avanse_database');

        foreach ($masterDatabase as $file) {
            $this->importToDatabase($file);
        }
    }

    public function importToDatabase($file){

        $response = [];
        $attributes = [];

        if (($handle = fopen(storage_path().'/'.$file['path'], 'r')) !== FALSE) {
            while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

                if (!isset($header)) {
                    $header = array_values($data);
                    continue;
                }

                foreach ($data as $key => $item){
                    if (isset($header[$key])) {
                        $response[$header[$key]] = $item;
                    }
                }

                $attributes[] = $response;
            }

            fclose($handle);


            $table = $file['filename'];

            DB::table($table)->insert();
        }
    }
}
