<?php


namespace App\Tables;


class CsvExporter extends BaseExporter
{
    private $delimiter = ',';

    public function withDelimiter($delimiter)
    {
        $this->delimiter = $delimiter;
        return $this;
    }

    /**
     * @return string - mime type for the downloaded file
     */
    protected function getMimeType()
    {
        return $this->wantDownload ? 'text/csv' : 'text/plain';
    }

    /**
     * @return string - file extension for the downloaded file
     */
    protected function getFileExtension()
    {
        return 'csv';
    }

    /**
     * Write the document to stdout ('php://output')
     */
    protected function writeDocument()
    {
        $handle = fopen('php://output', 'w');

        $columnNames = array_map(function (Column $c) {
            return $c->title;
        }, $this->columns);

        fputcsv($handle, $columnNames, $this->delimiter);

        foreach ($this->iterateRows() as $row) {
            fputcsv($handle, array_values($row), $this->delimiter);
        }

        fclose($handle);
    }
}