public function store(Request $request, $station_id) { $station = \App\Station::findOrFail($station_id); if (!$request->user()->isAdmin() && $station->user_id != $request->user()->id) { return abort(403); } $aerometric = new \App\Aerometric(); $aerometric->station_id = $station->id; foreach (array_keys(config('aerometrics.properties')) as $property) { $aerometric->{$property} = request()->input($property, '0.0'); } $aerometric->save(); return redirect('backend/stations/' . $station->id . '/aerometrics/' . $aerometric->id); }
public function postImport(Request $request, $id) { $station = \App\Station::findOrFail($id); if (!$request->user()->isAdmin() && $station->user_id != $request->user()->id) { return abort(403); } $this->validate($request, ['file' => 'required|mimes:txt|max:5000']); $file = request()->file('file'); $contents = file_get_contents($file->getPathname()); $data = []; if ($file->getClientOriginalExtension() == 'csv') { $lines = explode("\r\n", $contents); $array = array_map("str_getcsv", $lines); $header = array_shift($array); foreach ($array as $v) { $data[] = array_combine($header, $v); } } else { if ($file->getClientOriginalExtension() == 'json') { $data = json_decode($contents, true); } } foreach ($data as $d) { $aerometric = new \App\Aerometric(); $aerometric->station_id = $station->id; foreach (array_keys(config('aerometrics.properties')) as $property) { $aerometric->{$property} = array_get($d, $property, '0.0'); } $aerometric->created_at = $aerometric->updated_at = array_get($d, 'created_at', new \DateTime('now')); $aerometric->save(); } return redirect('backend/stations/' . $station->id); }
$aerometric = new App\Aerometric(); $aerometric->station_id = $station->id; foreach (array_keys(config('aerometrics.properties')) as $property) { $aerometric->{$property} = request()->input($property, '0.0'); } $aerometric->save(); return ['success' => true]; }); Route::get('/station', function () { $station = App\Station::where('unique_id', '=', request()->input('unique_id', ''))->firstOrFail(); $aerometric = new App\Aerometric(); $aerometric->station_id = $station->id; foreach (array_keys(config('aerometrics.properties')) as $property) { $aerometric->{$property} = request()->input($property, '0.0'); } $aerometric->save(); return ['success' => true]; }); }); Route::group(['middleware' => 'web'], function () { Route::group(['middleware' => 'auth', 'prefix' => 'backend'], function () { Route::get('/', 'BackendController@index'); Route::resource('stations', 'Backend\\StationsController'); Route::get('stations/{stations}/import', 'Backend\\StationsController@getImport'); Route::post('stations/{stations}/import', 'Backend\\StationsController@postImport'); Route::resource('stations.aerometrics', 'Backend\\AerometricsController'); Route::group(['middleware' => 'admin'], function () { Route::resource('tags', 'Backend\\TagsController'); Route::resource('users', 'Backend\\UsersController'); Route::resource('configs', 'Backend\\ConfigsController'); });