<?php

namespace App\Http\Controllers\Frontend\Graphics;

use App\Http\Controllers\Controller;
use App\Http\Requests\Backend\Clipart\ManageClipartRequest;
use App\Models\Graphics\Shape;
use Illuminate\Http\Request;

class ShapesController extends Controller
{

    public function index(Request $request)
    {

        $shapes = Shape::all();

        return view('backend.shapes.index')
            ->with('shapes', $shapes);
    }

    public function create(ManageClipartRequest $request)
    {
        return view('backend.shapes.create');
    }

    //
    public function store(Request $request)
    {

        // new shape entry
        $shape = Shape::create(['owner_id' => auth()->user()->id,
            'name' => $request['name'],
            'description' => $request['description'],
            'type' => 'svg',
            'data' => file_get_contents($request->file('baseline'))
        ]);

        return redirect()->route('admin.shapes.index')->withFlashSuccess('Shape created success!');
    }

    public function show($id)
    {

        try {
            $media = Shape::findOrFail($id);
            $data = $media->svg;
// if we can't find it,
        } catch (ModelNotFoundException $e) {
            $data = Storage::get('/public/questionmark.svg');
        }

        $xml = simplexml_load_string($data);
        $xml[0]['height'] = 200;
        $xml[0]['width'] = 200;
        $domxml = dom_import_simplexml($xml);
        $content_typestr = 'image/svg+xml';
        $response = new \Illuminate\Http\Response($domxml->ownerDocument->saveXML($domxml->ownerDocument->documentElement), '200');
        $response->header("Content-Type", $content_typestr);
        return $response;
    }

    public function edit(Request $request, $id)
    {
        $clipart = Shape::find($id);
        return view('backend.shapes.edit')
            ->with('shape', $clipart);
    }

    public function destroy(Request $request, Shape $clipart)
    {
        // clean up colourways
        // clean up tags
        // delete clipart
        Shape::find($clipart->id)->delete();
         //$this->userRepository->deleteById($user->id);

        //event(new UserDeleted($user));

        return redirect()->route('backend.shapes.index')->withFlashSuccess('Shape deleted');
    }

    // Get by page. We may be needing tags later, so I'll leave the stuff in there to make that happen when we need
    public function get_by_page(Request $request)
    {
        $returnVal = [];
        $returnVal['items'] = Shape::skip(($request['page'] - 1) * 20)->take(($request['page']) * 20)->get()->makeHidden('colourways');
        $returnVal['count'] = Shape::count();
//        if ($request['tags']) {
//
//            $returnVal['items'] = Shape::withTags($request['tags'])->skip(($request['page'] - 1) * 20)->take(($request['page']) * 20)->get()->makeHidden('colourways');
//            $returnVal['count'] = Shape::withTags($request['tags'])->count();
//        } else {
//
//            $returnVal['items'] = Shape::skip(($request['page'] - 1) * 20)->take(($request['page']) * 20)->get()->makeHidden('colourways');
//            $returnVal['count'] = Shape::count();
//        }
        return $returnVal;
    }


    public function list_shapes(){
        return Shape::all();
    }

}
