<?php

namespace App\Http\Controllers\Exports;


use App\Classes\Modules\Exports\Services\ExportsAnalyticBookingTransactions;
use App\Classes\Modules\Exports\Services\ExportsAnalyticBillingTransactions;
use App\Models\User;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Maatwebsite\Excel\Excel;
use Illuminate\Support\Facades\Storage;
use App\Classes\General\AWSS3Helper;

class ExportAnalyticToExcelController
{

    /**
     * ExportAnalyticToExcelController constructor.
     * @param Request $request
     */
    public function __construct(Request $request)
    {
        $token = Auth::fromUser(User::find(1));
        $request->headers->set('Authorization', 'Bearer '.$token);
    }

    public function bookingData(ExportsAnalyticBookingTransactions $exportsAnalyticBookingTransactions, Request $request){
        $exportFileName = 'bookingData.csv';
        $filesystemDriver = Storage::getDefaultDriver();
        if($filesystemDriver === 's3'){
            return response([ 'src' =>  AWSS3Helper::S3Exportable($exportFileName, $exportsAnalyticBookingTransactions) ]);
        }
        else{
            $response = $exportsAnalyticBookingTransactions->download($exportFileName, Excel::CSV, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']);
            ob_end_clean();
            return $response;
        }
    }

    public function billingData(ExportsAnalyticBillingTransactions $exportsAnalyticBillingTransactions, Request $request){
        $exportFileName = 'billingData.csv';
        $filesystemDriver = Storage::getDefaultDriver();
        if($filesystemDriver === 's3'){
            return response([ 'src' =>  AWSS3Helper::S3Exportable($exportFileName, $exportsAnalyticBillingTransactions) ]);
        }
        else{
            $response = $exportsAnalyticBillingTransactions->download($exportFileName, Excel::CSV, ['Content-Type' => 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet']);
            ob_end_clean();
            return $response;
        }
    }
}
