<?php

namespace App\Charts;

use App\Models\TicketSale;
use ArielMejiaDev\LarapexCharts\LarapexChart;
use Carbon\Carbon;

class TicketSourceChart
{
    protected $chart;

    public function __construct(LarapexChart $chart)
    {
        $this->chart = $chart;
    }

    public function build(): \ArielMejiaDev\LarapexCharts\LineChart
    {
        $today = Carbon::today();
        $fiveDaysAgo = $today->copy()->subDays(5);
        $fourDaysAgo = $today->copy()->subDays(4);
        $threeDaysAgo = $today->copy()->subDays(3);
        $twoDaysAgo = $today->copy()->subDays(2);
        $yesterday = $today->copy()->subDays(1);

        $webcount = [
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'web')->whereDate('created_at',$fiveDaysAgo->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'web')->whereDate('created_at',$fourDaysAgo->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'web')->whereDate('created_at',$threeDaysAgo->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'web')->whereDate('created_at',$twoDaysAgo->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'web')->whereDate('created_at',$yesterday->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'web')->whereDate('created_at',$today->format('Y-m-d'))->count(),
        ];
        $ussdcount = [
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'ussd')->whereDate('created_at',$fiveDaysAgo->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'ussd')->whereDate('created_at',$fourDaysAgo->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'ussd')->whereDate('created_at',$threeDaysAgo->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'ussd')->whereDate('created_at',$twoDaysAgo->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'ussd')->whereDate('created_at',$yesterday->format('Y-m-d'))->count(),
            TicketSale::query()->where('status', '=', 'success')->where('source', '=', 'ussd')->whereDate('created_at',$today->format('Y-m-d'))->count(),
        ];
        return $this->chart->lineChart()
            ->addData('Web', $webcount)
            ->addData('USSD',$ussdcount)
            ->setXAxis([
                $fiveDaysAgo->format('l'),
                $fourDaysAgo->format('l'),
                $threeDaysAgo->format('l'),
                $twoDaysAgo->format('l'),
                $yesterday->format('l'),
                $today->format('l'),
            ]);
    }
}
