From: Louis Jeckel Date: Wed, 14 Jul 2021 16:33:17 +0000 (+0200) Subject: unique addresse for organsiations X-Git-Url: http://git.cubedesigners.com/?a=commitdiff_plain;h=322392f9ebb55d4612f4166801d729c8d889da26;p=psq.git unique addresse for organsiations --- diff --git a/app/HasPlace.php b/app/HasPlace.php new file mode 100644 index 0000000..91a9d4d --- /dev/null +++ b/app/HasPlace.php @@ -0,0 +1,25 @@ +address_line_1, + $this->city, + $this->postal_code, + $this->country, + ]; + } +} diff --git a/app/Nova/Actions/ExportUsersToExcel.php b/app/Nova/Actions/ExportUsersToExcel.php index 8da02ca..07d74b7 100644 --- a/app/Nova/Actions/ExportUsersToExcel.php +++ b/app/Nova/Actions/ExportUsersToExcel.php @@ -27,21 +27,19 @@ class ExportUsersToExcel extends DownloadExcel implements WithMapping, WithHeadi */ public function map($user): array { - return [ + $place = $user->organization !== null && $user->organization->unique_address ? + $user->organization->place() : + $user->place(); + + return array_merge([ $user->first_name, $user->last_name, - $user->email, - $user->address_line_1, - $user->city, - $user->postal_code, - $user->country, + $user->email + ], $place, [ $user->phone, - (string) $user->organization, + $user->organization_str ?? (string) $user->organization, $user->position, - - - - ]; + ]); } public function headings(): array diff --git a/app/Nova/Organization.php b/app/Nova/Organization.php index 93f48eb..dd0cf07 100644 --- a/app/Nova/Organization.php +++ b/app/Nova/Organization.php @@ -11,10 +11,13 @@ use App\Nova\Filters\TypeFilter; use Illuminate\Http\Request; use Laravel\Nova\Fields\BelongsTo; use Laravel\Nova\Fields\Boolean; +use Laravel\Nova\Fields\Country; use Laravel\Nova\Fields\HasMany; use Laravel\Nova\Fields\ID; +use Laravel\Nova\Fields\Place; use Laravel\Nova\Fields\Text; use Laravel\Nova\Http\Requests\NovaRequest; +use Laravel\Nova\Panel; class Organization extends Resource { @@ -59,14 +62,31 @@ class Organization extends Resource public function fields(Request $request) { return [ -// ID::make()->sortable(), Text::make('Nom', 'name'), + new Panel('Adresse', $this->addressFields()), HasMany::make('Membres', 'members', User::class), BelongsTo::make('Type', 'type', OrganizationType::class), + Boolean::make('Adresse unique', 'unique_address'), ]; } + + /** + * Get the address fields for the resource. + * + * + */ + protected function addressFields() + { + return [ + Place::make('Adresse', 'address_line_1')->hideFromIndex(), + Text::make('Ville', 'city')->hideFromIndex(), + Text::make('Code Postal', 'postal_code')->hideFromIndex(), + Country::make('Pays', 'country')->hideFromIndex(), + ]; + } + /** * Get the cards available for the request. * diff --git a/app/Organization.php b/app/Organization.php index 51035ad..0ca58a7 100644 --- a/app/Organization.php +++ b/app/Organization.php @@ -13,11 +13,13 @@ use Laravel\Scout\Searchable; * @package App * @property string name * @property boolean $subscription_active + * @property boolean $unique_address */ class Organization extends Model implements SendsEmails { use Searchable; + use HasPlace; protected $casts = [ ]; diff --git a/app/User.php b/app/User.php index 1f93c6e..5d8b9dc 100644 --- a/app/User.php +++ b/app/User.php @@ -44,6 +44,7 @@ class User extends Authenticatable implements MustVerifyEmail, SendsEmails use Searchable; use Billable; use TemplateVariables; + use HasPlace; /** * The attributes that are mass assignable. diff --git a/database/migrations/2021_07_14_161651_add_unqiue_address_to_organizations.php b/database/migrations/2021_07_14_161651_add_unqiue_address_to_organizations.php new file mode 100644 index 0000000..5fd5a22 --- /dev/null +++ b/database/migrations/2021_07_14_161651_add_unqiue_address_to_organizations.php @@ -0,0 +1,40 @@ +boolean('unique_address')->default(0); + $table->string('address_line_1')->nullable(); + $table->string('city')->nullable(); + $table->string('postal_code')->nullable(); + $table->string('country')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('organizations', function (Blueprint $table) { + $table->dropColumn('unique_address'); + $table->dropColumn('address_line_1'); + $table->dropColumn('city'); + $table->dropColumn('postal_code'); + $table->dropColumn('country'); + }); + } +}