<?php

namespace App\Exports;

use App\Models\Requirement;
use Maatwebsite\Excel\Concerns\Exportable;
use Maatwebsite\Excel\Concerns\FromQuery;
use Maatwebsite\Excel\Concerns\WithHeadings;
use Maatwebsite\Excel\Concerns\WithMapping;

class RequirementExport implements FromQuery, WithMapping, WithHeadings
{
    use Exportable;
    private static $index = 1;
    public function query()
    {
        return Requirement::with(['createdBy', 'plan', 'group', 'asset', 'projects'])
            ->orderBy("created_at")
            ->filter(request()->all());
    }

    /**
     * @param Requirement $requirement
     * @return array
     */
    public function map($requirement): array
    {
        $displayId = self::$index++;
        return [
            $displayId,
            //$requirement->id,
            $requirement->title,
            $requirement->group?->name,
            $requirement->status,
            $requirement->asset?->name,
            $requirement->plan?->name,
            $requirement->projects?->pluck("name")->join(","),
            $requirement->priority,
            $requirement->approval_status,
            $requirement->note,
            $requirement->description,
            $requirement->createdBy?->name,
            $requirement->created_at,
        ];
    }

    public function headings(): array
    {
        return [
            'ID',
            'Title',
            'Requirement Group',
            'Status',
            'Plan',
            'Asset',
            'Projects',
            'Priority',
            'Approval Status',
            'Note',
            'Description',
            'Created By',
            'Created Date',
        ];
    }
}