<?php

namespace App\Http\Controllers;
use Illuminate\Support\Str;

class TranslateCollection{

   public static function translate($item){
        foreach($item->translatable as $tkey)
        {
            $item->{$tkey.'_lang'} = $item->getTranslation($tkey, app('translator')->getLocale());
            unset( $item->{$tkey});

        }

        foreach ( $item->getRelations() as $relationKey => $relationData ){

            /* Improve code when 1:N relationship
            if( ! $relationData instanceof Illuminate\Database\Eloquent\Collection )
            $relationData  = collect([$relationData]);

            $item->{$relationKey} = $relationData->map(array( __NAMESPACE__ .'\TranslateCollection', 'translate' ) );
            */

            // this is for 1:1 mapping
            foreach($relationData->translatable as $rtkey)
               $relationData->{$rtkey.'_lang'} = $relationData->getTranslation($rtkey, app('translator')->getLocale());



        }
        // echo '<hr>';
        return $item;

    }

    public static function removeTranslate($items){
        // dd($items);


        $obj = $items->first();

        foreach($obj->translatable as $fkey)
        $items->forget($fkey);

        // foreach ( $obj->getRelations() as $relationKey => $relationData ){

        //     foreach($relationData->translatable as $rfkey)
        //     $items->forget(  Str::snake($relationKey ).'->'. $rfkey );
        // }

        $items->map( function($item){

              foreach ( $item->getRelations() as $relationKey => $relationData ){
                 foreach($relationData->translatable as $rfkey)
                 unset($relationData->{$rfkey});
            }

        } );

        return $items;

    }





}
