diff --git a/.gitignore b/.gitignore index 987e2a2..7e43310 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ composer.lock vendor +.idea/ \ No newline at end of file diff --git a/lang/en/australian-states.php b/lang/en/australian-states.php new file mode 100644 index 0000000..4c286a3 --- /dev/null +++ b/lang/en/australian-states.php @@ -0,0 +1,14 @@ +value => 'Australian Capital Territory', + AustralianState::NEW_SOUTH_WALES->value => 'New South Wales', + AustralianState::NORTHERN_TERRITORY->value => 'Northern Territory', + AustralianState::QUEENSLAND->value => 'Queensland', + AustralianState::SOUTH_AUSTRALIA->value => 'South Australia', + AustralianState::TASMANIA->value => 'Tasmania', + AustralianState::VICTORIA->value => 'Victoria', + AustralianState::WESTERN_AUSTRALIA->value => 'Western Australia', +]; \ No newline at end of file diff --git a/lang/en/canadian-states.php b/lang/en/canadian-states.php new file mode 100644 index 0000000..0edcfee --- /dev/null +++ b/lang/en/canadian-states.php @@ -0,0 +1,19 @@ +value => 'Alberta', + CanadianState::BRITISH_COLUMBIA->value => 'British Columbia', + CanadianState::MANITOBA->value => 'Manitoba', + CanadianState::NEW_BRUNSWICK->value => 'New Brunswick', + CanadianState::NEWFOUNDLAND_AND_LABRADOR->value => 'Newfoundland and Labrador', + CanadianState::NOVA_SCOTIA->value => 'Nova Scotia', + CanadianState::NORTHWEST_TERRITORIES->value => 'Northwest Territories', + CanadianState::NUNAVUT->value => 'Nunavut', + CanadianState::ONTARIO->value => 'Ontario', + CanadianState::PRINCE_EDWARD_ISLAND->value => 'Prince Edward Island', + CanadianState::QUEBEC->value => 'Quebec', + CanadianState::SASKATCHEWAN->value => 'Saskatchewan', + CanadianState::YUKON->value => 'Yukon', +]; \ No newline at end of file diff --git a/lang/en/permissions.php b/lang/en/permissions.php index 7256155..c7eaca7 100644 --- a/lang/en/permissions.php +++ b/lang/en/permissions.php @@ -30,6 +30,7 @@ Permission::CREATE_PACKAGE->value => 'Create packages', Permission::CREATE_SUBSCRIPTION->value => 'Create subscriptions', Permission::CREATE_TAG->value => 'Create customers tags', + Permission::CREATE_TAX->value => 'Create tax', Permission::CREATE_TEAM->value => 'Create teams', Permission::CREATE_TRANSACTION->value => 'Create transaction', Permission::CREATE_WEBHOOK->value => 'Create Webhook', @@ -46,6 +47,7 @@ Permission::DELETE_PAYMENT_GATEWAY->value => 'Delete payment gateways', Permission::DELETE_PAYMENT_METHOD->value => 'Delete customers payment methods', Permission::DELETE_PRODUCT->value => 'Delete products', + Permission::DELETE_TAX->value => 'Delete tax', Permission::DELETE_TEAM->value => 'Delete teams', Permission::DELETE_USER->value => 'Delete users', Permission::DELETE_WEBHOOK->value => 'Delete webhooks', @@ -71,6 +73,7 @@ Permission::UPDATE_PRODUCT->value => 'Update products', Permission::UPDATE_SETTING->value => 'Update profile settings', Permission::UPDATE_SUBSCRIPTION->value => 'Update subscriptions', + Permission::UPDATE_TAX->value => 'Update tax', Permission::UPDATE_TEAM->value => 'Update team', Permission::UPDATE_USER->value => 'Update user', Permission::UPDATE_WEBHOOK->value => 'Update webhook', @@ -120,10 +123,12 @@ Permission::VIEW_SUBSCRIPTION->value => 'View subscription', Permission::VIEW_SUBSCRIPTIONS->value => 'View subscriptions index', Permission::VIEW_TAGS->value => 'View customers tags', + Permission::VIEW_TAX->value => 'View tax', + Permission::VIEW_TAXES->value => 'View taxes index', Permission::VIEW_TEAM->value => 'View team member', Permission::VIEW_TEAMS->value => 'View teams index', Permission::VIEW_USER->value => 'View user', Permission::VIEW_USERS->value => 'View users index', Permission::VIEW_WEBHOOK->value => 'View webhook', Permission::VIEW_WEBHOOKS->value => 'View webhooks index', -]; +]; \ No newline at end of file diff --git a/lang/en/states.php b/lang/en/states.php deleted file mode 100644 index 298b51e..0000000 --- a/lang/en/states.php +++ /dev/null @@ -1,21 +0,0 @@ -value => [ - State::AUSTRALIAN_CAPITAL_TERRITORY->value => 'Australian Capital Territory', - State::NEW_SOUTH_WALES->value => 'New South Wales', - State::NORTHERN_TERRITORY->value => 'Northern Territory', - State::QUEENSLAND->value => 'Queensland', - State::SOUTH_AUSTRALIA->value => 'South Australia', - State::TASMANIA->value => 'Tasmania', - State::VICTORIA->value => 'Victoria', - State::WESTERN_AUSTRALIA->value => 'Western Australia', - ], - - Country::CANADA->value => [ - State::QUEBEC->value => 'Quebec', - ], -]; diff --git a/src/AustralianState.php b/src/AustralianState.php new file mode 100644 index 0000000..4bd152b --- /dev/null +++ b/src/AustralianState.php @@ -0,0 +1,37 @@ +value; + } +} \ No newline at end of file diff --git a/src/CanadianState.php b/src/CanadianState.php new file mode 100644 index 0000000..420cfb4 --- /dev/null +++ b/src/CanadianState.php @@ -0,0 +1,47 @@ +value; + } +} \ No newline at end of file diff --git a/src/Permission.php b/src/Permission.php index 0fa688a..17c1b65 100644 --- a/src/Permission.php +++ b/src/Permission.php @@ -39,6 +39,7 @@ enum Permission: string case CREATE_PACKAGE = 'packages:create'; case CREATE_SUBSCRIPTION = 'subscriptions:create'; case CREATE_TAG = 'tags:create'; + case CREATE_TAX = 'taxes:create'; case CREATE_TEAM = 'teams:create'; case CREATE_TRANSACTION = 'transactions:create'; case CREATE_WEBHOOK = 'webhooks:create'; @@ -55,6 +56,7 @@ enum Permission: string case DELETE_PAYMENT_GATEWAY = 'gateways:delete'; case DELETE_PAYMENT_METHOD = 'customers:payment-methods:delete'; case DELETE_PRODUCT = 'products:delete'; + case DELETE_TAX = 'taxes:delete'; case DELETE_TEAM = 'teams:delete'; case DELETE_USER = 'users:delete'; case DELETE_WEBHOOK = 'webhooks:delete'; @@ -79,6 +81,7 @@ enum Permission: string case UPDATE_PRODUCT = 'products:update'; case UPDATE_SETTING = 'settings:update'; case UPDATE_SUBSCRIPTION = 'subscriptions:update'; + case UPDATE_TAX = 'taxes:update'; case UPDATE_TEAM = 'teams:update'; case UPDATE_USER = 'users:update'; case UPDATE_WEBHOOK = 'webhooks:update'; @@ -136,6 +139,8 @@ enum Permission: string case VIEW_SUBSCRIPTIONS_CHURN = 'subscriptions:churn:show'; case VIEW_SUBSCRIPTIONS_LTV = 'subscriptions:ltv:show'; case VIEW_TAGS = 'tags:index'; + case VIEW_TAX = 'taxes:show'; + case VIEW_TAXES = 'taxes:index'; case VIEW_TEAM = 'teams:show'; case VIEW_TEAMS = 'teams:index'; case VIEW_USER = 'users:show'; @@ -152,4 +157,4 @@ public static function all(): Collection { return collect(static::cases()); } -} +} \ No newline at end of file diff --git a/src/State.php b/src/State.php index d467933..f8b4f90 100644 --- a/src/State.php +++ b/src/State.php @@ -5,53 +5,18 @@ use AllDressed\Constants\Concerns\AvailableAsCollection; use AllDressed\Constants\Concerns\AvailableAsOptions; use AllDressed\Constants\Concerns\CanBeRandomized; -use Illuminate\Support\Arr; use Illuminate\Support\Collection; -use Illuminate\Support\Facades\App; -use Illuminate\Support\Facades\Lang; enum State: string { use AvailableAsCollection, AvailableAsOptions, CanBeRandomized; - case AUSTRALIAN_CAPITAL_TERRITORY = 'ACT'; - case NEW_SOUTH_WALES = 'NSW'; - case NORTHERN_TERRITORY = 'NT'; - case QUEBEC = 'QC'; - case QUEENSLAND = 'QLD'; - case SOUTH_AUSTRALIA = 'SA'; - case TASMANIA = 'TAS'; - case VICTORIA = 'VIC'; - case WESTERN_AUSTRALIA = 'WA'; - - /** - * Retrieve the country of the state. - */ - public function getCountry(): Country - { - $key = "alldressed-{$this->value}-country"; - - if (! App::has($key)) { - App::singleton($key, function () { - $country = collect(Lang::get('constants::states'))->search( - function ($states) { - return collect($states)->has($this->value); - } - ); - - return Country::from($country); - }); - } - - return App::get($key); - } - /** - * Preprend the country for the translation key. + * Get all states from all enums. */ - public function getTranslationKey(): string + public static function all(): Collection { - return "states.{$this->getCountry()->value}.{$this->value}"; + return collect([...AustralianState::cases(), ...CanadianState::cases()]); } /** @@ -60,12 +25,10 @@ public function getTranslationKey(): string public static function toCountrySelectorOptions(): Collection { return static::all() - ->map(static fn ($state) => [ - 'country' => $state->getCountry()->value, + ->groupBy(static fn ($states) => $states->getCountry()) + ->map(static fn ($states) => $states->map(static fn ($state) => [ 'label' => $state->getLabel(), 'value' => $state->value, - ]) - ->groupBy('country') - ->map(static fn ($option) => Arr::except($option, 'country')); + ])); } -} +} \ No newline at end of file