<?php

namespace IqContent\LaravelFilemanager\Controllers;

use IqContent\LaravelFilemanager\Events\ImageIsDeleting;
use IqContent\LaravelFilemanager\Events\ImageWasDeleted;

class DeleteController extends LfmController
{
    /**
     * Delete image and associated thumbnail.
     *
     * @return mixed
     */
    public function getDelete()
    {
        $item_names = request('items');

        $errors = [];

        foreach ($item_names as $name_to_delete) {
            $file_to_delete = $this->lfm->pretty($name_to_delete);
            $file_path = $file_to_delete->path();


            event(new ImageIsDeleting($file_path));

            if (is_null($name_to_delete)) {
                return $this->response('error', parent::getError('folder-name'));
                continue;
            }

            if (! $this->lfm->setName($name_to_delete)->exists()) {
                return $this->response('error', parent::getError('folder-not-found', ['folder' => $file_path]));
            }

            if ($this->lfm->setName($name_to_delete)->isDirectory()) {
                if (! $this->lfm->setName($name_to_delete)->directoryIsEmpty()) {
                    return $this->response('error', parent::getError('delete-folder'));
                }
            } else {
                if ($file_to_delete->isImage()) {
                    $this->lfm->setName($name_to_delete)->thumb()->delete();
                }
            }
            $file_to_delete->deleteModel();
            $this->lfm->setName($name_to_delete)->delete();

            event(new ImageWasDeleted($file_path));
        }

        if (count($errors) > 0) {
            return $this->response('error', $errors);
        }

        return parent::$success_response;
    }
}
