$whitelabel_products * @property-read int|null $whitelabel_products_count * * @method static \Illuminate\Database\Eloquent\Builder|User whereLeadTypeId($value) * * @mixin \Eloquent */ class User extends Authenticatable { use HasApiTokens, Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'name', 'email', 'password', ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', 'settings' => 'array', 'payment_methods' => 'array', ]; private $userImage = false; private $userImageLink = false; public function account() { return $this->belongsTo('App\Models\UserAccount', 'account_id'); } public function shop() { return $this->hasOne('App\Models\UserShop', 'user_id', 'id'); } public function user_level() { return $this->belongsTo('App\Models\UserLevel', 'm_level'); } public function next_user_level() { return $this->belongsTo('App\Models\UserLevel', 'next_m_level'); } public function user_sponsor() { return $this->belongsTo('App\User', 'm_sponsor'); } public function lead_type() { return $this->belongsTo('App\Models\LeadType', 'lead_type_id'); } public function sponsorHasCommisson() { if ($this->user_sponsor && $this->user_sponsor->user_level && $this->user_sponsor->user_level->partner_provision) { return true; } return false; } public function files() { return $this->hasMany('App\Models\File', 'user_id', ''); } public function user_histories() { return $this->hasMany('App\Models\UserHistory', 'user_id', ''); } public function user_update_email() { return $this->hasMany('App\Models\UserUpdateEmail', 'user_id', 'id'); } public function user_pay_credits() { return $this->hasMany('App\Models\UserPayCredit', 'user_id', 'id')->orderBy('created_at', 'DESC'); } public function whitelabel_products() { return $this->hasMany('App\Models\UserWhitelabelProduct', 'user_id', 'id'); } public function getMUserSponsor() { if ($this->user_sponsor && $this->user_sponsor->account) { return $this->user_sponsor->account->first_name.' '.$this->user_sponsor->account->last_name.' | '.$this->user_sponsor->email; } } public function getFullName($email = true) { $ret = ''; if ($this->account) { $ret = $this->account->first_name.' '.$this->account->last_name; } if ($email && $this->id > 1) { $ret .= ' | '.$this->email; } return $ret; } public function getFullAddress($email = true) { $ret = ''; if ($this->account) { $ret .= $this->account->first_name.' '.$this->account->last_name."\n"; $ret .= $this->account->address."\n"; $ret .= $this->account->address_2 ? $this->account->address_2."\n" : ''; $ret .= $this->account->zipcode.' '.$this->account->city."\n"; $ret .= $email ? $this->email."\n" : ''; $pre = $this->account->pre_phone_id != '' ? $this->account->pre_phone->phone.' ' : ''; $ret .= $this->account->phone ? $pre.$this->account->phone."\n" : ''; $pre = $this->account->pre_mobil_id != '' ? $this->account->pre_mobil->phone.' ' : ''; $ret .= $this->account->mobil ? $pre.$this->account->mobil."\n" : ''; } return $ret; } /** * @return bool */ public function isCopyReader() { if ($this->admin >= 1) { return true; } return false; } public function isPasswort(): bool { if (Hash::check(config('app.key'), $this->password)) { return false; } return true; } /** * @return bool */ public function isAdmin() { if ($this->admin >= 7) { return true; } return false; } /** * @return bool */ public function isSuperAdmin() { if ($this->admin >= 8) { return true; } return false; } /** * @return bool */ public function isSySAdmin() { if ($this->admin >= 9) { return true; } return false; } /** * @return bool */ public function isApiUser() { if ($this->admin >= 10) { return true; } return false; } /** * @return bool */ public function isTestMode() { return $this->test_mode ? true : false; } /** * @return bool */ public function showSideNav() { if ($this->active == 1 && $this->blocked == 0 && $this->wizard >= 10) { return true; } return false; } public function isActive() { return ($this->active == 1 && $this->blocked == 0) ? true : false; } public function isActiveAccount() { if ($this->isActive() && $this->payment_account) { return Carbon::parse($this->payment_account)->gt(Carbon::now()); } return false; } public function isRenewalAccount() { if ($this->payment_account) { return Carbon::parse($this->payment_account)->modify('-'.(config('main.renewal_days')).' days')->lt(Carbon::now()); } return false; } public function nextRenewalAccount() { return $this->payment_account ? Carbon::parse($this->payment_account)->modify('-'.config('main.renewal_days').' days')->format(Util::formatDateTimeDB()) : false; } public function daysActiveAccount() { return Carbon::now()->diffInDays(Carbon::parse($this->payment_account), false); } public function modifyActiveAccount($add = '1 year') { return Carbon::parse($this->payment_account)->modify($add)->format(Util::formatDateTimeDB()); } public function daysHumansActiveAccount() { return Carbon::now()->diffForHumans(Carbon::parse($this->payment_account)); } public function daysActiveShop() { return Carbon::now()->diffInDays(Carbon::parse($this->payment_shop), false); } public function modifyActiveShop($add = '1 year') { return Carbon::parse($this->payment_shop)->modify($add)->format(Util::formatDateTimeDB()); } public function daysHumansActiveShop() { return Carbon::now()->diffForHumans(Carbon::parse($this->payment_shop)); } public function isAboOption() { return false; } /** * @return string */ public function getConfirmationDateFormat() { if (! $this->attributes['confirmation_date']) { return ''; } return Carbon::parse($this->attributes['confirmation_date'])->format(Util::formatDateTimeDB()); } /** * @return string */ public function getActiveDateFormat() { if (! $this->attributes['active_date']) { return ''; } return Carbon::parse($this->attributes['active_date'])->format(Util::formatDateTimeDB()); } /** * @return string */ public function getAgreementFormat() { if (! $this->attributes['agreement']) { return ''; } return Carbon::parse($this->attributes['agreement'])->format(Util::formatDateTimeDB()); } public function getPaymentAccountDateFormat($time = true) { if (! $this->attributes['payment_account']) { return ''; } if (! $time) { return Carbon::parse($this->attributes['payment_account'])->format(Util::formatDateDB()); } return Carbon::parse($this->attributes['payment_account'])->format(Util::formatDateTimeDB()); } public function getPaymentShopDateFormat($time = true) { if (! $this->attributes['payment_shop']) { return ''; } if (! $time) { return Carbon::parse($this->attributes['payment_shop'])->format(Util::formatDateDB()); } return Carbon::parse($this->attributes['payment_shop'])->format(Util::formatDateTimeDB()); } public function getReleaseAccountFormat($time = true) { if (! $this->attributes['release_account']) { return ''; } if (! $time) { return Carbon::parse($this->attributes['release_account'])->format(Util::formatDateDB()); } return Carbon::parse($this->attributes['release_account'])->format(Util::formatDateTimeDB()); } public function getFormattedPaymentCredit() { return isset($this->attributes['payment_credit']) ? Util::formatNumber($this->attributes['payment_credit']) : '0'; } public function setSetting(array $revisions, bool $save = true) { if (! $this->settings) { $this->settings = []; } $this->settings = array_merge($this->settings, $revisions); if ($save) { $this->save(); } return $this; } public function getSetting($key, $default = null) { return isset($this->settings[$key]) ? $this->settings[$key] : $default; } public function getPaymentMethodsShort() { $ret = ''; if ($this->payment_methods !== null) { foreach ($this->payment_methods as $payment_method) { if ($find = PaymentMethod::find($payment_method)) { $ret .= $find->short.' | '; } } $ret = rtrim($ret, ' | '); } return $ret; } /** * @return string */ public function getLandByCountry() { if ($this->account && $this->account->country_id) { $code = $this->account->country->code; if ($code == 'FR') { return 'fr'; } if ($code == 'CH') { return 'de'; } if ($code == 'NL') { return 'nl'; } if ($code == 'DE') { return 'de'; } } return 'de'; } public function getBirthdayFormat($format = 'd.m.Y') { if ($this->account && $this->account->getBirthdayRaw()) { return (int) Carbon::parse($this->account->getBirthdayRaw())->format($format); } return null; } public function hasProfileImage() { if ($this->userImage) { return $this->userImage; } if (\Storage::disk('user')->has($this->id.'/avatar.jpg')) { $this->userImage = $this->id.'/avatar.jpg'; } if (\Storage::disk('user')->has($this->id.'/avatar.png')) { $this->userImage = $this->id.'/avatar.png'; } return $this->userImage; } public function getProfileImage() { if ($this->hasProfileImage()) { return str_replace('/', '_', $this->userImage); } return null; } /** * Send the password reset notification. * * @param string $token * @return void */ public function sendPasswordResetNotification($token) { Mail::to($this->email)->bcc(config('app.info_mail'))->send(new MailResetPassword($token, $this)); // $this->notify(new ResetPasswordNotification($token)); } }