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',
]);
}
}