<?php
$this->PageTitle = 'Gráfico de satisfação';

$options = array();
$Legenda = array();
if(isset($_GET['Clientes']) && !empty($_GET['Clientes'])) {
    $model->setAttributes($_GET['Clientes']);
    $serialize = array();
    foreach($_GET['Clientes'] as $field => $value) {
        if(is_array($value)) {
            foreach($value as $key => $id) {
                $serialize[] = 'Clientes['. $field . '][]='.$id;
            }
        } else {
            $serialize[] = 'Clientes['. $field . ']='.$value;
        }
    }
    $url = implode('&', $serialize);
    $options[] = array(
        'label' => FaHtml::iconExcel(),
        'url' => array('clientes/posvendas_excel&'.$url),
        'linkOptions' => array('class' => 'novo update_url',
                               'data-url' => 'posvendas_excel',
                               'data-replace' => 'posvendas_grafico')
        );
    $options[] = array(
        'label' => FaHtml::iconReport(),
        'url' => array('clientes/posvendas_relatorio&'.$url),
        'linkOptions' => array('class' => 'novo update_url', 'data-url' => 'posvendas_relatorio', 'data-replace' => 'posvendas_grafico')
        );
} else {
    $options[] = array(
        'label' => FaHtml::iconReport(),
        'url' => array('clientes/posvendas_relatorio'),
        'linkOptions' => array('class' => 'novo update_url', 'data-url' => 'posvendas_relatorio', 'data-replace' => 'posvendas_grafico')
        );
    $model->CLI_SITUACAO = "A";
}
$options[] = array(
    'label' => FaHtml::iconSetaClose(),
    'url' => '#',
    'linkOptions' => array('class' => 'search-button')
);
$options[] = array(
    'label' => FaHtml::iconRefresh(),
    'url' => 'javascript:void(0);',
    'linkOptions' => array('onclick' => 'reloadFrame();',
        'class' => 'refresh-button'
    )
);
$this->menu = $options;
?>

<div class="search-form" style="display:<?php echo isset($_GET['Clientes']) && !empty($_GET['Clientes']) ? 'hidden' : 'block'; ?>">
    <?php $this->renderPartial('_search_posvendas_grafico', array('model' => $model)); ?>
</div><!-- search-form -->
<?php

if(isset($_GET['Clientes']) && !empty($_GET['Clientes'])) {
    $conditions = array();
    if (!empty($model->CLI_IDREVENDA)) {
        $Revenda = Revendas::model()->findByPk($model->CLI_IDREVENDA);
        $cidades = GxHtml::listDataEx(Regioescidades::model()->findAll('RCD_IDREVENDA = ' . $Revenda->REV_IDREVENDA), 'RCD_IDCIDADE', 'RCD_IDCIDADE');
        if(!empty($cidades)) {
            $conditions[] = 'CLI_CIDADE in ('.implode(',', $cidades).')';
        } else {
            $conditions[] = 'CLI_CIDADE = -1';
        }
        $Legenda[] = '<span class="legend-desc">Unidade de negócios:</span> ' . $Revenda->REV_NOME;
    }
    $satisfacao_field = '';
    $data_field = '';
    $motivo = '';
    switch ($model->CLI_IDMOTIVO) {
        case 1: // avaliação sistema
        $data_field = 'CLI_DT_POSVENDAS';
        $satisfacao_field = 'CLI_NOTA_SATISFACAO_SISTEMA';
        $motivo = 'Satisfação com o sistema';
        break;

        case 2: // avaliação sistema
        $data_field = 'CLI_DT_POSVENDAS';
        $satisfacao_field = 'CLI_NOTA_SATISFACAO_ATENDIMENTO';
        $motivo = 'Satisfação com o atendimento';
        break;

        case 3: // avaliação sistema
        $data_field = 'CLI_DT_AVALIACAO_IMPLANTACAO';
        $satisfacao_field = 'CLI_NOTA_SATISFACAO_IMPLANTACAO';
        $motivo = '1ª Avaliação de Satisfação com a implantação';
        break;

        case 4: // avaliação sistema
        $data_field = 'CLI_DT_AVALIACAO_IMPLANTACAO2';
        $satisfacao_field = 'CLI_NOTA_SATISFACAO_IMPLANTACAO2';
        $motivo = '2ª Avaliação de Satisfação com a implantação';
        break;
    }
    $filtro_por = $motivo;
    $Legenda[] = '<span class="legend-desc">Tipo de avaliação:</span> ' . $motivo;

    if (!empty($model->CLI_DT_POSVENDAS)) {
        $conditions[] = $data_field . " >= '" . Util::formatDataMysql($model->CLI_DT_POSVENDAS) . "'";
        $Legenda[] = '<span class="legend-desc">Data inicial:</span> ' . $model->CLI_DT_POSVENDAS;
    }

    if (!empty($model->CLI_DT_POSVENDAS_FINAL)) {
        $conditions[] = $data_field . " <= '" . Util::formatDataMysql($model->CLI_DT_POSVENDAS_FINAL) . "'";
        $Legenda[] = '<span class="legend-desc">Data final:</span> ' . $model->CLI_DT_POSVENDAS_FINAL;
    }

    if (!empty($model->CLI_DTATIVACAO)) {
        $Legenda[] = '<span class="legend-desc">Data de ativação inicial:</span> ' . $model->CLI_DTATIVACAO;
        $conditions[] = "CLI_DTATIVACAO >= '" . Util::formatDataMysql($model->CLI_DTATIVACAO) . "'";
    }

    if (!empty($model->CLI_DTATIVACAO_FINAL)) {
        $Legenda[] = '<span class="legend-desc">Data de ativação final:</span> ' . $model->CLI_DTATIVACAO_FINAL;
        $conditions[] = "CLI_DTATIVACAO <= '" . Util::formatDataMysql($model->CLI_DTATIVACAO_FINAL) . "'";
    }

    if (!empty($model->CLI_DTRESCISAO)) {
        $conditions[] = "CLI_DTRESCISAO >= '" . Util::formatDataMysql($model->CLI_DTRESCISAO) . "'";
        $Legenda[] = '<span class="legend-desc">Data rescisão inicial:</span> ' . $model->CLI_DT_POSVENDAS;
    }

    if (!empty($model->CLI_DTRESCISAO_FINAL)) {
        $conditions[] = "CLI_DTRESCISAO <= '" . Util::formatDataMysql($model->CLI_DTRESCISAO_FINAL) . "'";
        $Legenda[] = '<span class="legend-desc">Data rescisão final:</span> ' . $model->CLI_DT_POSVENDAS_FINAL;
    }

    if(!empty($model->CLI_NOTA_SATISFACAO)) {
        if(is_array($model->CLI_NOTA_SATISFACAO)) {
            $conditions[] = $satisfacao_field . "  in(" . implode(', ', $model->CLI_NOTA_SATISFACAO) . ")";
            foreach ($model->CLI_NOTA_SATISFACAO as $grau) {
                $Legenda[] = '<span class="legend-desc">Nível de satisfação:</span> ' . Util::getGrauSatisfacao($grau);
            }
        } else {
            $conditions[] = $satisfacao_field . " = '" . (int) $model->CLI_NOTA_SATISFACAO . "'";
            $Legenda[] = '<span class="legend-desc">Nível de satisfação:</span> ' . Util::getGrauSatisfacao($model->CLI_NOTA_SATISFACAO);
        }
    }

    if(!empty($model->CLI_SITUACAO)) {
        if($model->CLI_SITUACAO == "T") {
            $conditions[] = 'CLI_SITUACAO  in("A", "I", "FP")';
            $Legenda[] = '<span class="legend-desc">Status dos clientes:</span> Ativos e inativos';
        } else {
            $Legenda[] = '<span class="legend-desc">Status dos clientes:</span> ' . ($model->CLI_SITUACAO == "A" ? "Ativos" : ($model->CLI_SITUACAO == "I" ? "Inativos" : "Fechamentos positivos") );
            $conditions[] = 'CLI_SITUACAO = "'.$model->CLI_SITUACAO.'"';
        }
    }

    $categories = array();
    $series = array();
    $count = 0;
    if(!empty($conditions)) {
        $conditions = implode(' AND ', $conditions);
    } else {
        $conditions = '1=1';
    }
    $sql = "SELECT COUNT(*) as count, $satisfacao_field as satisfacao from clientes where $conditions GROUP by $satisfacao_field order by $satisfacao_field ASC";
    $command = Yii::app()->db->createCommand($sql);
    $results = $command->queryAll();
    foreach($results as $result) {
        $categories[] = Util::getGrauSatisfacao($result['satisfacao']);
        $series[] = (int) $result['count'];
        $count += $result['count'];
    }

    $total = array('Total', $count);
    $TextoLegenda = 'Total: ' . $count . '<ul><li>'.implode('</li><li>', $Legenda) . '</li></ul>';
    $height = 400;
    $legend_items = count($Legenda);
    if($legend_items <= 5) {
        $height += 200;
    } else if ($legend_items <= 10){
        $height += 300;
    } else {
        $height += 400;
    }
    ?>
    <div class="clear"></div>

    <?php
    $this->widget('ext.highcharts.HighchartsWidget', array(
        'scriptPosition' => CClientScript::POS_END,
        'scripts' => array(
            'modules/exporting',
            /*'modules/offline-exporting',*/
            'modules/canvas-tools',
            'modules/export-csv',
            'modules/jspdf',
            'modules/export-clientside',
            ),
        'options' => array(
            'title' => array(
                'text' => $filtro_por
                ),
            'labels' => array(
            'align' => 'right',
            'x' => -10,
            'y' => 0
            ),
        'lang' => array(
            'printChart' => 'Imprimir Gráfico',
            'downloadPNG' => '',
            'downloadJPEG' => '',
            'downloadSVG' => 'Download imagem (vetor SVG)',
            'downloadPDF' => '',
            'contextButtonTitle' => 'Opções',
            'loading' => 'Carregando...',
            'downloadCSV' => '',
            'downloadXLS' => 'Download excel (xls)',
            'viewData' => ''
            ),
        'chart' => array(
            'height' => $height,
            'defaultSeriesType' => 'column',
            'style' => array(
                'fontFamily' => 'Arial, Helvetica, sans-serif'
                )
            ),
        'xAxis' => array(
            'categories' => $categories,
            'labels' => array(
                'rotation' => ((count($categories) > 20) ? 270 : -45),
                'align' => 'right',
                'step' => 1,
                ),
            ),
        'yAxis' => array(
            'title' => array(
                'text' => 'Satisfação'
                ),
            ),
        'series' => array(
            array(
                'name' => $TextoLegenda,
                'data' => $series,
                'step' => true,
                'dataLabels' => array(
                    'align' => 'center',
                    'enabled' => true,
                    'rotation' => ((count($categories) > 20) ? 270 : 0),
                    'x' => ((count($categories) > 20) ? 0 : 0),
                    'y' => ((count($categories) > 20) ? -9 : -7),
                    'style' => 'font: "normal 11px Verdana, sans-serif"'
                    ),
                )
            ),
        'legend' => array(
            'useHTML' => true,
            ),
        'credits' => array(
            'enabled' => false
            ),
        'tooltip' => array(
            "formatter" =>"js:function () {
                var s = '<b>' + this.x + '</b>';

                $.each(this.points, function () {
                    s += '<br/><b>Clientes</b>: ' + this.y + ' de um total de ".$count."';
                });

                return s;
            }",
            'positioner' => 'js:function (labelWidth, labelHeight, point) {
                var tooltipX, tooltipY;
                tooltipX = point.plotX + chart.plotLeft - (labelWidth /2);
                tooltipY = point.plotY + chart.plotTop - labelHeight - 30;
                return {
                    x: tooltipX,
                    y: tooltipY
                };
            }',
            'shared' => true,
            ),
        'exporting' => array(
            'printMaxWidth' => 1000,
            'width' => 1000,
            'filename' => Util::slug($filtro_por .'_'. date('d_m_Y_H_i_s'))
            )
        )
        ));
    ?>
    <div class="clear"></div>
    <div class="resumo_grafico">
        <table class="items">
            <thead>
                <tr>
                    <th>Grau e satisfação</th>
                    <th>Total</th>
                </tr>
            </thead>
            <tbody>
                <?php foreach($categories as $key => $funcionario): ?>
                <tr>
                    <td><?php echo $funcionario; ?></td>
                    <td class="resultado"><?php echo isset($series[$key]) ? $series[$key] : '0'; ?></td>
                </tr>
            <?php endforeach; ?>
            <?php if (count($total) == 2): ?>
            <tr class="total">
                <td><?php echo $total[0]; ?></td>
                <td class="resultado"><?php echo $total[1] ?></td>
            </tr>
        <?php endif; ?>
    </tbody>
</table>
</div>
<style type="text/css">
        .highcharts-contextmenu hr {
            margin: 5px 0!important;
        }
        .highcharts-contextmenu div div {
            margin-bottom: 5px;
        }
        .highcharts-legend-item span {
            padding-top: 2px;
        }
        .highcharts-legend-item span ul {
            font-weight: normal;
        }
        .highcharts-legend-item span ul .legend-desc {
            font-weight: bold;
        }
        .highcharts-legend-item span ul li ul {
            width: <?php echo $height; ?>px;
            max-height: 100px;
            font-size: 8px;
            overflow: scroll;
        }
        .highcharts-legend-item span ul li {
            margin-right: 3px;
        }
        .highcharts-legend-item span ul li ul li {
            display: inline;
            white-space: pre-wrap;
            margin-right: 3px;
            line-height: 12px;
        }
        .highcharts-legend-item span ul li ul li:after {
            content: ";"
        }
        @media print {
            body   {
                /* this affects the margin on the content before sending to printer */
                margin: 0px;
            }
            .highcharts-button {
                display: none!important;
            }
            .highcharts-container {
                text-align: center;
            }
            .chart-wrapper {
            }
            @page {
                size: landscape;
                /* this affects the margin in the printer settings */
                margin: 0mm 0mm 0mm 0mm;
            }
            .highcharts-legend-item span {
                padding-top: 2px;
            }
            .highcharts-legend-item span ul {
                font-weight: normal;
            }
            .highcharts-legend-item span ul .legend-desc {
                font-weight: bold;
            }
            .highcharts-legend-item span ul li ul {
                width: <?php echo $height; ?>px;
                font-size: 8px;
            }
            .highcharts-legend-item span ul li ul li {
                display: inline;
                white-space: pre-wrap;
                margin-right: 3px;
            }
            .highcharts-legend-item span ul li ul li:after {
                content: ";"
            }
        }
    </style>
<?php } ?>
<style type="text/css">
.filtros h2 {
    line-height: 11px;
}
.filtros {
    background: #FFFFFF;
    padding: 10px;
    padding-top: 5px;
    margin-top: 10px;
}
table.items {
    width: 100%;
    margin-top: 10px;
}
table th,
table td {
    padding: 3px 10px;
}
table th,
table .total td {
    border: 1px solid #BBBCCC;
    background: #C1D2E4;
}
.ui-datepicker table th {
    background: none;
}
table td {
    border: 1px solid #ccc;
    background: #FFFFFF;
}
table td.resultado {
    text-align: center;
}
</style>