diff --git a/app/Database/migrations/2017_06_17_214650_create_flight_tables.php b/app/Database/migrations/2017_06_17_214650_create_flight_tables.php index cd0442de..1b5f3564 100644 --- a/app/Database/migrations/2017_06_17_214650_create_flight_tables.php +++ b/app/Database/migrations/2017_06_17_214650_create_flight_tables.php @@ -73,6 +73,7 @@ class CreateFlightTables extends Migration $table->bigIncrements('id'); $table->string('flight_id', \App\Interfaces\Model::ID_MAX_LENGTH); $table->string('name', 50); + $table->string('slug', 50)->nullable(); $table->text('value'); $table->timestamps(); diff --git a/app/Database/seeds/sample.yml b/app/Database/seeds/sample.yml index 30f449a1..f07fe30e 100644 --- a/app/Database/seeds/sample.yml +++ b/app/Database/seeds/sample.yml @@ -394,18 +394,20 @@ flights: flight_fields: - name: Departure Gate - slug: departure_gate + slug: departure-gate - name: Arrival Gate - slug: arrival_gate + slug: arrival-gate flight_field_values: - id: 1 flight_id: flightid_1 name: cost index + slug: cost-index value: 80 - id: 2 flight_id: flightid_2 name: cost index + slug: cost-index value: 100 flight_subfleet: @@ -539,24 +541,24 @@ pirep_fares: pirep_fields: - id: 1 name: departure gate - slug: departure_gate + slug: departure-gate required: 1 - id: 2 name: arrival gate - slug: arrival_gate + slug: arrival-gate required: 0 pirep_field_values: - id: 1 pirep_id: pirepid_1 name: arrival gate - slug: arrival_gate + slug: arrival-gate value: 10 source: manual - id: 2 pirep_id: pirepid_1 name: departure gate - slug: departure_gate + slug: departure-gate value: B32 source: manual diff --git a/app/Http/Controllers/Frontend/PirepController.php b/app/Http/Controllers/Frontend/PirepController.php index a575f5ce..c58b7729 100644 --- a/app/Http/Controllers/Frontend/PirepController.php +++ b/app/Http/Controllers/Frontend/PirepController.php @@ -121,6 +121,7 @@ class PirepController extends Controller $custom_fields[] = [ 'name' => $field->name, + 'slug' => $field->slug, 'value' => $request->input($field->slug), 'source' => PirepSource::MANUAL ]; @@ -304,7 +305,10 @@ class PirepController extends Controller // Depending on the button they selected, set an initial state // Can be saved as a draft or just submitted if ($attrs['submit'] === 'save') { - $pirep->state = PirepState::DRAFT; + if(!$pirep->read_only) { + $pirep->state = PirepState::DRAFT; + } + $pirep->save(); Flash::success('PIREP saved successfully.'); } else if ($attrs['submit'] === 'submit') { @@ -334,6 +338,10 @@ class PirepController extends Controller # set the custom fields foreach ($pirep->fields as $field) { + if($field->slug == null) { + $field->slug = str_slug($field->name); + } + $pirep->{$field->slug} = $field->value; } diff --git a/app/Models/FlightFieldValue.php b/app/Models/FlightFieldValue.php index 3daf15bd..48c38d17 100644 --- a/app/Models/FlightFieldValue.php +++ b/app/Models/FlightFieldValue.php @@ -18,11 +18,21 @@ class FlightFieldValue extends Model protected $fillable = [ 'flight_id', 'name', + 'slug', 'value', ]; public static $rules = []; + /** + * @param $name + */ + public function setNameAttribute($name): void + { + $this->attributes['name'] = $name; + $this->attributes['slug'] = str_slug($name); + } + /** * Relationships */ diff --git a/app/Models/Observers/PirepFieldObserver.php b/app/Models/Observers/PirepFieldObserver.php deleted file mode 100644 index 48f02a34..00000000 --- a/app/Models/Observers/PirepFieldObserver.php +++ /dev/null @@ -1,28 +0,0 @@ -slug = str_slug($model->name); - } - - /** - * @param PirepField $model - */ - public function updating(PirepField $model): void - { - $model->slug = str_slug($model->name); - } -} diff --git a/app/Models/Observers/Sluggable.php b/app/Models/Observers/Sluggable.php new file mode 100644 index 00000000..079a0f7d --- /dev/null +++ b/app/Models/Observers/Sluggable.php @@ -0,0 +1,35 @@ +slug = str_slug($model->name); + } + + /** + * @param $model + */ + public function updating($model): void + { + $model->slug = str_slug($model->name); + } + + /** + * @param $name + */ + public function setNameAttribute($name): void + { + $this->attributes['name'] = $name; + $this->attributes['slug'] = str_slug($name); + } +} diff --git a/app/Models/Pirep.php b/app/Models/Pirep.php index 57245aa5..b9c51aef 100644 --- a/app/Models/Pirep.php +++ b/app/Models/Pirep.php @@ -45,6 +45,7 @@ use PhpUnitsOfMeasure\Exception\NonStringUnitName; * @property Carbon submitted_at * @property Carbon created_at * @property Carbon updated_at + * @property bool read_only * @property Acars position * @property Acars[] acars * @package App\Models @@ -127,9 +128,9 @@ class Pirep extends Model * If a PIREP is in these states, then it can't be changed. */ public static $read_only_states = [ + PirepState::PENDING, PirepState::ACCEPTED, PirepState::REJECTED, - //PirepState::PENDING, PirepState::CANCELLED, ]; diff --git a/app/Models/PirepFieldValues.php b/app/Models/PirepFieldValues.php index 39c34266..584944d8 100644 --- a/app/Models/PirepFieldValues.php +++ b/app/Models/PirepFieldValues.php @@ -15,6 +15,7 @@ class PirepFieldValues extends Model protected $fillable = [ 'pirep_id', 'name', + 'slug', 'value', 'source', ]; @@ -23,6 +24,15 @@ class PirepFieldValues extends Model 'name' => 'required', ]; + /** + * @param $name + */ + public function setNameAttribute($name): void + { + $this->attributes['name'] = $name; + $this->attributes['slug'] = str_slug($name); + } + /** * Foreign Keys */ diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 175829fc..ce371553 100755 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -4,21 +4,23 @@ namespace App\Providers; use App\Models\Aircraft; use App\Models\Airport; +use App\Models\FlightField; +use App\Models\FlightFieldValue; use App\Models\Journal; use App\Models\JournalTransaction; use App\Models\Observers\AircraftObserver; use App\Models\Observers\AirportObserver; use App\Models\Observers\JournalObserver; use App\Models\Observers\JournalTransactionObserver; -use App\Models\Observers\PirepFieldObserver; +use App\Models\Observers\Sluggable; use App\Models\Observers\SettingObserver; use App\Models\Observers\SubfleetObserver; use App\Models\PirepField; +use App\Models\PirepFieldValues; use App\Models\Setting; use App\Models\Subfleet; use App\Repositories\SettingRepository; use App\Services\ModuleService; -use Illuminate\Support\Carbon; use Illuminate\Support\Facades\Schema; use Illuminate\Support\ServiceProvider; use View; @@ -42,10 +44,15 @@ class AppServiceProvider extends ServiceProvider Airport::observe(AirportObserver::class); Journal::observe(JournalObserver::class); JournalTransaction::observe(JournalTransactionObserver::class); - PirepField::observe(PirepFieldObserver::class); + + FlightField::observe(Sluggable::class); + FlightFieldValue::observe(Sluggable::class); + + PirepField::observe(Sluggable::class); + PirepFieldValues::observe(Sluggable::class); + Setting::observe(SettingObserver::class); Subfleet::observe(SubfleetObserver::class); - } /** @@ -55,7 +62,6 @@ class AppServiceProvider extends ServiceProvider { # Only dev environment stuff if ($this->app->environment() === 'dev') { - # Only load the IDE helper if it's included. This lets use distribute the # package without any dev dependencies if (class_exists(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class)) { diff --git a/app/Services/PirepService.php b/app/Services/PirepService.php index 680bd4c7..403afa0d 100644 --- a/app/Services/PirepService.php +++ b/app/Services/PirepService.php @@ -13,6 +13,7 @@ use App\Models\Bid; use App\Models\Enums\AcarsType; use App\Models\Enums\PirepSource; use App\Models\Enums\PirepState; +use App\Models\Enums\PirepStatus; use App\Models\Enums\UserState; use App\Models\Navdata; use App\Models\Pirep; @@ -211,6 +212,10 @@ class PirepService extends Service } } + $pirep->state = $default_state; + $pirep->status = PirepStatus::ARRIVED; + $pirep->save(); + Log::info('New PIREP filed', [$pirep]); event(new PirepFiled($pirep)); diff --git a/resources/lang/en/pireps.php b/resources/lang/en/pireps.php index b304b4fc..dbc8e47c 100644 --- a/resources/lang/en/pireps.php +++ b/resources/lang/en/pireps.php @@ -20,7 +20,7 @@ return [ 'count' => 'Count', 'flighttime' => 'Flight Time', 'flightlevel' => 'Flight Level', - 'fieldsreadonly' => 'Once a PIREP has been accepted/rejected, certain fields go into read-only mode.', + 'fieldsreadonly' => 'Once a PIREP has been submitted, certain fields go into read-only mode.', 'flightinformations' => 'Flight Information', 'flightident' => 'Flight Number/Code/Leg', 'codeoptional' => 'Code (optional)', diff --git a/resources/lang/it/pireps.php b/resources/lang/it/pireps.php index 1d7cba4f..43a13ec6 100644 --- a/resources/lang/it/pireps.php +++ b/resources/lang/it/pireps.php @@ -15,7 +15,7 @@ return [ 'count' => 'Numero', 'flighttime' => 'Tempo di volo', 'flightlevel' => 'Livello di Volo', - 'fieldsreadonly' => 'Quando un PIREP viene accettato/rifiutato, alcuni cami entrano in modalità di sola lettura.', + 'fieldsreadonly' => 'Quando un PIREP viene sottoporre, alcuni cami entrano in modalità di sola lettura.', 'flightinformations' => 'Informazioni di Volo', 'flightident' => 'Numero di Volo/Codice/Leg', 'codeoptional' => 'Codice (facoltativo)', diff --git a/resources/views/layouts/default/pireps/fields.blade.php b/resources/views/layouts/default/pireps/fields.blade.php index 6a5ffce1..86a04376 100644 --- a/resources/views/layouts/default/pireps/fields.blade.php +++ b/resources/views/layouts/default/pireps/fields.blade.php @@ -240,7 +240,11 @@ flight reports that have been filed. You've been warned!
{{ $errors->first('route') }}
{{ $errors->first($field->slug) }}
@@ -318,14 +323,14 @@ flight reports that have been filed. You've been warned! }} @endif - @if(!isset($pirep) || (filled($pirep) && !$pirep->read_only)) - {{ Form::button(__('pireps.savepirep'), [ + {{ Form::button(__('pireps.savepirep'), [ 'name' => 'submit', 'value' => 'Save', 'class' => 'btn btn-info', 'type' => 'submit']) }} + @if(!isset($pirep) || (filled($pirep) && !$pirep->read_only)) {{ Form::button(__('pireps.submitpirep'), [ 'name' => 'submit', 'value' => 'Submit',