diff --git a/app/Http/Controllers/Frontend/SimBriefController.php b/app/Http/Controllers/Frontend/SimBriefController.php index f91629b6..2956f300 100644 --- a/app/Http/Controllers/Frontend/SimBriefController.php +++ b/app/Http/Controllers/Frontend/SimBriefController.php @@ -70,6 +70,9 @@ class SimBriefController return redirect(route('frontend.flights.index')); } + // Generate SimBrief Static ID + $static_id = $user->ident.'_'.$flight->id; + // No aircraft selected, show selection form if (!$aircraft_id) { // If no subfleets defined for flight get them from user @@ -237,6 +240,7 @@ class SimBriefController 'tpayload' => $tpayload, 'tcargoload' => $tcargoload, 'loaddist' => implode(' ', $loaddist), + 'static_id' => $static_id, ]); } @@ -367,6 +371,31 @@ class SimBriefController ]); } + /** + * Get the latest generated OFP. Pass in two additional items, the Simbrief userid and static_id + * This will get the latest edited/regenerated of from Simbrief and update our records + * We do not need to send the fares again, so used an empty array + */ + public function update_ofp(Request $request) + { + /** @var User $user */ + $user = Auth::user(); + $ofp_id = $request->input('ofp_id'); + $flight_id = $request->input('flight_id'); + $aircraft_id = $request->input('aircraft_id'); + $sb_userid = $request->input('sb_userid'); + $sb_static_id = $request->input('sb_static_id'); + $fares = []; + + $simbrief = $this->simBriefSvc->downloadOfp($user->id, $ofp_id, $flight_id, $aircraft_id, $fares, $sb_userid, $sb_static_id); + if ($simbrief === null) { + $error = new AssetNotFound(new Exception('Simbrief OFP not found')); + return $error->getResponse(); + } + + return redirect(route('frontend.simbrief.briefing', [$ofp_id])); + } + /** * Generate the API code * diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index 00b2227e..484a5e54 100755 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -140,6 +140,7 @@ class RouteServiceProvider extends ServiceProvider Route::get('simbrief/generate', 'SimBriefController@generate')->name('simbrief.generate'); Route::post('simbrief/apicode', 'SimBriefController@api_code')->name('simbrief.api_code'); Route::get('simbrief/check_ofp', 'SimBriefController@check_ofp')->name('simbrief.check_ofp'); + Route::get('simbrief/update_ofp', 'SimBriefController@update_ofp')->name('simbrief.update_ofp'); Route::get('simbrief/{id}', 'SimBriefController@briefing')->name('simbrief.briefing'); Route::get('simbrief/{id}/prefile', 'SimBriefController@prefile')->name('simbrief.prefile'); Route::get('simbrief/{id}/cancel', 'SimBriefController@cancel')->name('simbrief.cancel'); diff --git a/app/Services/SimBriefService.php b/app/Services/SimBriefService.php index 3ccc2a87..a55c78b3 100644 --- a/app/Services/SimBriefService.php +++ b/app/Services/SimBriefService.php @@ -26,11 +26,13 @@ class SimBriefService extends Service * Check to see if the OFP exists server-side. If it does, download it and * cache it immediately * - * @param string $user_id User who generated this - * @param string $ofp_id The SimBrief OFP ID - * @param string $flight_id The flight ID - * @param string $ac_id The aircraft ID - * @param array $fares Full list of fares for the flightß + * @param string $user_id User who generated this + * @param string $ofp_id The SimBrief OFP ID + * @param string $flight_id The flight ID + * @param string $ac_id The aircraft ID + * @param array $fares Full list of fares for the flight + * @param string $sb_userid User's Simbrief ID (Used for Update) + * @param string $sb_static_id Static ID for the generated OFP (Used for Update) * * @return SimBrief|null */ @@ -39,10 +41,18 @@ class SimBriefService extends Service string $ofp_id, string $flight_id, string $ac_id, - array $fares = [] + array $fares = [], + string $sb_user_id = null, + string $sb_static_id = null ) { $uri = str_replace('{id}', $ofp_id, config('phpvms.simbrief_url')); + if ($sb_user_id && $sb_static_id) { + // $uri = str_replace('{sb_user_id}', $sb_user_id, config('phpvms.simbrief_update_url')); + // $uri = str_replace('{sb_static_id}', $sb_static_id, $uri); + $uri = 'https://www.simbrief.com/api/xml.fetcher.php?userid='.$sb_user_id.'&static_id='.$sb_static_id; + } + $opts = [ 'connect_timeout' => 2, // wait two seconds by default 'allow_redirects' => false, diff --git a/config/phpvms.php b/config/phpvms.php index 78bd4943..3f194f9b 100644 --- a/config/phpvms.php +++ b/config/phpvms.php @@ -52,6 +52,11 @@ return [ */ 'simbrief_url' => 'https://www.simbrief.com/ofp/flightplans/xml/{id}.xml', + /* + * URL for fetching an updated Simbrief flight plan via API + */ + 'simbrief_update_url' => 'https://www.simbrief.com/api/xml.fetcher.php?userid={sb_user_id}&static_id={sb_static_id}', + /* * Your vaCentral API key */ diff --git a/resources/views/layouts/default/flights/simbrief_briefing.blade.php b/resources/views/layouts/default/flights/simbrief_briefing.blade.php index e19e2104..fc9c69cb 100644 --- a/resources/views/layouts/default/flights/simbrief_briefing.blade.php +++ b/resources/views/layouts/default/flights/simbrief_briefing.blade.php @@ -7,14 +7,22 @@

{{ $simbrief->xml->general->icao_airline }}{{ $simbrief->xml->general->flight_number }} : {{ $simbrief->xml->origin->icao_code }} to {{ $simbrief->xml->destination->icao_code }}

-
+
@if (empty($simbrief->pirep_id)) Prefile PIREP @endif
-
+
+ @if (!empty($simbrief->xml->params->static_id) && Auth::id() == $simbrief->user_id) + Edit OFP + @endif +
+
Generate New OFP @@ -284,6 +292,31 @@ @endif
+ + {{-- SimBrief Edit Modal --}} + @if(!empty($simbrief->xml->params->static_id)) + + @endif @endsection @section('scripts') diff --git a/resources/views/layouts/default/flights/simbrief_form.blade.php b/resources/views/layouts/default/flights/simbrief_form.blade.php index e54aa361..bd965744 100644 --- a/resources/views/layouts/default/flights/simbrief_form.blade.php +++ b/resources/views/layouts/default/flights/simbrief_form.blade.php @@ -160,6 +160,7 @@ + {{-- For more info about form fields and their details check SimBrief Forum / API Support --}}