PATH:
home
/
rwabteecom
/
public_html_old
/
app
/
Models
/
Editing: User.php
<?php namespace App\Models; use App\Models\Traits\StorageLimit; use App\Traits\Multitenantable; use Barryvdh\LaravelIdeHelper\Eloquent; use Database\Factories\UserFactory; use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\HigherOrderBuilderProxy; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\DatabaseNotification; use Illuminate\Notifications\DatabaseNotificationCollection; use Illuminate\Notifications\Notifiable; use Illuminate\Support\Carbon; use Illuminate\Support\Facades\DB; use Lab404\Impersonate\Models\Impersonate; use Spatie\MediaLibrary\HasMedia; use Spatie\MediaLibrary\InteractsWithMedia; use Spatie\MediaLibrary\MediaCollections\Models\Collections\MediaCollection; use Spatie\MediaLibrary\MediaCollections\Models\Media; use Spatie\Permission\Traits\HasRoles; use Stancl\Tenancy\Database\Concerns\BelongsToTenant; use Laravel\Sanctum\HasApiTokens; use Illuminate\Notifications\Notification; /** * App\Models\User * * @property int $id * @property string $first_name * @property string $last_name * @property string $email * @property string|null $contact * @property string|null $region_code * @property int $is_active * @property string|null $language * @property Carbon|null $email_verified_at * @property string $password * @property int $theme_mode * @property string $tenant_id * @property string|null $remember_token * @property Carbon|null $created_at * @property Carbon|null $updated_at * @property-read string $full_name * @property-read mixed $multi_language_date * @property-read HigherOrderBuilderProxy|mixed $plan_name * @property-read string $profile_image * @property-read MediaCollection|Media[] $media * @property-read int|null $media_count * @property-read DatabaseNotificationCollection|DatabaseNotification[] $notifications * @property-read int|null $notifications_count * @property-read Collection|\Spatie\Permission\Models\Permission[] $permissions * @property-read int|null $permissions_count * @property-read Collection|\Spatie\Permission\Models\Role[] $roles * @property-read int|null $roles_count * @property-read Subscription $subscription * @property-read Collection|Subscription[] $subscriptions * @property-read int|null $subscriptions_count * @property-read MultiTenant $tenant * * @method static UserFactory factory(...$parameters) * @method static Builder|User newModelQuery() * @method static Builder|User newQuery() * @method static Builder|User permission($permissions) * @method static Builder|User query() * @method static Builder|User role($roles, $guard = null) * @method static Builder|User whereContact($value) * @method static Builder|User whereCreatedAt($value) * @method static Builder|User whereEmail($value) * @method static Builder|User whereEmailVerifiedAt($value) * @method static Builder|User whereFirstName($value) * @method static Builder|User whereId($value) * @method static Builder|User whereIsActive($value) * @method static Builder|User whereLanguage($value) * @method static Builder|User whereLastName($value) * @method static Builder|User wherePassword($value) * @method static Builder|User whereRegionCode($value) * @method static Builder|User whereRememberToken($value) * @method static Builder|User whereTenantId($value) * @method static Builder|User whereThemeMode($value) * @method static Builder|User whereUpdatedAt($value) * * @mixin Eloquent */ class User extends Authenticatable implements HasMedia, MustVerifyEmail { use HasFactory, Notifiable, InteractsWithMedia, StorageLimit, HasRoles, Impersonate, BelongsToTenant, Multitenantable, HasApiTokens; protected $table = 'users'; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'first_name', 'last_name', 'email', 'contact', 'region_code', 'affiliate_code', 'is_active', 'steps', 'email_verified_at', 'password', 'theme_mode', 'language', 'tenant_id', 'vcard_table_view_type', ]; protected $casts = [ 'first_name' => 'string', 'last_name' => 'string', 'email' => 'string', 'contact' => 'string', 'region_code' => 'string', 'affiliate_code' => 'string', 'is_active' => 'integer', 'email_verified_at' => 'datetime', 'password' => 'string', 'theme_mode' => 'integer', 'language' => 'string', 'tenant_id' => 'string', 'remember_token' => 'string', ]; const LANGUAGES = [ 'ar' => 'Arabic', 'zh' => 'Chinese', 'en' => 'English', 'fr' => 'French', 'de' => 'German', 'pt' => 'Portuguese', 'ru' => 'Russian', 'es' => 'Spanish', 'tr' => 'Turkish', 'it' => 'Italian', 'vi' => 'vietnamese', ]; const ALL_LANGUAGES = [ 'af' => 'Afrikaans', 'sq' => 'Albanian - shqip', 'am' => 'Amharic - አማርኛ', 'ar' => 'Arabic - العربية', 'an' => 'Aragonese - aragonés', 'hy' => 'Armenian - հայերեն', 'ast' => 'Asturian - asturianu', 'az' => 'Azerbaijani - azərbaycan dili', 'eu' => 'Basque - euskara', 'be' => 'Belarusian - беларуская', 'bn' => 'Bengali - বাংলা', 'bs' => 'Bosnian - bosanski', 'br' => 'Breton - brezhoneg', 'bg' => 'Bulgarian - български', 'ca' => 'Catalan - català', 'ckb' => 'Central Kurdish - کوردی (دەستنوسی عەرەبی)', 'zh' => 'Chinese - 中文', 'zh-HK' => 'Chinese (Hong Kong) - 中文(香港)', 'zh-CN' => 'Chinese (Simplified) - 中文(简体)', 'zh-TW' => 'Chinese (Traditional) - 中文(繁體)', 'co' => 'Corsican', 'hr' => 'Croatian - hrvatski', 'cs' => 'Czech - čeština', 'da' => 'Danish - dansk', 'nl' => 'Dutch - Nederlands', 'en' => 'English', 'en-AU' => 'English (Australia)', 'en-CA' => 'English (Canada)', 'en-IN' => 'English (India)', 'en-NZ' => 'English (New Zealand)', 'en-ZA' => 'English (South Africa)', 'en-GB' => 'English (United Kingdom)', 'en-US' => 'English (United States)', 'eo' => 'Esperanto - esperanto', 'et' => 'Estonian - eesti', 'fo' => 'Faroese - føroyskt', 'fil' => 'Filipino', 'fi' => 'Finnish - suomi', 'fr' => 'French - français', 'fr-CA' => 'French (Canada) - français (Canada)', 'fr-FR' => 'French (France) - français (France)', 'fr-CH' => 'French (Switzerland) - français (Suisse)', 'gl' => 'Galician - galego', 'ka' => 'Georgian - ქართული', 'de' => 'German - Deutsch', 'de-AT' => 'German (Austria) - Deutsch (Österreich)', 'de-DE' => 'German (Germany) - Deutsch (Deutschland)', 'de-LI' => 'German (Liechtenstein) - Deutsch (Liechtenstein)', 'de-CH' => 'German (Switzerland) - Deutsch (Schweiz)', 'el' => 'Greek - Ελληνικά', 'gn' => 'Guarani', 'gu' => 'Gujarati - ગુજરાતી', 'ha' => 'Hausa', 'haw' => 'Hawaiian - ʻŌlelo Hawaiʻi', 'he' => 'Hebrew - עברית', 'hi' => 'Hindi - हिन्दी', 'hu' => 'Hungarian - magyar', 'is' => 'Icelandic - íslenska', 'id' => 'Indonesian - Indonesia', 'ia' => 'Interlingua', 'ga' => 'Irish - Gaeilge', 'it' => 'Italian - italiano', 'it-IT' => 'Italian (Italy) - italiano (Italia)', 'it-CH' => 'Italian (Switzerland) - italiano (Svizzera)', 'ja' => 'Japanese - 日本語', 'kn' => 'Kannada - ಕನ್ನಡ', 'kk' => 'Kazakh - қазақ тілі', 'km' => 'Khmer - ខ្មែរ', 'ko' => 'Korean - 한국어', 'ku' => 'Kurdish - Kurdî', 'ky' => 'Kyrgyz - кыргызча', 'lo' => 'Lao - ລາວ', 'la' => 'Latin', 'lv' => 'Latvian - latviešu', 'ln' => 'Lingala - lingála', 'lt' => 'Lithuanian - lietuvių', 'mk' => 'Macedonian - македонски', 'ms' => 'Malay - Bahasa Melayu', 'ml' => 'Malayalam - മലയാളം', 'mt' => 'Maltese - Malti', 'mr' => 'Marathi - मराठी', 'mn' => 'Mongolian - монгол', 'ne' => 'Nepali - नेपाली', 'no' => 'Norwegian - norsk', 'nb' => 'Norwegian Bokmål - norsk bokmål', 'nn' => 'Norwegian Nynorsk - nynorsk', 'oc' => 'Occitan', 'or' => 'Oriya - ଓଡ଼ିଆ', 'om' => 'Oromo - Oromoo', 'ps' => 'Pashto - پښتو', 'fa' => 'Persian - فارسی', 'pl' => 'Polish - polski', 'pt' => 'Portuguese - português', 'pt-BR' => 'Portuguese (Brazil) - português (Brasil)', 'pt-PT' => 'Portuguese (Portugal) - português (Portugal)', 'pa' => 'Punjabi - ਪੰਜਾਬੀ', 'qu' => 'Quechua', 'ro' => 'Romanian - română', 'mo' => 'Romanian (Moldova) - română (Moldova)', 'rm' => 'Romansh - rumantsch', 'ru' => 'Russian - русский', 'gd' => 'Scottish Gaelic', 'sr' => 'Serbian - српски', 'sh' => 'Serbo-Croatian - Srpskohrvatski', 'sn' => 'Shona - chiShona', 'sd' => 'Sindhi', 'si' => 'Sinhala - සිංහල', 'sk' => 'Slovak - slovenčina', 'sl' => 'Slovenian - slovenščina', 'so' => 'Somali - Soomaali', 'st' => 'Southern Sotho', 'es' => 'Spanish - español', 'es-AR' => 'Spanish (Argentina) - español (Argentina)', 'es-419' => 'Spanish (Latin America) - español (Latinoamérica)', 'es-MX' => 'Spanish (Mexico) - español (México)', 'es-ES' => 'Spanish (Spain) - español (España)', 'es-US' => 'Spanish (United States) - español (Estados Unidos)', 'su' => 'Sundanese', 'sw' => 'Swahili - Kiswahili', 'sv' => 'Swedish - svenska', 'tg' => 'Tajik - тоҷикӣ', 'ta' => 'Tamil - தமிழ்', 'tt' => 'Tatar', 'te' => 'Telugu - తెలుగు', 'th' => 'Thai - ไทย', 'ti' => 'Tigrinya - ትግርኛ', 'to' => 'Tongan - lea fakatonga', 'tr' => 'Turkish - Türkçe', 'tk' => 'Turkmen', 'tw' => 'Twi', 'uk' => 'Ukrainian - українська', 'ur' => 'Urdu - اردو', 'ug' => 'Uyghur', 'uz' => 'Uzbek - o‘zbek', 'vi' => 'Vietnamese - Tiếng Việt', 'wa' => 'Walloon - wa', 'cy' => 'Welsh - Cymraeg', 'fy' => 'Western Frisian', 'xh' => 'Xhosa', 'yi' => 'Yiddish', 'yo' => 'Yoruba - Èdè Yorùbá', 'zu' => 'Zulu - isiZulu', ]; const FLAG = [ 'ar' => 'assets/img/LanguageImage/arabic.svg', 'en' => 'assets/img/LanguageImage/english.png', 'zh' => 'assets/img/LanguageImage/china.png', 'fr' => 'assets/img/LanguageImage/france.png', 'de' => 'assets/img/LanguageImage/german.png', 'pt' => 'assets/img/LanguageImage/portuguese.png', 'ru' => 'assets/img/LanguageImage/russian.jpeg', 'es' => 'assets/img/LanguageImage/spain.png', 'tr' => 'img/LanguageImage/turkish.png', 'it' => 'img/LanguageImage/italian.png', 'hi' => 'img/LanguageImage/india.png', 'vi' => 'img/LanguageImage/Vietnamese.jpg', ]; const PROFILE = 'profile'; const ALL = 2; const STEP_3 = 3; const IS_ACTIVE = 1; const DEACTIVATE = 0; const SELECT_STATUS = 2; const STATUS_ARR = [ self::SELECT_STATUS => 'Select Status', self::IS_ACTIVE => 'Active', self::DEACTIVATE => 'Deactivate', ]; protected $appends = ['full_name', 'profile_image', 'plan_name', 'multi_language_date']; /** * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * @var array */ public static $rules = [ 'first_name' => 'required|string|max:180', 'last_name' => 'required|string|max:180', 'email' => 'required|email:filter|max:191|unique:users,email,', ]; public function getProfileImageAttribute(): string { /** @var Media $media */ $media = $this->getMedia(self::PROFILE)->first(); if (! empty($media)) { return $media->getFullUrl(); } return asset('web/media/avatars/user.png'); } public function getFullNameAttribute(): string { return $this->first_name . ' ' . $this->last_name; } public function getMultiLanguageDateAttribute() { setLocalLang(getLogInUser()->language ?? 'en'); return Carbon::parse($this->created_at)->isoFormat('Do MMMM YYYY hh:mm A'); } /** * @return HigherOrderBuilderProxy|mixed */ public function getPlanNameAttribute() { $subscription = $this->subscriptions->where('status', Subscription::ACTIVE)->first(); if (! empty($subscription)) { return $subscription->plan->name; } return ''; } public function subscription(): BelongsTo { return $this->belongsTo(Subscription::class, 'tenant_id', 'tenant_id') ->where('status', Subscription::ACTIVE); } public function subscriptions(): HasMany { return $this->hasMany(Subscription::class, 'tenant_id', 'tenant_id'); } public function markEmailAsVerified() { return DB::table('users')->where('id', $this->id) ->update(['email_verified_at' => \Carbon\Carbon::now()]); } public function products() { return $this->hasMany(Product::class); } public function testimonials() { return $this->belongsToMany(Testimonial::class); } public function blogs() { return $this->belongsToMany(VcardBlog::class); } public function services() { return $this->belongsToMany(VcardService::class); } public function blogallariesgs() { return $this->belongsToMany(Gallery::class); } public function routeNotificationForSlack(Notification $notification): string { // return $this->webhook_url; return config('services.slack.webhook_url', $this->webhook_url); } }
SAVE
CANCEL