[ 'label' => trans('Url'), 'type' => CrudType::string(), 'validate' => [ 'url', 'max:255' ], 'required' => true, 'nullable' => false, 'actions' => [ CrudAction::view(), CrudAction::create(), CrudAction::update() ] ], 'name' => [ 'label' => trans('Nom'), 'type' => CrudType::string(), 'validate' => [ 'string', 'max:255' ], 'required' => true, 'nullable' => false, 'actions' => [ CrudAction::viewAny(), CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'email_contact' => [ 'label' => trans('Email de contact'), 'type' => CrudType::email(), 'required' => true, 'nullable' => false, 'validate' => [ 'max:255' ], 'actions' => [ CrudAction::viewAny(), CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'address' => [ 'label' => trans('Adresse'), 'type' => CrudType::string(), 'validate' => [ 'string', 'max:255' ], 'required' => true, 'nullable' => false, 'actions' => [ CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'city' => [ 'label' => trans('Ville'), 'type' => CrudType::string(), 'validate' => [ 'string', 'max:70' ], 'required' => true, 'nullable' => false, 'actions' => [ CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'postcode' => [ 'label' => trans('Code postal'), 'type' => CrudType::string(), 'validate' => [ 'string', 'max:10' ], 'required' => true, 'nullable' => false, 'actions' => [ CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'latitude' => [ 'label' => trans('Latitude'), 'type' => CrudType::float(), 'validate' => [ 'numeric', 'between:-89.99,90' ], 'rules' => [ 'min' => -89.99, 'max' => 90, 'step' => 0.01 ], 'required' => true, 'nullable' => false, 'actions' => [ CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'longitude' => [ 'label' => trans('Longitude'), 'type' => CrudType::float(), 'validate' => [ 'numeric', 'between:-179.99,180.00', ], 'rules' => [ 'min' => -179.99, 'max' => 180, 'step' => 0.01 ], 'actions' => [ CrudAction::view(), CrudAction::create(), CrudAction::update(), ] ], 'societe_id' => [ 'label' => trans('Societe'), 'type' => CrudType::belongsTo(), 'belongsTo' => Societe::class, 'actions' => [ CrudAction::viewAny(), CrudAction::view() ] ] ]; if (auth('web')->user() and auth('web')->user()->role->equals(Role::admin())) { self::$editableProperties['societe_id']['actions'][] = CrudAction::create(); self::$editableProperties['societe_id']['actions'][] = CrudAction::update(); } parent::__construct($attributes); } protected static function booted() { static::deleted(function (self $model) { User::whereSelectedSiteId($model->id)->get() ->map(function (User $user) { $user->selected_site_id = null; }); }); } /** * Has one Societe * * @return \Illuminate\Database\Eloquent\Relations\BelongsTo */ public function societe() { return $this->belongsTo(Societe::class); } /** * Has many Employee * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function employees() { return $this->hasMany(Employee::class); } /** * Belongs To Many Sites * * @return \Illuminate\Database\Eloquent\Relations\belongsToMany */ public function users() { return $this->belongsToMany(User::class, 'user_site'); } /** * Has many Flash * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function flashes() { return $this->hasMany(Flash::class); } /** * Has many Sondage * * @return \Illuminate\Database\Eloquent\Relations\HasMany */ public function sondages() { return $this->hasMany(Sondage::class); } }