public static function createCase($req) { $all = $req; if (!is_array($all['location_data'])) { $location_information = json_decode($all['location_data'], true); } else { $location_information = json_decode(json_encode($all['location_data']), FALSE); } //array to object $location_information = json_decode(json_encode($location_information), FALSE); $location_information->heading = 0; if (isset($location_information->longitude)) { $all['operation_area'] = \App\Http\Controllers\ApiController::getLocationArea($location_information->longitude, $location_information->latitude); } if (!isset($all['boat_status'])) { $all['boat_status'] = 'distress'; } if (!isset($all['boat_condition'])) { $all['boat_condition'] = 'unknown'; } //no operation area; if (!$all['operation_area']) { $result = []; $result['error'] = 'no_operation_area'; return json_encode($result); } $emergencyCase = new emergencyCase($all); $emergencyCase->save(); $emergencyCasePositions = [new emergencyCaseLocation(['lon' => (double) $location_information->longitude, 'lat' => (double) $location_information->latitude, 'accuracy' => $location_information->accuracy, 'heading' => $location_information->heading])]; $emergencyCase->emergency_case_locations()->saveMany($emergencyCasePositions); $result = []; $result['error'] = null; $result['data']['emergency_case_id'] = $emergencyCase->id; $result['data']['operation_area'] = $emergencyCase->operation_area; return json_encode($result); }