diff --git a/app/Jobs/Mail/NinjaMailerJob.php b/app/Jobs/Mail/NinjaMailerJob.php index 598156ce711a..23234de47dfd 100644 --- a/app/Jobs/Mail/NinjaMailerJob.php +++ b/app/Jobs/Mail/NinjaMailerJob.php @@ -100,7 +100,7 @@ class NinjaMailerJob implements ShouldQueue $this->nmo->mailable->replyTo($this->company->owner()->email, $this->company->owner()->present()->name()); } - $this->nmo->mailable->tag($this->company->company_key); + // $this->nmo->mailable->tag($this->company->company_key); //send email try { diff --git a/composer.json b/composer.json index d20a92d9ffec..4e8727c7b3f8 100644 --- a/composer.json +++ b/composer.json @@ -162,4 +162,4 @@ }, "minimum-stability": "dev", "prefer-stable": true -} \ No newline at end of file +} diff --git a/composer.lock b/composer.lock index 53fa097b1ebf..50cb886bc828 100644 --- a/composer.lock +++ b/composer.lock @@ -378,16 +378,16 @@ }, { "name": "aws/aws-sdk-php", - "version": "3.231.16", + "version": "3.232.2", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "c50adea1de4ad3d6dda41310a8af5ce13ee876d5" + "reference": "390ceb3372ffb9f834694e2bd76a36a78ed7d2ee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/c50adea1de4ad3d6dda41310a8af5ce13ee876d5", - "reference": "c50adea1de4ad3d6dda41310a8af5ce13ee876d5", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/390ceb3372ffb9f834694e2bd76a36a78ed7d2ee", + "reference": "390ceb3372ffb9f834694e2bd76a36a78ed7d2ee", "shasum": "" }, "require": { @@ -464,9 +464,9 @@ "support": { "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", "issues": "https://github.com/aws/aws-sdk-php/issues", - "source": "https://github.com/aws/aws-sdk-php/tree/3.231.16" + "source": "https://github.com/aws/aws-sdk-php/tree/3.232.2" }, - "time": "2022-07-28T18:17:24+00:00" + "time": "2022-08-04T18:17:49+00:00" }, { "name": "bacon/bacon-qr-code", @@ -625,26 +625,26 @@ }, { "name": "brick/math", - "version": "0.9.3", + "version": "0.10.1", "source": { "type": "git", "url": "https://github.com/brick/math.git", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae" + "reference": "de846578401f4e58f911b3afeb62ced56365ed87" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/brick/math/zipball/ca57d18f028f84f777b2168cd1911b0dee2343ae", - "reference": "ca57d18f028f84f777b2168cd1911b0dee2343ae", + "url": "https://api.github.com/repos/brick/math/zipball/de846578401f4e58f911b3afeb62ced56365ed87", + "reference": "de846578401f4e58f911b3afeb62ced56365ed87", "shasum": "" }, "require": { "ext-json": "*", - "php": "^7.1 || ^8.0" + "php": "^7.4 || ^8.0" }, "require-dev": { "php-coveralls/php-coveralls": "^2.2", - "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", - "vimeo/psalm": "4.9.2" + "phpunit/phpunit": "^9.0", + "vimeo/psalm": "4.25.0" }, "type": "library", "autoload": { @@ -669,32 +669,28 @@ ], "support": { "issues": "https://github.com/brick/math/issues", - "source": "https://github.com/brick/math/tree/0.9.3" + "source": "https://github.com/brick/math/tree/0.10.1" }, "funding": [ { "url": "https://github.com/BenMorel", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/brick/math", - "type": "tidelift" } ], - "time": "2021-08-15T20:50:18+00:00" + "time": "2022-08-01T22:54:31+00:00" }, { "name": "checkout/checkout-sdk-php", - "version": "2.5.3", + "version": "2.5.4", "source": { "type": "git", "url": "https://github.com/checkout/checkout-sdk-php.git", - "reference": "d1c012d905cbd1a04869e1d34f2438ac24bf02b6" + "reference": "5210b664536db8637f09c1e63484c0a47769b8b5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/checkout/checkout-sdk-php/zipball/d1c012d905cbd1a04869e1d34f2438ac24bf02b6", - "reference": "d1c012d905cbd1a04869e1d34f2438ac24bf02b6", + "url": "https://api.github.com/repos/checkout/checkout-sdk-php/zipball/5210b664536db8637f09c1e63484c0a47769b8b5", + "reference": "5210b664536db8637f09c1e63484c0a47769b8b5", "shasum": "" }, "require": { @@ -747,9 +743,9 @@ ], "support": { "issues": "https://github.com/checkout/checkout-sdk-php/issues", - "source": "https://github.com/checkout/checkout-sdk-php/tree/2.5.3" + "source": "https://github.com/checkout/checkout-sdk-php/tree/2.5.4" }, - "time": "2022-07-27T15:56:30+00:00" + "time": "2022-08-04T22:24:42+00:00" }, { "name": "cleverit/ubl_invoice", @@ -1785,16 +1781,16 @@ }, { "name": "eway/eway-rapid-php", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/eWAYPayment/eway-rapid-php.git", - "reference": "5581c8279774aabe58ea3aca9bfd7f62759ce7cd" + "reference": "3ccc17406101db7e6670b2e76b088124c6955c14" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/eWAYPayment/eway-rapid-php/zipball/5581c8279774aabe58ea3aca9bfd7f62759ce7cd", - "reference": "5581c8279774aabe58ea3aca9bfd7f62759ce7cd", + "url": "https://api.github.com/repos/eWAYPayment/eway-rapid-php/zipball/3ccc17406101db7e6670b2e76b088124c6955c14", + "reference": "3ccc17406101db7e6670b2e76b088124c6955c14", "shasum": "" }, "require": { @@ -1835,9 +1831,9 @@ ], "support": { "issues": "https://github.com/eWAYPayment/eway-rapid-php/issues", - "source": "https://github.com/eWAYPayment/eway-rapid-php/tree/v1.4.0" + "source": "https://github.com/eWAYPayment/eway-rapid-php/tree/v1.4.1" }, - "time": "2021-12-08T00:21:16+00:00" + "time": "2022-08-04T05:24:33+00:00" }, { "name": "fakerphp/faker", @@ -2166,16 +2162,16 @@ }, { "name": "google/apiclient-services", - "version": "v0.259.0", + "version": "v0.260.0", "source": { "type": "git", "url": "https://github.com/googleapis/google-api-php-client-services.git", - "reference": "3f68a8b8f825974bc0318b8f7268a09216d5fee1" + "reference": "8c519ddfd2458fda02dc10d10b142973e578516a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/3f68a8b8f825974bc0318b8f7268a09216d5fee1", - "reference": "3f68a8b8f825974bc0318b8f7268a09216d5fee1", + "url": "https://api.github.com/repos/googleapis/google-api-php-client-services/zipball/8c519ddfd2458fda02dc10d10b142973e578516a", + "reference": "8c519ddfd2458fda02dc10d10b142973e578516a", "shasum": "" }, "require": { @@ -2204,9 +2200,9 @@ ], "support": { "issues": "https://github.com/googleapis/google-api-php-client-services/issues", - "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.259.0" + "source": "https://github.com/googleapis/google-api-php-client-services/tree/v0.260.0" }, - "time": "2022-07-24T01:26:12+00:00" + "time": "2022-07-31T00:58:12+00:00" }, { "name": "google/auth", @@ -2268,24 +2264,24 @@ }, { "name": "graham-campbell/result-type", - "version": "v1.0.4", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "0690bde05318336c7221785f2a932467f98b64ca" + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/0690bde05318336c7221785f2a932467f98b64ca", - "reference": "0690bde05318336c7221785f2a932467f98b64ca", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0", - "phpoption/phpoption": "^1.8" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", "autoload": { @@ -2314,7 +2310,7 @@ ], "support": { "issues": "https://github.com/GrahamCampbell/Result-Type/issues", - "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.0.4" + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" }, "funding": [ { @@ -2326,7 +2322,7 @@ "type": "tidelift" } ], - "time": "2021-11-21T21:41:47+00:00" + "time": "2022-07-30T15:56:11+00:00" }, { "name": "graylog2/gelf-php", @@ -3321,23 +3317,25 @@ }, { "name": "khanamiryan/qrcode-detector-decoder", - "version": "1.0.5.2", + "version": "1.0.6", "source": { "type": "git", "url": "https://github.com/khanamiryan/php-qrcode-detector-decoder.git", - "reference": "04fdd58d86a387065f707dc6d3cc304c719910c1" + "reference": "45326fb83a2a375065dbb3a134b5b8a5872da569" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/khanamiryan/php-qrcode-detector-decoder/zipball/04fdd58d86a387065f707dc6d3cc304c719910c1", - "reference": "04fdd58d86a387065f707dc6d3cc304c719910c1", + "url": "https://api.github.com/repos/khanamiryan/php-qrcode-detector-decoder/zipball/45326fb83a2a375065dbb3a134b5b8a5872da569", + "reference": "45326fb83a2a375065dbb3a134b5b8a5872da569", "shasum": "" }, "require": { "php": ">=5.6" }, "require-dev": { - "phpunit/phpunit": "^5.7 | ^7.5 | ^8.0 | ^9.0" + "phpunit/phpunit": "^5.7 | ^7.5 | ^8.0 | ^9.0", + "rector/rector": "^0.13.6", + "symplify/easy-coding-standard": "^11.0" }, "type": "library", "autoload": { @@ -3370,9 +3368,9 @@ ], "support": { "issues": "https://github.com/khanamiryan/php-qrcode-detector-decoder/issues", - "source": "https://github.com/khanamiryan/php-qrcode-detector-decoder/tree/1.0.5.2" + "source": "https://github.com/khanamiryan/php-qrcode-detector-decoder/tree/1.0.6" }, - "time": "2021-07-13T18:46:38+00:00" + "time": "2022-06-29T09:25:13+00:00" }, { "name": "kmukku/php-iso11649", @@ -3475,16 +3473,16 @@ }, { "name": "laravel/framework", - "version": "v9.22.1", + "version": "v9.23.0", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "b3b3dd43b9899f23df6d1d3e5390bd4662947a46" + "reference": "c4eea9060d847b5c93957b203caa8f57544a76ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/b3b3dd43b9899f23df6d1d3e5390bd4662947a46", - "reference": "b3b3dd43b9899f23df6d1d3e5390bd4662947a46", + "url": "https://api.github.com/repos/laravel/framework/zipball/c4eea9060d847b5c93957b203caa8f57544a76ab", + "reference": "c4eea9060d847b5c93957b203caa8f57544a76ab", "shasum": "" }, "require": { @@ -3505,7 +3503,7 @@ "psr/log": "^1.0|^2.0|^3.0", "psr/simple-cache": "^1.0|^2.0|^3.0", "ramsey/uuid": "^4.2.2", - "symfony/console": "^6.0", + "symfony/console": "^6.0.3", "symfony/error-handler": "^6.0", "symfony/finder": "^6.0", "symfony/http-foundation": "^6.0", @@ -3651,7 +3649,7 @@ "issues": "https://github.com/laravel/framework/issues", "source": "https://github.com/laravel/framework" }, - "time": "2022-07-26T16:16:33+00:00" + "time": "2022-08-02T14:24:44+00:00" }, { "name": "laravel/serializable-closure", @@ -4108,16 +4106,16 @@ }, { "name": "league/commonmark", - "version": "2.3.4", + "version": "2.3.5", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "155ec1c95626b16fda0889cf15904d24890a60d5" + "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/155ec1c95626b16fda0889cf15904d24890a60d5", - "reference": "155ec1c95626b16fda0889cf15904d24890a60d5", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/84d74485fdb7074f4f9dd6f02ab957b1de513257", + "reference": "84d74485fdb7074f4f9dd6f02ab957b1de513257", "shasum": "" }, "require": { @@ -4139,13 +4137,13 @@ "github/gfm": "0.29.0", "michelf/php-markdown": "^1.4", "nyholm/psr7": "^1.5", - "phpstan/phpstan": "^0.12.88 || ^1.0.0", - "phpunit/phpunit": "^9.5.5", + "phpstan/phpstan": "^1.8.2", + "phpunit/phpunit": "^9.5.21", "scrutinizer/ocular": "^1.8.1", - "symfony/finder": "^5.3", + "symfony/finder": "^5.3 | ^6.0", "symfony/yaml": "^2.3 | ^3.0 | ^4.0 | ^5.0 | ^6.0", - "unleashedtech/php-coding-standard": "^3.1", - "vimeo/psalm": "^4.7.3" + "unleashedtech/php-coding-standard": "^3.1.1", + "vimeo/psalm": "^4.24.0" }, "suggest": { "symfony/yaml": "v2.3+ required if using the Front Matter extension" @@ -4210,7 +4208,7 @@ "type": "tidelift" } ], - "time": "2022-07-17T16:25:47+00:00" + "time": "2022-07-29T10:59:45+00:00" }, { "name": "league/config", @@ -5270,16 +5268,16 @@ }, { "name": "myclabs/php-enum", - "version": "1.8.3", + "version": "1.8.4", "source": { "type": "git", "url": "https://github.com/myclabs/php-enum.git", - "reference": "b942d263c641ddb5190929ff840c68f78713e937" + "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/php-enum/zipball/b942d263c641ddb5190929ff840c68f78713e937", - "reference": "b942d263c641ddb5190929ff840c68f78713e937", + "url": "https://api.github.com/repos/myclabs/php-enum/zipball/a867478eae49c9f59ece437ae7f9506bfaa27483", + "reference": "a867478eae49c9f59ece437ae7f9506bfaa27483", "shasum": "" }, "require": { @@ -5295,7 +5293,10 @@ "autoload": { "psr-4": { "MyCLabs\\Enum\\": "src/" - } + }, + "classmap": [ + "stubs/Stringable.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -5314,7 +5315,7 @@ ], "support": { "issues": "https://github.com/myclabs/php-enum/issues", - "source": "https://github.com/myclabs/php-enum/tree/1.8.3" + "source": "https://github.com/myclabs/php-enum/tree/1.8.4" }, "funding": [ { @@ -5326,7 +5327,7 @@ "type": "tidelift" } ], - "time": "2021-07-05T08:18:36+00:00" + "time": "2022-08-04T09:53:51+00:00" }, { "name": "nelexa/zip", @@ -5708,16 +5709,16 @@ }, { "name": "nunomaduro/termwind", - "version": "v1.13.0", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "132a24bd3e8c559e7f14fa14ba1b83772a0f97f8" + "reference": "10065367baccf13b6e30f5e9246fa4f63a79eb1d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/132a24bd3e8c559e7f14fa14ba1b83772a0f97f8", - "reference": "132a24bd3e8c559e7f14fa14ba1b83772a0f97f8", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/10065367baccf13b6e30f5e9246fa4f63a79eb1d", + "reference": "10065367baccf13b6e30f5e9246fa4f63a79eb1d", "shasum": "" }, "require": { @@ -5729,7 +5730,7 @@ "ergebnis/phpstan-rules": "^1.0.", "illuminate/console": "^8.0|^9.0", "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^0.2.0", + "laravel/pint": "^1.0.0", "pestphp/pest": "^1.21.0", "pestphp/pest-plugin-mock": "^1.0", "phpstan/phpstan": "^1.4.6", @@ -5774,7 +5775,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.13.0" + "source": "https://github.com/nunomaduro/termwind/tree/v1.14.0" }, "funding": [ { @@ -5790,7 +5791,7 @@ "type": "github" } ], - "time": "2022-07-01T15:06:55+00:00" + "time": "2022-08-01T11:03:24+00:00" }, { "name": "nwidart/laravel-modules", @@ -6225,16 +6226,16 @@ }, { "name": "payfast/payfast-php-sdk", - "version": "v1.1.2", + "version": "v1.1.3", "source": { "type": "git", "url": "https://github.com/PayFast/payfast-php-sdk.git", - "reference": "1372980e38f381b84eed7eb46a40d5819a4fe58c" + "reference": "caedaf4ab87ad2593c1596df9ec37575e186598c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PayFast/payfast-php-sdk/zipball/1372980e38f381b84eed7eb46a40d5819a4fe58c", - "reference": "1372980e38f381b84eed7eb46a40d5819a4fe58c", + "url": "https://api.github.com/repos/PayFast/payfast-php-sdk/zipball/caedaf4ab87ad2593c1596df9ec37575e186598c", + "reference": "caedaf4ab87ad2593c1596df9ec37575e186598c", "shasum": "" }, "require": { @@ -6270,9 +6271,9 @@ ], "support": { "issues": "https://github.com/PayFast/payfast-php-sdk/issues", - "source": "https://github.com/PayFast/payfast-php-sdk/tree/v1.1.2" + "source": "https://github.com/PayFast/payfast-php-sdk/tree/v1.1.3" }, - "time": "2021-03-15T19:58:26+00:00" + "time": "2022-06-03T14:59:36+00:00" }, { "name": "php-http/client-common", @@ -6727,29 +6728,33 @@ }, { "name": "phpoption/phpoption", - "version": "1.8.1", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15" + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", - "reference": "eab7a0df01fe2344d172bff4cd6dbd3f8b84ad15", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", "shasum": "" }, "require": { - "php": "^7.0 || ^8.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^6.5.14 || ^7.5.20 || ^8.5.19 || ^9.5.8" + "bamarni/composer-bin-plugin": "^1.8", + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -6782,7 +6787,7 @@ ], "support": { "issues": "https://github.com/schmittjoh/php-option/issues", - "source": "https://github.com/schmittjoh/php-option/tree/1.8.1" + "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" }, "funding": [ { @@ -6794,7 +6799,7 @@ "type": "tidelift" } ], - "time": "2021-12-04T23:24:31+00:00" + "time": "2022-07-30T15:51:26+00:00" }, { "name": "phpseclib/phpseclib", @@ -7637,20 +7642,20 @@ }, { "name": "ramsey/uuid", - "version": "4.3.1", + "version": "4.4.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28" + "reference": "373f7bacfcf3de038778ff27dcce5672ddbf4c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", - "reference": "8505afd4fea63b81a85d3b7b53ac3cb8dc347c28", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/373f7bacfcf3de038778ff27dcce5672ddbf4c8a", + "reference": "373f7bacfcf3de038778ff27dcce5672ddbf4c8a", "shasum": "" }, "require": { - "brick/math": "^0.8 || ^0.9", + "brick/math": "^0.8 || ^0.9 || ^0.10", "ext-ctype": "*", "ext-json": "*", "php": "^8.0", @@ -7666,7 +7671,6 @@ "doctrine/annotations": "^1.8", "ergebnis/composer-normalize": "^2.15", "mockery/mockery": "^1.3", - "moontoast/math": "^1.1", "paragonie/random-lib": "^2", "php-mock/php-mock": "^2.2", "php-mock/php-mock-mockery": "^1.3", @@ -7715,7 +7719,7 @@ ], "support": { "issues": "https://github.com/ramsey/uuid/issues", - "source": "https://github.com/ramsey/uuid/tree/4.3.1" + "source": "https://github.com/ramsey/uuid/tree/4.4.0" }, "funding": [ { @@ -7727,7 +7731,7 @@ "type": "tidelift" } ], - "time": "2022-03-27T21:42:02+00:00" + "time": "2022-08-05T17:58:37+00:00" }, { "name": "razorpay/razorpay", @@ -8676,16 +8680,16 @@ }, { "name": "stella-maris/clock", - "version": "0.1.4", + "version": "0.1.5", "source": { "type": "git", - "url": "https://gitlab.com/stella-maris/clock.git", - "reference": "8a0a967896df4c63417385dc69328a0aec84d9cf" + "url": "git@gitlab.com:stella-maris/clock.git", + "reference": "447879c53ca0b2a762cdbfba5e76ccf4deca9158" }, "dist": { "type": "zip", - "url": "https://gitlab.com/api/v4/projects/stella-maris%2Fclock/repository/archive.zip?sha=8a0a967896df4c63417385dc69328a0aec84d9cf", - "reference": "8a0a967896df4c63417385dc69328a0aec84d9cf", + "url": "https://gitlab.com/api/v4/projects/stella-maris%2Fclock/repository/archive.zip?sha=447879c53ca0b2a762cdbfba5e76ccf4deca9158", + "reference": "447879c53ca0b2a762cdbfba5e76ccf4deca9158", "shasum": "" }, "require": { @@ -8715,11 +8719,7 @@ "point in time", "psr20" ], - "support": { - "issues": "https://gitlab.com/stella-maris/clock/-/issues", - "source": "https://gitlab.com/stella-maris/clock/-/tree/0.1.4" - }, - "time": "2022-04-17T14:12:26+00:00" + "time": "2022-08-05T07:21:25+00:00" }, { "name": "stripe/stripe-php", @@ -8783,16 +8783,16 @@ }, { "name": "symfony/console", - "version": "v6.1.2", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "7a86c1c42fbcb69b59768504c7bca1d3767760b7" + "reference": "43fcb5c5966b43c56bcfa481368d90d748936ab8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/7a86c1c42fbcb69b59768504c7bca1d3767760b7", - "reference": "7a86c1c42fbcb69b59768504c7bca1d3767760b7", + "url": "https://api.github.com/repos/symfony/console/zipball/43fcb5c5966b43c56bcfa481368d90d748936ab8", + "reference": "43fcb5c5966b43c56bcfa481368d90d748936ab8", "shasum": "" }, "require": { @@ -8859,7 +8859,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.1.2" + "source": "https://github.com/symfony/console/tree/v6.1.3" }, "funding": [ { @@ -8875,20 +8875,20 @@ "type": "tidelift" } ], - "time": "2022-06-26T13:01:30+00:00" + "time": "2022-07-22T14:17:57+00:00" }, { "name": "symfony/css-selector", - "version": "v6.1.0", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "05c40f02f621609404b8820ff8bc39acb46e19cf" + "reference": "0dd5e36b80e1de97f8f74ed7023ac2b837a36443" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/05c40f02f621609404b8820ff8bc39acb46e19cf", - "reference": "05c40f02f621609404b8820ff8bc39acb46e19cf", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/0dd5e36b80e1de97f8f74ed7023ac2b837a36443", + "reference": "0dd5e36b80e1de97f8f74ed7023ac2b837a36443", "shasum": "" }, "require": { @@ -8924,7 +8924,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v6.1.0" + "source": "https://github.com/symfony/css-selector/tree/v6.1.3" }, "funding": [ { @@ -8940,7 +8940,7 @@ "type": "tidelift" } ], - "time": "2022-02-25T11:15:52+00:00" + "time": "2022-06-27T17:24:16+00:00" }, { "name": "symfony/deprecation-contracts", @@ -9011,16 +9011,16 @@ }, { "name": "symfony/error-handler", - "version": "v6.1.0", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "d02c662651e5de760bb7d5e94437113309e8f8a0" + "reference": "736e42db3fd586d91820355988698e434e1d8419" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/d02c662651e5de760bb7d5e94437113309e8f8a0", - "reference": "d02c662651e5de760bb7d5e94437113309e8f8a0", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/736e42db3fd586d91820355988698e434e1d8419", + "reference": "736e42db3fd586d91820355988698e434e1d8419", "shasum": "" }, "require": { @@ -9062,7 +9062,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v6.1.0" + "source": "https://github.com/symfony/error-handler/tree/v6.1.3" }, "funding": [ { @@ -9078,7 +9078,7 @@ "type": "tidelift" } ], - "time": "2022-05-23T10:32:57+00:00" + "time": "2022-07-29T07:42:06+00:00" }, { "name": "symfony/event-dispatcher", @@ -9244,16 +9244,16 @@ }, { "name": "symfony/filesystem", - "version": "v6.1.0", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d" + "reference": "c780e677cddda78417fa5187a7c6cd2f21110db9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/3132d2f43ca799c2aa099f9738d98228c56baa5d", - "reference": "3132d2f43ca799c2aa099f9738d98228c56baa5d", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/c780e677cddda78417fa5187a7c6cd2f21110db9", + "reference": "c780e677cddda78417fa5187a7c6cd2f21110db9", "shasum": "" }, "require": { @@ -9287,7 +9287,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v6.1.0" + "source": "https://github.com/symfony/filesystem/tree/v6.1.3" }, "funding": [ { @@ -9303,20 +9303,20 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:34:40+00:00" + "time": "2022-07-20T14:45:06+00:00" }, { "name": "symfony/finder", - "version": "v6.1.0", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f" + "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/45b8beb69d6eb3b05a65689ebfd4222326773f8f", - "reference": "45b8beb69d6eb3b05a65689ebfd4222326773f8f", + "url": "https://api.github.com/repos/symfony/finder/zipball/39696bff2c2970b3779a5cac7bf9f0b88fc2b709", + "reference": "39696bff2c2970b3779a5cac7bf9f0b88fc2b709", "shasum": "" }, "require": { @@ -9351,7 +9351,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v6.1.0" + "source": "https://github.com/symfony/finder/tree/v6.1.3" }, "funding": [ { @@ -9367,20 +9367,20 @@ "type": "tidelift" } ], - "time": "2022-04-15T08:08:08+00:00" + "time": "2022-07-29T07:42:06+00:00" }, { "name": "symfony/http-client", - "version": "v6.1.2", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "ea1af6c8cc479147d67a3fead457dd7b06261041" + "reference": "1ef59920a9cedf223e8564ae8ad7608cbe799b4d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/ea1af6c8cc479147d67a3fead457dd7b06261041", - "reference": "ea1af6c8cc479147d67a3fead457dd7b06261041", + "url": "https://api.github.com/repos/symfony/http-client/zipball/1ef59920a9cedf223e8564ae8ad7608cbe799b4d", + "reference": "1ef59920a9cedf223e8564ae8ad7608cbe799b4d", "shasum": "" }, "require": { @@ -9435,7 +9435,7 @@ "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v6.1.2" + "source": "https://github.com/symfony/http-client/tree/v6.1.3" }, "funding": [ { @@ -9451,7 +9451,7 @@ "type": "tidelift" } ], - "time": "2022-06-19T13:02:30+00:00" + "time": "2022-07-28T13:40:41+00:00" }, { "name": "symfony/http-client-contracts", @@ -9536,16 +9536,16 @@ }, { "name": "symfony/http-foundation", - "version": "v6.1.2", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "86119d294e51afe4d8e07da96b63332bd1f3f52c" + "reference": "b03712c93759a81fc243ecc18ec4637958afebdb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/86119d294e51afe4d8e07da96b63332bd1f3f52c", - "reference": "86119d294e51afe4d8e07da96b63332bd1f3f52c", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b03712c93759a81fc243ecc18ec4637958afebdb", + "reference": "b03712c93759a81fc243ecc18ec4637958afebdb", "shasum": "" }, "require": { @@ -9588,7 +9588,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v6.1.2" + "source": "https://github.com/symfony/http-foundation/tree/v6.1.3" }, "funding": [ { @@ -9604,20 +9604,20 @@ "type": "tidelift" } ], - "time": "2022-06-19T13:21:48+00:00" + "time": "2022-07-27T15:50:51+00:00" }, { "name": "symfony/http-kernel", - "version": "v6.1.2", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "8aaede489900dda61aee208557f63bfa1bca0877" + "reference": "0692bc185a1dbb54864686a1fc6785667279da70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8aaede489900dda61aee208557f63bfa1bca0877", - "reference": "8aaede489900dda61aee208557f63bfa1bca0877", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/0692bc185a1dbb54864686a1fc6785667279da70", + "reference": "0692bc185a1dbb54864686a1fc6785667279da70", "shasum": "" }, "require": { @@ -9698,7 +9698,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v6.1.2" + "source": "https://github.com/symfony/http-kernel/tree/v6.1.3" }, "funding": [ { @@ -9714,7 +9714,7 @@ "type": "tidelift" } ], - "time": "2022-06-26T17:06:14+00:00" + "time": "2022-07-29T12:59:10+00:00" }, { "name": "symfony/intl", @@ -9798,16 +9798,16 @@ }, { "name": "symfony/mailer", - "version": "v6.1.2", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/mailer.git", - "reference": "8fa150355115ea09238858ae3cfaf249fd1fd5ed" + "reference": "b2db228a93278863d1567f90d7caf26922dbfede" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mailer/zipball/8fa150355115ea09238858ae3cfaf249fd1fd5ed", - "reference": "8fa150355115ea09238858ae3cfaf249fd1fd5ed", + "url": "https://api.github.com/repos/symfony/mailer/zipball/b2db228a93278863d1567f90d7caf26922dbfede", + "reference": "b2db228a93278863d1567f90d7caf26922dbfede", "shasum": "" }, "require": { @@ -9852,7 +9852,7 @@ "description": "Helps sending emails", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/mailer/tree/v6.1.2" + "source": "https://github.com/symfony/mailer/tree/v6.1.3" }, "funding": [ { @@ -9868,7 +9868,7 @@ "type": "tidelift" } ], - "time": "2022-06-19T13:21:48+00:00" + "time": "2022-07-27T15:50:51+00:00" }, { "name": "symfony/mailgun-mailer", @@ -9937,16 +9937,16 @@ }, { "name": "symfony/mime", - "version": "v6.1.1", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "56508865dd883dce3c863af11b3e8053adab30d7" + "reference": "9c0247994fc6584da8591ba64b2bffaace9df87d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/56508865dd883dce3c863af11b3e8053adab30d7", - "reference": "56508865dd883dce3c863af11b3e8053adab30d7", + "url": "https://api.github.com/repos/symfony/mime/zipball/9c0247994fc6584da8591ba64b2bffaace9df87d", + "reference": "9c0247994fc6584da8591ba64b2bffaace9df87d", "shasum": "" }, "require": { @@ -9998,7 +9998,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v6.1.1" + "source": "https://github.com/symfony/mime/tree/v6.1.3" }, "funding": [ { @@ -10014,20 +10014,20 @@ "type": "tidelift" } ], - "time": "2022-06-09T12:51:38+00:00" + "time": "2022-07-20T13:46:29+00:00" }, { "name": "symfony/options-resolver", - "version": "v5.4.3", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8" + "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/cc1147cb11af1b43f503ac18f31aa3bec213aba8", - "reference": "cc1147cb11af1b43f503ac18f31aa3bec213aba8", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/54f14e36aa73cb8f7261d7686691fd4d75ea2690", + "reference": "54f14e36aa73cb8f7261d7686691fd4d75ea2690", "shasum": "" }, "require": { @@ -10067,7 +10067,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v5.4.3" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.11" }, "funding": [ { @@ -10083,7 +10083,7 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-07-20T13:00:38+00:00" }, { "name": "symfony/polyfill-ctype", @@ -11055,16 +11055,16 @@ }, { "name": "symfony/process", - "version": "v6.1.0", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "318718453c2be58266f1a9e74063d13cb8dd4165" + "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/318718453c2be58266f1a9e74063d13cb8dd4165", - "reference": "318718453c2be58266f1a9e74063d13cb8dd4165", + "url": "https://api.github.com/repos/symfony/process/zipball/a6506e99cfad7059b1ab5cab395854a0a0c21292", + "reference": "a6506e99cfad7059b1ab5cab395854a0a0c21292", "shasum": "" }, "require": { @@ -11096,7 +11096,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v6.1.0" + "source": "https://github.com/symfony/process/tree/v6.1.3" }, "funding": [ { @@ -11112,20 +11112,20 @@ "type": "tidelift" } ], - "time": "2022-05-11T12:12:29+00:00" + "time": "2022-06-27T17:24:16+00:00" }, { "name": "symfony/property-access", - "version": "v5.4.8", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "fe501d498d6ec7e9efe928c90fabedf629116495" + "reference": "c641d63e943ed31981bad4b4dcf29fe7da2ffa8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/fe501d498d6ec7e9efe928c90fabedf629116495", - "reference": "fe501d498d6ec7e9efe928c90fabedf629116495", + "url": "https://api.github.com/repos/symfony/property-access/zipball/c641d63e943ed31981bad4b4dcf29fe7da2ffa8c", + "reference": "c641d63e943ed31981bad4b4dcf29fe7da2ffa8c", "shasum": "" }, "require": { @@ -11177,7 +11177,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v5.4.8" + "source": "https://github.com/symfony/property-access/tree/v5.4.11" }, "funding": [ { @@ -11193,20 +11193,20 @@ "type": "tidelift" } ], - "time": "2022-04-12T15:48:08+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/property-info", - "version": "v6.1.2", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "4989684b39c929fcf3ba432afdd932879fbc1334" + "reference": "2fc363ed2f2b5d3b231ed0824e066d140d3fd1d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/4989684b39c929fcf3ba432afdd932879fbc1334", - "reference": "4989684b39c929fcf3ba432afdd932879fbc1334", + "url": "https://api.github.com/repos/symfony/property-info/zipball/2fc363ed2f2b5d3b231ed0824e066d140d3fd1d8", + "reference": "2fc363ed2f2b5d3b231ed0824e066d140d3fd1d8", "shasum": "" }, "require": { @@ -11266,7 +11266,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v6.1.2" + "source": "https://github.com/symfony/property-info/tree/v6.1.3" }, "funding": [ { @@ -11282,7 +11282,7 @@ "type": "tidelift" } ], - "time": "2022-06-10T06:48:13+00:00" + "time": "2022-07-19T08:34:05+00:00" }, { "name": "symfony/psr-http-message-bridge", @@ -11374,16 +11374,16 @@ }, { "name": "symfony/routing", - "version": "v6.1.1", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8f068b792e515b25e26855ac8dc7fe800399f3e5" + "reference": "ef9108b3a88045b7546e808fb404ddb073dd35ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8f068b792e515b25e26855ac8dc7fe800399f3e5", - "reference": "8f068b792e515b25e26855ac8dc7fe800399f3e5", + "url": "https://api.github.com/repos/symfony/routing/zipball/ef9108b3a88045b7546e808fb404ddb073dd35ea", + "reference": "ef9108b3a88045b7546e808fb404ddb073dd35ea", "shasum": "" }, "require": { @@ -11442,7 +11442,7 @@ "url" ], "support": { - "source": "https://github.com/symfony/routing/tree/v6.1.1" + "source": "https://github.com/symfony/routing/tree/v6.1.3" }, "funding": [ { @@ -11458,7 +11458,7 @@ "type": "tidelift" } ], - "time": "2022-06-08T12:21:15+00:00" + "time": "2022-07-20T15:00:40+00:00" }, { "name": "symfony/service-contracts", @@ -11547,16 +11547,16 @@ }, { "name": "symfony/string", - "version": "v6.1.2", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "1903f2879875280c5af944625e8246d81c2f0604" + "reference": "f35241f45c30bcd9046af2bb200a7086f70e1d6b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/1903f2879875280c5af944625e8246d81c2f0604", - "reference": "1903f2879875280c5af944625e8246d81c2f0604", + "url": "https://api.github.com/repos/symfony/string/zipball/f35241f45c30bcd9046af2bb200a7086f70e1d6b", + "reference": "f35241f45c30bcd9046af2bb200a7086f70e1d6b", "shasum": "" }, "require": { @@ -11612,7 +11612,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v6.1.2" + "source": "https://github.com/symfony/string/tree/v6.1.3" }, "funding": [ { @@ -11628,20 +11628,20 @@ "type": "tidelift" } ], - "time": "2022-06-26T16:35:04+00:00" + "time": "2022-07-27T15:50:51+00:00" }, { "name": "symfony/translation", - "version": "v6.1.0", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "b254416631615bc6fe49b0a67f18658827288147" + "reference": "b042e16087d298d08c1f013ff505d16c12a3b1be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/b254416631615bc6fe49b0a67f18658827288147", - "reference": "b254416631615bc6fe49b0a67f18658827288147", + "url": "https://api.github.com/repos/symfony/translation/zipball/b042e16087d298d08c1f013ff505d16c12a3b1be", + "reference": "b042e16087d298d08c1f013ff505d16c12a3b1be", "shasum": "" }, "require": { @@ -11708,7 +11708,7 @@ "description": "Provides tools to internationalize your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/translation/tree/v6.1.0" + "source": "https://github.com/symfony/translation/tree/v6.1.3" }, "funding": [ { @@ -11724,7 +11724,7 @@ "type": "tidelift" } ], - "time": "2022-05-11T12:12:29+00:00" + "time": "2022-07-20T13:46:29+00:00" }, { "name": "symfony/translation-contracts", @@ -11809,16 +11809,16 @@ }, { "name": "symfony/validator", - "version": "v6.1.1", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "b2ae30b952165080e810c3a118b230184cb97db0" + "reference": "14a14730609ad6c4f82153ddebf263800833b1cc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/b2ae30b952165080e810c3a118b230184cb97db0", - "reference": "b2ae30b952165080e810c3a118b230184cb97db0", + "url": "https://api.github.com/repos/symfony/validator/zipball/14a14730609ad6c4f82153ddebf263800833b1cc", + "reference": "14a14730609ad6c4f82153ddebf263800833b1cc", "shasum": "" }, "require": { @@ -11897,7 +11897,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v6.1.1" + "source": "https://github.com/symfony/validator/tree/v6.1.3" }, "funding": [ { @@ -11913,20 +11913,20 @@ "type": "tidelift" } ], - "time": "2022-06-09T12:51:38+00:00" + "time": "2022-07-20T13:46:29+00:00" }, { "name": "symfony/var-dumper", - "version": "v6.1.0", + "version": "v6.1.3", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "98587d939cb783aa04e828e8fa857edaca24c212" + "reference": "d5a5e44a2260c5eb5e746bf4f1fbd12ee6ceb427" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/98587d939cb783aa04e828e8fa857edaca24c212", - "reference": "98587d939cb783aa04e828e8fa857edaca24c212", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d5a5e44a2260c5eb5e746bf4f1fbd12ee6ceb427", + "reference": "d5a5e44a2260c5eb5e746bf4f1fbd12ee6ceb427", "shasum": "" }, "require": { @@ -11985,7 +11985,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v6.1.0" + "source": "https://github.com/symfony/var-dumper/tree/v6.1.3" }, "funding": [ { @@ -12001,7 +12001,7 @@ "type": "tidelift" } ], - "time": "2022-05-21T13:34:40+00:00" + "time": "2022-07-20T13:46:29+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -16336,16 +16336,16 @@ }, { "name": "symfony/yaml", - "version": "v5.4.10", + "version": "v5.4.11", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "04e42926429d9e8b39c174387ab990bf7817f7a2" + "reference": "05d4ea560f3402c6c116afd99fdc66e60eda227e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/04e42926429d9e8b39c174387ab990bf7817f7a2", - "reference": "04e42926429d9e8b39c174387ab990bf7817f7a2", + "url": "https://api.github.com/repos/symfony/yaml/zipball/05d4ea560f3402c6c116afd99fdc66e60eda227e", + "reference": "05d4ea560f3402c6c116afd99fdc66e60eda227e", "shasum": "" }, "require": { @@ -16391,7 +16391,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.10" + "source": "https://github.com/symfony/yaml/tree/v5.4.11" }, "funding": [ { @@ -16407,7 +16407,7 @@ "type": "tidelift" } ], - "time": "2022-06-20T11:50:59+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "theseer/tokenizer", @@ -16461,16 +16461,16 @@ }, { "name": "vimeo/psalm", - "version": "v4.25.0", + "version": "4.26.0", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "d7cd84c4ebca74ba3419b9601f81d177bcbe2aac" + "reference": "6998fabb2bf528b65777bf9941920888d23c03ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/d7cd84c4ebca74ba3419b9601f81d177bcbe2aac", - "reference": "d7cd84c4ebca74ba3419b9601f81d177bcbe2aac", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/6998fabb2bf528b65777bf9941920888d23c03ac", + "reference": "6998fabb2bf528b65777bf9941920888d23c03ac", "shasum": "" }, "require": { @@ -16562,9 +16562,9 @@ ], "support": { "issues": "https://github.com/vimeo/psalm/issues", - "source": "https://github.com/vimeo/psalm/tree/v4.25.0" + "source": "https://github.com/vimeo/psalm/tree/4.26.0" }, - "time": "2022-07-25T17:04:37+00:00" + "time": "2022-07-31T13:10:26+00:00" }, { "name": "webmozart/path-util", @@ -16707,5 +16707,5 @@ "platform-dev": { "php": "^7.4|^8.0" }, - "plugin-api-version": "2.3.0" + "plugin-api-version": "2.1.0" } diff --git a/database/schema/db-ninja-01-schema.dump b/database/schema/db-ninja-01-schema.dump index 64acb93e94ce..8c4198c363c0 100644 --- a/database/schema/db-ninja-01-schema.dump +++ b/database/schema/db-ninja-01-schema.dump @@ -41,6 +41,12 @@ CREATE TABLE `accounts` ( `hosted_client_count` int unsigned DEFAULT NULL, `hosted_company_count` int unsigned DEFAULT NULL, `inapp_transaction_id` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `set_react_as_default_ap` tinyint(1) NOT NULL DEFAULT '0', + `is_flagged` tinyint(1) NOT NULL DEFAULT '0', + `is_verified_account` tinyint(1) NOT NULL DEFAULT '0', + `account_sms_verification_code` text COLLATE utf8mb4_unicode_ci, + `account_sms_verification_number` text COLLATE utf8mb4_unicode_ci, + `account_sms_verified` tinyint(1) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `accounts_payment_id_index` (`payment_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; @@ -75,6 +81,8 @@ CREATE TABLE `activities` ( `recurring_invoice_id` int unsigned DEFAULT NULL, `recurring_expense_id` int unsigned DEFAULT NULL, `recurring_quote_id` int unsigned DEFAULT NULL, + `purchase_order_id` int unsigned DEFAULT NULL, + `vendor_contact_id` int unsigned DEFAULT NULL, PRIMARY KEY (`id`), KEY `activities_vendor_id_company_id_index` (`vendor_id`,`company_id`), KEY `activities_project_id_company_id_index` (`project_id`,`company_id`), @@ -88,6 +96,10 @@ CREATE TABLE `activities` ( KEY `activities_expense_id_company_id_index` (`expense_id`,`company_id`), KEY `activities_client_contact_id_company_id_index` (`client_contact_id`,`company_id`), KEY `activities_company_id_foreign` (`company_id`), + KEY `activities_quote_id_company_id_index` (`quote_id`,`company_id`), + KEY `activities_recurring_invoice_id_company_id_index` (`recurring_invoice_id`,`company_id`), + KEY `activities_purchase_order_id_company_id_index` (`purchase_order_id`,`company_id`), + KEY `activities_vendor_contact_id_company_id_index` (`vendor_contact_id`,`company_id`), CONSTRAINT `activities_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -178,7 +190,7 @@ CREATE TABLE `client_contacts` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `email_verified_at` timestamp NULL DEFAULT NULL, `confirmation_code` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, @@ -298,7 +310,7 @@ CREATE TABLE `clients` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `shipping_address1` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `shipping_address2` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `shipping_city` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, @@ -391,6 +403,13 @@ CREATE TABLE `companies` ( `client_registration_fields` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `convert_rate_to_client` tinyint(1) NOT NULL DEFAULT '1', `markdown_email_enabled` tinyint(1) NOT NULL DEFAULT '0', + `stop_on_unpaid_recurring` tinyint(1) NOT NULL DEFAULT '0', + `use_quote_terms_on_conversion` tinyint(1) NOT NULL DEFAULT '0', + `enable_applying_payments` tinyint(1) NOT NULL DEFAULT '0', + `track_inventory` tinyint(1) NOT NULL DEFAULT '0', + `inventory_notification_threshold` int NOT NULL DEFAULT '0', + `stock_notification` tinyint(1) NOT NULL DEFAULT '1', + `enabled_expense_tax_rates` int unsigned NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `companies_company_key_unique` (`company_key`), KEY `companies_industry_id_foreign` (`industry_id`), @@ -618,7 +637,7 @@ CREATE TABLE `credits` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `next_send_date` datetime DEFAULT NULL, `custom_surcharge1` decimal(20,6) DEFAULT NULL, `custom_surcharge2` decimal(20,6) DEFAULT NULL, @@ -736,7 +755,7 @@ CREATE TABLE `documents` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `deleted_at` timestamp(6) NULL DEFAULT NULL, `documentable_id` int unsigned NOT NULL, `documentable_type` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, @@ -808,7 +827,7 @@ CREATE TABLE `expenses` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `number` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `project_id` int unsigned DEFAULT NULL, `tax_amount1` decimal(20,6) NOT NULL DEFAULT '1.000000', @@ -829,12 +848,14 @@ DROP TABLE IF EXISTS `failed_jobs`; /*!50503 SET character_set_client = utf8mb4 */; CREATE TABLE `failed_jobs` ( `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `uuid` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, `connection` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `queue` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `payload` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `exception` longtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, `failed_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, - PRIMARY KEY (`id`) + PRIMARY KEY (`id`), + UNIQUE KEY `failed_jobs_uuid_unique` (`uuid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; /*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `gateway_types`; @@ -971,7 +992,7 @@ CREATE TABLE `invoices` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `next_send_date` datetime DEFAULT NULL, `custom_surcharge1` decimal(20,6) DEFAULT NULL, `custom_surcharge2` decimal(20,6) DEFAULT NULL, @@ -997,6 +1018,7 @@ CREATE TABLE `invoices` ( `auto_bill_enabled` tinyint(1) NOT NULL DEFAULT '0', `paid_to_date` decimal(20,6) NOT NULL DEFAULT '0.000000', `subscription_id` int unsigned DEFAULT NULL, + `auto_bill_tries` smallint NOT NULL DEFAULT '0', PRIMARY KEY (`id`), UNIQUE KEY `invoices_company_id_number_unique` (`company_id`,`number`), KEY `invoices_user_id_foreign` (`user_id`), @@ -1086,6 +1108,7 @@ CREATE TABLE `payment_hashes` ( `updated_at` timestamp(6) NULL DEFAULT NULL, PRIMARY KEY (`id`), KEY `payment_hashes_payment_id_foreign` (`payment_id`), + KEY `payment_hashes_hash_index` (`hash`), CONSTRAINT `payment_hashes_payment_id_foreign` FOREIGN KEY (`payment_id`) REFERENCES `payments` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; /*!40101 SET character_set_client = @saved_cs_client */; @@ -1186,7 +1209,7 @@ CREATE TABLE `payments` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, PRIMARY KEY (`id`), KEY `payments_company_id_deleted_at_index` (`company_id`,`deleted_at`), KEY `payments_client_contact_id_foreign` (`client_contact_id`), @@ -1215,7 +1238,7 @@ CREATE TABLE `products` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `product_key` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `cost` decimal(20,6) NOT NULL DEFAULT '0.000000', @@ -1231,10 +1254,14 @@ CREATE TABLE `products` ( `created_at` timestamp(6) NULL DEFAULT NULL, `updated_at` timestamp(6) NULL DEFAULT NULL, `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `in_stock_quantity` int NOT NULL DEFAULT '0', + `stock_notification` tinyint(1) NOT NULL DEFAULT '1', + `stock_notification_threshold` int NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `products_company_id_deleted_at_index` (`company_id`,`deleted_at`), KEY `products_user_id_foreign` (`user_id`), KEY `products_company_id_index` (`company_id`), + KEY `pro_co_us_up_index` (`company_id`,`user_id`,`assigned_user_id`,`updated_at`), CONSTRAINT `products_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, CONSTRAINT `products_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; @@ -1272,6 +1299,117 @@ CREATE TABLE `projects` ( CONSTRAINT `projects_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `purchase_order_invitations`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `purchase_order_invitations` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `company_id` int unsigned NOT NULL, + `user_id` int unsigned NOT NULL, + `vendor_contact_id` int unsigned NOT NULL, + `purchase_order_id` bigint unsigned NOT NULL, + `key` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, + `transaction_reference` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `message_id` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `email_error` mediumtext COLLATE utf8mb4_unicode_ci, + `signature_base64` text COLLATE utf8mb4_unicode_ci, + `signature_date` datetime DEFAULT NULL, + `sent_date` datetime DEFAULT NULL, + `viewed_date` datetime DEFAULT NULL, + `opened_date` datetime DEFAULT NULL, + `created_at` timestamp(6) NULL DEFAULT NULL, + `updated_at` timestamp(6) NULL DEFAULT NULL, + `deleted_at` timestamp(6) NULL DEFAULT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `vendor_purchase_unique` (`vendor_contact_id`,`purchase_order_id`), + KEY `purchase_order_invitations_user_id_foreign` (`user_id`), + KEY `purchase_order_invitations_company_id_foreign` (`company_id`), + KEY `vendor_purchase_company_index` (`deleted_at`,`purchase_order_id`,`company_id`), + KEY `purchase_order_invitations_purchase_order_id_index` (`purchase_order_id`), + KEY `purchase_order_invitations_key_index` (`key`), + KEY `purchase_order_invitations_message_id_index` (`message_id`), + CONSTRAINT `purchase_order_invitations_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `purchase_order_invitations_purchase_order_id_foreign` FOREIGN KEY (`purchase_order_id`) REFERENCES `purchase_orders` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `purchase_order_invitations_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `purchase_order_invitations_vendor_contact_id_foreign` FOREIGN KEY (`vendor_contact_id`) REFERENCES `vendor_contacts` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; +/*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `purchase_orders`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `purchase_orders` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `client_id` int unsigned DEFAULT NULL, + `user_id` int unsigned NOT NULL, + `assigned_user_id` int unsigned DEFAULT NULL, + `company_id` int unsigned NOT NULL, + `status_id` int unsigned NOT NULL, + `project_id` int unsigned DEFAULT NULL, + `vendor_id` int unsigned DEFAULT NULL, + `recurring_id` int unsigned DEFAULT NULL, + `design_id` int unsigned DEFAULT NULL, + `invoice_id` int unsigned DEFAULT NULL, + `number` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `discount` double(8,2) NOT NULL DEFAULT '0.00', + `is_amount_discount` tinyint(1) NOT NULL DEFAULT '0', + `po_number` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `date` date DEFAULT NULL, + `last_sent_date` datetime DEFAULT NULL, + `due_date` date DEFAULT NULL, + `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `line_items` mediumtext COLLATE utf8mb4_unicode_ci, + `backup` mediumtext COLLATE utf8mb4_unicode_ci, + `footer` text COLLATE utf8mb4_unicode_ci, + `public_notes` text COLLATE utf8mb4_unicode_ci, + `private_notes` text COLLATE utf8mb4_unicode_ci, + `terms` text COLLATE utf8mb4_unicode_ci, + `tax_name1` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `tax_rate1` decimal(20,6) NOT NULL DEFAULT '0.000000', + `tax_name2` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `tax_rate2` decimal(20,6) NOT NULL DEFAULT '0.000000', + `tax_name3` varchar(191) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `tax_rate3` decimal(20,6) NOT NULL DEFAULT '0.000000', + `total_taxes` decimal(20,6) NOT NULL DEFAULT '0.000000', + `uses_inclusive_taxes` tinyint(1) NOT NULL DEFAULT '0', + `reminder1_sent` date DEFAULT NULL, + `reminder2_sent` date DEFAULT NULL, + `reminder3_sent` date DEFAULT NULL, + `reminder_last_sent` date DEFAULT NULL, + `custom_value1` text COLLATE utf8mb4_unicode_ci, + `custom_value2` text COLLATE utf8mb4_unicode_ci, + `custom_value3` text COLLATE utf8mb4_unicode_ci, + `custom_value4` text COLLATE utf8mb4_unicode_ci, + `next_send_date` datetime DEFAULT NULL, + `custom_surcharge1` decimal(20,6) DEFAULT NULL, + `custom_surcharge2` decimal(20,6) DEFAULT NULL, + `custom_surcharge3` decimal(20,6) DEFAULT NULL, + `custom_surcharge4` decimal(20,6) DEFAULT NULL, + `custom_surcharge_tax1` tinyint(1) NOT NULL DEFAULT '0', + `custom_surcharge_tax2` tinyint(1) NOT NULL DEFAULT '0', + `custom_surcharge_tax3` tinyint(1) NOT NULL DEFAULT '0', + `custom_surcharge_tax4` tinyint(1) NOT NULL DEFAULT '0', + `exchange_rate` decimal(20,6) NOT NULL DEFAULT '1.000000', + `balance` decimal(20,6) NOT NULL, + `partial` decimal(20,6) DEFAULT NULL, + `amount` decimal(20,6) NOT NULL, + `paid_to_date` decimal(20,6) NOT NULL DEFAULT '0.000000', + `partial_due_date` datetime DEFAULT NULL, + `last_viewed` datetime DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `expense_id` int unsigned DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `purchase_orders_user_id_foreign` (`user_id`), + KEY `purchase_orders_company_id_deleted_at_index` (`company_id`,`deleted_at`), + KEY `purchase_orders_client_id_index` (`client_id`), + KEY `purchase_orders_company_id_index` (`company_id`), + KEY `purchase_orders_expense_id_index` (`expense_id`), + CONSTRAINT `purchase_orders_client_id_foreign` FOREIGN KEY (`client_id`) REFERENCES `clients` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `purchase_orders_company_id_foreign` FOREIGN KEY (`company_id`) REFERENCES `companies` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, + CONSTRAINT `purchase_orders_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `quote_invitations`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; @@ -1349,7 +1487,7 @@ CREATE TABLE `quotes` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_surcharge1` decimal(20,6) DEFAULT NULL, `custom_surcharge2` decimal(20,6) DEFAULT NULL, `custom_surcharge3` decimal(20,6) DEFAULT NULL, @@ -1415,7 +1553,7 @@ CREATE TABLE `recurring_expenses` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `category_id` int unsigned DEFAULT NULL, `calculate_tax_by_amount` tinyint(1) NOT NULL DEFAULT '0', `tax_amount1` decimal(20,6) DEFAULT NULL, @@ -1438,6 +1576,7 @@ CREATE TABLE `recurring_expenses` ( `last_sent_date` datetime DEFAULT NULL, `next_send_date` datetime DEFAULT NULL, `remaining_cycles` int DEFAULT NULL, + `next_send_date_client` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `recurring_expenses_company_id_number_unique` (`company_id`,`number`), KEY `recurring_expenses_company_id_deleted_at_index` (`company_id`,`deleted_at`), @@ -1517,7 +1656,7 @@ CREATE TABLE `recurring_invoices` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `amount` decimal(20,6) NOT NULL, `balance` decimal(20,6) NOT NULL, `partial` decimal(16,4) DEFAULT NULL, @@ -1546,6 +1685,7 @@ CREATE TABLE `recurring_invoices` ( `exchange_rate` decimal(13,6) NOT NULL DEFAULT '1.000000', `paid_to_date` decimal(20,6) NOT NULL DEFAULT '0.000000', `subscription_id` int unsigned DEFAULT NULL, + `next_send_date_client` datetime DEFAULT NULL, PRIMARY KEY (`id`), KEY `recurring_invoices_company_id_deleted_at_index` (`company_id`,`deleted_at`), KEY `recurring_invoices_user_id_foreign` (`user_id`), @@ -1627,7 +1767,7 @@ CREATE TABLE `recurring_quotes` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `amount` decimal(20,6) NOT NULL DEFAULT '0.000000', `balance` decimal(20,6) NOT NULL DEFAULT '0.000000', `last_viewed` datetime DEFAULT NULL, @@ -1666,6 +1806,27 @@ CREATE TABLE `recurring_quotes` ( CONSTRAINT `recurring_quotes_user_id_foreign` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8; /*!40101 SET character_set_client = @saved_cs_client */; +DROP TABLE IF EXISTS `schedulers`; +/*!40101 SET @saved_cs_client = @@character_set_client */; +/*!50503 SET character_set_client = utf8mb4 */; +CREATE TABLE `schedulers` ( + `id` bigint unsigned NOT NULL AUTO_INCREMENT, + `paused` tinyint(1) NOT NULL DEFAULT '0', + `is_deleted` tinyint(1) NOT NULL DEFAULT '0', + `repeat_every` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, + `start_from` timestamp NOT NULL, + `scheduled_run` timestamp NOT NULL, + `company_id` bigint unsigned NOT NULL, + `created_at` timestamp NULL DEFAULT NULL, + `updated_at` timestamp NULL DEFAULT NULL, + `deleted_at` timestamp NULL DEFAULT NULL, + `action_name` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, + `action_class` varchar(191) COLLATE utf8mb4_unicode_ci NOT NULL, + `parameters` mediumtext COLLATE utf8mb4_unicode_ci, + PRIMARY KEY (`id`), + KEY `schedulers_action_name_index` (`action_name`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC; +/*!40101 SET character_set_client = @saved_cs_client */; DROP TABLE IF EXISTS `sizes`; /*!40101 SET @saved_cs_client = @@character_set_client */; /*!50503 SET character_set_client = utf8mb4 */; @@ -1855,11 +2016,11 @@ CREATE TABLE `transaction_events` ( `payment_applied` decimal(16,4) NOT NULL DEFAULT '0.0000', `payment_refunded` decimal(16,4) NOT NULL DEFAULT '0.0000', `payment_status` int unsigned DEFAULT NULL, - `paymentables` mediumtext COLLATE utf8mb4_unicode_ci, + `paymentables` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `event_id` int unsigned NOT NULL, `timestamp` int unsigned NOT NULL, - `payment_request` mediumtext COLLATE utf8mb4_unicode_ci, - `metadata` mediumtext COLLATE utf8mb4_unicode_ci, + `payment_request` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, + `metadata` mediumtext CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `credit_balance` decimal(16,4) NOT NULL DEFAULT '0.0000', `credit_amount` decimal(16,4) NOT NULL DEFAULT '0.0000', `credit_status` int unsigned DEFAULT NULL, @@ -1902,13 +2063,14 @@ CREATE TABLE `users` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `created_at` timestamp(6) NULL DEFAULT NULL, `updated_at` timestamp(6) NULL DEFAULT NULL, `deleted_at` timestamp(6) NULL DEFAULT NULL, - `oauth_user_refresh_token` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `oauth_user_refresh_token` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `last_confirmed_email_address` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, `has_password` tinyint(1) NOT NULL DEFAULT '0', + `oauth_user_token_expiry` datetime DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `users_email_unique` (`email`), UNIQUE KEY `users_oauth_user_id_oauth_provider_id_unique` (`oauth_user_id`,`oauth_provider_id`), @@ -1935,7 +2097,7 @@ CREATE TABLE `vendor_contacts` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `send_email` tinyint(1) NOT NULL DEFAULT '0', `email_verified_at` timestamp NULL DEFAULT NULL, `confirmation_code` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, @@ -1995,7 +2157,7 @@ CREATE TABLE `vendors` ( `custom_value1` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value2` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `custom_value3` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, - `custom_value4` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `custom_value4` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `vendor_hash` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `public_notes` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci, `id_number` varchar(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, @@ -2170,3 +2332,30 @@ INSERT INTO `migrations` VALUES (127,'2022_03_24_090728_markdown_email_enabled_w INSERT INTO `migrations` VALUES (128,'2022_03_29_014025_reverse_apple_domain_for_hosted',10); INSERT INTO `migrations` VALUES (129,'2022_04_22_115838_client_settings_parse_for_types',10); INSERT INTO `migrations` VALUES (130,'2022_04_26_032252_convert_custom_fields_column_from_varchar_to_text',10); +INSERT INTO `migrations` VALUES (131,'2022_04_14_121548_forte_payment_gateway',11); +INSERT INTO `migrations` VALUES (132,'2022_05_08_004937_heal_stripe_gateway_configuration',11); +INSERT INTO `migrations` VALUES (133,'2022_05_16_224917_add_auto_bill_tries_to_invoices_table',11); +INSERT INTO `migrations` VALUES (134,'2022_05_18_055442_update_custom_value_four_columns',11); +INSERT INTO `migrations` VALUES (135,'2022_05_18_162152_create_scheduled_jobs_table',11); +INSERT INTO `migrations` VALUES (136,'2022_05_18_162443_create_schedulers_table',11); +INSERT INTO `migrations` VALUES (137,'2022_05_23_050754_drop_redundant_column_show_production_description_dropdown',11); +INSERT INTO `migrations` VALUES (138,'2022_05_28_234651_create_purchase_orders_table',11); +INSERT INTO `migrations` VALUES (139,'2022_05_30_181109_drop_scheduled_jobs_table',11); +INSERT INTO `migrations` VALUES (140,'2022_05_30_184320_add_job_related_fields_to_schedulers_table',11); +INSERT INTO `migrations` VALUES (141,'2022_05_31_101504_inventory_management_schema',11); +INSERT INTO `migrations` VALUES (142,'2022_06_01_215859_set_recurring_client_timestamp',11); +INSERT INTO `migrations` VALUES (143,'2022_06_01_224339_create_purchase_order_invitations_table',11); +INSERT INTO `migrations` VALUES (144,'2022_06_10_030503_set_account_flag_for_react',11); +INSERT INTO `migrations` VALUES (145,'2022_06_16_025156_add_react_switching_flag',11); +INSERT INTO `migrations` VALUES (146,'2022_06_17_082627_change_refresh_token_column_size',11); +INSERT INTO `migrations` VALUES (147,'2022_06_21_104350_fixes_for_description_in_pdf_designs',11); +INSERT INTO `migrations` VALUES (148,'2022_06_22_090547_set_oauth_expiry_column',11); +INSERT INTO `migrations` VALUES (149,'2022_06_24_141018_upgrade_failed_jobs_table',11); +INSERT INTO `migrations` VALUES (150,'2022_06_30_000126_add_flag_to_accounts_table',11); +INSERT INTO `migrations` VALUES (151,'2022_07_06_080127_add_purchase_order_to_expense',11); +INSERT INTO `migrations` VALUES (152,'2022_07_09_235510_add_index_to_payment_hash',11); +INSERT INTO `migrations` VALUES (153,'2022_07_18_033756_fixes_for_date_formats_table_react',11); +INSERT INTO `migrations` VALUES (154,'2022_07_21_023805_add_hebrew_language',11); +INSERT INTO `migrations` VALUES (155,'2022_07_26_091216_add_sms_verification_to_hosted_account',11); +INSERT INTO `migrations` VALUES (156,'2022_07_28_232340_enabled_expense_tax_rates_to_companies_table',11); +INSERT INTO `migrations` VALUES (157,'2022_07_29_091235_correction_for_companies_table_types',11); diff --git a/resources/views/portal/ninja2020/components/livewire/payment-methods-table.blade.php b/resources/views/portal/ninja2020/components/livewire/payment-methods-table.blade.php index 0b4935d0a565..0a7ff18fea53 100644 --- a/resources/views/portal/ninja2020/components/livewire/payment-methods-table.blade.php +++ b/resources/views/portal/ninja2020/components/livewire/payment-methods-table.blade.php @@ -70,7 +70,7 @@ {{ App\Models\GatewayType::getAlias($payment_method->gateway_type_id) }} - {{ ucfirst($payment_method->meta?->brand) }} + {{ property_exists($payment_method->meta, 'brand') ? ucfirst($payment_method->meta?->brand) : '' }} @if(isset($payment_method->meta->exp_month) && isset($payment_method->meta->exp_year)) diff --git a/routes/api.php b/routes/api.php index a75222800524..41a10a732eeb 100644 --- a/routes/api.php +++ b/routes/api.php @@ -10,7 +10,6 @@ | is assigned the "api" middleware group. Enjoy building your API! | */ - use App\Http\Controllers\AccountController; use App\Http\Controllers\ActivityController; use App\Http\Controllers\Auth\ForgotPasswordController; @@ -94,7 +93,119 @@ use App\Http\Controllers\WebCronController; use App\Http\Controllers\WebhookController; use Illuminate\Support\Facades\Route; +Route::group(['middleware' => ['throttle:300,1', 'api_secret_check']], function () { + Route::post('api/v1/signup', [AccountController::class, 'store'])->name('signup.submit'); + Route::post('api/v1/oauth_login', [LoginController::class, 'oauthApiLogin']); +}); + +Route::group(['middleware' => ['throttle:10,1','api_secret_check','email_db']], function () { + Route::post('api/v1/login', [LoginController::class, 'apiLogin'])->name('login.submit')->middleware('throttle:20,1'); + Route::post('api/v1/reset_password', [ForgotPasswordController::class, 'sendResetLinkEmail']); +}); + Route::group(['middleware' => ['throttle:300,1', 'api_db', 'token_auth', 'locale'], 'prefix' => 'api/v1', 'as' => 'api.'], function () { + Route::put('accounts/{account}', [AccountController::class, 'update'])->name('account.update'); + Route::post('check_subdomain', [SubdomainController::class, 'index'])->name('check_subdomain'); + Route::get('ping', [PingController::class, 'index'])->name('ping'); + Route::get('health_check', [PingController::class, 'health'])->name('health_check'); + + Route::get('activities', [ActivityController::class, 'index']); + Route::get('activities/download_entity/{activity}', [ActivityController::class, 'downloadHistoricalEntity']); + + + Route::post('charts/totals', [ChartController::class, 'totals'])->name('chart.totals'); + Route::post('charts/chart_summary', [ChartController::class, 'chart_summary'])->name('chart.chart_summary'); + + Route::post('claim_license', [LicenseController::class, 'index'])->name('license.index'); + + Route::resource('clients', ClientController::class); // name = (clients. index / create / show / update / destroy / edit + Route::put('clients/{client}/adjust_ledger', [ClientController::class, 'adjustLedger'])->name('clients.adjust_ledger'); + Route::put('clients/{client}/upload', [ClientController::class, 'upload'])->name('clients.upload'); + Route::post('clients/{client}/purge', [ClientController::class, 'purge'])->name('clients.purge')->middleware('password_protected'); + Route::post('clients/{client}/{mergeable_client}/merge', [ClientController::class, 'merge'])->name('clients.merge')->middleware('password_protected'); + Route::post('clients/bulk', [ClientController::class, 'bulk'])->name('clients.bulk'); + + Route::post('filters/{entity}', [FilterController::class, 'index'])->name('filters'); + + Route::resource('client_gateway_tokens', ClientGatewayTokenController::class); + + Route::post('connected_account', [ConnectedAccountController::class, 'index']); + Route::post('connected_account/gmail', [ConnectedAccountController::class, 'handleGmailOauth']); + + Route::post('client_statement', [ClientStatementController::class, 'statement'])->name('client.statement'); + + Route::post('companies/purge/{company}', [MigrationController::class, 'purgeCompany'])->middleware('password_protected'); + Route::post('companies/purge_save_settings/{company}', [MigrationController::class, 'purgeCompanySaveSettings'])->middleware('password_protected'); + + Route::resource('companies', CompanyController::class); // name = (companies. index / create / show / update / destroy / edit + + Route::put('companies/{company}/upload', [CompanyController::class, 'upload']); + Route::post('companies/{company}/default', [CompanyController::class, 'default']); + + Route::get('company_ledger', [CompanyLedgerController::class, 'index'])->name('company_ledger.index'); + + Route::resource('company_gateways', CompanyGatewayController::class); + Route::post('company_gateways/bulk', [CompanyGatewayController::class, 'bulk'])->name('company_gateways.bulk'); + + Route::put('company_users/{user}', [CompanyUserController::class, 'update']); + + Route::resource('credits', CreditController::class); // name = (credits. index / create / show / update / destroy / edit + Route::put('credits/{credit}/upload', [CreditController::class, 'upload'])->name('credits.upload'); + Route::get('credits/{credit}/{action}', [CreditController::class, 'action'])->name('credits.action'); + Route::post('credits/bulk', [CreditController::class, 'bulk'])->name('credits.bulk'); + + Route::resource('designs', DesignController::class); // name = (payments. index / create / show / update / destroy / edit + Route::post('designs/bulk', [DesignController::class, 'bulk'])->name('designs.bulk'); + Route::post('designs/set/default', [DesignController::class, 'default'])->name('designs.default'); + + Route::resource('documents', DocumentController::class); // name = (documents. index / create / show / update / destroy / edit + Route::get('documents/{document}/download', [DocumentController::class, 'download'])->name('documents.download'); + Route::post('documents/bulk', [DocumentController::class, 'bulk'])->name('documents.bulk'); + + Route::post('emails', [EmailController::class, 'send'])->name('email.send')->middleware('user_verified'); + + Route::resource('expenses', ExpenseController::class); // name = (expenses. index / create / show / update / destroy / edit + Route::put('expenses/{expense}/upload', [ExpenseController::class, 'upload']); + Route::post('expenses/bulk', [ExpenseController::class, 'bulk'])->name('expenses.bulk'); + + Route::post('export', [ExportController::class, 'index'])->name('export.index'); + + Route::resource('expense_categories', ExpenseCategoryController::class); // name = (expense_categories. index / create / show / update / destroy / edit + Route::post('expense_categories/bulk', [ExpenseCategoryController::class, 'bulk'])->name('expense_categories.bulk'); + + Route::resource('group_settings', GroupSettingController::class); + Route::post('group_settings/bulk', [GroupSettingController::class, 'bulk']); + Route::put('group_settings/{group_setting}/upload', [GroupSettingController::class, 'upload'])->name('group_settings.upload'); + + Route::post('import', [ImportController::class, 'import'])->name('import.import'); + Route::post('import_json', [ImportJsonController::class, 'import'])->name('import.import_json'); + Route::post('preimport', [ImportController::class, 'preimport'])->name('import.preimport'); + + Route::resource('invoices', InvoiceController::class); // name = (invoices. index / create / show / update / destroy / edit + Route::get('invoices/{invoice}/delivery_note', [InvoiceController::class, 'deliveryNote'])->name('invoices.delivery_note'); + Route::get('invoices/{invoice}/{action}', [InvoiceController::class, 'action'])->name('invoices.action'); + Route::put('invoices/{invoice}/upload', [InvoiceController::class, 'upload'])->name('invoices.upload'); + Route::get('invoice/{invitation_key}/download', [InvoiceController::class, 'downloadPdf'])->name('invoices.downloadPdf'); + Route::post('invoices/bulk', [InvoiceController::class, 'bulk'])->name('invoices.bulk'); + Route::post('invoices/update_reminders', [InvoiceController::class, 'update_reminders'])->name('invoices.update_reminders'); + + Route::post('logout', [LogoutController::class, 'index'])->name('logout'); + + Route::post('migrate', [MigrationController::class, 'index'])->name('migrate.start'); + + Route::post('migration/purge/{company}', [MigrationController::class, 'purgeCompany'])->middleware('password_protected'); + Route::post('migration/purge_save_settings/{company}', [MigrationController::class, 'purgeCompanySaveSettings'])->middleware('password_protected'); + Route::post('migration/start', [MigrationController::class, 'startMigration']); + + Route::post('one_time_token', [OneTimeTokenController::class, 'create']); + + Route::resource('payments', PaymentController::class); // name = (payments. index / create / show / update / destroy / edit + Route::post('payments/refund', [PaymentController::class, 'refund'])->name('payments.refund'); + Route::post('payments/bulk', [PaymentController::class, 'bulk'])->name('payments.bulk'); + Route::put('payments/{payment}/upload', [PaymentController::class, 'upload']); + + Route::resource('payment_terms', PaymentTermController::class); // name = (payments. index / create / show / update / destroy / edit + Route::post('payment_terms/bulk', [PaymentTermController::class, 'bulk'])->name('payment_terms.bulk'); Route::post('preview', [PreviewController::class, 'show'])->name('preview.show'); Route::post('live_preview', [PreviewController::class, 'live'])->name('preview.live'); @@ -102,6 +213,137 @@ Route::group(['middleware' => ['throttle:300,1', 'api_db', 'token_auth', 'locale Route::post('preview/purchase_order', [PreviewPurchaseOrderController::class, 'show'])->name('preview_purchase_order.show'); Route::post('live_preview/purchase_order', [PreviewPurchaseOrderController::class, 'live'])->name('preview_purchase_order.live'); + Route::resource('products', ProductController::class); // name = (products. index / create / show / update / destroy / edit + Route::post('products/bulk', [ProductController::class, 'bulk'])->name('products.bulk'); + Route::put('products/{product}/upload', [ProductController::class, 'upload']); + + Route::resource('projects', ProjectController::class); // name = (projects. index / create / show / update / destroy / edit + Route::post('projects/bulk', [ProjectController::class, 'bulk'])->name('projects.bulk'); + Route::put('projects/{project}/upload', [ProjectController::class, 'upload'])->name('projects.upload'); + + Route::resource('quotes', QuoteController::class); // name = (quotes. index / create / show / update / destroy / edit + Route::get('quotes/{quote}/{action}', [QuoteController::class, 'action'])->name('quotes.action'); + Route::post('quotes/bulk', [QuoteController::class, 'bulk'])->name('quotes.bulk'); + Route::put('quotes/{quote}/upload', [QuoteController::class, 'upload']); + + Route::resource('recurring_expenses', RecurringExpenseController::class); + Route::post('recurring_expenses/bulk', [RecurringExpenseController::class, 'bulk'])->name('recurring_expenses.bulk'); + Route::put('recurring_expenses/{recurring_expense}/upload', [RecurringExpenseController::class, 'upload']); + + + Route::resource('recurring_invoices', RecurringInvoiceController::class); // name = (recurring_invoices. index / create / show / update / destroy / edit + Route::post('recurring_invoices/bulk', [RecurringInvoiceController::class, 'bulk'])->name('recurring_invoices.bulk'); + Route::put('recurring_invoices/{recurring_invoice}/upload', [RecurringInvoiceController::class, 'upload']); + Route::resource('recurring_quotes', RecurringQuoteController::class); // name = (recurring_invoices. index / create / show / update / destroy / edit + Route::post('recurring_quotes/bulk', [RecurringQuoteController::class, 'bulk'])->name('recurring_quotes.bulk'); + Route::put('recurring_quotes/{recurring_quote}/upload', [RecurringQuoteController::class, 'upload']); + + Route::post('refresh', [LoginController::class, 'refresh'])->middleware('throttle:300,2'); + + Route::post('reports/clients', ClientReportController::class); + Route::post('reports/contacts', ClientContactReportController::class); + Route::post('reports/credits', CreditReportController::class); + Route::post('reports/documents', DocumentReportController::class); + Route::post('reports/expenses', ExpenseReportController::class); + Route::post('reports/invoices', InvoiceReportController::class); + Route::post('reports/invoice_items', InvoiceItemReportController::class); + Route::post('reports/quotes', QuoteReportController::class); + Route::post('reports/quote_items', QuoteItemReportController::class); + Route::post('reports/recurring_invoices', RecurringInvoiceReportController::class); + Route::post('reports/payments', PaymentReportController::class); + Route::post('reports/products', ProductReportController::class); + Route::post('reports/tasks', TaskReportController::class); + Route::post('reports/profitloss', ProfitAndLossController::class); + + Route::resource('task_scheduler', TaskSchedulerController::class)->except('edit')->parameters(['task_scheduler' => 'scheduler']); + + Route::get('scheduler', [SchedulerController::class, 'index']); + Route::post('support/messages/send', SendingController::class); + + Route::post('self-update', [SelfUpdateController::class, 'update'])->middleware('password_protected'); + Route::post('self-update/check_version', [SelfUpdateController::class, 'checkVersion']); + + Route::resource('system_logs', SystemLogController::class); + + Route::resource('tasks', TaskController::class); // name = (tasks. index / create / show / update / destroy / edit + Route::post('tasks/bulk', [TaskController::class, 'bulk'])->name('tasks.bulk'); + Route::put('tasks/{task}/upload', [TaskController::class, 'upload']); + Route::post('tasks/sort', [TaskController::class, 'sort']); + + Route::resource('task_statuses', TaskStatusController::class); // name = (task_statuses. index / create / show / update / destroy / edit + Route::post('task_statuses/bulk', [TaskStatusController::class, 'bulk'])->name('task_statuses.bulk'); + + Route::resource('tax_rates', TaxRateController::class); // name = (tax_rates. index / create / show / update / destroy / edit + Route::post('tax_rates/bulk', [TaxRateController::class, 'bulk'])->name('tax_rates.bulk'); + + Route::post('templates', [TemplateController::class, 'show'])->name('templates.show'); + + Route::resource('tokens', TokenController::class); // name = (tokens. index / create / show / update / destroy / edit + Route::post('tokens/bulk', [TokenController::class, 'bulk'])->name('tokens.bulk'); + + Route::get('settings/enable_two_factor', [TwoFactorController::class, 'setupTwoFactor']); + Route::post('settings/enable_two_factor', [TwoFactorController::class, 'enableTwoFactor']); + Route::post('settings/disable_two_factor', [TwoFactorController::class, 'disableTwoFactor']); + + + Route::post('verify', [TwilioController::class, 'generate'])->name('verify.generate')->middleware('throttle:100,1'); + Route::post('verify/confirm', [TwilioController::class, 'confirm'])->name('verify.confirm'); + + Route::resource('vendors', VendorController::class); // name = (vendors. index / create / show / update / destroy / edit + Route::post('vendors/bulk', [VendorController::class, 'bulk'])->name('vendors.bulk'); + Route::put('vendors/{vendor}/upload', [VendorController::class, 'upload']); + + Route::resource('purchase_orders', PurchaseOrderController::class); + Route::post('purchase_orders/bulk', [PurchaseOrderController::class, 'bulk'])->name('purchase_orders.bulk'); + Route::put('purchase_orders/{purchase_order}/upload', [PurchaseOrderController::class, 'upload']); + + Route::get('purchase_orders/{purchase_order}/{action}', [PurchaseOrderController::class, 'action'])->name('purchase_orders.action'); + + Route::get('users', [UserController::class, 'index']); + Route::get('users/create', [UserController::class, 'create'])->middleware('password_protected'); + Route::get('users/{user}', [UserController::class, 'show'])->middleware('password_protected'); + Route::put('users/{user}', [UserController::class, 'update'])->middleware('password_protected'); + Route::post('users', [UserController::class, 'store'])->middleware('password_protected'); + //Route::post('users/{user}/attach_to_company', [UserController::class, 'attach')->middleware('password_protected'); + Route::delete('users/{user}/detach_from_company', [UserController::class, 'detach'])->middleware('password_protected'); + + Route::post('users/bulk', [UserController::class, 'bulk'])->name('users.bulk')->middleware('password_protected'); + Route::post('/users/{user}/invite', [UserController::class, 'invite'])->middleware('password_protected'); + Route::post('/user/{user}/reconfirm', [UserController::class, 'reconfirm']); + + Route::resource('webhooks', WebhookController::class); + Route::post('webhooks/bulk', [WebhookController::class, 'bulk'])->name('webhooks.bulk'); + + /*Subscription and Webhook routes */ + // Route::post('hooks', [SubscriptionController::class, 'subscribe'])->name('hooks.subscribe'); + // Route::delete('hooks/{subscription_id}', [SubscriptionController::class, 'unsubscribe'])->name('hooks.unsubscribe'); + + Route::post('stripe/update_payment_methods', [StripeController::class, 'update'])->middleware('password_protected')->name('stripe.update'); + Route::post('stripe/import_customers', [StripeController::class, 'import'])->middleware('password_protected')->name('stripe.import'); + + Route::post('stripe/verify', [StripeController::class, 'verify'])->middleware('password_protected')->name('stripe.verify'); + Route::post('stripe/disconnect/{company_gateway_id}', [StripeController::class, 'disconnect'])->middleware('password_protected')->name('stripe.disconnect'); + + Route::resource('subscriptions', SubscriptionController::class); + Route::post('subscriptions/bulk', [SubscriptionController::class, 'bulk'])->name('subscriptions.bulk'); + Route::get('statics', StaticController::class); + // Route::post('apple_pay/upload_file','ApplyPayController::class, 'upload'); + }); -Route::fallback([BaseController::class, 'notFound']); +Route::match(['get', 'post'], 'payment_webhook/{company_key}/{company_gateway_id}', PaymentWebhookController::class) + ->middleware('throttle:1000,1') + ->name('payment_webhook'); + +Route::match(['get', 'post'], 'payment_notification_webhook/{company_key}/{company_gateway_id}/{client}', PaymentNotificationWebhookController::class) + ->middleware('throttle:1000,1') + ->name('payment_notification_webhook'); + +Route::post('api/v1/postmark_webhook', [PostMarkController::class, 'webhook'])->middleware('throttle:1000,1'); +Route::get('token_hash_router', [OneTimeTokenController::class, 'router'])->middleware('throttle:100,1'); +Route::get('webcron', [WebCronController::class, 'index'])->middleware('throttle:100,1'); +Route::post('api/v1/get_migration_account', [HostedMigrationController::class, 'getAccount'])->middleware('guest')->middleware('throttle:100,1'); +Route::post('api/v1/confirm_forwarding', [HostedMigrationController::class, 'confirmForwarding'])->middleware('guest')->middleware('throttle:100,1'); +Route::post('api/v1/process_webhook', [AppleController::class, 'process_webhook'])->middleware('throttle:1000,1'); +Route::post('api/v1/confirm_purchase', [AppleController::class, 'confirm_purchase'])->middleware('throttle:1000,1'); +Route::fallback([BaseController::class, 'notFound']); \ No newline at end of file diff --git a/routes/client.php b/routes/client.php index aad6d76635bc..a7f134f77594 100644 --- a/routes/client.php +++ b/routes/client.php @@ -16,4 +16,123 @@ use App\Http\Controllers\RecurringInvoiceController; use App\Utils\PhantomJS\Phantom; use Illuminate\Support\Facades\Route; -Route::fallback([BaseController::class, 'notFoundClient']); +Route::get('client', [ContactLoginController::class, 'showLoginForm'])->name('client.catchall')->middleware(['domain_db', 'contact_account','locale']); //catch all + +Route::get('client/login/{company_key?}', [ContactLoginController::class, 'showLoginForm'])->name('client.login')->middleware(['domain_db', 'contact_account','locale']); +Route::post('client/login/{company_key?}', [ContactLoginController::class, 'login'])->name('client.login.submit'); + +Route::get('client/register/{company_key?}', [ContactRegisterController::class, 'showRegisterForm'])->name('client.register')->middleware(['domain_db', 'contact_account', 'contact_register','locale']); +Route::post('client/register/{company_key?}', [ContactRegisterController::class, 'register'])->middleware(['domain_db', 'contact_account', 'contact_register', 'locale', 'throttle:10,1']); + +Route::get('client/password/reset', [ContactForgotPasswordController::class, 'showLinkRequestForm'])->name('client.password.request')->middleware(['domain_db', 'contact_account','locale']); +Route::post('client/password/email', [ContactForgotPasswordController::class, 'sendResetLinkEmail'])->name('client.password.email')->middleware('locale'); +Route::get('client/password/reset/{token}', [ContactResetPasswordController::class, 'showResetForm'])->name('client.password.reset')->middleware(['domain_db', 'contact_account','locale']); +Route::post('client/password/reset', [ContactResetPasswordController::class, 'reset'])->name('client.password.update')->middleware(['domain_db', 'contact_account','locale']); + +Route::get('view/{entity_type}/{invitation_key}', [App\Http\Controllers\ClientPortal\EntityViewController::class, 'index'])->name('client.entity_view'); +Route::get('view/{entity_type}/{invitation_key}/password', [App\Http\Controllers\ClientPortal\EntityViewController::class ,'password'])->name('client.entity_view.password'); +Route::post('view/{entity_type}/{invitation_key}/password', [App\Http\Controllers\ClientPortal\EntityViewController::class, 'handlePassword']); +Route::post('set_password', [App\Http\Controllers\ClientPortal\EntityViewController::class, 'handlePasswordSet'])->name('client.set_password')->middleware('domain_db'); + +Route::get('tmp_pdf/{hash}', [App\Http\Controllers\ClientPortal\TempRouteController::class, 'index'])->name('tmp_pdf'); + +Route::get('client/key_login/{contact_key}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'login'])->name('client.contact_login')->middleware(['domain_db','contact_key_login']); +Route::get('client/magic_link/{magic_link}', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'magicLink'])->name('client.contact_magic_link')->middleware(['domain_db','contact_key_login']); +Route::get('documents/{document_hash}', [App\Http\Controllers\ClientPortal\DocumentController::class, 'publicDownload'])->name('documents.public_download')->middleware(['domain_db']); +Route::get('error', [App\Http\Controllers\ClientPortal\ContactHashLoginController::class, 'errorPage'])->name('client.error'); +Route::get('client/payment/{contact_key}/{payment_id}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'paymentRouter'])->middleware(['domain_db','contact_key_login']); +Route::get('client/ninja/{contact_key}/{company_key}', [App\Http\Controllers\ClientPortal\NinjaPlanController::class, 'index'])->name('client.ninja_contact_login')->middleware(['domain_db']); +Route::post('client/ninja/trial_confirmation', [App\Http\Controllers\ClientPortal\NinjaPlanController::class, 'trial_confirmation'])->name('client.trial.response')->middleware(['domain_db']); + +Route::group(['middleware' => ['auth:contact', 'locale', 'domain_db','check_client_existence'], 'prefix' => 'client', 'as' => 'client.'], function () { + + Route::get('dashboard', [App\Http\Controllers\ClientPortal\DashboardController::class, 'index'])->name('dashboard'); // name = (dashboard. index / create / show / update / destroy / edit + + Route::get('plan', [App\Http\Controllers\ClientPortal\NinjaPlanController::class, 'plan'])->name('plan'); // name = (dashboard. index / create / show / update / destroy / edit + + Route::get('invoices', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'index'])->name('invoices.index')->middleware('portal_enabled'); + Route::post('invoices/payment', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'bulk'])->name('invoices.bulk'); + Route::get('invoices/payment', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'catch_bulk'])->name('invoices.catch_bulk'); + Route::post('invoices/download', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'download'])->name('invoices.download'); + Route::get('invoices/{invoice}', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'show'])->name('invoice.show'); + Route::get('invoices/{invoice_invitation}', [App\Http\Controllers\ClientPortal\InvoiceController::class, 'show'])->name('invoice.show_invitation'); + + Route::get('recurring_invoices', [App\Http\Controllers\ClientPortal\RecurringInvoiceController::class, 'index'])->name('recurring_invoices.index')->middleware('portal_enabled'); + Route::get('recurring_invoices/{recurring_invoice}', [App\Http\Controllers\ClientPortal\RecurringInvoiceController::class, 'show'])->name('recurring_invoice.show'); + Route::get('recurring_invoices/{recurring_invoice}/request_cancellation', [App\Http\Controllers\ClientPortal\RecurringInvoiceController::class, 'requestCancellation'])->name('recurring_invoices.request_cancellation'); + Route::post('payments/process', [App\Http\Controllers\ClientPortal\PaymentController::class, 'process'])->name('payments.process'); + Route::get('payments/process', [App\Http\Controllers\ClientPortal\PaymentController::class, 'catch_process'])->name('payments.catch_process'); + + Route::post('payments/credit_response', [App\Http\Controllers\ClientPortal\PaymentController::class, 'credit_response'])->name('payments.credit_response'); + + Route::get('payments', [App\Http\Controllers\ClientPortal\PaymentController::class, 'index'])->name('payments.index')->middleware('portal_enabled'); + Route::get('payments/{payment}', [App\Http\Controllers\ClientPortal\PaymentController::class, 'show'])->name('payments.show'); + + Route::get('profile/{client_contact}/edit', [App\Http\Controllers\ClientPortal\ProfileController::class, 'edit'])->name('profile.edit'); + Route::put('profile/{client_contact}/edit', [App\Http\Controllers\ClientPortal\ProfileController::class, 'update'])->name('profile.update'); + Route::put('profile/{client_contact}/edit_client', [App\Http\Controllers\ClientPortal\ProfileController::class, 'updateClient'])->name('profile.edit_client'); + Route::put('profile/{client_contact}/localization', [App\Http\Controllers\ClientPortal\ProfileController::class, 'updateClientLocalization'])->name('profile.edit_localization'); + + Route::get('payment_methods/{payment_method}/verification', [App\Http\Controllers\ClientPortal\PaymentMethodController::class, 'verify'])->name('payment_methods.verification'); + Route::post('payment_methods/{payment_method}/verification', [App\Http\Controllers\ClientPortal\PaymentMethodController::class, 'processVerification'])->middleware(['throttle:10,1']); + + Route::get('payment_methods/confirm', [App\Http\Controllers\ClientPortal\PaymentMethodController::class, 'store'])->name('payment_methods.confirm'); + + Route::resource('payment_methods', PaymentMethodController::class)->except(['edit', 'update']); + + Route::match(['GET', 'POST'], 'quotes/approve', [App\Http\Controllers\ClientPortal\QuoteController::class, 'bulk'])->name('quotes.bulk'); + Route::get('quotes', [App\Http\Controllers\ClientPortal\QuoteController::class, 'index'])->name('quotes.index')->middleware('portal_enabled'); + Route::get('quotes/{quote}', [App\Http\Controllers\ClientPortal\QuoteController::class, 'show'])->name('quote.show'); + Route::get('quotes/{quote_invitation}', [App\Http\Controllers\ClientPortal\QuoteController::class, 'show'])->name('quote.show_invitation'); + Route::post('quotes/download', [App\Http\Controllers\ClientPortal\QuoteController::class, 'download'])->name('quotes.download'); + + Route::get('credits', [App\Http\Controllers\ClientPortal\CreditController::class, 'index'])->name('credits.index'); + Route::get('credits/{credit}', [App\Http\Controllers\ClientPortal\CreditController::class, 'show'])->name('credit.show'); + + Route::get('credits/{credit_invitation}', [App\Http\Controllers\ClientPortal\CreditController::class,'show'])->name('credits.show_invitation'); + + Route::get('client/switch_company/{contact}', App\Http\Controllers\ClientPortal\SwitchCompanyController::class)->name('switch_company'); + + Route::post('documents/download_multiple', [App\Http\Controllers\ClientPortal\DocumentController::class, 'downloadMultiple'])->name('documents.download_multiple'); + Route::get('documents/{document}/download', [App\Http\Controllers\ClientPortal\DocumentController::class, 'download'])->name('documents.download'); + Route::resource('documents', App\Http\Controllers\ClientPortal\DocumentController::class)->only(['index', 'show']); + + Route::get('subscriptions/{recurring_invoice}/plan_switch/{target}', [App\Http\Controllers\ClientPortal\SubscriptionPlanSwitchController::class, 'index'])->name('subscription.plan_switch'); + + Route::resource('subscriptions', SubscriptionController::class)->middleware('portal_enabled')->only(['index']); + + Route::resource('tasks', TaskController::class)->only(['index']); + + Route::get('statement', [App\Http\Controllers\ClientPortal\StatementController::class, 'index'])->name('statement'); + Route::get('statement/raw', [App\Http\Controllers\ClientPortal\StatementController::class, 'raw'])->name('statement.raw'); + + Route::post('upload', App\Http\Controllers\ClientPortal\UploadController::class)->name('upload.store'); + Route::get('logout', [ContactLoginController::class, 'logout'])->name('logout'); + +}); + +Route::post('payments/process/response', [App\Http\Controllers\ClientPortal\PaymentController::class, 'response'])->name('client.payments.response')->middleware(['locale', 'domain_db', 'verify_hash']); +Route::get('payments/process/response', [App\Http\Controllers\ClientPortal\PaymentController::class, 'response'])->name('client.payments.response.get')->middleware(['locale', 'domain_db', 'verify_hash']); + +Route::get('client/subscriptions/{subscription}/purchase', [App\Http\Controllers\ClientPortal\SubscriptionPurchaseController::class, 'index'])->name('client.subscription.purchase')->middleware('domain_db'); + +Route::group(['middleware' => ['invite_db'], 'prefix' => 'client', 'as' => 'client.'], function () { + /*Invitation catches*/ + Route::get('recurring_invoice/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'recurringRouter']); + Route::get('invoice/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'invoiceRouter']); + Route::get('quote/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'quoteRouter']); + Route::get('credit/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'creditRouter']); + Route::get('recurring_invoice/{invitation_key}/download_pdf', [RecurringInvoiceController::class, 'downloadPdf'])->name('recurring_invoice.download_invitation_key'); + Route::get('invoice/{invitation_key}/download_pdf', [InvoiceController::class, 'downloadPdf'])->name('invoice.download_invitation_key'); + Route::get('quote/{invitation_key}/download_pdf', [QuoteController::class, 'downloadPdf'])->name('quote.download_invitation_key'); + Route::get('credit/{invitation_key}/download_pdf', [CreditController::class, 'downloadPdf'])->name('credit.download_invitation_key'); + Route::get('{entity}/{invitation_key}/download', [App\Http\Controllers\ClientPortal\InvitationController::class, 'routerForDownload']); + Route::get('pay/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'payInvoice'])->name('pay.invoice'); + + Route::get('unsubscribe/{entity}/{invitation_key}', [App\Http\Controllers\ClientPortal\InvitationController::class, 'unsubscribe'])->name('unsubscribe'); + +}); + +Route::get('phantom/{entity}/{invitation_key}', [Phantom::class, 'displayInvitation'])->middleware(['invite_db', 'phantom_secret'])->name('phantom_view'); + +Route::fallback([BaseController::class, 'notFoundClient']); \ No newline at end of file diff --git a/routes/vendor.php b/routes/vendor.php index e69de29bb2d1..b44e1b10c491 100644 --- a/routes/vendor.php +++ b/routes/vendor.php @@ -0,0 +1,54 @@ +name('vendor.catchall')->middleware(['domain_db', 'contact_account','vendor_locale']); //catch all +Route::get('vendor/key_login/{contact_key}', [VendorContactHashLoginController::class, 'login'])->name('contact_login')->middleware(['domain_db','vendor_contact_key_login']); + +Route::group(['middleware' => ['invite_db'], 'prefix' => 'vendor', 'as' => 'vendor.'], function () { + /*Invitation catches*/ + Route::get('purchase_order/{invitation_key}', [InvitationController::class, 'purchaseOrder']); + Route::get('purchase_order/{invitation_key}/download', [InvitationController::class, 'download']); + + // Route::get('purchase_order/{invitation_key}/download_pdf', 'PurchaseOrderController@downloadPdf')->name('recurring_invoice.download_invitation_key'); + // Route::get('purchase_order/{invitation_key}/download', 'ClientPortal\InvitationController@routerForDownload'); + +}); + +Route::group(['middleware' => ['auth:vendor', 'vendor_locale', 'domain_db'], 'prefix' => 'vendor', 'as' => 'vendor.'], function () { + + Route::get('dashboard', [PurchaseOrderController::class, 'index'])->name('dashboard'); + Route::get('purchase_orders', [PurchaseOrderController::class, 'index'])->name('purchase_orders.index'); + Route::get('purchase_orders/{purchase_order}', [PurchaseOrderController::class, 'show'])->name('purchase_order.show'); + + Route::get('profile/{vendor_contact}/edit', [VendorContactController::class, 'edit'])->name('profile.edit'); + Route::put('profile/{vendor_contact}/edit', [VendorContactController::class, 'update'])->name('profile.update'); + + Route::post('purchase_orders/bulk', [PurchaseOrderController::class, 'bulk'])->name('purchase_orders.bulk'); + Route::get('logout', [VendorContactLoginController::class, 'logout'])->name('logout'); + Route::post('purchase_order/upload/{purchase_order}', [UploadController::class,'upload'])->name('upload.store'); + + Route::post('documents/download_multiple', [App\Http\Controllers\VendorPortal\DocumentController::class, 'downloadMultiple'])->name('documents.download_multiple'); + Route::get('documents/{document}/download', [App\Http\Controllers\VendorPortal\DocumentController::class, 'download'])->name('documents.download'); + Route::resource('documents', App\Http\Controllers\VendorPortal\DocumentController::class)->only(['index', 'show']); + +}); + + +Route::fallback([BaseController::class, 'notFoundVendor']);