<?php


namespace App\Repositories;


use App\BoxProduct;
use App\BoxProductImage;
use App\BoxProductVariant;

class BoxProductRepository implements RepositoryInterface
{
    public static function all() {
        return BoxProduct::all();
    }

    public static function create(array $data){
        return BoxProduct::create($data);
    }

    public static function update(array $data, $id){
        BoxProduct::findOrFail($id)->update($data);
        return BoxProduct::findOrFail($id);
    }

    public static function delete($id){
        return BoxProduct::destroy($id);
    }

    public static function find($id){
        return BoxProduct::findOrFail($id);
    }

    /**************************************************************************************
     **************************************************************************************
     *                              BOX PRODUCT VARIANTS
     **************************************************************************************
     *************************************************************************************/

    public static function allVariant($id) {
        return BoxProduct::findOrFail($id)->boxProductVariants;
    }

    public static function createVariant($id, array $data){
        $bp = BoxProduct::findOrFail($id);
        $data["box_product_id"] = $id;
        $var = $bp->boxProductVariants()->create($data);
        return $var;
    }

    public static function updateVariant($variant_id, array $data){
        return BoxProductVariant::findOrFail($variant_id)->update($data);
    }

    public static function deleteVariant($id){
        return BoxProductVariant::destroy($id);
    }

    public static function findVariant($id){
        return BoxProductVariant::findOrFail($id);
    }

    /**************************************************************************************
     **************************************************************************************
     *                              BOX PRODUCT IMAGES
     **************************************************************************************
     *************************************************************************************/

    public static function allImage($id) {
        return BoxProductVariant::findOrFail($id)->boxProductImages;
    }

    public static function createImage($id, array $data){
        $var = BoxProductVariant::findOrFail($id);
        $data["box_product_variant_id"] = $id;
        $img = $var->boxProductImages()->create($data);
        return $img;
    }

    public static function updateImage($img_id, array $data){
        return BoxProductImage::findOrFail($img_id)->update($data);
    }

    public static function deleteImage($id){
        return BoxProductImage::destroy($id);
    }

    public static function findImage($id){
        return BoxProductImage::findOrFail($id);
    }
}
