<?php
	mb_internal_encoding("UTF-8");

	require_once "protected/extensions/tcpdf/tcpdf/tcpdf.php";

	class MYPDF extends TCPDF {
		public function Header() {
			$this->SetFont('helvetica', '', 9);

			$header = '<table width="100%" border="0" cellspacing="0" cellpadding="0">';
				$header .= '<tr>';
					$header .= '<td>
									<img src="'.FaHtml::getImgUrl('logo-contrato.jpg', false, false).'" width="99" height="24" />
								</td>';
					$header .= '<td align="right">';
						$header .= 'Emiss&atilde;o: ' . date('d/m/Y');
						$header .= "<br>";
						$header .= 'Hora: ' . date('H:i:s');
					$header .= '</td>';
				$header .= '</tr>';
			$header .= '</table>';

			$this->MultiCell(0, 15, $header, 0, 'J', false, 0, '', '', true, 0, true, true, 0, 'M', false);
		}

		public function Footer() {
			$this->SetY(-15);
			$this->SetFont('helvetica', 'I', 8);
			$this->Cell(0, 10, 'Página '.$this->getAliasNumPage().'/'.$this->getAliasNbPages(), 0, false, 'C', 0, '', 0, false, 'T', 'M');
		}
	}

	$this->layout = 'pdf';
	$pdf = new MYPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

	$pdf->SetAuthor("Windel Sistemas");
	$pdf->SetTitle('Relatório de Documentos');
	$pdf->AliasNbPages();
	$pdf->setFont('Helvetica', '', 9);
	$pdf->SetAutoPageBreak(TRUE, 15);

	$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
	$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

	$pdf->setMargins(4, 15, 4, 15);

	$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
	$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

	$pdf->AddPage();
	$allDocumentos = array();
	foreach ($data as $key => $value) {
		if (in_array($value->COT_SITUACAO, [Contratos::CONTRATO,
											Contratos::ADENDO,
											Contratos::PEDIDO_IMPLANTACAO,
											Contratos::PEDIDO_REATIVACAO])) {
			$allDocumentos[$value->COT_SITUACAO][$key] = $value;
		}
	}
	ksort($allDocumentos);

	$keys = array_keys($allDocumentos);
	$ultimoTipo = end($keys);

	ob_start();

	function lineHeader($tipoDocumento, &$cont) {
		echo "<thead>";
			echo "<tr>";
				echo "<th style=\"color: #000;\" width=\"40\"><b>C&oacute;digo</b></th>";

				if ($tipoDocumento == Contratos::CONTRATO) {
					echo "<th style=\"color: #000;\" width=\"137\"><b>Raz&atilde;o Social</b></th>";
				} else if ($tipoDocumento == Contratos::ADENDO) {
					echo "<th style=\"color: #000;\" width=\"177\"><b>Raz&atilde;o Social</b></th>";
				} else {
					echo "<th style=\"color: #000;\" width=\"267\"><b>Raz&atilde;o Social</b></th>";
				}

				echo "<th style=\"color: #000;\" width=\"90\">";
					echo "<b>CNPJ / CPF</b>";
				echo "</th>";

				echo "<th style=\"color: #000;\" width=\"50\"><b>Data de <br>Cadastro</b></th>";

				switch ($tipoDocumento) {
					case Contratos::CONTRATO:
						echo "<th style=\"color: #000;\" width=\"40\"><b>Dia de <br>Venc.</b></th>";
						echo "<th style=\"color: #000;\" width=\"60\"><b>Valor <br>Mensalidade</b></th>";

						echo "<th style=\"color: #000;\" width=\"50\"><b>In&iacute;cio Cobran&ccedil;a</b></th>";
						echo "<th style=\"color: #000;\" width=\"60\"><b>Prim. <br>Mensalidade</b></th>";

						echo "<th style=\"color: #000;\" width=\"40\"><b>Reativo</b></th>";
						break;
					case Contratos::ADENDO:
						echo "<th style=\"color: #000;\" width=\"40\"><b>Dia de <br>Venc.</b></th>";
						echo "<th style=\"color: #000;\" width=\"60\"><b>Valor <br>Mensalidade</b></th>";

						echo "<th style=\"color: #000;\" width=\"50\"><b>In&iacute;cio Cobran&ccedil;a</b></th>";
						echo "<th style=\"color: #000;\" width=\"60\"><b>Prim. <br>Mensalidade</b></th>";
						break;

					case Contratos::PEDIDO_IMPLANTACAO:
					case Contratos::PEDIDO_REATIVACAO:
						echo "<th style=\"color: #000;\" width=\"60\"><b>Data de <br>Vencimento</b></th>";
						echo "<th style=\"color: #000;\" width=\"60\"><b>Valor <br>Parcela</b></th>";
					default:
						# code...
						break;
				}
			echo "</tr>";
		echo "</thead>";
		$cont++;
	}

	$MAXIMO_LINHAS = 40;
	foreach ($allDocumentos as $tipoDocumento => $documentos) {
		echo "<h1>" . Util::getTipoDocumento($tipoDocumento) . "</h1>";

		$contHeader = 0;
		if (isset($pesquisa)) {
			echo "<h2>Filtros</h2>";

			$one = 0;
				$unidade = "";
				$vendedor = "";
				$tpDoc = "";
				$situacaoDocumento = "";
			$two = 0;
				$tipoAssinatura = "";
				$dtCadastro = "";
				$dtCadastroFinal = "";
				$dtAtividade = "";
			$three = 0;
				$dtAtividadeFinal = "";
				$dtIniCob = "";
				$dtIniCobFinal = "";
				$dtPrimCob = "";
			$four = 0;
				$dtPrimCobFinal = "";
				$razaoSocial = "";
				$servicoAdendo = "";
				$produto = "";
			$five = 0;
				$vlrMensal = "";
				$vlrMensalFinal = "";
				$sintetic = "";
				$status = "";

			$keys = array_keys($documentos);
			$firstKey = reset($keys);

			$un = "-";
			if (!empty($pesquisa['COT_IDREVENDA'])) {
				$un     = $documentos[$firstKey]->Revenda->REV_FANTASIA ?? "-";
				$one++;
			}
			$unidade = "<span>{$un}</span>";

			$seller = "-";
			if( !empty($pesquisa['COT_IDVENDEDOR'])) {
				$seller = $documentos[$firstKey]->Vendedor->FUN_NOME ?? "-";
				$one++;
			}
			$vendedor = "<span>{$seller}</span>";

			$situacao = "Todos";
			if(!empty($pesquisa['COT_SITUACAO'])){
				if (is_array($pesquisa['COT_SITUACAO'])) {
					$situacao = array();
					foreach($pesquisa['COT_SITUACAO'] as $sit){
						$situacao[] = Util::translateArrayKey($sit, 'tipoDocumento');
					}
					$situacao = implode(', ', $situacao);
				} else {
					$situacao = Util::translateArrayKey($pesquisa['COT_SITUACAO'], 'tipoDocumento');
				}
				$one++;
			}
			$tpDoc =  "<span>{$situacao}</span>";

			$categoria = "Todas";
			if (!empty($pesquisa['COT_CATDOCUMENTO'])) {
				if (is_array($pesquisa['COT_CATDOCUMENTO'])) {
					$situacao = array();
					foreach($pesquisa['COT_CATDOCUMENTO'] as $sit){
						$situacao[] = Util::translateArrayKey($sit, 'documentosSituacao');
					}
					$categoria = implode(', ', $situacao);
				} else {
					$categoria = Util::translateArrayKey($pesquisa['COT_CATDOCUMENTO'], 'documentosSituacao');
				}
				$one++;
			}
			$situacaoDocumento = "<span>{$categoria}</span>";

			$tipoAssinatura = "Todas";
			if (!empty($pesquisa['COT_TIPOASSINATURA'])) {
				switch ($pesquisa['COT_TIPOASSINATURA']) {
					case '2':
						$tipoAssinatura = "Assinado Manualmente";
					break;
					case '3':
						$tipoAssinatura = "Li e Aceito";
					break;

					default:
						$tipoAssinatura = "Todos";
					break;
				}
				$two++;
			}
			$tipoAssinatura =  "<span>{$tipoAssinatura}</span>";

			$dataCadastro = "-";
			if (!empty($pesquisa['COT_DTCADASTRO'])) {
				$dataCadastro = $pesquisa['COT_DTCADASTRO'];
				$two++;
			}
			$dtCadastro = "<span>{$dataCadastro}</span>";

			$dataCadastroFinal = "-";
			if (!empty($pesquisa['COT_DTCADASTRO_FINAL'])) {
				$dataCadastroFinal = $pesquisa['COT_DTCADASTRO_FINAL'];
				$two++;
			}
			$dtCadastroFinal =  "<span>{$dataCadastroFinal}</span>";

			$dataAtivacao = "-";
			if (!empty($pesquisa['COT_DTATIVACAO'])) {
				$dataAtivacao = $pesquisa['COT_DTATIVACAO'];
				$two++;
			}
			$dtAtividade = "<span>{$dataAtivacao}</span>";

			$dataAtivacaoFinal = "-";
			if (!empty($pesquisa['COT_DTATIVACAO_FINAL'])) {
				$dataAtivacaoFinal = $pesquisa['COT_DTATIVACAO_FINAL'];
				$three++;
			}
			$dtAtividadeFinal =  "<span>{$dataAtivacaoFinal}</span>";

			$dataInicioCobranca = "-";
			if (!empty($pesquisa['COT_DTINICOBRANCA'])) {
				$dataInicioCobranca = $pesquisa['COT_DTINICOBRANCA'];
				$three++;
			}
			$dtIniCob = "<span>{$dataInicioCobranca}</span>";

			$dataInicioCobrancaFinal = "-";
			if (!empty($pesquisa['COT_DTINICOBRANCA_FINAL'])) {
				$dataInicioCobrancaFinal = $pesquisa['COT_DTINICOBRANCA_FINAL'];
				$three++;
			}
			$dtIniCobFinal =  "<span>{$dataInicioCobrancaFinal}</span>";

			$dataPrimeiraCobranca = "-";
			if (!empty($pesquisa['COT_DTPRICOBRANCA'])) {
				$dataPrimeiraCobranca = $pesquisa['COT_DTPRICOBRANCA'];
				$three++;
			}
			$dtPrimCob = "<span>{$dataPrimeiraCobranca}</span>";

			$dataPrimeiraCobrancaFinal = "-";
			if (!empty($pesquisa['COT_DTPRICOBRANCA_FINAL'])) {
				$dataPrimeiraCobrancaFinal = $pesquisa['COT_DTPRICOBRANCA_FINAL'];
				$four++;
			}
			$dtPrimCobFinal =  "<span>{$dataPrimeiraCobrancaFinal}</span>";

			$razSocial = "-";
			if (!empty($pesquisa['COT_CLI_NOME'])) {
				$razSocial = $pesquisa['COT_CLI_NOME'];
				$four++;
			}
			$razaoSocial = "<span>{$razSocial}</span>";

			$servico = "-";
			if (isset($pesquisa['COT_IDSERVICO'])) {
				if (is_array($pesquisa['COT_IDSERVICO'])) {
					$situacao = array();
					foreach($pesquisa['COT_IDSERVICO'] as $sit){
						$situacao[] = Util::translateArrayKey($sit, 'servicosAdendo');
					}
					$servico = implode(', ', $situacao);
				} else {
					$servico = Util::translateArrayKey($pesquisa['COT_IDSERVICO'], 'servicosAdendo');
				}
				$four++;
			}
			$servicoAdendo = "<span>{$servico}</span>";

			$produto = "Todos";
			if (isset($pesquisa['COT_IDPRODUTO'])) {
				if (is_array($pesquisa['COT_IDPRODUTO'])) {
					$situacao = array();
					foreach($pesquisa['COT_IDPRODUTO'] as $sit){
						$situacao[] = Util::translateArrayKey($sit, 'produtosList');
					}
					$produto = implode(', ', $situacao);
				} else {
					$produto = Util::translateArrayKey($pesquisa['COT_IDPRODUTO'], 'produtosList');
				}
				$four++;
			}
			$produto =  "<span>{$produto}</span>";

			$valorMensal = "-";
			if (!empty($pesquisa['COT_VLRMENSAL'])) {
				$valorMensal = Util::formatMoeda($pesquisa['COT_VLRMENSAL']);
				$five++;
			}
			$vlrMensal =  "<span>{$valorMensal}</span>";

			$valorMensalFinal = "-";
			if (!empty($pesquisa['COT_VLRMENSAL_FINAL'])) {
				$valorMensalFinal = Util::formatMoeda($pesquisa['COT_VLRMENSAL_FINAL']);
				$five++;
			}
			$vlrMensalFinal = "<span>{$valorMensalFinal}</span>";

			$sintetico = "N&atilde;o";
			if(!empty($pesquisa['SINTETICO'])){
				$sintetico = $pesquisa['SINTETICO'];
				$five++;
			}
			$sintetic =  "<span>{$sintetico}</span>";

			$statusDocumento = "Todos";
			if (isset($pesquisa['COT_STATUS'])) {
				if (is_array($pesquisa['COT_STATUS'])) {
					$situacao = array();
					foreach($pesquisa['COT_STATUS'] as $sit){
						$situacao[] = Util::translateArrayKey($sit, 'documentoStatus');
					}
					$statusDocumento = implode(', ', $situacao);
				} else {
					$statusDocumento = Util::translateArrayKey($pesquisa['COT_STATUS'], 'documentoStatus');
				}
				$five++;
			}
			$status = "<span>{$statusDocumento}</span>";

			if ($one > 0) {
				echo "<table border=\"1\" cellpadding=\"2\">";
					echo "<thead>";
						echo "<tr>";
							echo "<td><strong>Unidade</strong></td>";
							echo "<td><strong>Vendedor</strong></td>";
							echo "<td><strong>Tipo de Documento</strong></td>";
							echo "<td><strong>Situa&ccedil;&atilde;o do Documento</strong></td>";
						echo "</tr>";
					echo "</thead>";
					echo "<tbody>";
						echo "<tr>";
							echo "<td>{$unidade}</td>";
							echo "<td>{$vendedor}</td>";
							echo "<td>{$tpDoc}</td>";
							echo "<td>{$situacaoDocumento}</td>";
						echo "</tr>";
					echo "</tbody>";
				echo "</table>";

				$contHeader += 2;
			}
			if ($two > 0) {
				echo "<table border=\"1\" cellpadding=\"2\">";
					echo "<thead>";
						echo "<tr>";
							echo "<td><strong>Tipo de Assinatura</strong></td>";
							echo "<td><strong>Data de Cadastro</strong></td>";
							echo "<td><strong>Data de Cadastro Final</strong></td>";
							echo "<td><strong>Data de Ativa&ccedil;&atilde;o</strong></td>";
						echo "</tr>";
					echo "</thead>";
					echo "<tbody>";
						echo "<tr>";
							echo "<td>{$tipoAssinatura}</td>";
							echo "<td>{$dtCadastro}</td>";
							echo "<td>{$dtCadastroFinal}</td>";
							echo "<td>{$dtAtividade}</td>";
						echo "</tr>";
					echo "</tbody>";
				echo "</table>";

				$contHeader += 2;
			}
			if ($three > 0) {
				echo "<table border=\"1\" cellpadding=\"2\">";
					echo "<thead>";
						echo "<tr>";
							echo "<td><strong>Data de Ativa&ccedil;&atilde;o Final</strong></td>";
							echo "<td><strong>Data de In&iacute;cio de Cobran&ccedil;a</strong></td>";
							echo "<td><strong>Data de In&iacute;cio de Cobran&ccedil;a Final</strong></td>";
							echo "<td><strong>Data de Primeira Cobran&ccedil;a</strong></td>";
						echo "</tr>";
					echo "</thead>";
					echo "<tbody>";
						echo "<tr>";
							echo "<td>{$dtAtividadeFinal}</td>";
							echo "<td>{$dtIniCob}</td>";
							echo "<td>{$dtIniCobFinal}</td>";
							echo "<td>{$dtPrimCob}</td>";
						echo "</tr>";
					echo "</tbody>";
				echo "</table>";

				$contHeader += 2;
			}
			if ($four > 0) {
				echo "<table border=\"1\" cellpadding=\"2\">";
					echo "<thead>";
						echo "<tr>";
							echo "<td><strong>Data de Primeira Cobran&ccedil;a Final</strong></td>";
							echo "<td><strong>Raz&atilde;o Social</strong></td>";
							echo "<td><strong>Servi&ccedil;o dos Adendos</strong></td>";
							echo "<td><strong>Produto</strong></td>";
						echo "</tr>";
					echo "</thead>";
					echo "<tbody>";
						echo "<tr>";
							echo "<td>{$dtPrimCobFinal}</td>";
							echo "<td>{$razaoSocial}</td>";
							echo "<td>{$servicoAdendo}</td>";
							echo "<td>{$produto}</td>";
						echo "</tr>";
					echo "</tbody>";
				echo "</table>";

				$contHeader += 2;
			}
			if ($five > 0) {
				echo "<table border=\"1\" cellpadding=\"2\">";
					echo "<thead>";
						echo "<tr>";
							echo "<td><strong>Valor Mensal</strong></td>";
							echo "<td><strong>Valor Mensal Final</strong></td>";
							echo "<td><strong>Sint&eacute;tico</strong></td>";
							echo "<td><strong>Status</strong></td>";
						echo "</tr>";
					echo "</thead>";
					echo "<tbody>";
						echo "<tr>";
							echo "<td>{$vlrMensal}</td>";
							echo "<td>{$vlrMensalFinal}</td>";
							echo "<td>{$sintetic}</td>";
							echo "<td>{$status}</td>";
						echo "</tr>";
					echo "</tbody>";
				echo "</table>";

				$contHeader += 2;
			}
		} // filtros pesquisa

		echo "<h2>Resultados</h2>";
		echo "<table border=\"1\" cellpadding=\"2\">";
			lineHeader($tipoDocumento, $cont);

			if ($contHeader > 0) {
				$cont = $contHeader + 8;
			} else {
				$cont = 2;
			}

			usort($documentos, function ($item1, $item2) {
				return $item1['COT_CLI_NOME'] <=> $item2['COT_CLI_NOME'];
			});

			$totalDocumento = 0.00;
			$quebrarPagina = false;
			echo "<tbody>";
				foreach ($documentos as $key => $documento) {
					if ($quebrarPagina) {
						$cont = 0;
						$quebrarPagina = false;

						/*echo '</table>';
						echo '<br pagebreak="true"\>';
						echo "<table border=\"1\" cellpadding=\"2\">";
						lineHeader($tipoDocumento, $cont);*/
					}
					echo "<tr>";

						echo "<td width=\"40\">";
							$url = Yii::app()->createAbsoluteUrl('contratos/view', ['id' => $documento['COT_IDCONTRATO']]);
							echo "<a href=\"{$url}\" target=\"_blank\">";
								echo $documento['COT_IDCONTRATO'];
							echo "</a>";
						echo "</td>";

						if ($documento['COT_SITUACAO'] == Contratos::CONTRATO) {
							echo "<td width=\"137\">";
						} else if ($documento['COT_SITUACAO'] == Contratos::ADENDO) {
							echo "<td width=\"177\">";
						} else {
							echo "<td width=\"267\">";
						}

							echo trim($documento['COT_CLI_NOME']);
						echo "</td>";

						echo "<td width=\"90\">";
							echo Util::mask($documento['COT_CLI_CNPJCPF'], Mask::DOCUMENTO);
						echo "</td>";

						echo "<td width=\"50\">";
							echo $documento['COT_DTATIVACAO'];
						echo "</td>";

						if (!in_array($documento['COT_SITUACAO'], [Contratos::PEDIDO_IMPLANTACAO, Contratos::PEDIDO_REATIVACAO])) {

							echo "<td width=\"40\">";
								if (isset($documento->Cliente)) {
									echo $documento->Cliente->CLI_DIAVENCIMENTO;
								} else {
									echo "-";
								}
							echo "</td>";

							echo "<td width=\"60\">";
								$totalDocumento += $documento['COT_VLRMENSAL'];
								echo Util::verMoeda($documento['COT_VLRMENSAL']);
							echo "</td>";

							if ($documento['COT_SITUACAO'] == Contratos::CONTRATO ||
								$documento['COT_SITUACAO'] == Contratos::ADENDO ) {

								echo "<td width=\"50\">";
									echo $documento['COT_DTINICOBRANCA'];
								echo "</td>";

								echo "<td width=\"60\">";
									echo $documento['COT_DTPRICOBRANCA'];
								echo "</td>";
							}

							if ($documento['COT_SITUACAO'] == Contratos::CONTRATO) {
								echo "<td width=\"40\">";
									$DocumentoVinculado = Contratos::model()->findByPk($documento['COT_DOCUMENTOVINCULADO']);

									if(isset($DocumentoVinculado->COT_SITUACAO) &&
									   $DocumentoVinculado->COT_SITUACAO == Contratos::PEDIDO_REATIVACAO &&
									   $DocumentoVinculado->COT_CRIARNOVOCONTRATO == true) {
										echo "Sim";
									} else {
										echo "-";
									}

								echo "</td>";
							}
						} else {
							echo "<td colspan=\"2\" width=\"120\"></td>";
						}
					echo "</tr>";

					if (
						in_array($documento->COT_SITUACAO, [
							Contratos::PEDIDO_IMPLANTACAO, Contratos::PEDIDO_REATIVACAO
						]) &&
						!empty($documento->Vencimentos)
					) {
						$subTotal = 0.00;
						$contVencimentos = $cont + count($documento->Vencimentos);
						if ($contVencimentos > $MAXIMO_LINHAS) {
							$quebrarPagina = true;
						}
						foreach ($documento->Vencimentos as $i => $vencimento) {
							$i++;
							echo "<tr>";
								echo "<td width=\"40\">" . $i . "</td>";
								echo "<td width=\"357\"></td>";
								echo "<td width=\"50\">";
								echo "</td>";
								echo "<td width=\"60\">";
									echo $vencimento->COV_DATA;
								echo "</td>";
								echo "<td width=\"60\">";
									$subTotal += $vencimento->COV_VALOR;
									echo Util::verMoeda($vencimento->COV_VALOR);
								echo "</td>";
							echo "</tr>";
							$cont++;
						}
						echo "<tr>";
							echo "<th colspan=\"4\" align=\"right\"><b>SUBTOTAL</b></th>";
							echo "<td>";
								$totalDocumento += $subTotal;
								echo Util::verMoeda($subTotal);
							echo "</td>";
						echo "</tr>";
						$cont+=2;
					}

					/*if (!in_array($tipoDocumento, [Contratos::PEDIDO_IMPLANTACAO, Contratos::PEDIDO_REATIVACAO]) && $cont == $MAXIMO_LINHAS) {
						$quebrarPagina = true;
					}*/
					$cont++;
				}
				echo "<tr>";
					if (!in_array($tipoDocumento, [Contratos::PEDIDO_IMPLANTACAO, Contratos::PEDIDO_REATIVACAO])) {
						echo "<td colspan=\"3\"></td>";
					} else {
						echo "<td colspan=\"2\"></td>";
					}
					echo "<th colspan=\"2\"><b>TOTAL</b></th>";
					echo "<td>";
						echo Util::verMoeda($totalDocumento);
					echo "</td>";
					if ($tipoDocumento == Contratos::CONTRATO) {
						echo "<td></td>";
					}
				echo "</tr>";
			echo "</tbody>";
		echo "</table>";
		if ($tipoDocumento != $ultimoTipo) {
			echo '<br pagebreak="true"\>';
		}
	}

	$HTML = ob_get_contents();
	ob_end_clean();

	$pdf->writeHTML(utf8_encode($HTML), true, 0, true, true);
	$pdf->Output($generatePath.'.pdf', "FI");
	// die;
?>