%PDF- %PDF-
Direktori : /var/www/html/camillo/camillo-api-master/app/Nova/Actions/ |
Current File : /var/www/html/camillo/camillo-api-master/app/Nova/Actions/SmsInvitation.php |
<?php namespace App\Nova\Actions; use App\Enums\UsertypeEnum; use App\Mail\PrincipalInvitationEmail; use App\Services\SmsService; use Illuminate\Bus\Queueable; use Illuminate\Support\Facades\Hash; use Illuminate\Support\Facades\Mail; use Laravel\Nova\Actions\Action; use Illuminate\Support\Collection; use Laravel\Nova\Fields\ActionFields; use Illuminate\Queue\SerializesModels; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; class SmsInvitation extends Action { use InteractsWithQueue, Queueable, SerializesModels; /** * The displayable name of the action. * * @var string * @return array|null|string */ public function name(){ return __('Send Invitation'); } /** * Perform the action on the given models. * * @param \Laravel\Nova\Fields\ActionFields $fields * @param \Illuminate\Support\Collection $models * @return mixed */ public function handle(ActionFields $fields, Collection $models) { foreach($models as $model){ //generate random unique token $hash= Hash::make($model->fiscal_code . time()); $token = str_replace(["$","#","%",".",",","@","/","\\"],rand(0,9), $hash); //save remember token in user table $user = $model; $user->remember_token = $token; if (!$user->save()){ return Action::danger(__('Could not save token!')); } $backend_users = [UsertypeEnum::PRINCIPAL, UsertypeEnum::ADMIN, UsertypeEnum::TEACHER]; if(in_array($user->usertype->role, $backend_users)){ //send E-MAIL if ($user->usertype->role === UsertypeEnum::TEACHER) { $url = env("WEBAPP_BASE_URL", "https://app-staging.camillo.online") . "/confirm?token=" . $token; } else { $url = env('API_BASE_URL', "https://bo-staging.camillo.online") . "/principal/reset?token=" . $token; } try { Mail::to($user->individual->email)->send(new PrincipalInvitationEmail($url, $user->email)); } catch (\Exception $exception) { return Action::danger($exception->getMessage()); // return Action::danger(__('Something went wrong!')); } } else { //send SMS $type = "sms_invitation"; $url = env("WEBAPP_BASE_URL","https://app-staging.camillo.online"). "/confirm?token=" . $token; $sms = new SmsService($model->individual, $type, $url); if(!$sms->send_invitation()){ return Action::danger(__('Something went wrong!')); } } } return Action::message(__('invitation_sent')); } /** * Get the fields available on the action. * * @return array */ public function fields() { return []; } }