input('role'); return [ 'isClient' => $role === UserRoleRegistry::get('client')->value, 'isProjectManager' => $role === UserRoleRegistry::get('project-manager')->value, 'isDevelopper' => $role === UserRoleRegistry::get('developper')->value, 'isConceptor' => $role === UserRoleRegistry::get('conceptor')->value, ]; } /** * Prepare the data for validation. */ protected function extraPrepareForValidation(): void { [ 'isClient' => $isClient, 'isProjectManager' => $isProjectManager, 'isDevelopper' => $isDevelopper, 'isConceptor' => $isConceptor, ] = $this->resolveRoleFlags(); $userRole = auth('backend')->user()->role->value === $isConceptor; if ($userRole && ($isProjectManager || $isDevelopper)) { $this->merge([ 'gitlab_id' => $this->input('gitlab_id'), ]); } if ($isClient) { $this->merge([ 'sites' => $this->input('sites'), ]); } } /** * Get the extra validation rules. * * @return array */ protected function extraRules(): array { [ 'isClient' => $isClient, 'isProjectManager' => $isProjectManager, 'isDevelopper' => $isDevelopper, 'isConceptor' => $isConceptor, ] = $this->resolveRoleFlags(); $userRole = auth('backend')->user()->role->value === $isConceptor; return [ 'gitlab_id' => $userRole && ($isProjectManager || $isDevelopper) ? 'required|integer|min:1' : 'nullable|integer|min:1', 'sites' => $userRole && $isClient ? 'required|array' : 'nullable|array', 'sites.*' => 'integer|exists:sites,id|distinct', ]; } /** * Get the extra attributes. * * @return array */ protected function extraAttributes(): array { return [ 'gitlab_id' => trans('validation.custom.gitlab_id'), 'sites' => trans_choice('models.classes.sites', \INF), ]; } }