Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,3 @@
composer.lock
vendor
.idea/
14 changes: 14 additions & 0 deletions lang/en/australian-states.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
<?php

use AllDressed\Constants\AustralianState;

return [
AustralianState::AUSTRALIAN_CAPITAL_TERRITORY->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',
];
19 changes: 19 additions & 0 deletions lang/en/canadian-states.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
<?php

use AllDressed\Constants\CanadianState;

return [
CanadianState::ALBERTA->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',
];
7 changes: 6 additions & 1 deletion lang/en/permissions.php
Original file line number Diff line number Diff line change
Expand Up @@ -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',
Expand All @@ -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',
Expand All @@ -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',
Expand Down Expand Up @@ -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',
];
];
21 changes: 0 additions & 21 deletions lang/en/states.php

This file was deleted.

37 changes: 37 additions & 0 deletions src/AustralianState.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
<?php

namespace AllDressed\Constants;

use AllDressed\Constants\Concerns\AvailableAsCollection;
use AllDressed\Constants\Concerns\AvailableAsOptions;
use AllDressed\Constants\Concerns\CanBeRandomized;

enum AustralianState: string
{
use AvailableAsCollection, AvailableAsOptions, CanBeRandomized;

case AUSTRALIAN_CAPITAL_TERRITORY = 'ACT';
case NEW_SOUTH_WALES = 'NSW';
case NORTHERN_TERRITORY = 'NT';
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(): string
{
return 'AU';
}

/**
* Retrieve the abbreviation of the state.
*/
public function getStateValue(): string
{
return $this->value;
}
}
47 changes: 47 additions & 0 deletions src/CanadianState.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

namespace AllDressed\Constants;

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 CanadianState: string
{
use AvailableAsCollection, AvailableAsOptions, CanBeRandomized;

case ALBERTA = 'AL';
case BRITISH_COLUMBIA = 'BC';
case MANITOBA = 'MB';
case NEW_BRUNSWICK = 'NB';
case NEWFOUNDLAND_AND_LABRADOR = 'NL';
case NOVA_SCOTIA = 'NS';
case NORTHWEST_TERRITORIES = 'NT';
case NUNAVUT = 'NU';
case ONTARIO = 'ON';
case PRINCE_EDWARD_ISLAND = 'PE';
case QUEBEC = 'QC';
case SASKATCHEWAN = 'SK';
case YUKON = 'YK';


/**
* Retrieve the country of the state.
*/
public function getCountry(): string
{
return 'CA';
}

/**
* Retrieve the abbreviation of the state.
*/
public function getStateValue(): string
{
return $this->value;
}
}
7 changes: 6 additions & 1 deletion src/Permission.php
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand All @@ -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';
Expand All @@ -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';
Expand Down Expand Up @@ -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';
Expand All @@ -152,4 +157,4 @@ public static function all(): Collection
{
return collect(static::cases());
}
}
}
51 changes: 7 additions & 44 deletions src/State.php
Original file line number Diff line number Diff line change
Expand Up @@ -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()]);
}

/**
Expand All @@ -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'));
]));
}
}
}