You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
web-panel/routes/web.php

126 lines
3.8 KiB

<?php
use App\ParkingLot;
use Google\Cloud\Firestore\FirestoreClient;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Auth::routes();
Route::get('/home', 'HomeController@index')->name('home');
Route::get('/lot/selectstalls', function() { return view('selectstalls'); } );
Route::get('/lot/add', function() { return view('lot.add'); } );
Route::post('/lot/post', function(\Illuminate\Http\Request $request) {
/*$this->validate($request, [
'image' => 'required|image|mimes:jpeg,png,jpg,gif,svg|max:4096',
]);*/
if ( $request->hasFile('image') ){
$img = $request->file('image');
$name = time() . '.' . $img->getClientOriginalExtension();
$destination_path = public_path('/img/references');
$img->move($destination_path, $name);
// $this->save();
$lot_object = new ParkingLot([
'firebase_id' => 'Lot',
'stall_coordinates' => '',
'reference_image' => $name,
'number_of_columns' => $request->get('numcols'),
'name' => $request->get('name')
]);
$lot_object->save();
$lot_object->firebase_id = 'Lot'.$lot_object->id;
$lot_object->save();
return view('selectstalls', [ 'image_name' => $name, 'lot_id' => $lot_object->id ]);
}
});
Route::post('/lot/generate', function(\Illuminate\Http\Request $request){
$lot_object = ParkingLot::find($request->get('lotid'));
$lot_object->stall_coordinates = $request->get('coords');
$lot_object->save();
$coordgroup = json_decode($request->get('coords'));
$coordarrs = [];
foreach( $coordgroup as $group ){
array_push($coordarrs, ['x'=>$group->x, 'y'=>$group->y, 'w'=>$group->w, 'h'=>$group->h]);
}
// var_dump($coordarrs);
usort($coordarrs, function($a, $b){
return $a['y'] <=> $b['y'];
});
// var_dump($coordarrs);
$coordarrs_chunks = array_chunk($coordarrs, $lot_object->number_of_columns);
foreach($coordarrs_chunks as $key=>$chunk ){
usort($chunk, function($a, $b) {
return $a['x'] <=> $b['x'];
});
$coordarrs_chunks[$key] = $chunk;
}
$stall_coords_1D = call_user_func_array('array_merge', $coordarrs_chunks);
$lot_object->stall_coordinates = json_encode($stall_coords_1D);
// dd([$coordarrs_chunks, $stall_coords_1D]);
$db = new FirestoreClient();
$doc_ref = $db->collection('lots')->document($lot_object->firebase_id);
$doc_ref->set([]);
$doc_ref = $db->collection('lots')->document($lot_object->firebase_id)->collection('info')->document('lotInfo');
$doc_ref->set([
'coordinates' => $lot_object->stall_coordinates,
'lotID' => $lot_object->id,
'refImage' => $lot_object->reference_image,
'tableLayout' => '',
'columns' => $lot_object->number_of_columns,
'name' => $lot_object->name
]);
// $coords = json_decode($lot_object->stall_coordinates);
$stall_no = 1;
foreach ($stall_coords_1D as $coord){
$doc_ref = $db->collection('lots')->document($lot_object->firebase_id)->collection('stalls')->document('Stall-'.$stall_no);
$doc_ref->set([
'handicap' => false,
'locationX' => $coord['x'],
'locationY' => $coord['y'],
'open' => true,
'passID' => 0,
'width' => $coord['w'],
'height' => $coord['h'],
'stall' => $stall_no,
]);
$stall_no += 1;
}
echo $request->get('coords');
});