<?php

namespace App\Models\Shop;

use App\Notifications\ResetPassword;
use App\Notifications\VerifyEmail;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Yadahan\AuthenticationLog\AuthenticationLogable;

class Customer extends Authenticatable
{
    use AuthenticationLogable, Notifiable, SoftDeletes;

    protected $guarded = ['id'];

    protected $table = 'shop_customers';

    protected $hidden = ['password', 'remember_token'];

    protected $casts = ['email_verified_at' => 'datetime'];

    
    public function delivery_addresses()
    {
        return $this->addresses()->byDelivery();
    }

    public function invoice_addresses()
    {
        return $this->addresses()->byInvoicing();
    }
    

    public function addresses()
    {
        return $this->hasMany(CustomerAddress::class);
    }

    public function customer_deliveries()
    {
        return $this->hasMany(CustomerDelivery::class);
    }

    public function deliveries()
    {
        return $this->belongsToMany(Delivery::class, CustomerDelivery::class);
    }

    public function invoices()
    {
        return $this->hasMany(Invoice::class);
    }

    public function orders()
    {
        return $this->hasMany(Order::class);
    }

    public function sendEmailVerificationNotification()
    {
        if (config('boilerplate.auth.verify_email')) {
            $this->notify(new VerifyEmail());
        }
    }

    public function sendPasswordResetNotification($token)
    {
        $this->notify(new ResetPassword($token));
    }
}
