<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use \App\Models\{Pieza, Variable};

class PiezaController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
        $data = Pieza::all();

        return $data;
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //

        $pieza = new Pieza;
        $pieza->name = $request->name;
        $pieza->description = $request->description;

        $pieza->save();

        foreach($request->variables as $variable){
            
            $var = new Variable;
            $var->pieza_id = $pieza->id;
            $var->title = $variable['title'];
            $var->instrument_id = $variable['instrument']['id'];
            $var->inspect = $variable['inspect'];
            $var->controls = $variable['controls'];
            $var->save();
        }

        return ['status' => 'succes', 'data' => $pieza];

    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //

        $pieza = Pieza::find($id);
        $pieza->variables = Variable::with('instrument')->where('pieza_id', $id)->get();

        return $pieza;

    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
        $item = Pieza::find($id);

        $variables = Variable::where('pieza_id', $id)->get();
        foreach($variables as $variable){
            $variable->delete();
        }


        $item->delete();

        return ['status' => 'succes', 'data' => $item];
    }
}
