diff --git a/app/Http/ValidationRules/User/AttachableUser.php b/app/Http/ValidationRules/User/AttachableUser.php new file mode 100644 index 000000000000..6c572cc32f78 --- /dev/null +++ b/app/Http/ValidationRules/User/AttachableUser.php @@ -0,0 +1,73 @@ +checkUserIsAttachable($value); + } + + /** + * @return string + */ + public function message() + { + return "Cannot add the same user to the same company"; + } + + /** + * @param $user_id + * @return bool + */ + private function checkUserIsAttachable($email) : bool + { + if (empty($email)) { + return false; + } + + $user = User::where('email', $email)->first(); + + if(!$user) + return true; + + $user_already_attached = CompanyUser::query() + ->where('user_id', $user->id) + ->where('account_id',$user->account_id) + ->where('company_id', auth()->user()->company()->id) + ->withTrashed() + ->exists(); + + if($user_already_attached) + return false; + + + return true; + } +}