<?php

namespace App\Notifications;

use App\Broadcasting\DatabaseNotificationOld;
use App\Broadcasting\PushNotificationOld;
use App\Components\Functions;
use App\Models\CollectSpend;
use Illuminate\Bus\Queueable;
use Illuminate\Notifications\Notification;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;

class CollectSpendCycle extends Notification
{
    use Queueable;

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    protected $collectSpendId;
    protected $collectSpend;
    protected $user;

    public function __construct( $collectSpendId ) {
        //
        $this->collectSpendId = $collectSpendId;
        $this->collectSpend = CollectSpend::query()->find($collectSpendId);
        $this->user = $this->collectSpend->user;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param mixed $notifiable
     *
     * @return array
     */
    public function via( $notifiable ) {
        return [ PushNotificationOld::class, DatabaseNotificationOld::class ];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param mixed $notifiable
     *
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail( $notifiable ) {
        return ( new MailMessage )
            ->line( 'The introduction to the notification.' )
            ->action( 'Notification Action', url( '/' ) )
            ->line( 'Thank you for using our application!' );
    }

    public function toPush( $notifiable ) {

        $text = 'Đã lập phiếu chi '.$this->collectSpend->name.' theo chu kỳ thiết lập, số tiền '.number_format($this->collectSpend->amount, 0, '.', '.').'đ';

        return [
            'type'            => config( 'constants.COLLECT_SPEND' ),
            'object_id'       => $this->collectSpendId,
            'body'            => $text,
            'title'           => 'Thông báo từ itro.vn',
            'image'           => null,
        ];
    }

    /**
     * Get the array representation of the notification.
     *
     * @param mixed $notifiable
     *
     * @return array
     */

    public function toArray( $notifiable ) {
        $text = 'Đã lập phiếu chi '.$this->collectSpend->name.' theo chu kỳ thiết lập, số tiền '.number_format($this->collectSpend->amount, 0, '.', '.').'đ';
        return [
            'body'  => $text,
            'title' => 'Thông báo từ itro.vn',
            'type' => config( 'constants.COLLECT_SPEND' ),
            'id' => $this->collectSpendId
        ];
    }
}
