HEX
Server: Microsoft-IIS/8.5
System: Windows NT YDAWBH120 6.3 build 9600 (Windows Server 2012 R2 Standard Edition) AMD64
User: tentjecom_web (0)
PHP: 7.4.14
Disabled: NONE
Upload Files
File: D:/HostingSpaces/ZelfVerkopen/zelfverkopen.nl/app/KommaApp/Asperion/ExportService.php
<?php


namespace App\KommaApp\Asperion;

use App\KommaApp\Kms\Core\Sections\SectionService;
use App\KommaApp\Orders\Models\Order;
use Carbon\Carbon;
use Illuminate\Http\Response;
use Illuminate\View\View;
use Symfony\Component\HttpFoundation\StreamedResponse;

/**
 * Class ExportService
 *
 *
 *
 * @package App\KommaApp\Asperion
 */
class ExportService extends SectionService
{
    /**
     * ExportService constructor.
     */
    public function __construct()
    {

    }

    /**
     * Export
     * @param Carbon $dateFrom
     * @param Carbon $dateTrough
     * @return StreamedResponse with asperion XML
     */
    public function export(Carbon $dateFrom = null, Carbon $dateTrough = null)
    {
//        dd($dateFrom, $dateTrough);
        if($dateFrom && $dateTrough && $dateFrom < $dateTrough) {
            $order = Order::where([
                ['created_at', '>=', $dateFrom],
                ['created_at', '<=', $dateTrough],
                ['status', '<>', Order::ORDER_STATUS_DELETED],
            ]);
        } else {
            $order = Order::query();
        }

        $order->whereIn('status', array(Order::ORDER_STATUS_IN_SALE, Order::ORDER_STATUS_CREDIT, Order::ORDER_STATUS_REFUNDED));

        $order->with(['customer' => function($query) {
            $query->withTrashed();
        }, 'products']);

        $orders = $order->get();

        $view = view('kms.AsperionXml', ['orders' => $orders]);

        $exportDateString = '';
        if(!$dateFrom && !$dateTrough || $dateFrom >= $dateTrough)
            $exportDateString = (new Carbon())->format('Y d-m-y');
        else if($dateFrom && $dateTrough) {
            $exportDateString = $dateFrom->format('Y d-m-y');
            $exportDateString .= ' to ';
            $exportDateString .= $dateTrough->format('Y d-m-y');
        }

        $exportDateString = \Str::slug($exportDateString);

//        return \response($view->render());

        return new StreamedResponse(function () use ($view) {
            echo $view->render();
        }, 200, [
            'Content-Type' => 'application/xml; charset=UTF-8',
            'Content-Disposition' => 'attachment; filename="asperion_export"' . $exportDateString . '.xml',
        ]);
    }
}