<?php namespace Eae\Backoffice\Generic\Fields;

use Illuminate\Database\Eloquent\Builder;
use Eae\Support\Contracts\SearchableFieldInterface;
use LaravelLocalization;
use View;

class EditorField extends BaseField implements SearchableFieldInterface{
    
    public function __construct($config){
        unset($config["inList"]);
        parent::__construct($config);
    }

    public function toForm($model, $enabled = true, $hidden = false){
        $html = "";

        if($this->isMultiLanguage()){
            $locales = LaravelLocalization::getSupportedLocales();
            $defaultLocale = LaravelLocalization::getDefaultLocale();
            
            foreach($locales as $locale => $localeData){
                $fieldName = $this->getName();
                $name = $fieldName . "[{$locale}]";
                $id = $fieldName . "_" . $locale;
                $errorKey = $fieldName . "." . $locale;
                $value = null;
                
                if($model->exists){
                    $languageModel = $model->languages->findByLocale($locale);
                    if(!empty($languageModel)){
                        $value = $languageModel->$fieldName;
                    }
                }
                
                $html .= View::make(
                    "admin.generic.components.forms.editor", 
                    array(
                        "id"            => $id,
                        "errorKey"      => $errorKey,
                        "name"          => $name,
                        "label"         => $this->getLabel(),
                        "value"         => $value,
                        "language"      => $locale,
                        "defaultLang"   => $defaultLocale,
                        "hide"          => ($hidden || $locale != $defaultLocale),
                        "enabled"       => $enabled,
                        "parentHidden"  => ($hidden && !empty($this->parent)),
                        "parent"        => $this->parent,
                        "info"          => $this->getInfo()
                    ));    
            }    
        }else{
            $fieldName = $this->getName();
            $value = null;
            
            if($model->exists){
                $value = $model->$fieldName;    
            }
            $html .= View::make(
                    "admin.generic.components.forms.editor", 
                    array(
                        "id"        => $this->getName(),
                        "errorKey"  => $this->getName(),
                        "name"      => $this->getName(),
                        "label"     => $this->getLabel(),
                        "value"     => $value,
                        "hide"      => $hidden,
                        "enabled"   => $enabled,
                        "parentHidden"  => ($hidden && !empty($this->parent)),
                        "parent"        => $this->parent,
                        "info"          => $this->getInfo()  
                    ));      
        }
        
        return $html;
    }
    public function getSearchStructure($model, $view = false){
        $searchData = array();
        
        $fieldName = $this->getName();
        
        if($this->isMultiLanguage()){
            foreach($model->languages as $languageModel){
                if(!empty($languageModel->$fieldName)){
                    if($view){
                        $value = cut_string(strip_tags($languageModel->$fieldName),500);    
                    }else{
                        $value = strip_tags($languageModel->$fieldName);    
                    }
                    
                    $searchData[$languageModel->language_id] = $value;  
                }
            }    
        }else{
            if(!empty($model->$fieldName)){
                $languages = LaravelLocalization::getSupportedLocales();
                foreach($languages as $locale => $localeData){
                    if($view){
                        $value = cut_string(strip_tags($model->$fieldName),500);    
                    }else{
                        $value = strip_tags($model->$fieldName);    
                    }
                    $searchData[$locale] = $value;           
                }
            }
        }
        
        return $searchData;
    }
}
  

