<?php
include_once(_DIR_TO_CLASS.'/c_page.php');
include_once(_DIR_TO_MODULES.'/m_skd.php');

include_once('c_post_shift_poll.php');


class c_page_cab_post_shift_poll_summary extends c_page_cab_post_shift_poll{

    public $h1 = 'Сводная';

    function set_head_tags(){
        parent::set_head_tags();
        $this->HEAD['css'][] = _PATH_TO_EXT . '/post_shift_poll/lib/style.css';
        $this->HEAD['js'][] = _PATH_TO_EXT . '/post_shift_poll/lib/script.js';
        $this->HEAD['js'][]=_PATH_TO_EXT.'/post_shift_poll/lib/loader.js';
    }

    function block_main(){
        $view_personals = execSQL('select * from analytic_table');


        $_org_name = execSQL('select _org_name, _work_id from analytic_table group by _org_name'); // Наименование работы
        $_org_name = array_values($_org_name);

/*
        $pos= execSQL('select _otdel_name, _otdel_id from analytic_table group by _otdel_name'); // Получаем подразделения
        $pos = array_values($pos);*/



        $fil = '';
        if($_GET['_org_name']){
            $fil .= '_org_name='.$_GET['_org_name'].'';
        }

        if($_GET['_work_name']){
            $fil .= ' _work_name='.$_GET['_work_name'].'';
        }


        $_work_names = execSQL('select _work_name, _work_id, _org_name, _otdel_id,  _otdel_name,
                                           count(_work_name) as cnt , /* Колличество работников */
                                           sum(_overall_score) as sum_ov , /* Общий балл */
                                           sum(_average_score) as sum_av , /* Балл ниже средних */
                                           sum(fall_ball) as sum_fall , /* Балл падения */
                                           min(min) as s_min , /* Минимальное значение */
                                           sum(_to_full_name) as sum_to_full_name , /* Сумма к ФИО */
                                           sum(_average_by_name) as sum_average_by_name, /* Сумма ср по ФИО */
                                           sum(_to_post) as sum_to_post , /* Сумма к должности */
                                           sum(_average_for_other_name) as other_name , /* Средний по другим, получаем сумму при выводе делим на cnt */ 
                                           sum(_p_sb_1) as sum_sb_1 , /* 1й период сумма  */
                                           sum(_p_sb_2) as sum_sb_2 , /* 2й период сумма  */
                                           sum(_p_sb_3) as sum_sb_3 , /* 3й период сумма  */
                                           sum(_p_sb_4) as sum_sb_4 , /* 4й период сумма  */
                                           sum(_p_sb_5) as sum_sb_5 , /* 5й период сумма  */
                                           sum(_p_sb_6) as sum_sb_6 , /* 6й период сумма  */
                                           
                                           
                                           sum(_per_1) as _per_1 , /* 1й период сумма  */
                                           sum(_per_2) as _per_2 , /* 2й период сумма  */
                                           sum(_per_3) as _per_3 , /* 3й период сумма  */
                                           sum(_per_4) as _per_4 , /* 4й период сумма  */
                                           sum(_per_5) as _per_5 , /* 5й период сумма  */
                                           sum(_per_6) as _per_6 , /* 6й период сумма  */
                                           sum(_per_7) as _per_7 , /* 7й период сумма  */
                                           sum(_per_8) as _per_8 , /* 8й период сумма  */
                                           sum(_per_9) as _per_9 , /* 9й период сумма  */
                                           filter_type

                                    from analytic_table 
                                    group by _work_name
                                    '); // Должности и количство людей на них

        $wk_n = array_values($_work_names);

        function graphicalDifference($value,$max,$min){
            if($value <= 0){
                $width_red = 100 * abs($value);
                if($width_red > 100){
                    $width_red = 100;
                }
                $pl = 100 - $width_red;
            }else{
                $width_blue = 100 * $value;
                if($width_blue > 100){
                    $width_blue = 100;
                }
                $pr = 100 - $width_blue;
            }

            $value = round($value, 2);

            if($value !=0){
                $xml = '<div class="signal_block_viever">
                         <div class="container_signal_block_viever_left" style="width: 50%"><div class="red_grap" style="width: '.$width_red.'%;margin-left: '.$pl.'%;float: right;"></div></div>
                         <div class="container_signal_block_viever_rigth" style="width: 50%"><div class="blue_grap" style="width: '.$width_blue.'%;margin-right: '.$pr.'%;float: left;"></div></div>
                     </div><div class="number_value">'.$value.'</div>';

            }else{
                $xml = '<div class="signal_block_viever">
                         <div class="container_signal_block_viever_left" style="width: 50%"><div class="red_grap" style="width: '.$width_red.'%;margin-left: '.$pl.'%;float: right;"></div></div>
                         <div class="container_signal_block_viever_rigth" style="width: 50%"><div class="blue_grap" style="width: '.$width_blue.'%;margin-right: '.$pr.'%;float: left;"></div></div>
                     </div><div class="number_value">'.$value.'</div>';
            }

            return $xml;
        } // Рисуем сигналы

        function get_name_in_pos($str, $view_personals){
            $name_in_post = [];
            if (sizeof($view_personals)) foreach ($view_personals as $key => $value) {
                if($value['_work_name'] == $str){
                    array_push($name_in_post, $value);
                }
            }
            return $name_in_post;
        }

        function getValue($arr,$column){
            $new_arr = [];
            if (sizeof($arr)) foreach ($arr as $key => $value) {
                if(!in_array($value[''.$column.''], $new_arr)){
                    array_push($new_arr, $value[''.$column.'']);
                }
            }
            return $new_arr;
        }

        $s_min = getValue($wk_n,'s_min');
        sort($s_min);
        $sum_ov = getValue($wk_n,'sum_ov');
        sort($sum_ov);
        //print_r($s_min);


        $day_int = array(
            1 => array(1=>'7', 2=>'14', 4=>'21', 8=>'28', 16=>'35', 32=>'42', 64=>'49', 128=>'56', 256=>'63'),
            2 => array(1=>'1', 2=>'2', 4=>'3', 8=>'4', 16=>'5', 32=>'6', 64=>'7', 128=>'8', 256=>'9'),
            3 => array(1=>'1', 2=>'2', 4=>'4', 8=>'8', 16=>'16', 32=>'32', 64=>'64', 128=>'128', 256=>'256'),
            4 => array(1=>'90', 2=>'180', 4=>'270', 8=>'360', 16=>'450', 32=>'540', 64=>'630', 128=>'720', 256=>'810'),
            5 => array(1=>'180', 2=>'360', 4=>'540', 8=>'720', 16=>'900', 32=>'1080', 64=>'1260', 128=>'1440', 256=>'1620'),
        );

        $intervalSt = $day_int[$wk_n[0]['filter_type']]; // Получаем выбранный интервал


        $columnTable = [
            '№',
            'Должность',
            'Кол-во работников',
            'Общий балл',
            '%',
            'Балл ниже средних',
            'Балл падения',

            'к ФИО',
            'К должности',
            '1й период',
            '2й период',
            '3й период',
            '4й период',
            '5й период',
            '6й период',
            '7й период',
            '8й период',
            '9й период',
/*
            $intervalSt[1].' Дней',
            $intervalSt[2].' Дней',
            $intervalSt[4].' Дней',
            $intervalSt[8].' Дней',
            $intervalSt[16].' Дней',
            $intervalSt[32].' Дней',
            $intervalSt[64].' Дней',
            $intervalSt[128].' Дней',
            $intervalSt[256].' Дней',*/

        ]; // Название заголовков столбцов


        ?>
        <style>
            .bg-tr-2{
                background: #ffffff !important;
            }

            .bg-tr-2:hover{
                background: #3cabac !important;
            }
            .bg-tr-1{
                background: #f3f3f3;
            }

            .title_tab_table > td{
                padding: 6px 15px !important;
                cursor: pointer;
                text-align: left;
            }

            .sort_ic_a{
                text-align: center;
                border-radius: 3px;
                color: #00a1a5;
                float: right;
            }

            .more_info{
                position: fixed;
                display: none;
                pointer-events: none;
                top: 0px;
                left: 0px;
                z-index: 1000;
                background: rgb(35 32 48 / 50%);
                width: 100%;
                height: 100%;
            }

            .in_card_title{
                font-size: 13px;
                font-weight: 600;
            }

            .sel_in{
                width: 333px;
                margin-top: 10px;
                margin-bottom: 15px;
                padding: 11px;
                border-radius: 6px;
                border: 1px solid #eee;
                font-size: 13px;
            }

            .d-inter{
                display: inline-block;
                margin-right: 15px;
            }

            .bt_s_3 {
                display: inline-block;
                background: #2da5da;
                border: 0px;
                font-size: 12px;
                font-weight: 600;
                color: #fff;
                padding: 10px 31px !important;
                height: 40px;
                border-radius: 7px;
                transition: .3s;
            }

            .sel_in-c{
                padding: 10px !important;
                border-radius: 5px !important;
                border: 1px solid #eeeeee !important;
            }


            /* list check */


            .multiselect {
                width: 200px;
            }
            .selectBox {
                position: relative;
            }
            .selectBox select {
                width: 100%;
                font-weight: bold;
            }
            .overSelect {
                position: absolute;
                left: 0;
                right: 0;
                top: 0;
                bottom: 0;
            }
            #checkboxes {
                display: none;
                border: 1px #dadada solid;
            }
            #checkboxes label {
                display: block;
            }
            #checkboxes label:hover {
                background-color: #1e90ff;
            }

            .srd{
                background: #e4ff0059;
                color: #000;
                font-weight: 900;
                width: 20px;
                height: 20px;
                overflow: hidden;
                font-size: 10px;
                border-radius: 16px;
                text-align: center;
                cursor: help;
                vertical-align: middle;
                display: inherit;
            }
        </style>


        <script>
            var expanded = false;

            function showCheckboxes() {
                var checkboxes = document.getElementById("checkboxes");
                if (!expanded) {
                    checkboxes.style.display = "block";
                    expanded = true;
                } else {
                    checkboxes.style.display = "none";
                    expanded = false;
                }
            }
        </script>

        <div class="card_container mb-0">
            <form>

                <!--
                <div class="d-inter">
                    <div class="in_card_title">Общий балл:</div>
                    <?
                    $t = 1;
                    if (sizeof($sum_ov)) foreach ($sum_ov as $key => $value){
                        echo '
                        <div>
                            <input type="checkbox" id="'.$t.'" name="'.$t.'">
                            <label for="'.$t.'">'.$value.'</label>
                        </div>';
                        $t++;
                    }
                    ?>
                </div>-->

                <div class="d-inter">
                    <div class="in_card_title">Организация:</div>
                    <input type="text" class="form-control autocomplete sel_in sel_in-c" autocomplete="off" list="_org_name" placeholder="Необходимо выбрать" name="_org_name" value='<?=$_GET['_org_name']?>'>
                    <input type="hidden" name="testId"/>
                    <datalist id="_org_name">
                        <?
                        $t = 1;
                        if (sizeof($_org_name)) foreach ($_org_name as $key => $value){
                            echo '<option data-id="'.$t.'" value=\''.$value['_org_name'].'\'">';
                            $t++;
                        }
                        ?>
                    </datalist>
                </div>

                <div class="d-inter">
                    <div class="in_card_title">Подразделение:</div>
                    <input type="text" class="form-control autocomplete sel_in sel_in-c" autocomplete="off" list="_pos" placeholder="Необходимо выбрать" name="_pos" value='<?=$_GET['_pos']?>'>
                    <input type="hidden" name="testId"/>
                    <datalist id="_pos">
                        <?
                        $t = 1;


                        if (sizeof($wk_n)) foreach ($wk_n as $key => $value){
                            echo '<option data-id="'.$t.'" value="'.$value['_otdel_name'].'">';
                            $t++;
                        }
                        ?>
                    </datalist>
                </div>


                <div class="d-inter">
                    <div class="in_card_title">Должность:</div>
                    <input type="text" class="form-control autocomplete sel_in sel_in-c" autocomplete="off" list="_work_name" placeholder="Необходимо выбрать" name="_work_name" value='<?=$_GET['_work_name']?>'>
                    <input type="hidden" name="testId"/>
                    <datalist id="_work_name">
                            <?
                            $t = 1;
                            if (sizeof($wk_n)) foreach ($wk_n as $key => $value){
                                echo '<option data-id="'.$t.'" value="'.$value['_work_name'].'">';
                                $t++;
                            }
                            ?>
                    </datalist>
                </div>
                <button class="bt_s_3">Сортировать</button>
            </form>
        </div>

        <div class="scroll-table sort" style="max-width: calc(100vw - 270px);"><div class="scroll-table-body">
                <table id="table" class="table_main" cellpadding="0" cellspacing="0">
                    <thead>
                    <tr class="title_tab_table">
                        <?
                        if (sizeof($columnTable)) foreach ($columnTable as $key => $value) {
                            ?><td><?=$value?></td><?
                        } // Формируем шапку таблицы
                        ?>
                    </tr>
                    </thead>
                    <tbody>
                    <?

            $r = 1;
            if (sizeof($_work_names)) foreach ($_work_names as $key => $value) {
                $f = 1;
                // Фильтры
                if($_GET['_org_name']){
                    if($_GET['_org_name'] != $value['_org_name']){
                        $f = '';
                    }
                }
                if($_GET['_work_name']){
                    if($_GET['_work_name'] != $value['_work_name']){
                        $f = '';
                    }
                }

                if($_GET['_pos']){
                    if($_GET['_pos'] != $value['_otdel_name']){
                        $f = '';
                    }
                }

                $srd = '<div class="srd" title="Нет данных в этом диапазоне или сотрудники пропускали оценку">?</div>';
                if($f){
                ?>
                    <tr class="bg-tr-1">
                        <td><?=$r?></td>
                        <td title="Должность">
                            <div id="param_2" class="icon_sort card_t_1_bt v2" cmd="post_shift_poll/get_stats_2" value="<?=$value['_work_id'];?>" style="float: left;margin-left: 0px;margin-right: 10px;">
                                <span class="svg-icon svg-icon-primary svg-icon-2x"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="24px" height="24px" viewBox="0 0 24 24" version="1.1"><g stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"><rect fill="#000000" x="4" y="11" width="16" height="2" rx="1"/><rect fill="#000000" opacity="0.3" transform="translate(12.000000, 12.000000) rotate(-270.000000) translate(-12.000000, -12.000000) " x="4" y="11" width="16" height="2" rx="1"/></g></svg></span>
                            </div>
                            <?=$value['_work_name'];?>
                        </td>
                        <td title="Количество работников"><?=$value['cnt'];?></td>
                        <td title="Общий балл"><?=$value['sum_ov'];?></td>
                        <td title="%"><?=round($value['sum_ov'] / $value['cnt'] * 100);?>%</td>
                        <td title="Балл ниже средних"><?=$value['sum_av'];?></td>
                        <td title="Кол-во снижений оценки у всех сотрудников в должности"><?=$value['sum_fall']?></td>

                        <td title="1й период должности - ср по ФИО (<?=round($value['sum_sb_1'] / $value['cnt'], 2)?> - <?=round($value['sum_average_by_name'] / $value['cnt'], 2)?>)" style="padding: 0px;">
                            <?=graphicalDifference($value['sum_sb_1'] / $value['cnt'] - $value['sum_average_by_name'] / $value['cnt'],1,-1);?>
                        </td>

                        <td title="1й период должности - ср по другим ФИО в должности (<?=round($value['sum_sb_1'] / $value['cnt'], 2)?> - (<?=$value['other_name']?> / <?=round($value['cnt'], 2)?>)" style="padding: 0px;">
                            <?


                            if($value['cnt'] == 1){
                                $value_graph_2 = 0;
                            }else{
                                $value_graph_2 = $value['sum_sb_1'] / $value['cnt'] - ($value['other_name'] / $value['cnt']);
                            }
                                echo graphicalDifference($value_graph_2,1,-1);
                            ?>
                        </td>


                        <!--<td title="1й период"><?=round($value['sum_sb_1'], 2);?></td>
                        <td title="2й период"><?=round($value['sum_sb_2'], 2);?></td>
                        <td title="3й период"><?=round($value['sum_sb_3'], 2);?></td>
                        <td title="4й период"><?=round($value['sum_sb_4'], 2);?></td>
                        <td title="5й период"><?=round($value['sum_sb_5'], 2);?></td>
                        <td title="6й период"><?=round($value['sum_sb_6'], 2);?></td>-->


                        <td title="Средний балл за выбранный период: сумма средних по ФИО / Кол-во в должности(<?=$value['sum_sb_1']?> / <?=$value['cnt']?>)"><? if($value['sum_sb_1'] and $value['cnt']){ echo round($value['sum_sb_1'] / $value['cnt'], 2);}else{echo $srd;}?></td>
                        <td title="Средний балл за выбранный период: сумма средних по ФИО / Кол-во в должности(<?=$value['sum_sb_2']?> / <?=$value['cnt']?>)"><? if($value['sum_sb_2'] and $value['cnt']){ echo round($value['sum_sb_2'] / $value['cnt'], 2);}else{echo $srd;}?></td>
                        <td title="Средний балл за выбранный период: сумма средних по ФИО / Кол-во в должности(<?=$value['sum_sb_3']?> / <?=$value['cnt']?>)"><? if($value['sum_sb_3'] and $value['cnt']){ echo round($value['sum_sb_3'] / $value['cnt'], 2);}else{echo $srd;}?></td>
                        <td title="Средний балл за выбранный период: сумма средних по ФИО / Кол-во в должности(<?=$value['sum_sb_4']?> / <?=$value['cnt']?>)"><? if($value['sum_sb_4'] and $value['cnt']){ echo round($value['sum_sb_4'] / $value['cnt'], 2);}else{echo $srd;}?></td>
                        <td title="Средний балл за выбранный период: сумма средних по ФИО / Кол-во в должности(<?=$value['sum_sb_5']?> / <?=$value['cnt']?>)"><? if($value['sum_sb_5'] and $value['cnt']){ echo round($value['sum_sb_5'] / $value['cnt'], 2);}else{echo $srd;}?></td>
                        <td title="Средний балл за выбранный период: сумма средних по ФИО / Кол-во в должности(<?=$value['sum_sb_6']?> / <?=$value['cnt']?>)"><? if($value['sum_sb_6'] and $value['cnt']){ echo round($value['sum_sb_6'] / $value['cnt'], 2);}else{echo $srd;}?></td>
                        <td title="Средний балл за выбранный период: сумма средних по ФИО / Кол-во в должности(<?=$value['sum_sb_7']?> / <?=$value['cnt']?>)"><? if($value['sum_sb_7'] and $value['cnt']){ echo round($value['sum_sb_7'] / $value['cnt'], 2);}else{echo $srd;}?></td>
                        <td title="Средний балл за выбранный период: сумма средних по ФИО / Кол-во в должности(<?=$value['sum_sb_8']?> / <?=$value['cnt']?>)"><? if($value['sum_sb_8'] and $value['cnt']){ echo round($value['sum_sb_8'] / $value['cnt'], 2);}else{echo $srd;}?></td>
                        <td title="Средний балл за выбранный период: сумма средних по ФИО / Кол-во в должности(<?=$value['sum_sb_9']?> / <?=$value['cnt']?>)"><? if($value['sum_sb_9'] and $value['cnt']){ echo round($value['sum_sb_9'] / $value['cnt'], 2);}else{echo $srd;}?></td>

                    </tr>
                <?
                    $r++;
                }
/* <td title="ср. по ФИО"><?=round($value['sum_average_by_name'] / $value['cnt'], 2);?></td>*/
                }

                    ?>
                    </tbody>
                </table>
            </div>
        </div>
        <?

    }




    function panel_report(){
        ?><h3>Сводная</h3><?
        include_once(_DIR_EXT . '/post_shift_poll/report_summary_NEW.php');
        $report_obj = new report_post_shift_poll_stats1();
        $report_obj->setting();
        $report_obj->view();
    }
}



