<?php

if (!$model->Solicitacao->Cliente->isAllowed()) {
    User::blockAction('Pendência de cliente que não pertence a sua Unidade de negócios');
}

$this->layout = 'pdf';
$pdf          = Yii::createComponent('application.extensions.tcpdf.ETcPdf', 'P', 'cm', 'A4', true, 'UTF-8');
$pdf->setMargins(1.27, 1, 1.27);
$pdf->SetAuthor("Windel Sistemas");
$pdf->SetTitle('Especificacao Funcional '.$model->ESP_IDESPECIFICACAO);
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->AliasNbPages();
$pdf->setFont('Helvetica', '', 11);
$pdf->AddPage();

$analistas = EspecificacaoFuncionalAnalistas::model()->findAll('EFA_IDESPECIFICACAO = '.$model->ESP_IDESPECIFICACAO);
$analistas = CHtml::listData($analistas, 'EFA_IDANALISTA', 'Analista.FUN_NOME');
$analista  = '';
foreach ($analistas as $nome) {
    $analista .= 'Analista responsável: '.$nome.'<br />';
}

$HTML = '<table width="100%" border="0" cellspacing="0" cellpadding="0">
        <tr>
            <td align="left" width="70%">
                <font size="14"><strong>Especificação Funcional '.$model->ESP_IDESPECIFICACAO.'</strong></font>
                <div>    '.$model->ESP_DATA.'</div>
            </td>
            <td align="right" width="30%"><img src="'.FaHtml::getImgUrl('logo-contrato.jpg',true).'" width="99" height="24" /></td>
        </tr>
    </table>
    <br /><hr /><br /><br />
    <p><strong>1. Projeto:</strong> '.$model->Projeto.'<br /><br />
    <strong>2. Solicitação:</strong><br />Código: '.$model->ESP_IDSOLICITACAO.'<br />Data: '.substr($model->Solicitacao->SOL_DATACADASTRO, 0, -9).(!empty($model->Solicitacao->SOL_DATAPREVISAO)?'<br />Previsão de entrega: '.$model->Solicitacao->SOL_DATAPREVISAO:'').'<br /><br />
    <strong>3. Objetivo:</strong><br />'.Util::niceTextPendencias($model->ESP_OBJETIVO).'<br /><br />
    <strong>4. Responsáveis pela tarefa:</strong><br />'.$analista.'Programador responsável: '.$model->Programador.'<br />Tester: '.$model->Tester.'<br /><br />
    <strong>5. Alteração na base de dados:</strong><br />';
$EspecificacaoFuncionalTabelas = EspecificacaoFuncionalTabelas::model()->findAll("EFT_IDESPECIFICACAO = '".$model->ESP_IDESPECIFICACAO."' order by EFT_CODIGO ASC");
if (empty($EspecificacaoFuncionalTabelas)) {
    $HTML .= 'Nenhuma tabela a ser alterada!<br /><br />';
} else {
    foreach ($EspecificacaoFuncionalTabelas as $EspecificacaoFuncionalTabelas) {
        $HTML .= '<br />
        <table border="1" cellpadding="5">
            <tr>
                <td>Tabela afetada/nova:</td>
                <td colspan="3">'.Util::niceTextPendencias($EspecificacaoFuncionalTabelas->EFT_TABELA).'</td>
            </tr>
            <tr>
                <td>Criação chave prim.:</td>
                <td colspan="3">'.Util::niceTextPendencias($EspecificacaoFuncionalTabelas->EFT_CHAVEPRIM).'</td>
            </tr>
            <tr>
                <td>Criação chave estrang.:</td>
                <td colspan="3">'.Util::niceTextPendencias($EspecificacaoFuncionalTabelas->EFT_CHAVEESTR).'</td>
            </tr>';
        $EspecificacaoFuncionalCampos = EspecificacaoFuncionalCampos::model()->findAll("EFC_IDTABELA = '".$EspecificacaoFuncionalTabelas->EFT_CODIGO."' order by EFC_CODIGO ASC");

        if (!empty($EspecificacaoFuncionalCampos)) {
            $HTML .= '<tr>
                    <td>Nome do campo</td>
                    <td>Tipo de dado</td>
                    <td>Tamanho</td>
                    <td>Descrição do campo</td>
                </tr>';
        }
        foreach ($EspecificacaoFuncionalCampos as $EspecificacaoFuncionalCampos) {
            $HTML .= '<tr>
                <td>'.Util::niceTextPendencias($EspecificacaoFuncionalCampos->EFC_NOMECAMPO).'</td>
                <td>'.Util::niceTextPendencias($EspecificacaoFuncionalCampos->EFC_TIPODADO).'</td>
                <td>'.Util::niceTextPendencias($EspecificacaoFuncionalCampos->EFC_TAMANHO).'</td>
                <td>'.Util::niceTextPendencias($EspecificacaoFuncionalCampos->EFC_DESCRICAOCAMPO).'</td>
            </tr>';
        }
        $HTML .= '</table><br />';
    }
}
$HTML .= '<br />
    <strong>6. Forms a serem alterados:</strong><br />'.Util::niceTextPendencias($model->ESP_FOMRSALTERADOS).'<br /><br />
    <strong>7. Forms a serem criados:</strong><br />'.Util::niceTextPendencias($model->ESP_FORMSCRIADOS).'<br /><br />
    <strong>8. Simulação do Problema:</strong><br />';
$EspecificacaoFuncionalSimulacao = EspecificacaoFuncionalSimulacao::model()->findAll("EFS_IDESPECIFICACAO = '".$model->ESP_IDESPECIFICACAO."' order by EFS_CODIGO ASC");
if (empty($EspecificacaoFuncionalSimulacao)) {
    $HTML .= 'Nenhuma simulação cadastrada!<br /><br />';
} else {
    $i = 0;
    foreach ($EspecificacaoFuncionalSimulacao as $EspecificacaoFuncionalSimulacao) {
        $i++;
        $HTML .= '<strong>8.'.$i.'. Situação '.$i.'</strong><br />'.Util::niceTextPendencias($EspecificacaoFuncionalSimulacao->EFS_SITUACAO).'<br /><br />';
    }
}

$HTML .= '<strong>9. Requisitos:</strong><br />';
$EspecificacaoFuncionalRequisitos = EspecificacaoFuncionalRequisitos::model()->findAll("EFR_IDESPECIFICACAO = '".$model->ESP_IDESPECIFICACAO."' order by EFR_CODIGO ASC");
if (empty($EspecificacaoFuncionalRequisitos)) {
    $HTML .= 'Nenhum requisito cadastrado!<br /><br />';
} else {
    $i = 0;
    foreach ($EspecificacaoFuncionalRequisitos as $EspecificacaoFuncionalRequisitos) {
        $i++;
        $HTML .= '<strong>9.'.$i.'. Requisito '.$i.'</strong><br />'.Util::niceTextPendencias($EspecificacaoFuncionalRequisitos->EFR_REQUISITO).'<br /><br />';
    }
}

$HTML .= '<strong>10. Casos de teste:</strong><br />';
$EspecificacaoFuncionalCasosTeste = EspecificacaoFuncionalCasosTeste::model()->findAll("EFC_IDESPECIFICACAO = '".$model->ESP_IDESPECIFICACAO."' order by EFC_CODIGO ASC");
if (empty($EspecificacaoFuncionalCasosTeste)) {
    $HTML .= 'Nenhum caso de teste cadastrado!<br /><br />';
} else {
    $i = 0;
    foreach ($EspecificacaoFuncionalCasosTeste as $EspecificacaoFuncionalCasosTeste) {
        $i++;
        $HTML .= '<strong>10.'.$i.'. '.Util::niceTextPendencias($EspecificacaoFuncionalCasosTeste->EFC_CASOTESTE).'</strong><br />'.Util::niceTextPendencias($EspecificacaoFuncionalCasosTeste->EFC_DESCRICAO).'<br /><br />';
    }
}

$Num = 10;

$HTML .= '<strong>Informações Adicionais:</strong><br /><br />';

$EspecificacaoFuncionalNaoConformidade = EspecificacaoFuncionalNaoConformidade::model()->findAll("EFN_IDESPECIFICACAO = '".$model->ESP_IDESPECIFICACAO."' order by EFN_CODIGO ASC");
if (!empty($EspecificacaoFuncionalNaoConformidade)) {
    $Num++;
    $HTML .= '<strong>'.$Num.'. Não-Conformidade:</strong><br />';
    $i = 0;
    foreach ($EspecificacaoFuncionalNaoConformidade as $EspecificacaoFuncionalNaoConformidade) {
        $i++;
        $HTML .= '<strong>'.$Num.'.'.$i.'. '.Util::niceTextPendencias($EspecificacaoFuncionalNaoConformidade->EFN_NAOCONFORMIDADE).'</strong><br /><em>Por '.Util::niceTextPendencias($EspecificacaoFuncionalNaoConformidade->Funcionario).' em '.Util::niceTextPendencias($EspecificacaoFuncionalNaoConformidade->EFN_DATA).'<br />' .nl2br($EspecificacaoFuncionalNaoConformidade->EFN_UPDATES).'</em><br />'.Util::niceTextPendencias($EspecificacaoFuncionalNaoConformidade->EFN_DESCRICAO).'<br /><br />';
    }
}

$EspecificacaoFuncionalPosTestes = EspecificacaoFuncionalPosTestes::model()->findAll("EFP_IDESPECIFICACAO = '".$model->ESP_IDESPECIFICACAO."' order by EFP_CODIGO ASC");
if (!empty($EspecificacaoFuncionalPosTestes)) {
    $Num++;
    $HTML .= '<strong>'.$Num.'. Implementação pós-teste:</strong><br />';
    $i = 0;
    foreach ($EspecificacaoFuncionalPosTestes as $EspecificacaoFuncionalPosTestes) {
        $i++;
        $HTML .= '<strong>'.$Num.'.'.$i.'. '.Util::niceTextPendencias($EspecificacaoFuncionalPosTestes->EFP_CASO).'</strong><br /><em>Por '.Util::niceTextPendencias($EspecificacaoFuncionalPosTestes->Funcionario).' em '.Util::niceTextPendencias($EspecificacaoFuncionalPosTestes->EFP_DATA).'<br />' .nl2br($EspecificacaoFuncionalPosTestes->EFP_UPDATES).'</em><br />'.Util::niceTextPendencias($EspecificacaoFuncionalPosTestes->EFP_DESCRICAO).'<br /><br />';
    }
}

$HTML .= '</p>';

$pdf->writeHTML(utf8_encode($HTML), true, 0, true, true);
$pdf->Output("especificacao-funcional".$model->ESP_IDESPECIFICACAO.".pdf", "I");
