<?php namespace Eae\Transformation;

use TransformManager;
use League\Fractal;
 
class TransformService{
    public function __construct(){
        $this->manager = new Fractal\Manager();    
    }      

    public function transformCollection($data, Fractal\TransformerAbstract $transformer, array $scopes = array(), $resourceKey = null){
        $manager = new Fractal\Manager();
        $manager->parseIncludes($scopes);
        $resource = new Fractal\Resource\Collection($data, $transformer, $resourceKey); 
        return $this->transform($manager, $resource);       
    }
    
    public function transformItem($data, Fractal\TransformerAbstract $transformer, array $scopes = array(), $resourceKey = null){
        $manager = new Fractal\Manager();
        $manager->parseIncludes($scopes);
        $resource = new Fractal\Resource\Item($data, $transformer, $resourceKey); 
        return $this->transform($manager, $resource);       
    }
    
    protected function transform($manager, $resource){
        return $manager->setSerializer(new ArraySerializer)->createData($resource);        
    }    
}
