<?php

/**
 * Description of Core
 *
 * @author Arkadiusz Rychlik <a.rychlik at eppe.com.pl>
 */
class Rtn_Model_Core extends RedBean_SimpleModel {

    /**
     * @return array Tablica przetłumaczonych przyczyn dla których element nie może stać się aktywny
     */
    public function whyCantBecomeActive() {
        return array();
    }

    /**
     * @return array Tablica przetłumaczonych przyczyn dla których element nie może przestać być aktywny
     */
    public function whyCantBecomeInactive() {
        return array();
    }

    /**
     * Zmień status elementu na aktywny
     * @return boolean Czy elemen stał się aktywny
     */
    public function makeActive() {
        $this->active = true;
        return R::store($this->bean);
    }

    /**
     * Zmień status elementu na nieaktywny
     * @return boolean Czy elemen stał się nieaktywny
     */
    public function makeInactive() {
        $this->active = false;
        return R::store($this->bean);
    }

    /**
     * Ustawia wartości istniejących kolumn beana na podstawie danych z arraya
     * @param array $values
     * @return type
     */
    public function setFromArray($values) {
        $type = $this->bean->getMeta('type');

        if (R::$toolbox->getRedBean()->tableExists($type)) {
            $columns = R::$writer->getColumns($type);
        } else {
            $columns = array_fill_keys(array_keys($values), NULL);
        }

        foreach (array_keys($columns) as $property) {
            if (isset($values[$property])) {
                $this->bean->{$property} = $values[$property];
            }
        }
    }

    public static function getValuesToSelect($type, $value = 'id', $label = 'name', $default_value = true) {
        if ($default_value) {
            $elements = array('' => __('Wybierz...'));
        } else {
            $elements = array();
        }
        foreach (R::findAll($type,'ORDER BY '.$label) as $bean) {
            $elements[$bean->{$value}] = $bean->{$label};
        }

        return $elements;
    }

}
