<?php

    class kryteria
    {
        public static $sql_table = 'kryteria';

        public static $own_listing = false;
        public static $own_listing_parse = false;
        public static $own_options = true;
        
        public function __construct()
        {
        }
        
        public static function get( $id )
        {
           $data = db::$i->row("
           SELECT * 
           FROM `".( self::$sql_table )."` 
           WHERE `id`='".( $id )."'
           ");
           
           if( !$data ) return;
           
            return core::object( $data );
        }
        
        
        /**
         * Pobierz listę kryteriów
         * @param int $TematId
         * @return object $Kryteria
         */
        public static function getList( $TematId , $SetAlternativeId = false , $ProcesId = false , $Wartosci = array() )
        {
            
            $where[] = "`temat_id`='".( $TematId )."'";
            
            if( $ProcesId )
            {
                $where[] = "( `proces_id`='".( $ProcesId )."' )";    
            } 
            else 
            {
                $where[] = "`proces_id` IS NULL";    
            }
            
            $query = db::$i->q("
            SELECT * 
            FROM `".( self::$sql_table )."` 
            WHERE ".( join( ' AND ' , $where ) )."
            ORDER BY `id` ASC
            " , true );
            
            // debug
            //debug::printr( db::$i->query );
            
            if( db::$i->rows )
            {
                $Kryteria = new stdClass;
                $Kryteria->Count = db::$i->rows;
                
                while( $Kryterium = db::$i->f( $query ) )
                {
                    if( $SetAlternativeId )
                    {
                        $Kryterium['alternatywa_id'] = $SetAlternativeId;   
                    }
                    
                    if( $ProcesId )
                    {
                        $Kryterium['proces_id'] = $ProcesId;   
                    }
                    
                    $Kryteria->Items[] = self::parse( $Kryterium , $Wartosci );
                }
                    
                    return $Kryteria;
            } 
            
                return;
        }
        
        public static function parse( $item , $Wartosci = array() )
        {
            
            $wartosc = $Wartosci[$item['alternatywa_id']][$item['id']];
            
            switch( $item['typ_id'] )
            {   
                
                // Lingwistyczne
                case 2:
                    
                    $Zmienne = lin::getList( $item['wartosc'] );
                    
                    if( $Zmienne->Count )
                    {
                        
                        $item['html_field'] = '<select name="alternatywa['.( $item['alternatywa_id'] ).']['.( $item['id'] ).']" data-k="'.($item['id']).'" data-a="'.( $item['alternatywa_id'] ).'" class="form-control">';
                        $item['typ_opcje'][''] = '- wybierz -';
                        $item['html_field'] .= '<option value="">- wybierz -</option>';
                        foreach( $Zmienne->Items as $Zmienna )
                        {
                            $item['typ_opcje'][$Zmienna->wartosc] = $Zmienna->wartosc_lin;
                            $item['html_field'] .= '<option value="'.( $Zmienna->wartosc ).'"'.( $wartosc == $Zmienna->wartosc ? ( ' selected="selected"' ) : '' ).'>' .( $Zmienna->wartosc_lin ). '</option>';
                        }
                        $item['html_field'] .= '</select>';
                    
                    } 
                    else 
                    {
                        $item['html_field'] = '';
                    }

                    
                break;


                // Zdjecie
                case 3:
                    
                    $Zmienne = zdjecia::getList( $item['wartosc'] );
                    if( $Zmienne->Count )
                    {

                        $item['html_field'] = '<div class="ImageVariableRadioGroup">';
                        foreach( $Zmienne->Items as $Zmienna )
                        {
                            $item['typ_opcje'][$Zmienna->wartosc] = $Zmienna->src;
                            $item['html_field'] .= '
                            <div class="col-md-4">
                                <div class="ImageVariableRadio">
                                    <img src="'.( $Zmienna->src ).'" alt="'.( $Zmienna->id ).'" />
                                    <input type="radio" name="alternatywa['.( $item['alternatywa_id'] ).']['.( $item['id'] ).']" value="'.( $Zmienna->wartosc ).'" data-k="'.($item['id']).'" data-a="'.( $item['alternatywa_id'] ).'" />
                                </div>
                            </div>
                            ';
                            
                        }
                        $item['html_field'] .= '</div><div class="clear"></div>';
                    
                    } 
                    else 
                    {
                        $item['html_field'] = '';
                    }
                    
                break;
                                
                // Liczbowe
                case 1:
                default:
                    
                    $item['html_field'] = '<input type="text" name="alternatywa['.( $item['alternatywa_id'] ).']['.( $item['id'] ).']" data-k="'.($item['id']).'" data-a="'.( $item['alternatywa_id'] ).'" value="'.( $wartosc ? $wartosc : '' ).'" class="form-control DecisionElement" />';
                    
                break;
            }
            
            
            return core::object( $item );
        }

        public static function add( $request , $files )
        {
            
            // Nazwa
            if( empty( $request['nazwa'] ) )
            {
                statement::$i->set( l('Podaj nazwę') , 'danger' );
                return;
            }
            
            // Temat
            if( empty( $request['temat_id'] ) )
            {
                statement::$i->set( l('Wybierz temat ') , 'danger' );
                return;
            }
            
            if( empty( $request['typ_id'] ) )
            {
                statement::$i->set( l('Wybierz typ kryterium') , 'danger' ); 
                return;
            } 

            switch( $request['typ_id'] )
            {

                case 2:
                    if( empty( $request['Lingwistyczne'] ) )
                    {
                        statement::$i->set( l('Wybierz grupę zmiennych') , 'danger' ); 
                        return;
                    }
                    $request['wartosc'] = $request['Lingwistyczne'];
                break;

                case 3:
                    if( empty( $request['Images'] ) )
                    {
                        statement::$i->set( l('Wybierz grupę obrazów') , 'danger' ); 
                        return;
                    }
                    $request['wartosc'] = $request['Images'];
                break;
                                
                case 1:
                default:
                    $request['wartosc'] = null;
                break;
            }
            
            if( !isset( $request['proces_id'] ) )
            {
                $request['proces_id'] = null;

            }
            
            $sql = array(
               'nazwa' => esc( $request['nazwa'] ),
               'temat_id' => ( $request['temat_id'] ),
               'typ_id' => ( $request['typ_id'] ),
               'proces_id' => ( $request['proces_id'] ),
               'wartosc' => ( $request['wartosc'] ? esc( $request['wartosc'] ) : $request['wartosc'] )
            );

            if( user::$i->mode == 'admin' )
            {
                if( !empty( $files['image']['tmp_name'] ) )
                {
                    $UploadedImage = file::upload( $files['image'] );
                    if( $UploadedImage )
                    {
                        $sql['image'] = $UploadedImage;
                    } 
                    else 
                    {
                            statement::$i->set( l('Błąd podczas wgrywania grafiki') , 'danger' ); 
                            return;
                    }
                } 
                else 
                {
                    statement::$i->set( l('Wybierz  obraz') , 'danger' ); 
                    return;
                }
            }

                        
            if( db::$i->insert( self::$sql_table , $sql ) )
            {
                statement::$i->set( 'save' );
                    return true;
            } 
            else 
            {
                statement::$i->set( 'mysql' );
            }
        }
        
        public static function edit( $request , $files , $id )
        {
            
            $Obj = self::get( $id );
            
            if( !$Obj->id )
            {
                statement::$i->set( 'Element o takim identyfikatorze nie istnieje w bazie danych' , 'danger' );
                return;
            }
            
            // Nazwa
            if( !empty( $request['nazwa'] ) AND $request['nazwa'] != $Obj->nazwa )
            {
                $sql['nazwa'] = esc( $request['nazwa'] );
            }
            
            if( empty( $request['typ_id'] ) )
            {
                statement::$i->set( l('Wybierz typ kryterium') , 'danger' ); 
                return;
            } 
            
            $sql['typ_id'] = $request['typ_id'];

            switch( $request['typ_id'] )
            {

                case 2:
                    if( empty( $request['Lingwistyczne'] ) )
                    {
                        statement::$i->set( l('Wybierz grupę zmiennych') , 'danger' ); 
                        return;
                    }
                    $request['wartosc'] = $request['Lingwistyczne'];
                break;

                case 3:
                    if( empty( $request['Images'] ) )
                    {
                        statement::$i->set( l('Wybierz grupę obrazów') , 'danger' ); 
                        return;
                    }
                    $request['wartosc'] = $request['Images'];
                break;
                                
                case 1:
                default:
                    $request['wartosc'] = null;
                break;
            }
            
            $sql['wartosc'] = $request['wartosc'];

            if( !empty( $files['image']['tmp_name'] ) )
            {
                $UploadedImage = file::upload( $files['image'] );
                if( $UploadedImage )
                {
                    $sql['image'] = $UploadedImage;
                } 
                else 
                {
                    statement::$i->set( l('Błąd podczas wgrywania grafiki') , 'danger' ); 
                    return;
                }
            } 
                        
            if( count( $sql ) )
            {
                if( db::$i->update( self::$sql_table , $sql , $id ) )
                {
                    statement::$i->set( 'update' );
                } 
                else 
                {
                    statement::$i->set( 'mysql' );
                }
            } 
            else 
            {
                statement::$i->set( 'Nie dokonano żadnych zmian' );
            }
            
        }
                
        public static function options( $item )
        {
                
                $options[l('Szczegóły')] = array(
                        'mode' => 'kryteria',
                        'data-id' => $item['id'],
                        'id' => $item['id'],
                        'class' => 'row_details'
                );
                
                
                $options[l('Edytuj')] = array(
                        'mode' => 'kryteria',
                        'id' => $item['id']
                );

                                                
                $options[l('Usuń')] = array(
                        'mode' => 'kryteria',
                        'id' => $item['id']
                );
                
                return $options; 
        }   
        
        public static function details_parse()
        {
            
        }
        
    }
    
?>