use App\Services\BaseService;
use App\Models\Company\Employee;
use Illuminate\Support\Facades\Mail;
use App\Mail\Company\InviteEmployeeToBecomeUserMail;
class InviteEmployeeToBecomeUser extends BaseService
{
//
public function execute(array $data): Employee
{
$this->validateRules($data);
$this->author($data['author_id'])
->inCompany($data['company_id'])
->asAtLeastHR()
->canExecuteService();
$employee = $this->validateEmployeeBelongsToCompany($data);
//
}
private function inviteEmployee(Employee $employee): void
{
if ($employee->invitation_used_at) {
throw new UserAlreadyInvitedException();
}
Employee::where('id', $employee->id)->update([
'invitation_link' => Str::uuid()->toString(),
]);
Mail::to($employee->email)
->queue(new InviteEmployeeToBecomeUserMail($employee->refresh()));
}
}