Compare commits

...
Author SHA1 Message Date
Nabeel S 5450691a99 Merge branch 'dev' into snyk-fix-3063bc2ce3e22bfa7c04326e8f320d76 2021-01-17 12:43:20 -05:00
a952071cb4 Subfleet Hubs / Base Airports (#978)
* Update SubFleet Model

Add hub_id for storing subfleet's main base/hub airport, define a relationship with airport model to get details of the base/hub airport when needed.

* Update Admin / SubFleetController

Added the ability to read and pass hub airports to admin view for create/edit options.

* Update Admin/SubFleets.fields.blade

Added the dropdown for adding/editing main base/hub of a subfleet.

* Add migration for the hub_id column

Co-authored-by: Nabeel S <nabeelio@users.noreply.github.com>
Co-authored-by: Nabeel Shahzad <nshahzad@live.com>
2021-01-17 12:43:06 -05:00
dependabot[bot]andNabeel S 157e0d830c Bump axios from 0.18.1 to 0.21.1 (#979)
Bumps [axios](https://github.com/axios/axios) from 0.18.1 to 0.21.1.
- [Release notes](https://github.com/axios/axios/releases)
- [Changelog](https://github.com/axios/axios/blob/v0.21.1/CHANGELOG.md)
- [Commits](https://github.com/axios/axios/compare/v0.18.1...v0.21.1)

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>
2021-01-17 12:27:54 -05:00
B.Fatih KOZandNabeel S a5b83185f5 Search Flights By Flight Type (#987)
Flight Controller : Added flight_type to return

Flight Repository : Made flight_type searchable and added its where criteria

Flight.Search.Blade : Added the flight types in a reasonable order as a dropdown (like schedule pax,charter pax,cargo,others)

Co-authored-by: Nabeel S <nabeelio@users.noreply.github.com>
2021-01-17 12:23:23 -05:00
Maximiliano Fallico 29ff0758a7 Add filter/search by airline in admin (#990)
Add filter/search by Airline
2021-01-17 11:59:34 -05:00
Nabeel Shahzad be74d99ae8 Run on pull request 2021-01-17 11:54:46 -05:00
Nabeel Shahzad 53de2e3229 Only run workflows on main repo 2021-01-17 11:52:49 -05:00
Nabeel S 80a90c6e3c Fix github badge 2021-01-16 22:15:32 -05:00
Nabeel S 854ed9b92c Remove travis-ci badge 2021-01-16 22:14:28 -05:00
Nabeel S 46b17b5c04 Use GitHub actions (#989) 2021-01-16 20:25:58 -05:00
Andrew Roberts 0068b1215a Remove existing fares when importing (#988)
Delete all existing fares and overwrite with new import when Delete Existing Data is checked/true.
2021-01-16 13:09:56 -05:00
B.Fatih KOZ 984c1e0cec SimBrief : Generate New Briefing (#986)
* Add SB Briefing Removal Route

Route will be called from simbrief.briefing.blade

* SimBrief Controller and Briefing Blade Update

Added the remove function to controller, which removes the simbrief ofp if no pirep_id is present, else it just nulls the flight_id for to be able to create a new SB pack

Also added the button to blade for it to work

* Style Fix

love styleci
2021-01-15 17:36:46 -05:00
Daniel Ortez ad8b8e8945 Fix for deleting flights when importing (#984) 2021-01-14 07:07:35 -05:00
B.Fatih KOZ 2b0056b7c5 Added the ability to enable/disable flight table display below the map (#983)
* LiveMap Widget Upgrade

Added the ability to enable/disable flight table display below the map.

Default is on

* Update LiveMap.php

* Update LiveMap.php

* Update live_map.blade.php
2021-01-12 08:24:50 -05:00
B.Fatih KOZ 319a9fc8e1 Weather widget additions/fixes (#981)
Fixed the problem where values are not displayed when the reported wind,temp and dewpoint are 0 (zero).
Fixed the hPa number formatting, there is no need to add 2 more digits to it, it is a plain 4 digit value always (like 1013 or 1024, it is never reported nor used as 1013,58 or 1024,35 etc).
Corrected the display order, as it should be read (or say decoded).
Also added decoded Current and Recent Weather Situations, RVR and Runway Condition reports.

RVR report needs improvement in the Support / Metar.php too, it only reports nmi as the distance as far as i saw but it should be able to report meters too.
2021-01-07 09:09:05 -05:00
B.Fatih KOZ a037597a21 Airline > Subfleet Relationship (#970) 2021-01-03 08:05:48 -05:00
Andrew Roberts 4026fe9149 Fix location of configservice (#977)
Pointing to wrong location of file which is throwing errors as a result
2021-01-03 07:39:02 -05:00
snyk-bot 828319035b fix: package.json & package-lock.json to reduce vulnerabilities
The following vulnerabilities are fixed with an upgrade:
- https://snyk.io/vuln/SNYK-JS-CACHEBASE-1054631
2020-12-29 02:26:04 +00:00
28 changed files with 1151 additions and 603 deletions
+7 -71
View File
@@ -1,52 +1,12 @@
#!/usr/bin/env bash
if [ "$TRAVIS" != "true" ]; then
exit 0
fi
cd $TRAVIS_BUILD_DIR
if test "$TRAVIS_TAG"; then
VERSION=$TRAVIS_TAG
# Pass in the tag as the version to write out
php artisan phpvms:version --write --write-full-version "${VERSION}"
FULL_VERSION=$(php artisan phpvms:version)
else
echo "On branch $TRAVIS_BRANCH"
if [ "$TRAVIS_BRANCH" != "master" ] && [ "$TRAVIS_BRANCH" != "dev" ]; then
echo "Not on valid branch, exiting"
exit 0
fi
# Write the version out but place the branch ID in there
# This is only for the dev branch
BASE_VERSION=$(php artisan phpvms:version --base-only)
# This now includes the pre-release version, so "-dev" by default
VERSION=${BASE_VERSION}
# Don't pass in a version here, just write out the latest hash
php artisan phpvms:version --write "${VERSION}"
FULL_VERSION=$(php artisan phpvms:version)
fi
FILE_NAME="phpvms-${VERSION}"
TAR_NAME="$FILE_NAME.tar.gz"
ZIP_NAME="$FILE_NAME.zip"
echo "Version: ${VERSION}"
echo "Full Version: ${FULL_VERSION}"
echo "Package name: ${TAR_NAME}"
echo "==========================="
echo "Current directory: ${BASE_DIR}"
echo "Cleaning files"
rm -rf vendor
composer install --no-dev --prefer-dist --no-interaction --verbose
# Leftover individual files to delete
declare -a remove_files=(
.git
@@ -107,44 +67,20 @@ mkdir -p storage/framework/cache
mkdir -p storage/framework/sessions
mkdir -p storage/framework/views
# Regenerate the autoloader and classes
composer dump-autoload
make clean
cd /tmp
ls -al $TRAVIS_BUILD_DIR/../
tar -czf $TAR_NAME -C $TRAVIS_BUILD_DIR .
ls -al $BASE_DIR/../
tar -czf $TAR_NAME -C $BASE_DIR .
sha256sum $TAR_NAME >"$TAR_NAME.sha256"
tar2zip $TAR_NAME
sha256sum $ZIP_NAME >"$ZIP_NAME.sha256"
ls -al /tmp
echo "Uploading to S3"
mkdir -p $TRAVIS_BUILD_DIR/build
cd $TRAVIS_BUILD_DIR/build
echo "Moving to dist"
mkdir -p $BASE_DIR/dist
cd $BASE_DIR/dist
mv "/tmp/$TAR_NAME" "/tmp/$ZIP_NAME" "/tmp/$TAR_NAME.sha256" "/tmp/$ZIP_NAME.sha256" .
artifacts upload --target-paths "/" $ZIP_NAME $TAR_NAME $TRAVIS_BUILD_DIR/VERSION $TAR_NAME.sha256 $ZIP_NAME.sha256
# Upload the version for a tagged release. Move to a version file in different
# tags. Within phpVMS, we have an option of which version to track in the admin
if test "$TRAVIS_TAG"; then
echo "Uploading release version file"
cp "$TRAVIS_BUILD_DIR/VERSION" release_version
artifacts upload --target-paths "/" release_version
else
echo "Uploading ${TRAVIS_BRANCH}_version file"
cp $TRAVIS_BUILD_DIR/VERSION ${TRAVIS_BRANCH}_version
artifacts upload --target-paths "/" ${TRAVIS_BRANCH}_version
fi
#if [ "$TRAVIS_BRANCH" != "master" ] && [ "$TRAVIS_BRANCH" != "dev" ]; then
# echo "Skipping Discord branch update broadcast"
#else
curl -X POST \
--data "{\"content\": \"A new build is available at http://downloads.phpvms.net/$TAR_NAME (${FULL_VERSION})\"}" \
-H "Content-Type: application/json" \
$DISCORD_WEBHOOK_URL
#fi
+36
View File
@@ -0,0 +1,36 @@
#!/usr/bin/env bash
if test "$GIT_TAG_NAME"; then
export VERSION=$GIT_TAG_NAME
# Pass in the tag as the version to write out
php artisan phpvms:version --write --write-full-version "${VERSION}"
export FULL_VERSION=$(php artisan phpvms:version)
else
export BRANCH=${GITHUB_REF##*/}
echo "On branch $BRANCH"
# Write the version out but place the branch ID in there
# This is only for the dev branch
export BASE_VERSION=$(php artisan phpvms:version --base-only)
# This now includes the pre-release version, so "-dev" by default
export VERSION=${BASE_VERSION}
# Don't pass in a version here, just write out the latest hash
php artisan phpvms:version --write "${VERSION}"
export FULL_VERSION=$(php artisan phpvms:version)
fi
export FILE_NAME="phpvms-${VERSION}"
export TAR_NAME="$FILE_NAME.tar.gz"
export ZIP_NAME="$FILE_NAME.zip"
export BASE_DIR=`pwd`
# https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#environment-files
echo "BRANCH=${BRANCH}" >> $GITHUB_ENV
echo "FILE_NAME=${FILE_NAME}" >> $GITHUB_ENV
echo "TAR_NAME=${TAR_NAME}" >> $GITHUB_ENV
echo "ZIP_NAME=${ZIP_NAME}" >> $GITHUB_ENV
echo "BASE_DIR=${BASE_DIR}" >> $GITHUB_ENV
echo "DISCORD_MSG=A new build is available at http://downloads.phpvms.net/$TAR_NAME (${FULL_VERSION})" >> $GITHUB_ENV
+252
View File
@@ -0,0 +1,252 @@
name: 'Build'
on: ['push', 'pull_request', 'workflow_dispatch', 'release']
jobs:
build:
runs-on: ubuntu-18.04
if: github.repository == 'nabeelio/phpvms'
strategy:
fail-fast: true
matrix:
php-versions: ['7.3', '7.4']
name: PHP ${{ matrix.php-versions }}
env:
extensions: intl, pcov, mbstring
key: cache-v1
steps:
- name: Checkout
uses: actions/checkout@v2
# Configure Caching
- name: Setup cache environment
id: cache-env
uses: shivammathur/cache-extensions@v1
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
key: ${{ env.key }}
- name: Cache extensions
uses: actions/cache@v1
with:
path: ${{ steps.cache-env.outputs.dir }}
key: ${{ steps.cache-env.outputs.key }}
restore-keys: ${{ steps.cache-env.outputs.key }}
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
# Configure PHP
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: ${{ matrix.php-versions }}
extensions: ${{ env.extensions }}
ini-values: post_max_size=256M, short_open_tag=On
coverage: xdebug
tools: php-cs-fixer, phpunit
- name: Shutdown Ubuntu MySQL
run: sudo service mysql stop
- name: Install MariaDB
uses: getong/mariadb-action@v1.1
with:
character set server: 'utf8'
collation server: 'utf8_general_ci'
mysql database: 'phpvms'
mysql root password: ''
mysql user: ''
mysql password: ''
- name: Configure Environment
run: |
php --version
mysql --version
# Downgrade composer version to 1.x
composer self-update --1
composer install --dev --no-interaction --verbose
cp .github/scripts/env.php env.php
cp .github/scripts/phpunit.xml phpunit.xml
php artisan database:create --reset
php artisan migrate:refresh --seed
- name: Run Tests
run: |
vendor/bin/php-cs-fixer fix --config=.php_cs -v --dry-run --diff --using-cache=no
vendor/bin/phpunit --debug --verbose
# This runs after all of the tests, run have run. Creates a cleaned up version of the
# distro, and then creates the artifact to push up to S3 or wherever
artifacts:
name: 'Create dev build'
needs: build
runs-on: 'ubuntu-18.04'
if: github.ref == 'refs/heads/master' || github.ref == 'refs/heads/dev'
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
- uses: olegtarasov/get-tag@v2.1
id: tagName
# Configure Caching
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
# Dependencies
- name: 'Install Release Dependencies'
run: |
rm -rf vendor
sudo npm i tar-to-zip -g
composer self-update --1
composer install --no-dev --prefer-dist --no-interaction --verbose
sudo chmod +x ./.github/scripts/*
- name: Get version
run: .github/scripts/version.sh
- name: Build Distro
run: .github/scripts/build.sh
- name: Upload S3
uses: shallwefootball/s3-upload-action@v1.1.3
with:
aws_key_id: ${{ secrets.S3_BUILD_ARTIFACTS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.S3_BUILD_ARTIFACTS_SECRET_ACCESS_KEY}}
aws_bucket: ${{ secrets.S3_BUCKET_NAME }}
source_dir: 'dist'
destination_dir: ''
- name: Discord notification
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@0.3.0
with:
# DISCORD_MSG is defined in versions.sh
args: '{{ DISCORD_MSG }}'
# This runs after all of the tests, run have run. Creates a cleaned up version of the
# distro, and then creates the artifact to push up to S3 or wherever
# https://github.com/actions/create-release
release:
name: 'Create Release'
needs: build
runs-on: 'ubuntu-18.04'
if: startsWith(github.ref, 'refs/tags/')
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup PHP
uses: shivammathur/setup-php@v2
with:
php-version: '7.4'
- uses: olegtarasov/get-tag@v2.1
id: tagName
# Configure Caching
- name: Get composer cache directory
id: composer-cache
run: echo "::set-output name=dir::$(composer config cache-files-dir)"
- name: Cache dependencies
uses: actions/cache@v2
with:
path: ${{ steps.composer-cache.outputs.dir }}
key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }}
restore-keys: ${{ runner.os }}-composer-
# Dependencies
- name: 'Install Release Dependencies'
run: |
rm -rf vendor
sudo npm i tar-to-zip -g
composer self-update --1
composer install --no-dev --prefer-dist --no-interaction --verbose
sudo chmod +x ./.github/scripts/*
- name: Get version
run: .github/scripts/version.sh
- name: Build Distro
run: .github/scripts/build.sh
- name: Upload S3
uses: shallwefootball/s3-upload-action@v1.1.3
with:
aws_key_id: ${{ secrets.S3_BUILD_ARTIFACTS_ACCESS_KEY_ID }}
aws_secret_access_key: ${{ secrets.S3_BUILD_ARTIFACTS_SECRET_ACCESS_KEY}}
aws_bucket: ${{ secrets.S3_BUCKET_NAME }}
source_dir: 'dist'
destination_dir: ''
- name: Checkout code
uses: actions/checkout@v2
- name: Get version
run: .github/scripts/version.sh
- name: Create Release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
tag_name: ${{ github.ref }}
release_name: Release ${{ github.ref }}
draft: true
prerelease: false
# Upload the tar file to the release
- name: Upload Tar Asset
id: upload-tar-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/{{TAR_NAME}}
asset_name: '{{ TAR_NAME }}'
asset_content_type: application/gzip
# upload the zip file to the release
- name: Upload Zip Asset
id: upload-zip-asset
uses: actions/upload-release-asset@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
upload_url: ${{ steps.create_release.outputs.upload_url }}
asset_path: dist/{{ZIP_NAME}}
asset_name: '{{ ZIP_NAME }}'
asset_content_type: application/zip
- name: Discord notification
env:
DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }}
uses: Ilshidur/action-discord@0.3.0
with:
# DISCORD_MSG is defined in versions.sh
args: '{{ DISCORD_MSG }}'
-162
View File
@@ -1,162 +0,0 @@
#
# Travis CI config file
#
language: php
php:
- '7.4'
- '7.3'
#env:
# - DB=mysql
# - DB=mariadb
cache:
# Cache lives for 10 min
# Default of 3m might not be long enough for all the runs
timeout: 600
directories:
- "$HOME/.composer/cache"
- "$HOME/.npm"
services:
- mysql
#addons:
# mariadb: '10.2'
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
- cp .travis/phpunit.travis.xml phpunit.xml
before_script:
- php artisan database:create --reset
- php artisan migrate:refresh --seed
script:
- vendor/bin/php-cs-fixer fix --config=.php_cs -v --dry-run --diff --using-cache=no
- vendor/bin/phpunit --debug --verbose
after_failure:
- cat storage/logs/*.log
# Refer to: https://github.com/doctrine/dbal/blob/master/.travis.yml#L39
jobs:
include:
# Different test stages
# - stage: Test
# name: PHP 7.2 + MySQL 5.7
# php: 7.2
# env: DB=mysql
# services:
# - mysql
# - stage: Test
# name: PHP 7.3 + MySQL 5.7
# php: 7.3
# env: DB=mysql
# services:
# - mysql
# - stage: Test
# name: PHP 7.4 + MySQL 5.7
# php: 7.4
# env: DB=mysql
# services:
# - mysql
# - stage: Test
# name: PHP 7.2 + MariaDB 10.1
# php: 7.2
# env: DB=mariadb
# addons:
# mariadb: '10.1'
# - stage: Test
# name: PHP 7.3 + MariaDB 10.1
# php: 7.3
# env: DB=mariadb
# addons:
# mariadb: '10.1'
# - stage: Test
# name: PHP 7.4 + MariaDB 10.1
# php: 7.4
# env: DB=mariadb MARIADB_VERSION=10.1
# addons:
# mariadb: '10.1'
# - stage: Test
# name: PHP 7.2 + MariaDB 10.2
# php: 7.2
# env: DB=mariadb
# addons:
# mariadb: '10.2'
# - stage: Test
# name: PHP 7.3 + MariaDB 10.3
# php: 7.3
# env: DB=mariadb
# addons:
# mariadb: '10.2'
# - stage: Test
# name: PHP 7.4 + MariaDB 10.2
# php: 7.4
# env: DB=mariadb
# addons:
# mariadb: '10.2'
# - stage: Test
# name: PHP 7.2 + MariaDB 10.3
# php: 7.2
# env: DB=mariadb
# addons:
# mariadb: '10.3'
# - stage: Test
# name: PHP 7.3 + MariaDB 10.3
# php: 7.3
# env: DB=mariadb
# addons:
# mariadb: '10.3'
# - stage: Test
# name: PHP 7.4 + MariaDB 10.3
# php: 7.4
# env: DB=mariadb
# addons:
# mariadb: '10.3'
# Just packages up a release
- stage: package
script: skip
before_deploy:
- curl -sL https://raw.githubusercontent.com/travis-ci/artifacts/6b10798/install | bash
# Configure the conditional deployment
# https://docs.travis-ci.com/user/deployment/#examples-of-conditional-deployment
deploy:
- provider: script
skip_cleanup: true
script: ./.travis/deploy_script.sh
on:
all_branches: true
repo: nabeelio/phpvms
php: '7.4'
tags: false
# RELEASE STAGE
# Only runs when there's a tag applied to this release (tag should be the version)
# This uses Github Releases and posts it there (provider: releases)
# https://docs.travis-ci.com/user/deployment/releases
- stage: release
script: skip
before_deploy:
- curl -sL https://raw.githubusercontent.com/travis-ci/artifacts/6b10798/install | bash
- ./.travis/deploy_script.sh
deploy:
provider: releases
skip_cleanup: true
api_key: $GITHUB_TOKEN
file_glob: true
file: build/*
on:
tags: true
repo: nabeelio/phpvms
php: '7.4'
+1 -1
View File
@@ -1,6 +1,6 @@
# 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)
[![Build](https://github.com/nabeelio/phpvms/workflows/Build/badge.svg?branch=dev)](https://github.com/nabeelio/phpvms/actions) [![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](https://docs.phpvms.net/) page.
+1 -1
View File
@@ -3,7 +3,7 @@
namespace App\Console\Commands;
use App\Contracts\Command;
use Modules\Installer\Services\ConfigService;
use App\Services\Installer\ConfigService;
/**
* Create a fresh development install
@@ -0,0 +1,20 @@
<?php
use App\Contracts\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
/**
* Add a hub to the subfleet is
*/
class AddHubToSubfleets extends Migration
{
public function up()
{
Schema::table('subfleets', function (Blueprint $table) {
$table->string('hub_id', 4)
->nullable()
->after('airline_id');
});
}
}
@@ -7,6 +7,7 @@ use App\Http\Controllers\Admin\Traits\Importable;
use App\Http\Requests\CreateSubfleetRequest;
use App\Http\Requests\UpdateSubfleetRequest;
use App\Models\Airline;
use App\Models\Airport;
use App\Models\Enums\FareType;
use App\Models\Enums\FuelType;
use App\Models\Enums\ImportExportType;
@@ -133,6 +134,7 @@ class SubfleetController extends Controller
{
return view('admin.subfleets.create', [
'airlines' => Airline::all()->pluck('name', 'id'),
'hubs' => Airport::where('hub', 1)->pluck('name', 'id'),
'fuel_types' => FuelType::labels(),
]);
}
@@ -203,6 +205,7 @@ class SubfleetController extends Controller
return view('admin.subfleets.edit', [
'airlines' => Airline::all()->pluck('name', 'id'),
'hubs' => Airport::where('hub', 1)->pluck('name', 'id'),
'fuel_types' => FuelType::labels(),
'avail_fares' => $avail_fares,
'avail_ranks' => $avail_ranks,
@@ -120,6 +120,7 @@ class FlightController extends Controller
'saved' => $saved_flights,
'subfleets' => $this->subfleetRepo->selectBoxList(true),
'flight_number' => $request->input('flight_number'),
'flight_type' => $request->input('flight_type'),
'arr_icao' => $request->input('arr_icao'),
'dep_icao' => $request->input('dep_icao'),
'subfleet_id' => $request->input('subfleet_id'),
@@ -80,6 +80,29 @@ class SimBriefController
]);
}
/**
* Remove the flight_id from the SimBrief Briefing (to a create a new one)
* or if no pirep_id is attached to the briefing delete it completely
*
* @param \Illuminate\Http\Request $request
*
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function remove(Request $request)
{
$sb_pack = SimBrief::find($request->id);
if ($sb_pack) {
if (!$sb_pack->pirep_id) {
$sb_pack->delete();
} else {
$sb_pack->flight_id = null;
$sb_pack->save();
}
}
return redirect(route('frontend.flights.index'));
}
/**
* Create a prefile of this PIREP with a given OFP. Then redirect the
* user to the newly prefiled PIREP
+5
View File
@@ -97,6 +97,11 @@ class Airline extends Model
$this->attributes['icao'] = strtoupper($icao);
}
public function subfleets()
{
return $this->hasMany(Subfleet::class, 'airline_id');
}
public function flights()
{
return $this->belongsTo(Flight::class, 'airline_id');
+12 -5
View File
@@ -8,27 +8,26 @@ use App\Models\Traits\ExpensableTrait;
use App\Models\Traits\FilesTrait;
/**
* Class Subfleet
*
* @property int id
* @property string type
* @property string name
* @property int airline_id
* @property int hub_id
* @property string ground_handling_multiplier
* @property Fare[] fares
* @property float cost_block_hour
* @property float cost_delay_minute
* @property Airline airline
* @property int airline_id
* @property Airport hub
*/
class Subfleet extends Model
{
use ExpensableTrait;
use FilesTrait;
public $table = 'subfleets';
public $fillable = [
'airline_id',
'hub_id',
'type',
'name',
'fuel_type',
@@ -40,6 +39,8 @@ class Subfleet extends Model
'gross_weight',
];
public $table = 'subfleets';
public $casts = [
'airline_id' => 'integer',
'turn_time' => 'integer',
@@ -55,6 +56,7 @@ class Subfleet extends Model
public static $rules = [
'type' => 'required',
'name' => 'required',
'hub_id' => 'nullable',
'ground_handling_multiplier' => 'nullable|numeric',
];
@@ -81,6 +83,11 @@ class Subfleet extends Model
return $this->belongsTo(Airline::class, 'airline_id');
}
public function hub()
{
return $this->hasOne(Airport::class, 'id', 'hub_id');
}
public function fares()
{
return $this->belongsToMany(Fare::class, 'subfleet_fare')
+1
View File
@@ -147,6 +147,7 @@ class RouteServiceProvider extends ServiceProvider
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');
Route::get('simbrief/{id}/remove', 'SimBriefController@remove')->name('simbrief.remove');
});
Route::group([
+5
View File
@@ -20,6 +20,7 @@ class FlightRepository extends Repository implements CacheableInterface
'arr_airport_id',
'distance',
'dpt_airport_id',
'flight_type',
'flight_number' => 'like',
'route_code' => 'like',
'route_leg' => 'like',
@@ -93,6 +94,10 @@ class FlightRepository extends Repository implements CacheableInterface
$where['flight_number'] = $request->input('flight_number');
}
if ($request->filled('flight_type')) {
$where['flight_type'] = $request->input('flight_type');
}
if ($request->filled('route_code')) {
$where['route_code'] = $request->input('route_code');
}
+6 -2
View File
@@ -6,6 +6,9 @@ use App\Contracts\ImportExport;
use App\Contracts\Service;
use App\Models\Airport;
use App\Models\Expense;
use App\Models\Fare;
use App\Models\Flight;
use App\Models\FlightFieldValue;
use App\Repositories\FlightRepository;
use App\Services\ImportExport\AircraftImporter;
use App\Services\ImportExport\AirportImporter;
@@ -209,7 +212,7 @@ class ImportService extends Service
public function importFares($csv_file, bool $delete_previous = true)
{
if ($delete_previous) {
// TODO: Delete all from: fares
Fare::truncate();
}
$importer = new FareImporter();
@@ -229,7 +232,8 @@ class ImportService extends Service
public function importFlights($csv_file, bool $delete_previous = true)
{
if ($delete_previous) {
// TODO: Delete all from: flights, flight_field_values
Flight::truncate();
FlightFieldValue::truncate();
}
$importer = new FlightImporter();
+1
View File
@@ -14,6 +14,7 @@ class LiveMap extends Widget
protected $config = [
'height' => '800px',
'width' => '100%',
'table' => true,
];
/**
+666 -303
View File
File diff suppressed because it is too large Load Diff
+2 -2
View File
@@ -13,7 +13,7 @@
"@turf/center": "^6.0.1",
"acorn": "^7.4.1",
"animate.css": "~3.6",
"axios": "^0.18.1",
"axios": "^0.21.1",
"bootstrap": "~4.3",
"bootstrap-sass": "^3.4.1",
"bootstrap3": "npm:bootstrap@~3.4",
@@ -46,7 +46,7 @@
"select2": "^4.0.13",
"ssri": "^5.3.0",
"tar": ">=4.4.2",
"webpack": "^4.44.2",
"webpack": "^5.0.0",
"webpack-cli": "^3.3.12",
"x-editable": "1.5.1"
},
@@ -3,7 +3,9 @@
<div class="col-sm-12">
<div class="form-group">
{{ Form::open(['route' => 'admin.flights.index', 'method' => 'GET', 'class'=>'form-inline pull-right']) }}
&nbsp;&nbsp;
{{ Form::label('airlines', 'Airline:') }}
{{ Form::select('airline_id', $airlines, null , ['class' => 'form-control select2']) }}
{{ Form::label('flight_number', 'Flight Number:') }}
{{ Form::text('flight_number', null, ['class' => 'form-control']) }}
&nbsp;
@@ -12,19 +12,25 @@
</div>
</div>
<div class="row">
<div class="form-group col-sm-4">
<div class="form-group col-sm-3">
{{ Form::label('airline_id', 'Airline:') }}
{{ Form::select('airline_id', $airlines, null , ['class' => 'form-control select2']) }}
<p class="text-danger">{{ $errors->first('airline_id') }}</p>
</div>
<div class="form-group col-sm-4">
<div class="form-group col-sm-3">
{{ Form::label('hub_id', 'Main Hub:') }}
{{ Form::select('hub_id', $hubs, null , ['class' => 'form-control select2']) }}
<p class="text-danger">{{ $errors->first('hub_id') }}</p>
</div>
<div class="form-group col-sm-3">
{{ Form::label('type', 'Type:') }}
{{ Form::text('type', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('type') }}</p>
</div>
<div class="form-group col-sm-4">
<div class="form-group col-sm-3">
{{ Form::label('name', 'Name:') }}
{{ Form::text('name', null, ['class' => 'form-control']) }}
<p class="text-danger">{{ $errors->first('name') }}</p>
@@ -11,7 +11,29 @@
<p>@lang('common.airline')</p>
{{ Form::select('airline_id', $airlines, null , ['class' => 'form-control select2']) }}
</div>
<div class="form-group">
<label>@lang('flights.flighttype')</label>
<select id="flight_type" name="flight_type" class="custom-select select2">
<option value=""></option>
<option value="J">@lang('flights.type.pass_scheduled')</option>
<option value="G">@lang('flights.type.pass_addtl')</option>
<option value="C">@lang('flights.type.charter_pass_only')</option>
<option value="O">@lang('flights.type.charter_special')</option>
<option value="E">@lang('flights.type.special_vip')</option>
<option value="F">@lang('flights.type.cargo_scheduled')</option>
<option value="A">@lang('flights.type.addtl_cargo_mail')</option>
<option value="H">@lang('flights.type.charter_cargo')</option>
<option value="M">@lang('flights.type.mail_service')</option>
<option value="I">@lang('flights.type.ambulance')</option>
<option value="K">@lang('flights.type.training_flight')</option>
<option value="P">@lang('flights.type.positioning')</option>
<option value="T">@lang('flights.type.technical_test')</option>
<option value="X">@lang('flights.type.technical_stop')</option>
<option value="W">@lang('flights.type.military')</option>
</select>
</div>
<div>
<p>@lang('flights.flightnumber')</p>
{{ Form::text('flight_number', null, ['class' => 'form-control']) }}
@@ -3,7 +3,7 @@
@section('content')
<div class="row">
<div class="col-sm-9">
<div class="col-sm-6">
<h2>{{ $simbrief->xml->general->icao_airline }}{{ $simbrief->xml->general->flight_number }}
: {{ $simbrief->xml->origin->icao_code }} to {{ $simbrief->xml->destination->icao_code }}</h2>
</div>
@@ -14,6 +14,11 @@
href="{{ url(route('frontend.simbrief.prefile', [$simbrief->id])) }}">Prefile PIREP</a>
@endif
</div>
<div class="col-sm-3">
<a class="btn btn-primary pull-right btn-lg"
style="margin-top: -10px;margin-bottom: 5px"
href="{{ url(route('frontend.simbrief.remove', [$simbrief->id])) }}">Generate New OFP</a>
</div>
</div>
<div class="row">
@@ -64,6 +64,7 @@
</div>
</div>
@if($config['table'] === true)
<div class="clearfix" style="padding-top: 25px"></div>
{{--
@@ -95,7 +96,7 @@ and being mindful of the rivets bindings
{{-- Show the full airport name on hover --}}
<td><span rv-title="pirep.dpt_airport.name">{ pirep.dpt_airport.icao }</span></td>
<td><span rv-title="pirep.arr_airport.name">{ pirep.arr_airport.icao }</span></td>
<td>{ pirep.aircraft.name }</td>
<td>{ pirep.aircraft.registration }</td>
<td>{ pirep.position.altitude }</td>
<td>{ pirep.position.gs }</td>
<td>{ pirep.position.distance.{{setting('units.distance')}} | fallback 0 } /
@@ -107,6 +108,7 @@ and being mindful of the rivets bindings
</table>
</div>
</div>
@endif
@section('scripts')
<script>
@@ -10,71 +10,87 @@ https://api.checkwx.com/#metar-decoded
<table class="table table-striped">
<tr>
<td>@lang('widgets.weather.conditions')</td>
<td>
{{ $metar['category'] }}
{{ $metar['temperature'][$unit_temp] }}
°{{strtoupper($unit_temp)}}
@if($metar['visibility'])
, @lang('widgets.weather.visibility') {{ $metar['visibility'][$unit_dist] }} {{$unit_dist}}
@endif
@if($metar['humidity'])
, {{ $metar['humidity'] }}% @lang('widgets.weather.humidity')
@endif
@if($metar['dew_point'])
, @lang('widgets.weather.dewpoint')
{{ $metar['dew_point'][$unit_temp] }}
°{{strtoupper($unit_temp)}}
@endif
</td>
<td>{{ $metar['category'] }}</td>
</tr>
<tr>
<td>@lang('widgets.weather.barometer')</td>
<td>
{{ number_format($metar['barometer']['hPa'], 2) }} hPa
/ {{ number_format($metar['barometer']['inHg'], 2) }} inHg
</td>
</tr>
@if($metar['clouds'])
<tr>
<td>@lang('widgets.weather.clouds')</td>
<td>
@if($unit_alt === 'ft')
{{$metar['clouds_report_ft']}}
@else
{{ $metar['clouds_report'] }}
@endif
</td>
</tr>
@endif
<tr>
<td>@lang('widgets.weather.wind')</td>
<td>
{{$metar['wind_speed']}} kts @lang('common.from') {{$metar['wind_direction_label']}}
({{$metar['wind_direction']}}°)
@if($metar['wind_gust_speed'])
@lang('widgets.weather.guststo') {{ $metar['wind_gust_speed'] }}
@endif
@if($metar['wind_speed'] < '1') Calm @else {{ $metar['wind_speed'] }} kts @lang('common.from') {{ $metar['wind_direction_label'] }} ({{ $metar['wind_direction']}}°) @endif
@if($metar['wind_gust_speed']) @lang('widgets.weather.guststo') {{ $metar['wind_gust_speed'] }} @endif
</td>
</tr>
@if($metar['visibility'])
<tr>
<td>@lang('common.metar')</td>
<td>
<div style="line-height:1.5em;min-height: 3em;">
{{ $metar['raw'] }}
</div>
</td>
<td>Visibility</td>
<td>{{ $metar['visibility'][$unit_dist] }} {{$unit_dist}}</td>
</tr>
@endif
@if($metar['runways_visual_range'])
<tr>
<td>Runway Visual Range</td>
<td>
@foreach($metar['runways_visual_range'] as $rvr)
<b>RWY{{ $rvr['runway'] }}</b>; {{ $rvr['report'] }}<br>
@endforeach
</td>
</tr>
@endif
@if($metar['present_weather_report'] <> 'Dry')
<tr>
<td>Phenomena</td>
<td>{{ $metar['present_weather_report'] }}</td>
</tr>
@endif
@if($metar['clouds'] || $metar['cavok'])
<tr>
<td>@lang('widgets.weather.clouds')</td>
<td>
@if($unit_alt === 'ft') {{ $metar['clouds_report_ft'] }} @else {{ $metar['clouds_report'] }} @endif
@if($metar['cavok'] == 1) Ceiling and Visibility OK @endif
</td>
</tr>
@endif
<tr>
<td>Temperature</td>
<td>
@if($metar['temperature'][$unit_temp]) {{ $metar['temperature'][$unit_temp] }} @else 0 @endif °{{strtoupper($unit_temp)}}
@if($metar['dew_point']), @lang('widgets.weather.dewpoint') @if($metar['dew_point'][$unit_temp]) {{ $metar['dew_point'][$unit_temp] }} @else 0 @endif °{{strtoupper($unit_temp)}} @endif
@if($metar['humidity']), @lang('widgets.weather.humidity') {{ $metar['humidity'] }}% @endif
</td>
</tr>
<tr>
<td>@lang('widgets.weather.barometer')</td>
<td>{{ number_format($metar['barometer']['hPa']) }} hPa / {{ number_format($metar['barometer']['inHg'], 2) }} inHg</td>
</tr>
@if($metar['recent_weather_report'])
<tr>
<td>Recent Phenomena</td>
<td>{{ $metar['recent_weather_report'] }}</td>
</tr>
@endif
@if($metar['runways_report'])
<tr>
<td>Runway Condition</td>
<td>
@foreach($metar['runways_report'] as $runway)
<b>RWY{{ $runway['runway'] }}</b>; {{ $runway['report'] }}<br>
@endforeach
</td>
</tr>
@endif
@if($metar['remarks'])
<tr>
<td>@lang('widgets.weather.remarks')</td>
<td>
{{ $metar['remarks'] }}
</td>
<td>{{ $metar['remarks'] }}</td>
</tr>
@endif
<tr>
<td>@lang('widgets.weather.updated')</td>
<td>{{$metar['observed_time']}} ({{$metar['observed_age']}})</td>
</tr>
<tr>
<td>@lang('common.metar')</td>
<td>{{ $metar['raw'] }}</td>
</tr>
</table>
@endif