aso = $o; } /** * Execute the job. * * @return void */ public function handle() { $u = 0; $class = $this->class_prefix.$this->aso->name; if (class_exists($class)) { $o = new $class($this->aso); } else { Log::error(sprintf('%s: Class doesnt exist: %d',get_class($this),$class)); exit(1); } AdslTraffic::where('supplier_id',$this->aso->id) ->where('date',$this->aso->stats_lastupdate) ->delete(); // @todo Need to trap errors from getting data $c = 0; foreach (explode("\n",$o->connect()) as $line) { if (! trim($line)) continue; // The first row is our header if (! $c++) { $fields = $o->getColumns(preg_replace('/,\s+/',',',$line),collect($o->header())); continue; } if (! $fields->count()) abort(500,'? No fields in data exportupda'); $row = str_getcsv(trim($line)); try { $date = Carbon::createFromFormat('Y-m-d',$row[$o->getColumnKey('Date')]); $oo = Adsl::where('service_username',$row[$o->getColumnKey('Login')]) ->select(DB::raw('ab_service__adsl.*')) ->join('ab_service','ab_service.id','=','service_id') ->where('ab_service.date_start','<=',$date->format('U')) ->where(function($query) use ($date) { $query->whereNULL('ab_service.date_end') ->orWhere('ab_service.date_end','<=',$date->format('U')); }) ->get(); // If we have no records if ($oo->count() != 1) { Log::error(sprintf('! Records Errors for:%s (%s) [%s]',$row[$o->getColumnKey('Login')],$date,$oo->count())); $to = new AdslTraffic; $to->site_id = 1; // @todo TO ADDRESS $to->service = $row[$o->getColumnKey('Login')]; $to->date = $this->aso->stats_lastupdate; $to->supplier_id = $this->aso->id; $to->up_peak = $row[$o->getColumnKey('Peak upload')]; $to->up_offpeak = $row[$o->getColumnKey('Off peak upload')]; $to->down_peak = $row[$o->getColumnKey('Peak download')]; $to->down_offpeak = $row[$o->getColumnKey('Off peak download')]; // $to->peer // $to->internal $to->time = '24:00'; // @todo $to->save(); $u++; } else { $to = new AdslTraffic; $to->site_id = 1; // @todo TO ADDRESS $to->date = $this->aso->stats_lastupdate; $to->supplier_id = $this->aso->id; $to->up_peak = $row[$o->getColumnKey('Peak upload')]; $to->up_offpeak = $row[$o->getColumnKey('Off peak upload')]; $to->down_peak = $row[$o->getColumnKey('Peak download')]; $to->down_offpeak = $row[$o->getColumnKey('Off peak download')]; // $to->peer // $to->internal $to->time = '24:00'; // @todo $oo->first()->traffic()->save($to); $u++; } } catch (\Exception $e) { dd(['row'=>$row,'line'=>$line]); } } if ($u) { $this->aso->stats_lastupdate = $this->aso->stats_lastupdate->addDay(); $this->aso->save(); if ($this->aso->traffic_mismatch($date)->count()) Mail::to('deon@graytech.net.au') // @todo To change ->send(new TrafficMismatch($this->aso,$date)); } Log::info(sprintf('%s: Records Imported: %d',get_class($this),$u)); } }