Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
0 / 0
CRAP
100.00% covered (success)
100.00%
0 / 0
VariantController
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
7 / 7
9
100.00% covered (success)
100.00%
0 / 0
 index
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
0 / 0
 create
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
0 / 0
 store
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
0 / 0
 show
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
0 / 0
 edit
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
0 / 0
 update
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
0 / 0
 destroy
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
0 / 0
<?php
namespace Mtc\Shop\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use App\Http\Requests;
use Illuminate\Http\Request;
use Mtc\Core\Admin\Builder;
use Mtc\Core\Admin\ItemBuilder;
use Mtc\Core\Admin\Node;
use Mtc\Shop\Http\Requests\Admin\StoreVariant;
use Mtc\Shop\Product;
use Mtc\Shop\Variant;
class VariantController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Product $product)
    {
        return (new ItemBuilder('product', $product, $product->node))
            ->tab('variants.index', 'shop::admin.variants.index', [
                'variants' => Variant::whereProductId($product->id)->paginate(),
                'buttons' => [
                    [
                        'label' => 'Add Variant',
                        'href'  => route('variants.create', $product),
                        'class' => 'btn btn-primary',
                    ]
                ]
            ]);
    }
    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create(Product $product)
    {
        return (new ItemBuilder('variants', new Variant(['product_id' => $product->id]), new Node))
            ->routeParams([$product->id])
            ->view('shop::admin.variants.form');
    }
    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(StoreVariant $request, Product $product, Variant $variant, Node $node)
    {
        $variant->product_id = $product->id;
        $variant->fill($request->input('variant', []))->save();
        $node->fill($request->input('node', []));
        $variant->node()->save($node);
        return redirect(route('variants.index', $product));
    }
    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }
    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit(Product $product, Variant $variant)
    {
        return (new ItemBuilder('variants', $variant, $variant->node))
            ->routeParams([$product->id])
            ->view('shop::admin.variants.form');
    }
    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(StoreVariant $request, Product $product, Variant $variant)
    {
        $variant->fill($request->input('variant', []))->save();
        $variant->node->fill($request->input('node', []));
        $variant->node->save();
        $product->fill($request->input('item', []));
        $product->node->fill($request->input('node', []))->save();
        $product->save();
        return redirect(route('variants.index', $product));
    }
    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy(Request $request, Product $product, Variant $variant)
    {
        if ($variant->node) {
            $variant->node->delete();
        }
        $variant->delete();
        if ($request->ajax()) {
            return response('success', 200);
        }
        $request->session()->flash('success', "{$variant->title} has been deleted.");
        return redirect()->back();
    }
}