Compare commits

...

151 Commits

Author SHA1 Message Date
snyk-bot
077b9aa491 fix: package.json & package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-AXIOS-1038255
2020-12-24 02:26:09 +00:00
B.Fatih KOZ
18e1d63760 Update User.php (#968)
We should be able to send the private name with the api too.
2020-12-23 11:27:01 -05:00
Nabeel S
4bda494c6b Add helpers kvp() and kvp_save() (#966) 2020-12-21 11:30:44 -05:00
B.Fatih KOZ
a5513b6fbb Fixes for reported pressure in METAR parsing (#965)
* Update Metar.php

The reported pressure was always being assigned as hPa thus resulting display and conversion errors when the reported pressure was inHg.

Also the VFR/IFR (VMC/IMC) determination was using minimum 5 nmi and 3000 ft cloud base, it must be 5 km and 3000 ft.

With this state, this PR should fix issue #948 and partly fixes issue #963

* MetarTest Fix for inHg/hPa
2020-12-21 10:53:50 -05:00
B.Fatih KOZ
e4972eaae3 Download screen enhancements
Changed the group name according to its category , aircrafts will show icao type and registration , airports will be displayed with their icao codes names and countries. Rest will be showed with their names (exp airlines)

This will result a much better look on the downloads page for end users while looking for a specific type's files (like a repaint for a B738).
2020-12-18 14:34:05 -05:00
Nabeel Shahzad
e95e61d4b4 Fix tests #807 2020-12-07 10:19:43 -05:00
Nabeel Shahzad
f92912dff4 Fix test 2020-12-07 09:50:00 -05:00
Nabeel Shahzad
f62c607138 Change fuel calculation to fuel used #807 2020-12-07 09:46:07 -05:00
B.Fatih KOZ
d1a3155653 Fixed EET and ENDURANCE values at IVAO & VATSIM prefile (#954)
Fixed wrong EET and ENDURANCE values at IVAO & VATSIM prefile forms with a php function converting seconds to HHmm format. 

Also added View Route At SkyVector link (uses auto zoom to fpl route on High Enroute Charts) , thx Maco for his idea and original link.
2020-12-06 17:18:55 -05:00
B.Fatih KOZ
883e8786e0 Formatting on admin pirep page #952
* Fix For Issue #952 / Admin Pirep Display

Removed unnecessary div tags to fix the broken display problem, defined the div class with a php code

* Fix and Update for Admin Pirep Index

Fixed the page width problem and search error , added the ability to also search for Rejected and Accepted pireps.
2020-12-05 20:27:03 -05:00
B.Fatih KOZ
fb44b73f44 Fix METAR decoding (text correction only) (#950)
* Update Metar Decoding (Text Correction Only)

SKC means Sky Clear or Clear Skies.

Rest is ok

* Update MetarTest.php
2020-12-04 12:47:42 -05:00
B.Fatih KOZ
7379e93c46 Update simbrief_briefing.blade.php (#944)
1. Added ATC Prefile options for IVAO and VATSIM
2. Added TAF reports for Orig, Dest and Altn airports. (Technically TAF reports are required for flights more than 1 hour, so we need to see them on the briefing page too)
3. Adjusted the height of OFP division to match the page with the WX section changes
2020-12-04 11:20:12 -05:00
B.Fatih KOZ
d4bb5605de Update search.blade.php (#943)
Added the ability to select and search an airline's flights. Will be usefull in multiple airline installations/configs.

Co-authored-by: Nabeel S <nabeelio@users.noreply.github.com>
2020-12-04 11:12:41 -05:00
B.Fatih KOZ
8ecc096bf7 Update Latest Pireps Widget (#945)
Added flight number, used aircraft registration (and icao type) instead of name
2020-12-04 11:04:47 -05:00
Nabeel S
6b5cf38224 Calculate percentage properly instead of adding to the base value #925 (#942)
* Calculate percentage properly instead of adding to the base value #925
2020-11-26 16:44:57 -05:00
Nabeel S
2ecf366670 Add missing columns from subfleet export #926 (#941) 2020-11-26 13:34:04 -05:00
Nabeel Shahzad
a7981c0a87 Redirect to the subfleet aircraft list on save #932 2020-11-26 13:15:56 -05:00
Nabeel Shahzad
9cf07c47c7 Fix notifications error for collect() #937 2020-11-26 13:08:32 -05:00
Nabeel S
8f4219bc95 Download path size too small; fix migrations #935 (#940) 2020-11-26 13:03:59 -05:00
Nabeel Shahzad
eae345efa7 Fix dropping of unique index when table prefix is present #934 2020-11-26 12:27:26 -05:00
Nabeel Shahzad
be15426b5b Fix public path in application bootstrap #887 2020-11-23 13:39:26 -05:00
Nabeel Shahzad
7e4c652330 Log for avatar upload 2020-11-22 09:59:09 -05:00
Nabeel S
ced2c150b7 Change the body size to medium text #920 (#930)
Change the body size to medium text (16MB) #920
2020-11-20 12:00:37 -05:00
Nabeel Shahzad
a2de532f72 Merge branch 'dev' of https://github.com/nabeelio/phpvms into dev 2020-11-02 11:57:27 -05:00
Nabeel Shahzad
a52d844719 Set flight_id to be fillable 2020-11-02 11:57:25 -05:00
Timothy Sturm
fd814bc79e * Fixed broken links on README
* Fixed broken links on README

* Misc. edits to markdown formatting, Title Grammer, and Stylizing the phpVMS brand.
2020-10-31 18:43:00 -04:00
Nabeel Shahzad
0fa00206ce Make sure stdclass is returned in flight fields 2020-10-29 12:38:40 -04:00
Nabeel Shahzad
a58237b04b Allow flight_id to be nullable 2020-10-27 21:47:19 -04:00
Nabeel S
dc7efc981c Refactor fares inheritance #905 (#906) 2020-10-27 18:46:15 -04:00
Yash Govekar
060bebf8fe Accept Pirep button not changing row inline #598 (#880) 2020-10-26 10:18:00 -04:00
Nabeel Shahzad
aaaf2e7c00 Make sure capacity is an integer 2020-10-24 16:04:09 -04:00
Nabeel S
1be68d1e63 Flight/Subfleet fares not returning in API #899 (#900)
Make sure proper fares are returned from the API #899
2020-10-24 15:11:08 -04:00
Nabeel Shahzad
b83f7dcac8 Updated seed data for dev 2020-10-24 09:26:14 -04:00
Nabeel S
c5de2fd8b1 Fix for base map/providers #895 (#897) 2020-10-23 08:08:41 -04:00
Nabeel S
b85d0e6a3e Expose Leaflet base options to templates #895 (#896) 2020-10-23 07:35:44 -04:00
Nabeel S
b37bd2cd7b Change award events handler to subscription #888 (#894) 2020-10-23 07:28:22 -04:00
Nabeel S
584d37f230 FlightRouteAwards - fix if last pirep is empty/other error conditions (#886) 2020-10-22 16:25:52 -04:00
Nabeel Shahzad
1c9d1c1733 Extra logs/skip module seed pending 2020-10-21 14:12:38 -04:00
Nabeel S
cd18442207 Fixes for installer/modules race condition (#883) 2020-10-21 13:28:54 -04:00
Yash Govekar
716ba38b6d Default values for automatically added airports #829 (#878) 2020-10-20 15:25:13 -04:00
Yash Govekar
c0514b381b Fixed exporting expenses (#877) 2020-10-19 15:22:06 -04:00
Yash Govekar
5803487d51 Installing and managing modules from admin panel (#847) 2020-10-19 10:10:28 -04:00
Snyk bot
ca220f1cdf fix: package.json & package-lock.json to reduce vulnerabilities (#873)
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-AJV-584908
- https://snyk.io/vuln/SNYK-JS-JQUERY-565129
- https://snyk.io/vuln/SNYK-JS-JQUERY-567880
- https://snyk.io/vuln/SNYK-JS-SELECT2-456562
- https://snyk.io/vuln/SNYK-JS-SOCKJS-575261
- https://snyk.io/vuln/SNYK-JS-WEBPACKDEVSERVER-72405
- https://snyk.io/vuln/SNYK-JS-YARGSPARSER-560381
- https://snyk.io/vuln/npm:mem:20180117
2020-10-16 11:01:24 -04:00
Nabeel Shahzad
75a0a4c87a Update FareService.php 2020-10-13 18:12:52 -04:00
Nabeel Shahzad
3b6800077f Preload fares with PIREP 2020-10-13 18:12:14 -04:00
Nabeel Shahzad
bf878a98a4 Extra logging around fares 2020-10-13 18:10:31 -04:00
DaGeek
d001704880 Adding a new AwardClass for Flight Time (#869)
Adding a new AwardClass for Flight Time
2020-10-13 17:07:12 -04:00
DaGeek
5371989921 Cosmetic Fix to display Award Images in Admin View (#870)
Fix to correctly display the Award image in the admin UI
2020-10-13 15:41:16 -04:00
DaGeek
6c553569bf Create FlightRouteAwards.php (#865)
Award - FlightRoute- this allows the Admins to create an Award that will be granted if a Pilot completes a flight with a defined Departure and Arrival Airport
2020-10-12 18:54:42 -04:00
Nabeel Shahzad
9eb7dd6913 Update doc links 2020-10-12 15:15:05 -04:00
Nabeel S
dc007f6d9e Bids are missing subfleets in API response #867 (#868)
Bids are missing subfleets in API response #867
2020-10-12 12:49:11 -04:00
Nabeel S
193fbd369d Show awards on user profile #703 (#866) 2020-10-11 16:06:09 -04:00
Botric
151f188886 Update pirep_card.blade.php (#857)
Update pirep_card.blade.php
2020-10-10 15:24:28 -04:00
Nabeel S
69d89511be Inherited value can't be removed #811 (#863)
Inherited value can't be removed #811
2020-10-10 15:24:10 -04:00
Nabeel S
48087fb05f Metar: TEMPO and trend causing issue with values being overwritten (#862)
Metar: TEMPO and trend causing issue with values being overwritten
2020-10-10 14:55:12 -04:00
Nabeel S
c702b01a87 Add tests that rank shouldn't auto change (#840) 2020-10-10 14:50:00 -04:00
DaGeek
0a5194b92e Small Cosmetic Change to Rank & Home Airport Display (#852)
Cosmetic Change to Rank & Home Airport Display
2020-10-09 17:45:16 -04:00
Nabeel Shahzad
24aca506fc Update UserController.php 2020-10-06 19:26:52 -04:00
Nabeel Shahzad
365e33f5f8 Redirect show() to edit() 2020-10-06 19:10:42 -04:00
Nabeel Shahzad
7a75e0f5ad Fix missing $countries 2020-10-06 18:52:34 -04:00
Botric
93da2ca061 Cosmetic change to standardise boxes on profile (#853) 2020-10-04 12:48:12 -04:00
vgpastor
5363e4aa0f Add API Key visual protection (#851)
Add API Key visual protection
2020-10-03 11:13:28 -04:00
Nabeel S
95a40d3565 Make sure proper subfleets are returned as part of the user profile #848 (#849)
* Make sure proper subfleets are returned as part of the user profile #848

* Formatting
2020-09-30 12:58:45 -04:00
Nabeel S
98aa362935 Fix subfleets not returning proper fare counts #831 (#846)
Fix subfleets not returning proper fare counts #831
2020-09-29 13:21:24 -04:00
Yash Govekar
b6603bd178 Updated Route Service Provider that was mismatching API and ADMIN Section (#845) 2020-09-29 13:09:00 -04:00
Yash Govekar
2c539d349d Fix controller namespace in module generation #714
Updated Module Files
2020-09-28 16:04:51 -04:00
Nabeel Shahzad
5df28eb027 Fix module main service provider name 2020-09-27 12:13:24 -04:00
yashris
0dbf8b8652 Public JS files Updated! (#839) 2020-09-27 09:03:46 -04:00
yashris
5856f88a0c Updated index.js inside Map folder (#837) 2020-09-24 09:56:52 -04:00
Nabeel Shahzad
5f9b9399e9 Use $current_airport 2020-09-23 14:39:10 -04:00
Nabeel S
77fe6679ce Update module generation #714 (#716)
* Update module generation #714

* Fix method signatures

* Fix paths within stubs, use single provider.stub file

* Add separate index controller

* Update module generation #714

* Fix method signatures

* Fix paths within stubs, use single provider.stub file

* Update module generation

Disable/lower the cache time as found as a workaround in https://github.com/nWidart/laravel-modules/issues/995

* Update editorconfig for line endings

* Formatting

* Formatting
2020-09-20 19:10:52 -04:00
Nabeel Shahzad
435fa32663 Fix aircraft field name #824 2020-09-15 15:41:53 -04:00
Nabeel Shahzad
78ca06e9dc Add optional() around aircraft info #824 2020-09-14 16:17:03 -04:00
Nabeel Shahzad
2dd3dd5814 Make sure we're getting only active expenses 2020-09-12 15:17:10 -04:00
Nabeel Shahzad
ac7a5a65e5 Update cron path 2020-09-11 16:57:50 -04:00
Nabeel Shahzad
c5ab0978db Force visible flag to true for imports #818 2020-09-11 09:18:27 -04:00
dependabot[bot]
8398d94c0a Bump js-yaml from 3.11.0 to 3.13.1 (#810)
Bumps [js-yaml](https://github.com/nodeca/js-yaml) from 3.11.0 to 3.13.1.
- [Release notes](https://github.com/nodeca/js-yaml/releases)
- [Changelog](https://github.com/nodeca/js-yaml/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nodeca/js-yaml/compare/3.11.0...3.13.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-09-10 17:06:01 -04:00
Nabeel S
1db3295213 Disable autocomplete in admin forms #816 (#817) 2020-09-10 16:42:11 -04:00
Nabeel Shahzad
5dcbd01c00 Update links to some docs 2020-09-04 14:08:14 -04:00
Nabeel Shahzad
c6d12802a4 Fix link to assets docs 2020-09-04 13:32:39 -04:00
Nabeel Shahzad
07de33605b Switch toolchain from yarn to npm 2020-09-04 13:28:17 -04:00
Nabeel Shahzad
ec9ef9c1c2 Add notes to refer to docs when modifying the JS files 2020-09-04 11:50:05 -04:00
Nabeel Shahzad
23962a1abb Add fileinfo ext to requirements #735
closes #735
2020-09-04 11:28:33 -04:00
Nabeel Shahzad
9a735d2935 Update language for subfleet fare 2020-09-04 10:09:53 -04:00
Nabeel Shahzad
51004b143c Fix validator type for aircraft #805 2020-09-03 15:14:26 -04:00
Nabeel S
50a0b89caa Add MTOW and ZFW to aircraft editor #775 (#805)
Add MTOW and ZFW to aircraft editor #775
2020-09-03 13:29:24 -04:00
Nabeel S
e99c22b007 Notifications fixes (#804)
* Emails not sending #795 #722

* Fix for news items not being sent; refactor some events; check for opt-in #722

* Formatting

* Remove extra parameter
2020-09-03 12:50:42 -04:00
Nabeel Shahzad
55fa01478d Fix path for bootstrap file #798 2020-09-02 18:52:52 -04:00
Nabeel Shahzad
552196ce57 Fix root detection #798 2020-09-02 18:47:38 -04:00
Nabeel S
7aa089bd88 Update Laravel/composer dependencies (#803) 2020-09-02 18:15:05 -04:00
Nabeel S
1e4b0d629a Detect the phpvms folder one root level above #798 (#799) 2020-09-01 10:38:45 -04:00
Timothy Sturm
febfff5f12 Update MailChannel.php (#793)
Update from email #792
2020-08-21 15:54:26 -04:00
Nabeel S
cdf7b13b5b Allow any airport to be flown from #783 (#788)
Allow any airport to be flown from #783
2020-08-17 17:06:02 -04:00
Nabeel S
51186bed7c Fix for aircraft not being detected at departure airport #781 (#789)
Aircraft not being checked/detected at departure airport #781
2020-08-17 16:44:31 -04:00
Nabeel Shahzad
ac1dc49377 Replace IP in test 2020-08-15 13:54:01 -04:00
Nabeel Shahzad
be72571185 Check if the root domain is an IP address 2020-08-15 13:50:58 -04:00
Nabeel Shahzad
d3e6d2c49a Add extra logging for user not being at proper airport 2020-08-14 10:26:21 -04:00
Nabeel S
4fa58cec5a Fix clear cache errors with duplicate route names #759 (#787) 2020-08-13 17:53:30 -04:00
Nabeel S
27316f96e8 Fix missing user fields #785 (#786) 2020-08-13 17:44:41 -04:00
Nabeel Shahzad
e5ed66b372 Fix attribute type for PIREP status 2020-08-12 22:02:20 -04:00
Nabeel Shahzad
ee6982f558 Build fix/StyleCI 2020-08-12 14:46:08 -04:00
Nabeel Shahzad
4f46e75515 Check for active flag for user fields in registration 2020-08-12 14:39:00 -04:00
dependabot[bot]
3ac03d9716 Bump elliptic from 6.5.2 to 6.5.3 (#780)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Nabeel S <nabeelio@users.noreply.github.com>
2020-08-12 09:26:22 -04:00
Nabeel Shahzad
ace7c42557 Fix typo for unique email check 2020-08-12 09:06:18 -04:00
Nabeel S
3ebf4f2924 Custom user fields #711 (#772)
Custom user fields during registration and profile edit #711
2020-08-11 17:48:51 -04:00
dependabot[bot]
3739cc8e91 Bump lodash from 4.17.15 to 4.17.19 (#770)
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-08-11 17:48:16 -04:00
Nabeel S
bbb5f1d13c Check for null values when checking pilot ID #760 (#768) 2020-07-14 22:02:35 -04:00
Nabeel S
64e4c91e7e Check public pages for authorization #761 2020-07-10 13:11:38 -04:00
Nabeel S
3e2b1fe42b Add spacing to fare labels #763 (#766) 2020-07-10 09:51:33 -04:00
Nabeel S
420bd7e4ae Add ability to use a link instead of a page #750 (#757)
Add ability to use a link instead of a page #750
2020-06-11 08:27:38 -04:00
Nabeel S
e4b1c238f3 Add ACARS update event #755 (#756) 2020-06-09 09:10:40 -04:00
Nabeel S
57e91027c8 Fix the search route for pending PIREPs #752 (#754) 2020-06-08 09:55:57 -04:00
dependabot[bot]
475ad3a66d Bump websocket-extensions from 0.1.3 to 0.1.4 (#753)
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.3 to 0.1.4.
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.3...0.1.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-06-08 08:56:31 -04:00
Nabeel S
340f52112d Fix public pages not showing properly #708 (#749) 2020-06-05 12:49:22 -04:00
Nabeel Shahzad
c6482bd160 Add last_pirep test 2020-06-05 09:19:18 -04:00
Nabeel Shahzad
df15053b75 Remove trailing comma 2020-06-04 14:05:51 -04:00
Nabeel S
04b8be1649 Add show_datetime_format(); optional default timezone parameter #741 (#746) 2020-06-04 11:34:30 -04:00
Nabeel S
3d211535f7 Remove Google Analytics #728 (#745)
* Remove Google Analytics #728

* Remove config file

* Don't set the vacentral url
2020-06-04 10:36:55 -04:00
Nabeel S
c1408cb8fe Fleet properties not saving #731 (#744) 2020-06-04 08:39:20 -04:00
Nabeel S
519ae600d5 Fix METAR invalid parameter #738 (#743) 2020-06-04 06:30:35 -04:00
Nabeel S
82bae9cc74 Update the flash messages #739 (#742) 2020-06-04 06:11:57 -04:00
Nabeel S
3a07e34259 Add pt-br language #736 (#737)
Add pt-br language #736
2020-06-02 09:10:26 -04:00
Nabeel S
89ca0b49a2 Merge pull request #730 from nabeelio/729-Multi-Expenses
All airports' expenses being applied to PIREP #729
2020-05-26 19:39:29 -04:00
Nabeel Shahzad
5b16c88bcb Fix for all airport expenses being applied #729 2020-05-26 19:13:15 -04:00
Nabeel S
c67e45e98e Merge pull request #727 from nabeelio/724-Db-Memory-Syntax-Error
Fix params for launching process #724
2020-05-23 13:02:34 -04:00
Nabeel Shahzad
688be6f75a Fix params for launching process #724 2020-05-23 12:53:39 -04:00
Nabeel S
8527b39fe2 Merge pull request #725 from nabeelio/718-Airline-Active
Check for airline being active; fix tests for L7 #718
2020-05-23 11:55:26 -04:00
Nabeel Shahzad
a443908bed Frontend flight controller for active airlines 2020-05-23 11:48:48 -04:00
Nabeel Shahzad
c46fc9171c Check for airline being active; fix tests for L7 #718 2020-05-23 11:45:07 -04:00
Nabeel S
71c09aaeb1 Merge pull request #721 from nabeelio/715-Error-Page-Skins
Use theme in error handlers #715
2020-05-23 09:18:07 -04:00
Nabeel Shahzad
5046d26032 Explicitly set theme in error handler, refactor middleware #715 2020-05-23 09:05:38 -04:00
Nabeel S
4cd7eef937 Merge pull request #720 from nabeelio/719-Login-On-Leave
Allow on-leave user to login
2020-05-23 07:47:10 -04:00
Nabeel Shahzad
f17cd15b01 Allow on-leave user to login; show alert message and ensure status is updated #719 2020-05-23 07:20:55 -04:00
Nabeel S
5f8053226e Merge pull request #717 from nabeelio/715-Theme
Apply theme globally; add mail templates into theme folder #715
2020-05-22 21:49:22 -04:00
Nabeel Shahzad
09cd7adb6b Apply theme globally; add mail templates into theme folder #715 2020-05-22 19:00:54 -04:00
Nabeel S
fb7d988032 Merge pull request #712 from nabeelio/707-Module-Enable
Make sure the Updater module is enabled #707
2020-05-21 22:44:59 -04:00
Nabeel Shahzad
eb90d08761 Make sure the Updater module is enabled #707 2020-05-21 22:12:09 -04:00
Nabeel S
1ebb181c36 Merge pull request #710 from nabeelio/707-Update-Error
Auto-Update fixes #707
2020-05-21 12:28:52 -04:00
Nabeel Shahzad
975ee9b88e Fix for update showing available when one isn't #707 2020-05-21 11:50:13 -04:00
Nabeel S
52379c3789 Merge pull request #705 from nabeelio/704-Acars-Map-Center
Fix error with map centering on invalid layers #704
2020-05-19 18:47:27 -04:00
Nabeel Shahzad
bcf7acf957 Fix error with map centering on invalid layers #704 2020-05-19 18:07:38 -04:00
Nabeel S
3b1936e110 Merge pull request #699 from nabeelio/698-Login-Pilot-Id
Enable logins using pilot ID #698
2020-05-16 11:59:03 -04:00
Nabeel Shahzad
b9aeda1cba Enable logins using pilot ID #698 2020-05-16 11:52:05 -04:00
Nabeel S
00505a1607 Merge pull request #697 from nabeelio/673-Laravel-7
Laravel 7 support #673
2020-05-16 09:37:36 -04:00
Nabeel Shahzad
6ebbe0209e Formatting 2020-05-15 18:38:43 -04:00
Nabeel Shahzad
5754103a17 Bump minimum PHP version to 7.3 2020-05-15 18:22:24 -04:00
Nabeel Shahzad
6078163d75 Initial pass at Laravel 7 support #673 2020-05-15 18:20:23 -04:00
Nabeel S
885e1d599e Merge pull request #696 from nabeelio/693-Public-Folder-Permissions
Installer: Use absolute paths for permissions check #693
2020-05-15 15:56:07 -04:00
Nabeel Shahzad
876457af71 Use absolute paths for permissions check #693 2020-05-15 15:45:54 -04:00
Nabeel S
8c75bd098e Merge pull request #695 from sebiecker/dev
Update Permissions Seed
2020-05-15 12:21:30 -04:00
Sebastian Ecker
585c9578e8 Update Permissions Seed
Aircraft is missing in Permissions Seed
2020-05-15 17:51:41 +02:00
3053 changed files with 72603 additions and 15018 deletions

View File

@@ -1,6 +1,10 @@
#
root = true
[*]
end_of_line = lf
insert_final_newline = true
[*.js]
indent_style = space
indent_size = 2
@@ -23,4 +27,4 @@ indent_style = tab
# Matches the exact files either package.json or .travis.yml
[{package.json, .travis.yml}]
indent_style = space
indent_size = 2
indent_size = 2

View File

@@ -6,7 +6,6 @@ language: php
php:
- '7.4'
- '7.3'
- '7.2'
#env:
# - DB=mysql
@@ -29,6 +28,8 @@ services:
install:
- php --version
- mysql --version
# Downgrade composer version to 1.x
- composer self-update --1
- composer install --dev --no-interaction --verbose
- npm i tar-to-zip -g
- cp .travis/env.travis.php env.php

View File

@@ -21,9 +21,9 @@
<directory suffix=".php">./app</directory>
</whitelist>
</filter>
<listeners>
<!--<listeners>
<listener class="NunoMaduro\Collision\Adapters\Phpunit\Listener"/>
</listeners>
</listeners>-->
<php>
<ini name="error_reporting" value="E_ALL"/>
<ini name="display_errors" value="On"/>

View File

@@ -43,7 +43,7 @@ build:
# This is to build all the stylesheets, etc
.PHONY: build-assets
build-assets:
yarn run production
npm run production
.PHONY: install
install: build
@@ -74,9 +74,9 @@ reload-db:
tests: test
.PHONY: test
test: phpcs
#php artisan database:create --reset
vendor/bin/phpunit --debug --verbose
test:
@#php artisan database:create --reset
@vendor/bin/phpunit --verbose
.PHONY: phpcs
phpcs:

View File

@@ -1,20 +1,17 @@
# phpvms <sup>7</sup>
# phpVMS <sup>7</sup>
[![Build Status](https://travis-ci.org/nabeelio/phpvms.svg)](https://travis-ci.org/nabeelio/phpvms) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/d668bebb0a3c46bda381af16ce3d9450)](https://www.codacy.com/app/nabeelio/phpvms?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=nabeelio/phpvms&amp;utm_campaign=Badge_Grade) [![Latest Stable Version](https://poser.pugx.org/nabeel/phpvms/v/stable)](https://packagist.org/packages/nabeel/phpvms) ![StyleCI](https://github.styleci.io/repos/93688482/shield?branch=dev) [![License](https://poser.pugx.org/nabeel/phpvms/license)](https://packagist.org/packages/nabeel/phpvms)
The next phpvms version built on the laravel framework. work in progress. The latest documentation, with installation instructions is available
[on the phpVMS documentation](http://docs.phpvms.net/) page.
The next phpvms version built on the laravel framework. work in progress. The latest documentation, with installation instructions is available [on the phpVMS documentation](https://docs.phpvms.net/) page.
# installation
## Installation
A full distribution, with all of the composer dependencies, is available at this
[GitHub Releases](https://github.com/nabeelio/phpvms/releases) link.
### Requirements
## Requirements
- PHP 7.1+, extensions:
- PHP 7.3+, extensions:
- cURL
- JSON
- mbstring
@@ -24,16 +21,16 @@ A full distribution, with all of the composer dependencies, is available at this
- Database:
- MySQL 5.5+ (or MySQL variant, including MariaDB and Percona)
[View more details on requirements](http://docs.phpvms.net/setup/requirements)
[View more details on requirements](https://docs.phpvms.net/requirements)
## Installer
### Installer
1. Upload to your server
1. Visit the site, and follow the link to the installer
[View installation details](http://docs.phpvms.net/setup/installation)
[View installation details](https://docs.phpvms.net/installation/installation)
# development environment
## Development Environment
A full development environment can be brought up using Docker:
@@ -50,7 +47,7 @@ Then go to `http://localhost`. If you're using dnsmasq, the `app` container is l
127.0.0.1 phpvms.test
```
## Building JS/CSS assets
### Building JS/CSS assets
Yarn is required, run:

View File

@@ -79,21 +79,29 @@ class CreateDatabase extends Command
*/
protected function create_sqlite($dbkey)
{
$dbPath = config($dbkey.'database');
// Skip if running in memory
if ($dbPath === ':memory:') {
return;
}
$exec = 'sqlite3';
if ($this->os->isWindowsLike()) {
$exec = 'sqlite3.exe';
}
if ($this->option('reset') === true) {
$cmd = ['rm', '-rf', config($dbkey.'database')];
$this->runCommand($cmd);
if (file_exists($dbPath)) {
unlink(config($dbkey.'database'));
}
}
if (!file_exists(config($dbkey.'database'))) {
if (!file_exists($dbPath)) {
$cmd = [
$exec,
config($dbkey.'database'),
'""',
$dbPath,
'".exit"',
];
$this->runCommand($cmd);

View File

@@ -1,10 +1,10 @@
<?php
namespace Modules\Importer\Console\Commands;
namespace App\Console\Commands;
use App\Contracts\Command;
use App\Services\ImporterService;
use Illuminate\Support\Facades\Log;
use Modules\Importer\Services\ImporterService;
class ImportFromClassicCommand extends Command
{

View File

@@ -3,7 +3,7 @@
namespace App\Console\Commands;
use App\Contracts\Command;
use DB;
use Illuminate\Support\Facades\DB;
use Symfony\Component\Yaml\Yaml;
/**
@@ -25,6 +25,20 @@ class YamlExport extends Command
exit();
}
// A "preset" for exporting the base set of data
if ($tables[0] === 'base') {
$tables = [
'airlines',
'aircraft',
'subfleets',
'subfleet_fare',
'subfleet_rank',
'bids',
'fares',
'flights',
];
}
$export_tables = [];
foreach ($tables as $table) {
$export_tables[$table] = [];

View File

@@ -36,7 +36,10 @@ abstract class Award
* You don't really need to mess with anything below here
*/
/** @var \App\Models\Award|null */
protected $award;
/** @var \App\Models\User|null */
protected $user;
public function __construct(AwardModel $award = null, User $user = null)

View File

@@ -3,6 +3,7 @@
namespace App\Contracts;
use Illuminate\Support\Facades\Log;
use function is_array;
use Symfony\Component\Process\Process;
/**
@@ -82,9 +83,9 @@ abstract class Command extends \Illuminate\Console\Command
}
/**
* @param $cmd
* @param bool $return
* @param mixed $verbose
* @param array|string $cmd
* @param bool $return
* @param mixed $verbose
*
* @throws \Symfony\Component\Process\Exception\RuntimeException
* @throws \Symfony\Component\Process\Exception\LogicException
@@ -93,16 +94,16 @@ abstract class Command extends \Illuminate\Console\Command
*/
public function runCommand($cmd, $return = false, $verbose = true): string
{
if (\is_array($cmd)) {
if (is_array($cmd)) {
$cmd = implode(' ', $cmd);
}
if ($verbose) {
$this->info('Running "'.$cmd.'"');
$this->info('Running '.$cmd);
}
$val = '';
$process = new Process($cmd);
$process = Process::fromShellCommandline($cmd);
$process->run(function ($type, $buffer) use ($return, &$val) {
if ($return) {
$val .= $buffer;

12
app/Contracts/Event.php Normal file
View File

@@ -0,0 +1,12 @@
<?php
namespace App\Contracts;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
class Event
{
use Dispatchable;
use SerializesModels;
}

View File

@@ -3,9 +3,9 @@
namespace App\Contracts;
use App\Models\Airline;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
use Log;
use Validator;
/**
* Common functionality used across all of the importers
@@ -51,9 +51,9 @@ class ImportExport
*
* @param $code
*
* @return \Illuminate\Database\Eloquent\Model
* @return Airline
*/
public function getAirline($code)
public function getAirline($code): Airline
{
$airline = Airline::firstOrCreate([
'icao' => $code,

View File

@@ -16,7 +16,7 @@ abstract class Listener
public function subscribe(Dispatcher $events): void
{
foreach (static::$callbacks as $klass => $cb) {
$events->listen($klass, get_class($this).'@'.$cb);
$events->listen($klass, static::class.'@'.$cb);
}
}
}

View File

@@ -3,8 +3,11 @@
namespace App\Contracts;
use App\Support\Database;
use DB;
use Exception;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Validator;
use Illuminate\Validation\ValidationException;
/**
* Class Migration
@@ -25,6 +28,29 @@ abstract class Migration extends \Illuminate\Database\Migrations\Migration
{
}
/**
* Add a module and enable it
*
* @param array $attrs
*/
public function addModule(array $attrs)
{
$module = array_merge([
'enabled' => true,
'created_at' => DB::raw('NOW()'),
'updated_at' => DB::raw('NOW()'),
], $attrs);
try {
DB::table('modules')->insert($module);
} catch (Exception $e) {
// setting already exists, just ignore it
if ($e->getCode() === 23000) {
return;
}
}
}
/**
* Seed a YAML file into the database
*
@@ -35,7 +61,7 @@ abstract class Migration extends \Illuminate\Database\Migrations\Migration
try {
$path = base_path($file);
Database::seed_from_yaml_file($path, false);
} catch (\Exception $e) {
} catch (Exception $e) {
Log::error('Unable to load '.$file.' file');
Log::error($e);
}
@@ -52,7 +78,7 @@ abstract class Migration extends \Illuminate\Database\Migrations\Migration
foreach ($rows as $row) {
try {
DB::table($table)->insert($row);
} catch (\Exception $e) {
} catch (Exception $e) {
// setting already exists, just ignore it
if ($e->getCode() === 23000) {
continue;
@@ -60,4 +86,22 @@ abstract class Migration extends \Illuminate\Database\Migrations\Migration
}
}
}
/**
* Add an award from the migrations (for example, if you're adding an award module)
*
* @param array $award See \App\Models\Awardv
*
* @throws \Illuminate\Validation\ValidationException
*/
public function addAward(array $award)
{
$validator = Validator::make($award, \App\Models\Award::$rules);
if ($validator->fails()) {
throw new ValidationException($validator);
}
$awardModel = new \App\Models\Award($award);
$awardModel->save();
}
}

View File

@@ -0,0 +1,49 @@
<?php
namespace App\Contracts\Modules;
/**
* Base class for module service providers
* Add-on module service providers must extend this class. Docs on Service Providers:
* https://laravel.com/docs/7.x/providers
*
* For a sample service provider, view the sample module one:
* https://github.com/nabeelio/phpvms-module/blob/master/Providers/SampleServiceProvider.php
*/
abstract class ServiceProvider extends \Illuminate\Support\ServiceProvider
{
/**
* A boot method is required, even if it doesn't do anything.
* https://laravel.com/docs/7.x/providers#the-boot-method
*
* This is normally where you'd register the routes or other startup tasks for your module
*/
public function boot(): void
{
}
/**
* This is required to register the links in either the public or admin toolbar
* For example, adding a frontend link:
*
* $this->moduleSvc->addFrontendLink('Sample', '/sample', '', $logged_in=true);
*
* Or an admin link:
*
* $this->moduleSvc->addAdminLink('Sample', '/admin/sample');
*/
public function registerLinks(): void
{
}
/**
* Deferred providers:
* https://laravel.com/docs/7.x/providers#deferred-providers
*
* @return array
*/
public function provides(): array
{
return [];
}
}

View File

@@ -1,23 +1,23 @@
<?php
namespace App\Notifications;
namespace App\Contracts;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Notification;
use Illuminate\Support\Facades\Log;
class BaseNotification extends Notification implements ShouldQueue
class Notification extends \Illuminate\Notifications\Notification implements ShouldQueue
{
use Queueable;
public $channels = [];
public $requires_opt_in = false;
public function __construct()
{
// Look in the notifications.channels config and see where this particular
// notification can go. Map it to $channels
$klass = get_class($this);
$klass = static::class;
$notif_config = config('notifications.channels', []);
if (!array_key_exists($klass, $notif_config)) {
Log::error('Notification type '.$klass.' missing from notifications config, defaulting to mail');

View File

@@ -2,10 +2,12 @@
namespace App\Contracts;
use Illuminate\Http\Resources\Json\JsonResource;
/**
* Base class for a resource/response
*/
class Resource extends \Illuminate\Http\Resources\Json\Resource
class Resource extends JsonResource
{
/**
* Iterate through the list of $fields and check if they're a "Unit"

View File

@@ -1,24 +1,30 @@
<?php
use App\Models\Airport;
use App\Models\Enums\AircraftState;
use App\Models\Enums\AircraftStatus;
use App\Models\Subfleet;
use App\Support\ICAO;
use Faker\Generator as Faker;
$factory->define(App\Models\Aircraft::class, function (Faker $faker) {
return [
'id' => null,
'subfleet_id' => function () {
return factory(App\Models\Subfleet::class)->create()->id;
return factory(Subfleet::class)->create()->id;
},
'airport_id' => function () {
return factory(App\Models\Airport::class)->create()->id;
return factory(Airport::class)->create()->id;
},
'iata' => $faker->unique()->text(5),
'icao' => $faker->unique()->text(5),
'name' => $faker->text(50),
'registration' => $faker->unique()->text(10),
'hex_code' => \App\Support\ICAO::createHexCode(),
'hex_code' => ICAO::createHexCode(),
'mtow' => $faker->randomFloat(2, 0, 50000),
'zfw' => $faker->randomFloat(2, 0, 50000),
'status' => \App\Models\Enums\AircraftStatus::ACTIVE,
'state' => \App\Models\Enums\AircraftState::PARKED,
'status' => AircraftStatus::ACTIVE,
'state' => AircraftState::PARKED,
'created_at' => $faker->dateTimeBetween('-1 week', 'now'),
'updated_at' => function (array $pirep) {
return $pirep['created_at'];

View File

@@ -9,7 +9,7 @@ use Hashids\Hashids;
$factory->define(App\Models\Airline::class, function (Faker $faker) {
return [
'id' => null,
'icao' => function (array $apt) use ($faker) {
'icao' => function (array $apt) {
$hashids = new Hashids(microtime(), 5);
$mt = str_replace('.', '', microtime(true));

View File

@@ -8,19 +8,19 @@ $factory->define(App\Models\Flight::class, function (Faker $faker) {
return [
'id' => $faker->unique()->numberBetween(10, 10000000),
'airline_id' => function () {
return factory(App\Models\Airline::class)->create()->id;
return factory(\App\Models\Airline::class)->create()->id;
},
'flight_number' => $faker->unique()->numberBetween(10, 1000000),
'route_code' => $faker->randomElement(['', $faker->text(5)]),
'route_leg' => $faker->randomElement(['', $faker->numberBetween(0, 1000)]),
'dpt_airport_id' => function () {
return factory(App\Models\Airport::class)->create()->id;
return factory(\App\Models\Airport::class)->create()->id;
},
'arr_airport_id' => function () {
return factory(App\Models\Airport::class)->create()->id;
return factory(\App\Models\Airport::class)->create()->id;
},
'alt_airport_id' => function () {
return factory(App\Models\Airport::class)->create()->id;
return factory(\App\Models\Airport::class)->create()->id;
},
'distance' => $faker->numberBetween(1, 1000),
'route' => null,

View File

@@ -6,7 +6,7 @@ $factory->define(App\Models\JournalTransactions::class, function (Faker $faker)
return [
'transaction_group' => \Ramsey\Uuid\Uuid::uuid4()->toString(),
'journal_id' => function () {
return factory(App\Models\Journal::class)->create()->id;
return factory(\App\Models\Journal::class)->create()->id;
},
'credit' => $faker->numberBetween(100, 10000),
'debit' => $faker->numberBetween(100, 10000),

View File

@@ -6,7 +6,7 @@ $factory->define(App\Models\News::class, function (Faker $faker) {
return [
'id' => null,
'user_id' => function () {
return factory(App\Models\User::class)->create()->id;
return factory(\App\Models\User::class)->create()->id;
},
'subject' => $faker->text(),
'body' => $faker->sentence,

View File

@@ -10,8 +10,8 @@ use Faker\Generator as Faker;
* Create a new PIREP
*/
$factory->define(App\Models\Pirep::class, function (Faker $faker) {
$airline = factory(App\Models\Airline::class)->create();
$flight = factory(App\Models\Flight::class)->create([
$airline = factory(\App\Models\Airline::class)->create();
$flight = factory(\App\Models\Flight::class)->create([
'airline_id' => $airline->id,
]);
@@ -21,10 +21,10 @@ $factory->define(App\Models\Pirep::class, function (Faker $faker) {
return $airline->id;
},
'user_id' => function () {
return factory(App\Models\User::class)->create()->id;
return factory(\App\Models\User::class)->create()->id;
},
'aircraft_id' => function () {
return factory(App\Models\Aircraft::class)->create()->id;
return factory(\App\Models\Aircraft::class)->create()->id;
},
'flight_id' => function () use ($flight) {
return $flight->id;

View File

@@ -6,7 +6,7 @@ $factory->define(App\Models\Subfleet::class, function (Faker $faker) {
return [
'id' => null,
'airline_id' => function () {
return factory(App\Models\Airline::class)->create()->id;
return factory(\App\Models\Airline::class)->create()->id;
},
'name' => $faker->unique()->text(50),
'type' => $faker->unique()->text(7),

View File

@@ -1,7 +1,9 @@
<?php
use App\Models\Airline;
use App\Models\Enums\UserState;
use Faker\Generator as Faker;
use Illuminate\Support\Facades\Hash;
$factory->define(App\Models\User::class, function (Faker $faker) {
static $password;
@@ -14,7 +16,7 @@ $factory->define(App\Models\User::class, function (Faker $faker) {
'password' => $password ?: $password = Hash::make('secret'),
'api_key' => $faker->sha1,
'airline_id' => function () {
return factory(App\Models\Airline::class)->create()->id;
return factory(Airline::class)->create()->id;
},
'rank_id' => 1,
'flights' => $faker->numberBetween(0, 1000),

View File

@@ -5,11 +5,6 @@ use Illuminate\Database\Schema\Blueprint;
class RolesPermissionsTables extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
// Create table for storing roles
@@ -79,11 +74,6 @@ class RolesPermissionsTables extends Migration
$this->addData('roles', $roles);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('permission_user');

View File

@@ -6,11 +6,6 @@ use Illuminate\Support\Facades\Schema;
class CreatePasswordResetsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('password_resets', function (Blueprint $table) {
@@ -20,11 +15,6 @@ class CreatePasswordResetsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('password_resets');

View File

@@ -6,11 +6,6 @@ use Illuminate\Support\Facades\Schema;
class CreateSessionsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('sessions', function (Blueprint $table) {
@@ -23,11 +18,6 @@ class CreateSessionsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('sessions');

View File

@@ -5,11 +5,6 @@ use Illuminate\Database\Schema\Blueprint;
class CreateAirlinesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('airlines', function (Blueprint $table) {
@@ -32,11 +27,6 @@ class CreateAirlinesTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('airlines');

View File

@@ -5,11 +5,6 @@ use Illuminate\Database\Schema\Blueprint;
class CreateFaresTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('fares', function (Blueprint $table) {
@@ -25,11 +20,6 @@ class CreateFaresTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('fares');

View File

@@ -7,11 +7,6 @@ use Illuminate\Database\Schema\Blueprint;
class CreateFlightTables extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('flights', function (Blueprint $table) {

View File

@@ -5,11 +5,6 @@ use Illuminate\Database\Schema\Blueprint;
class CreateRanksTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('ranks', function (Blueprint $table) {
@@ -30,11 +25,6 @@ class CreateRanksTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('ranks');

View File

@@ -3,9 +3,6 @@
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
/**
* Class CreateSubfleetTables
*/
class CreateSubfleetTables extends Migration
{
public function up()
@@ -48,11 +45,6 @@ class CreateSubfleetTables extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('subfleets');

View File

@@ -7,11 +7,6 @@ use Illuminate\Support\Facades\Schema;
class CreateBidsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('bids', function (Blueprint $table) {
@@ -25,11 +20,6 @@ class CreateBidsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('bids');

View File

@@ -6,11 +6,6 @@ use Illuminate\Support\Facades\Schema;
class CreateJobsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('jobs', function (Blueprint $table) {
@@ -24,11 +19,6 @@ class CreateJobsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('jobs');

View File

@@ -6,11 +6,6 @@ use Illuminate\Support\Facades\Schema;
class CreateFailedJobsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('failed_jobs', function (Blueprint $table) {
@@ -23,11 +18,6 @@ class CreateFailedJobsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('failed_jobs');

View File

@@ -6,11 +6,6 @@ use Illuminate\Support\Facades\Schema;
class CreateNavdataTables extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
/*
@@ -31,11 +26,6 @@ class CreateNavdataTables extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('navdata');

View File

@@ -7,11 +7,6 @@ use Illuminate\Support\Facades\Schema;
class CreateAcarsTables extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('acars', function (Blueprint $table) {
@@ -44,11 +39,6 @@ class CreateAcarsTables extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('acars');

View File

@@ -6,11 +6,6 @@ use Illuminate\Support\Facades\Schema;
class CreateStatsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('stats', function (Blueprint $table) {
@@ -25,11 +20,6 @@ class CreateStatsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('stats');

View File

@@ -17,11 +17,6 @@ class CreateNewsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('news');

View File

@@ -3,14 +3,10 @@
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
use Modules\Awards\Awards\PilotFlightAwards;
class CreateAwardsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('awards', function (Blueprint $table) {
@@ -23,7 +19,6 @@ class CreateAwardsTable extends Migration
// EG, the airports has an internal expense for gate costs
$table->string('ref_model')->nullable();
$table->text('ref_model_params')->nullable();
//$table->string('ref_model_id', 36)->nullable();
$table->timestamps();
@@ -38,13 +33,20 @@ class CreateAwardsTable extends Migration
$table->index(['user_id', 'award_id']);
});
/**
* Add a default, sample award
*/
$award = [
'name' => 'Pilot 50 flights',
'description' => 'When a pilot has 50 flights, give this award',
'ref_model' => PilotFlightAwards::class,
'ref_model_params' => 50,
];
$this->addAward($award);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('awards');

View File

@@ -6,11 +6,6 @@ use Illuminate\Support\Facades\Schema;
class CreateJournalTransactionsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('journal_transactions', function (Blueprint $table) {
@@ -34,11 +29,6 @@ class CreateJournalTransactionsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('journal_transactions');

View File

@@ -6,11 +6,6 @@ use Illuminate\Support\Facades\Schema;
class CreateJournalsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('journals', function (Blueprint $table) {
@@ -24,11 +19,6 @@ class CreateJournalsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('journals');

View File

@@ -1,6 +1,7 @@
<?php
use App\Contracts\Migration;
use App\Contracts\Model;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -14,7 +15,7 @@ class CreateFilesTable extends Migration
public function up()
{
Schema::create('files', function (Blueprint $table) {
$table->string('id', \App\Contracts\Model::ID_MAX_LENGTH);
$table->string('id', Model::ID_MAX_LENGTH);
$table->string('name');
$table->string('description')->nullable();
$table->string('disk')->nullable();

View File

@@ -1,17 +1,12 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
class AddReadonlyToRoles extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up(): void
{
Schema::table('roles', static function (Blueprint $table) {
@@ -24,11 +19,6 @@ class AddReadonlyToRoles extends Migration
->update(['read_only' => true]);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down(): void
{
Schema::table('roles', static function (Blueprint $table) {

View File

@@ -1,21 +1,19 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
/**
* Kinda of gross operations to change the pilot ID column
* 1. Add an `pilot_id` column, which will get populated with the current ID
* 2. Drop the `id` column, and then recreate it as a string field
* 3. Iterate through all of the users and set their `id` to the `pilot_id`
* 4. Change the other tables column types that reference `user_id`
*/
class UsersAddPilotId extends Migration
{
/**
* Kinda of gross operations to change the pilot ID column
* 1. Add an `pilot_id` column, which will get populated with the current ID
* 2. Drop the `id` column, and then recreate it as a string field
* 3. Iterate through all of the users and set their `id` to the `pilot_id`
* 4. Change the other tables column types that reference `user_id`
*
* @return void
*/
public function up()
{
Schema::table('users', static function (Blueprint $table) {
@@ -29,11 +27,6 @@ class UsersAddPilotId extends Migration
DB::table('users')->update(['pilot_id' => DB::raw('`id`')]);
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function (Blueprint $table) {

View File

@@ -1,16 +1,11 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateNotificationsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('notifications', function (Blueprint $table) {
@@ -23,11 +18,6 @@ class CreateNotificationsTable extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('notifications');

View File

@@ -1,18 +1,16 @@
<?php
use App\Contracts\Migration;
use App\Models\Enums\PirepState;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Schema;
/**
* Change the PIREP state column to be a TINYINT
*/
class PirepsChangeStateType extends Migration
{
/**
* Change the PIREP state column to be a TINYINT
*
* @return void
*/
public function up()
{
// Migrate the old rejected state
@@ -25,13 +23,4 @@ class PirepsChangeStateType extends Migration
$table->unsignedSmallInteger('state')->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}

View File

@@ -5,27 +5,15 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add a `flight_id` column to the PIREPs table
*/
class PirepsAddFlightId extends Migration
{
/**
* Add a `flight_id` column to the PIREPs table
*/
public function up()
{
Schema::table('pireps', function (Blueprint $table) {
$table->string('flight_id', Model::ID_MAX_LENGTH)->nullable()->after('aircraft_id');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('pireps', function (Blueprint $table) {
$table->dropColumn('flight_id');
});
}
}

View File

@@ -4,11 +4,11 @@ use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add a `flight_type` column to the expenses table
*/
class ExpensesAddFlightType extends Migration
{
/**
* Add a `flight_type` column to the expenses table
*/
public function up()
{
Schema::table('expenses', function (Blueprint $table) {
@@ -18,11 +18,6 @@ class ExpensesAddFlightType extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('expenses', function (Blueprint $table) {

View File

@@ -1,6 +1,6 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Support\Facades\Schema;
/**
@@ -25,13 +25,4 @@ class ModifyAirportsCoordinates extends Migration
$table->decimal('lon', 11, 5)->change()->default(0.0)->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}

View File

@@ -1,6 +1,6 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Support\Facades\Schema;
/**
@@ -8,24 +8,10 @@ use Illuminate\Support\Facades\Schema;
*/
class FlightFieldNullable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('flight_field_values', function ($table) {
$table->text('value')->change()->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}

View File

@@ -1,14 +1,14 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add a `load_factor` and `load_factor_variance` columns to the expenses table
*/
class FlightsAddLoadFactor extends Migration
{
/**
* Add a `load_factor` and `load_factor_variance` columns to the expenses table
*/
public function up()
{
Schema::table('flights', function (Blueprint $table) {
@@ -22,11 +22,6 @@ class FlightsAddLoadFactor extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('flights', function (Blueprint $table) {

View File

@@ -1,14 +1,14 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add a `pilot_pay` column for a fixed amount to pay to a pilot for a flight
*/
class FlightsAddPilotPay extends Migration
{
/**
* Add a `pilot_pay` column for a fixed amount to pay to a pilot for a flight
*/
public function up()
{
Schema::table('flights', function (Blueprint $table) {
@@ -18,11 +18,6 @@ class FlightsAddPilotPay extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('flights', function (Blueprint $table) {

View File

@@ -1,15 +1,15 @@
<?php
use App\Contracts\Migration;
use App\Models\Enums\FareType;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add a `pilot_pay` column for a fixed amount to pay to a pilot for a flight
*/
class FaresAddType extends Migration
{
/**
* Add a `pilot_pay` column for a fixed amount to pay to a pilot for a flight
*/
public function up()
{
Schema::table('fares', function (Blueprint $table) {
@@ -19,16 +19,4 @@ class FaresAddType extends Migration
->after('capacity');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('fares', function (Blueprint $table) {
$table->dropColumn('type');
});
}
}

View File

@@ -1,6 +1,6 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -33,13 +33,4 @@ class IncreaseIdLengths extends Migration
});
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}

View File

@@ -1,6 +1,6 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -15,13 +15,4 @@ class RemoveSubfleetTypeIndex extends Migration
$table->dropUnique(['type']);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
}
}

View File

@@ -1,6 +1,6 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;

View File

@@ -1,6 +1,7 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use App\Models\Enums\PageType;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -10,11 +11,6 @@ use Illuminate\Support\Facades\Schema;
*/
class CreatePages extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('pages', function (Blueprint $table) {
@@ -22,7 +18,7 @@ class CreatePages extends Migration
$table->string('name');
$table->string('slug');
$table->string('icon');
$table->unsignedSmallInteger('type');
$table->unsignedSmallInteger('type')->default(PageType::PAGE);
$table->boolean('public');
$table->boolean('enabled');
$table->mediumText('body');
@@ -32,11 +28,6 @@ class CreatePages extends Migration
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pages');

View File

@@ -1,6 +1,6 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -9,11 +9,7 @@ class AirlineRemoveNullable extends Migration
public function up()
{
Schema::table('airlines', function (Blueprint $table) {
$table->dropUnique('airlines_iata_unique');
$table->dropUnique(['iata']);
});
}
public function down()
{
}
}

View File

@@ -1,6 +1,6 @@
<?php
use Illuminate\Database\Migrations\Migration;
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
@@ -12,8 +12,4 @@ class PageIconNullable extends Migration
$table->string('icon')->change()->nullable();
});
}
public function down()
{
}
}

View File

@@ -0,0 +1,33 @@
<?php
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add a `link` column and make the body optional. Also add a "new_window" bool
* which determines if we open this link in a new window or not
*/
class PagesAddLink extends Migration
{
public function up()
{
Schema::table('pages', function (Blueprint $table) {
$table->string('body')->change()->nullable();
$table->string('link')
->default('')
->nullable()
->after('body');
$table->boolean('new_window')->default(false);
});
}
public function down()
{
Schema::table('fares', function (Blueprint $table) {
$table->dropColumn('link');
$table->dropColumn('new_window');
});
}
}

View File

@@ -0,0 +1,42 @@
<?php
use App\Contracts\Model;
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add two tables for holding user fields and the values
*/
class CreateUserFields extends Migration
{
public function up()
{
/*
* Hold a master list of fields
*/
Schema::create('user_fields', function (Blueprint $table) {
$table->increments('id');
$table->string('name', 200);
$table->text('description')->nullable();
$table->boolean('show_on_registration')->default(false)->nullable();
$table->boolean('required')->default(false)->nullable();
$table->boolean('private')->default(false)->nullable();
$table->boolean('active')->default(true)->nullable();
$table->timestamps();
});
/*
* The values for the actual fields
*/
Schema::create('user_field_values', function (Blueprint $table) {
$table->bigIncrements('id');
$table->unsignedBigInteger('user_field_id');
$table->string('user_id', Model::ID_MAX_LENGTH);
$table->text('value')->nullable();
$table->timestamps();
$table->index(['user_field_id', 'user_id']);
});
}
}

View File

@@ -0,0 +1,28 @@
<?php
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add a `mtow` column for the max takeoff weight
*/
class AircraftAddMtow extends Migration
{
public function up()
{
Schema::table('aircraft', function (Blueprint $table) {
$table->unsignedDecimal('mtow')
->nullable()
->default(0.0)
->after('hex_code');
});
}
public function down()
{
Schema::table('aircraft', function (Blueprint $table) {
$table->dropColumn('mtow');
});
}
}

View File

@@ -0,0 +1,29 @@
<?php
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class CreateModulesTable extends Migration
{
public function up()
{
Schema::create('modules', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->boolean('enabled')->default(1);
$table->timestamps();
});
$this->addModule(['name' => 'Awards']);
$this->addModule(['name' => 'Sample']);
$this->addModule(['name' => 'VMSAcars']);
$this->addModule(['name' => 'Vacentral']);
$this->addModule(['name' => 'TestModule']);
}
public function down()
{
Schema::dropIfExists('modules');
}
}

View File

@@ -0,0 +1,18 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Change the pages body column type to a Medium Text, max size of 16MB
*/
class ModifyPagesSize extends Migration
{
public function up()
{
Schema::table('pages', function (Blueprint $table) {
$table->mediumText('body')->change()->nullable();
});
}
}

View File

@@ -0,0 +1,19 @@
<?php
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Change the downloads link size
*/
class ModifyDownloadLinkSize extends Migration
{
public function up()
{
Schema::table('files', function (Blueprint $table) {
$table->mediumText('disk')->change()->nullable();
$table->mediumText('path')->change()->nullable();
});
}
}

View File

@@ -1,15 +1,21 @@
<?php
use App\Services\Installer\MigrationService;
use App\Services\Installer\SeederService;
use Illuminate\Database\Seeder;
class DatabaseSeeder extends Seeder
{
private $seederService;
/** @var MigrationService */
private $migrationSvc;
/** @var SeederService */
private $seederSvc;
public function __construct()
{
$this->seederService = app(SeederService::class);
$this->migrationSvc = app(MigrationService::class);
$this->seederSvc = app(SeederService::class);
}
/**
@@ -19,6 +25,12 @@ class DatabaseSeeder extends Seeder
*/
public function run()
{
$this->seederService->syncAllSeeds();
// Make sure any migrations that need to be run are run/cleared out
if ($this->migrationSvc->migrationsAvailable()) {
$this->migrationSvc->runAllMigrations();
}
// Then sync all of the seeds
$this->seederSvc->syncAllSeeds();
}
}

View File

@@ -1 +1,2 @@
local.yml
vmsacars.yml

View File

@@ -12,3 +12,11 @@ airlines:
active: 1
created_at: now
updated_at: now
- id: 2
icao: XXX
iata: XX
name: inactive airline
country: us
active: 0
created_at: now
updated_at: now

View File

@@ -1,30 +1,10 @@
#airlines:
# - id: 1
# icao: VMS
# iata: VM
# name: phpvms airlines
# country: us
# active: 1
# created_at: now
# updated_at: now
roles:
id_column: name
data:
- name: fleet-only
display_name: Edit Fleet
awards:
- id: 1
name: Pilot 50 flights
description: When a pilot has 50 flights, give this award
image_url:
ref_model: Modules\Awards\Awards\PilotFlightAwards
ref_model_params: 50
created_at: now
updated_at: now
news:
- id: 1
user_id: 1
@@ -136,34 +116,91 @@ airports:
ground_handling_cost: 50
#
aircraft:
- id: 1
-
id: 1
subfleet_id: 1
icao: null
iata: null
airport_id: KJFK
name: Boeing 747-438
landing_time: '2020-10-23 07:50:16'
name: 'Boeing 747-438'
registration: 001Z
flight_time: 360
hex_code: null
mtow: '0.00'
zfw: '0.00'
flight_time: 540
status: A
- id: 2
state: 0
created_at: null
updated_at: '2020-10-23 07:50:16'
-
id: 2
subfleet_id: 2
icao: null
iata: null
airport_id: LGRP
name: Boeing 777-200
landing_time: null
name: 'Boeing 777-200'
registration: C202
hex_code: null
mtow: '0.00'
zfw: '0.00'
flight_time: 260
status: A
- id: 3
state: 0
created_at: null
updated_at: null
-
id: 3
subfleet_id: 1
icao: null
iata: null
airport_id: KAUS
name: Boeing 747-412
landing_time: '2020-10-24 08:50:13'
name: 'Boeing 747-412'
registration: S2333
flight_time: 0
hex_code: null
mtow: '0.00'
zfw: '0.00'
flight_time: 180
status: A
- id: 4
state: 0
created_at: null
updated_at: '2020-10-24 08:50:13'
-
id: 4
subfleet_id: 1
icao: null
iata: null
airport_id: KAUS
name: Boeing 747-436 RETIRED
registration:
landing_time: null
name: 'Boeing 747-436 RETIRED'
registration: null
hex_code: null
mtow: '0.00'
zfw: '0.00'
flight_time: 45
status: R
state: 0
created_at: null
updated_at: null
-
id: 5
subfleet_id: 4
icao: A320
iata: '320'
airport_id: EGLL
landing_time: null
name: 'Airbus A320'
registration: N786DL
hex_code: b47165dd
mtow: '78800.00'
zfw: '62500.00'
flight_time: 0
status: A
state: 0
created_at: '2020-10-22 13:38:50'
updated_at: '2020-10-22 13:38:50'
expenses:
- name: Per-Flight (no muliplier)
@@ -220,68 +257,192 @@ expenses:
updated_at: now
fares:
- id: 1
code: Y
-
id: 1
code: 'Y'
name: Economy
price: 100
price: '100.00'
cost: '0.00'
capacity: 200
- id: 2
type: 0
notes: null
active: 1
created_at: null
updated_at: null
-
id: 2
code: B
name: Business
price: 500
price: '500.00'
cost: '0.00'
capacity: 10
- id: 3
type: 0
notes: null
active: 1
created_at: null
updated_at: null
-
id: 3
code: F
name: First-Class
price: 800
price: '800.00'
cost: '0.00'
capacity: 5
type: 0
notes: null
active: 1
created_at: null
updated_at: null
subfleets:
- id: 1
-
id: 1
airline_id: 1
name: 747-43X RB211-524G
type: 744-3X-RB211
cost_block_hour: 1000
ground_handling_multiplier: 200
- id: 2
name: '747-43X RB211-524G'
cost_block_hour: '1000.00'
cost_delay_minute: '0.00'
fuel_type: null
ground_handling_multiplier: '200.00'
cargo_capacity: null
fuel_capacity: null
gross_weight: null
created_at: null
updated_at: null
-
id: 2
airline_id: 1
name: 777-222ER GE90-76B
type: 772-22ER-GE90-76B
cost_block_hour: 500
ground_handling_multiplier: 150
- id: 3
name: '777-222ER GE90-76B'
cost_block_hour: '500.00'
cost_delay_minute: '0.00'
fuel_type: null
ground_handling_multiplier: '150.00'
cargo_capacity: null
fuel_capacity: null
gross_weight: null
created_at: null
updated_at: null
-
id: 3
airline_id: 1
name: 777-367 ER GE90-115B
type: 772-36ER-GE90-115B
cost_block_hour: 100
ground_handling_multiplier: 150
name: '777-367 ER GE90-115B'
cost_block_hour: '100.00'
cost_delay_minute: '0.00'
fuel_type: null
ground_handling_multiplier: '150.00'
cargo_capacity: null
fuel_capacity: null
gross_weight: null
created_at: null
updated_at: null
-
id: 4
airline_id: 1
type: A320
name: A320
cost_block_hour: '2300.00'
cost_delay_minute: null
fuel_type: 1
ground_handling_multiplier: '100.00'
cargo_capacity: null
fuel_capacity: null
gross_weight: null
created_at: '2020-10-22 13:36:49'
updated_at: '2020-10-22 13:36:49'
# add a few mods to aircraft and fares
subfleet_fare:
# Fare classes on the 747
- subfleet_id: 1
-
subfleet_id: 1
fare_id: 1
price: 200
capacity: 400
- subfleet_id: 1
price: '200'
cost: null
capacity: '400'
created_at: null
updated_at: null
-
subfleet_id: 1
fare_id: 2
price: 120%
- subfleet_id: 1
fare_id: 3
price: 1000
capacity: 110%
# Fare classes on the 777
- subfleet_id: 2
fare_id: 1
- subfleet_id: 2
fare_id: 3
capacity: 10
subfleet_rank:
- rank_id: 1
cost: null
capacity: null
created_at: null
updated_at: null
-
subfleet_id: 1
fare_id: 3
price: '1000'
cost: null
capacity: 110%
created_at: null
updated_at: null
-
subfleet_id: 2
fare_id: 1
price: null
cost: null
capacity: null
created_at: null
updated_at: null
-
subfleet_id: 2
fare_id: 3
price: null
cost: null
capacity: '10'
created_at: null
updated_at: null
-
subfleet_id: 4
fare_id: 1
price: null
cost: null
capacity: '123'
created_at: null
updated_at: null
-
subfleet_id: 4
fare_id: 2
price: null
cost: null
capacity: '8'
created_at: null
updated_at: null
-
subfleet_id: 4
fare_id: 3
price: null
cost: null
capacity: '2'
created_at: null
updated_at: null
subfleet_rank:
-
rank_id: 1
subfleet_id: 1
acars_pay: null
manual_pay: null
-
rank_id: 1
subfleet_id: 4
acars_pay: null
manual_pay: null
-
rank_id: 2
subfleet_id: 4
acars_pay: null
manual_pay: null
-
rank_id: 3
subfleet_id: 4
acars_pay: null
manual_pay: null
-
rank_id: 4
subfleet_id: 4
acars_pay: null
manual_pay: null
flights:
- id: flightid_1
@@ -359,6 +520,35 @@ flights:
route: 'MLY5 KEMBO UG442 SIA UG633 OTEKO UR640 NALRO GUBEL3'
created_at: NOW
updated_at: NOW
-
id: q8mvZ5vdExoy0mQG
airline_id: 1
flight_number: 3003
route_code: null
route_leg: null
dpt_airport_id: KSEA
arr_airport_id: KPAE
alt_airport_id: null
dpt_time: '8:00'
arr_time: '8:45'
level: null
distance: '27.51'
flight_time: 45
flight_type: J
load_factor: null
load_factor_variance: null
route: null
pilot_pay: null
notes: null
scheduled: 0
days: null
start_date: null
end_date: null
has_bid: 1
active: 1
visible: 1
created_at: now
updated_at: now
flight_fields:
- name: Departure Terminal
@@ -389,12 +579,24 @@ flight_subfleet:
flight_id: flightid_4
bids:
- id: 100
-
id: 100
user_id: 1
flight_id: flightid_1
- id: 101
created_at: now
updated_at: now
-
id: 101
user_id: 1
flight_id: flightid_3
created_at: now
updated_at: now
-
id: 102
user_id: 1
flight_id: q8mvZ5vdExoy0mQG
created_at: now
updated_at: now
pireps:
- id: pirepid_1

View File

@@ -69,3 +69,33 @@ role_user:
- user_id: 3
role_id: 2
user_type: App\Models\User
user_fields:
- id: 1
name: 'VATSIM ID'
show_on_registration: true
required: false
private: false
- id: 2
name: 'Referral'
description: 'Who referred you'
show_on_registration: true
required: false
private: true
user_field_values:
- id: 1
user_field_id: 1
user_id: 1
value: 'my vatsim id'
- id: 2
user_field_id: 2
user_id: 1
value: 'Nobody did'
user_awards:
- id: 1
user_id: 1
award_id: 1
created_at: now
updated_at: now

View File

@@ -0,0 +1,10 @@
- name: 'Awards'
enabled: 1
- name: 'Sample'
enabled: 1
- name: 'VMSAcars'
enabled: 1
- name: 'Vacentral'
enabled: 1
- name: 'TestModule'
enabled: 1

View File

@@ -3,6 +3,9 @@
- name: admin-access
display_name: Admin Panel
description: Access the admin panel
- name: aircraft
display_name: Aircraft
description: Create/edit aircraft
- name: airlines
display_name: Airlines
description: Create/edit airlines
@@ -48,3 +51,6 @@
- name: maintenance
display_name: Maintenance
description: Run maintenance tasks
- name: modules
display_name: Modules
description: Add/Edit Modules

View File

@@ -26,6 +26,13 @@
options:
type: boolean
description: If an airport isn't added, try to look it up when adding schedules
- key: general.allow_unadded_airports
name: 'Allow unadded airports'
group: general
value: false
options:
type: boolean
description: If an un-added airport is used, it is looked up and added
- key: general.check_prerelease_version
name: 'Pre-release versions in version check'
group: general
@@ -123,6 +130,20 @@
options: ''
type: int
description: 'Initial zoom level on the map'
- key: airports.default_ground_handling_cost
name: 'Default Ground Handling Cost'
group: airports
value: 250
options:
type: int
description: If an airport's Ground Handling Cost Cost isn't added, set this value by default
- key: airports.default_jet_a_fuel_cost
name: 'Default Jet A Fuel Cost'
group: airports
value: 0.7
options:
type: text
description: If an airport's Jet A Fuel Cost isn't added, set this value by default
- key: bids.disable_flight_on_bid
name: 'Disable flight on bid'
group: bids

View File

@@ -0,0 +1,22 @@
<?php
namespace App\Events;
use App\Contracts\Event;
use App\Models\Acars;
use App\Models\Pirep;
class AcarsUpdate extends Event
{
/** @var Pirep */
public $pirep;
/** @var Acars */
public $acars;
public function __construct(Pirep $pirep, Acars $acars)
{
$this->pirep = $pirep;
$this->acars = $acars;
}
}

View File

@@ -2,13 +2,11 @@
namespace App\Events;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use App\Contracts\Event;
class BaseEvent
/**
* @deprecated Extend App\Contracts\Event directly
*/
class BaseEvent extends Event
{
use Dispatchable;
use InteractsWithSockets;
use SerializesModels;
}

View File

@@ -2,6 +2,8 @@
namespace App\Events;
class CronHourly extends BaseEvent
use App\Contracts\Event;
class CronHourly extends Event
{
}

View File

@@ -2,10 +2,12 @@
namespace App\Events;
use App\Contracts\Event;
/**
* This event is dispatched when the monthly cron is run
* It happens after all of the default nightly tasks
*/
class CronMonthly extends BaseEvent
class CronMonthly extends Event
{
}

View File

@@ -2,10 +2,12 @@
namespace App\Events;
use App\Contracts\Event;
/**
* This event is dispatched when the daily cron is run
* It happens after all of the default nightly tasks
*/
class CronNightly extends BaseEvent
class CronNightly extends Event
{
}

View File

@@ -2,11 +2,13 @@
namespace App\Events;
use App\Contracts\Event;
/**
* This event is dispatched when the weekly cron is run
* It happens after all of the default nightly tasks
*/
class CronWeekly extends BaseEvent
class CronWeekly extends Event
{
public function __construct()
{

View File

@@ -2,6 +2,7 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\Pirep;
/**
@@ -25,7 +26,7 @@ use App\Models\Pirep;
*
* The event will have a copy of the PIREP model, if it's applicable
*/
class Expenses extends BaseEvent
class Expenses extends Event
{
public $pirep;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\News;
class NewsAdded extends BaseEvent
class NewsAdded extends Event
{
public $news;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\Pirep;
class PirepAccepted extends BaseEvent
class PirepAccepted extends Event
{
public $pirep;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\Pirep;
class PirepCancelled extends BaseEvent
class PirepCancelled extends Event
{
public $pirep;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\Pirep;
class PirepFiled extends BaseEvent
class PirepFiled extends Event
{
public $pirep;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\Pirep;
class PirepPrefiled extends BaseEvent
class PirepPrefiled extends Event
{
public $pirep;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\Pirep;
class PirepRejected extends BaseEvent
class PirepRejected extends Event
{
public $pirep;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\Pirep;
class PirepUpdated extends BaseEvent
class PirepUpdated extends Event
{
public $pirep;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\User;
class TestEvent extends BaseEvent
class TestEvent extends Event
{
public $user;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\User;
class UserAccepted extends BaseEvent
class UserAccepted extends Event
{
public $user;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\User;
class UserRegistered extends BaseEvent
class UserRegistered extends Event
{
public $user;

View File

@@ -2,12 +2,13 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\User;
/**
* Event triggered when a user's state changes
*/
class UserStateChanged extends BaseEvent
class UserStateChanged extends Event
{
public $old_state;
public $user;

View File

@@ -2,9 +2,10 @@
namespace App\Events;
use App\Contracts\Event;
use App\Models\User;
class UserStatsChanged extends BaseEvent
class UserStatsChanged extends Event
{
public $stat_name;
public $old_value;

View File

@@ -0,0 +1,47 @@
<?php
namespace App\Exceptions;
use App\Models\Aircraft;
class AircraftInvalid extends AbstractHttpException
{
public const MESSAGE = 'The supplied aircraft is invalid';
private $aircraft;
public function __construct(Aircraft $aircraft)
{
$this->aircraft = $aircraft;
parent::__construct(
400,
static::MESSAGE
);
}
/**
* Return the RFC 7807 error type (without the URL root)
*/
public function getErrorType(): string
{
return 'aircraft-invalid';
}
/**
* Get the detailed error string
*/
public function getErrorDetails(): string
{
return $this->getMessage();
}
/**
* Return an array with the error details, merged with the RFC7807 response
*/
public function getErrorMetadata(): array
{
return [
'aircraft_id' => optional($this->aircraft)->id,
];
}
}

View File

@@ -3,13 +3,13 @@
namespace App\Exceptions\Converters;
use App\Exceptions\AbstractHttpException;
use Exception;
use Throwable;
class GenericExceptionAbstract extends AbstractHttpException
{
private $exception;
public function __construct(Exception $exception)
public function __construct(Throwable $exception)
{
$this->exception = $exception;
parent::__construct(

View File

@@ -18,7 +18,7 @@ class ValidationException extends AbstractHttpException
parent::__construct(
400,
'Validation exception'
'Validation Error'
);
}

View File

@@ -5,8 +5,7 @@ namespace App\Exceptions;
use App\Exceptions\Converters\GenericExceptionAbstract;
use App\Exceptions\Converters\SymfonyException;
use App\Exceptions\Converters\ValidationException;
use Exception;
use Illuminate\Auth\Access\AuthorizationException;
use App\Http\Middleware\SetActiveTheme;
use Illuminate\Auth\AuthenticationException;
use Illuminate\Contracts\Container\BindingResolutionException;
use Illuminate\Database\Eloquent\ModelNotFoundException;
@@ -15,10 +14,9 @@ use Illuminate\Http\Request;
use Illuminate\Session\TokenMismatchException;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\ValidationException as IlluminateValidationException;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Exception\HttpException as SymfonyHttpException;
use Symfony\Component\HttpKernel\Exception\HttpExceptionInterface;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
use Throwable;
use Whoops\Handler\HandlerInterface;
/**
@@ -42,19 +40,19 @@ class Handler extends ExceptionHandler
/**
* Render an exception into an HTTP response.
*
* @param Request $request
* @param Exception $exception
* @param Request $request
* @param \Throwable $exception
*
* @return mixed
*/
public function render($request, Exception $exception)
public function render($request, Throwable $exception)
{
if ($request->is('api/*')) {
return $this->handleApiError($request, $exception);
}
if ($exception instanceof AbstractHttpException
&& $exception->getStatusCode() === 403) {
(new SetActiveTheme())->setTheme($request);
if ($exception instanceof AbstractHttpException && $exception->getStatusCode() === 403) {
return redirect()->guest('login');
}
@@ -65,11 +63,11 @@ class Handler extends ExceptionHandler
* Handle errors in the API
*
* @param $request
* @param \Exception $exception
* @param \Throwable $exception
*
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Response
*/
private function handleApiError($request, Exception $exception)
private function handleApiError($request, Throwable $exception)
{
Log::error('API Error', $exception->getTrace());
@@ -118,38 +116,13 @@ class Handler extends ExceptionHandler
{
if ($request->expectsJson() || $request->is('api/*')) {
$error = new Unauthenticated();
return $error->getResponse();
}
return redirect()->guest('login');
}
/**
* Render the given HttpException.
*
* @param AbstractHttpException $e
*
* @return \Illuminate\Http\Response|Response
*/
protected function renderHttpException(HttpExceptionInterface $e)
{
$status = $e->getStatusCode();
view()->replaceNamespace('errors', [
resource_path('views/layouts/'.setting('general.theme', 'default').'/errors'),
resource_path('views/errors'),
__DIR__.'/views',
]);
if (view()->exists("errors::{$status}")) {
return response()->view("errors::{$status}", [
'exception' => $e,
'SKIN_NAME' => setting('general.theme', 'default'),
], $status, $e->getHeaders());
}
return $this->convertExceptionToResponse($e);
}
/**
* Ignition error page integration
*/

View File

@@ -0,0 +1,41 @@
<?php
namespace App\Exceptions;
class ModuleExistsException extends AbstractHttpException
{
private $module_name;
public function __construct($module_name)
{
$this->module_name = $module_name;
parent::__construct(
409,
'Module '.$module_name.' Already Exists!'
);
}
/**
* Return the RFC 7807 error type (without the URL root)
*/
public function getErrorType(): string
{
return 'module-already-exists';
}
/**
* Get the detailed error string
*/
public function getErrorDetails(): string
{
return $this->getMessage();
}
/**
* Return an array with the error details, merged with the RFC7807 response
*/
public function getErrorMetadata(): array
{
return [];
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace App\Exceptions;
class ModuleInstallationError extends AbstractHttpException
{
public function __construct()
{
parent::__construct(
500,
'Installation of Module Failed!'
);
}
/**
* Return the RFC 7807 error type (without the URL root)
*/
public function getErrorType(): string
{
return 'module-installation-error';
}
/**
* Get the detailed error string
*/
public function getErrorDetails(): string
{
return $this->getMessage();
}
/**
* Return an array with the error details, merged with the RFC7807 response
*/
public function getErrorMetadata(): array
{
return [];
}
}

Some files were not shown because too many files have changed in this diff Show More