<?php 

	if (Session::get("tipo_usuario") != "1"){ show_403();}
	if ($_SERVER["REQUEST_METHOD"] == "POST") {
		import_file(DIR_MODELS."Model.class.php");
		import_file(DIR_LIBRARIES."functions.php");

		$tipo = filter_input(INPUT_POST, "tipo_pagamento", FILTER_SANITIZE_STRING);

		$model = new Model();

		$config = obter_configuracao();

		$total_pago = 0;

		$usuarios = $model->query("
			SELECT * FROM usuario 
			WHERE
				status_usuario = 'S' AND 
				usuario_ativo = 'S' AND 
				(
					id_tipo_usuario = 1 OR 
					id_tipo_usuario = 2
				) 
			ORDER BY 
				id_usuario ASC
		");

		if ($tipo == "com-compressao") {
			$tipo_pagamento = "Com Compressão";

			foreach ($usuarios->fetchAll() as $dados) {
				if (qualificado($dados->id_usuario)) {
					$arvore = obter_arvore_comprimida($dados->id_usuario);
					$total = 0;

					if ($config->tipo_comissao_rede == 1) {
						for ($i=1; $i <= count($arvore); $i++) {
							for ($j=0; $j < count($arvore[$i]); $j++) {
								$total += obter_valor_total_por_nivel($arvore[$i][$j][0], $i);
							}
						}
					}
					else{
						for ($i=1; $i <= count($arvore); $i++) {
							for ($j=0; $j < count($arvore[$i]); $j++) {
								$total_cashback = 0;
								$result = obter_valor_rede_usuario($arvore[$i][$j][0], $i);

								$total += $result[0][0];

								for ($k=1; $k < count($result); $k++) {
									$total_cashback += ($result[$k][1]/2);
								}

								$result = $model->insert("entrada", [
									"id_usuario" => $arvore[$i][$j][0],
									"valor_entrada" => $total_cashback,
									"descricao_entrada" => "Pagamento de Retorno de Rede Referente as Compras Realizadas no Mês de ".utf8_encode(ucfirst(strftime("%B de %Y", strtotime("today")))),
									"datahora_entrada" => date("Y-m-d H:i:s"),
									"status_entrada" => "S"
								]);

								$total_pago += $total_cashback;	
							}
						}
					}

					$total_pago += $total;

					if ($total > 0) {
						$result = $model->insert("entrada", [
							"id_usuario" => $dados->id_usuario,
							"valor_entrada" => $total,
							"descricao_entrada" => "Pagamento de Bonus da Rede Referente ao Mês de ".utf8_encode(ucfirst(strftime("%B de %Y", strtotime("today")))),
							"datahora_entrada" => date("Y-m-d H:i:s"),
							"status_entrada" => "S"
						]);

						if ($result > 0) {
							$last_query = $model->lastQuery();
							$model->insert("historico", [
								"comando_sql" => $last_query,
								"datahora_acao" => date("Y-m-d H:i:s"),
								"id_usuario" => Session::get("tipo_usuario")
							]);
						}
						else{
							$model->rollback();
							echo "<script>window.location.href='".show_link("/pagamentos/?status=false")."'</script>";
							exit();
						}
					}

					// Pagamento de Plano de Rede de compra de nas loja física
					$total_rede_loja = 0;

					for ($i=1; $i <= count($arvore); $i++) {
						for ($j=0; $j < count($arvore[$i]); $j++) {
							$total_rede_loja += obter_valor_rede_loja_usuario($arvore[$i][$j][0], $i);
						}
					}

					if ($total_rede_loja > 0) {
						$result = $model->insert("entrada", [
							"id_usuario" => $dados->id_usuario,
							"valor_entrada" => $total_rede_loja,
							"descricao_entrada" => "Pagamento de Plano de Rede de Compras nas Loja Físicas Referente ao Mês de ".utf8_encode(ucfirst(strftime("%B de %Y", strtotime("today")))),
							"datahora_entrada" => date("Y-m-d H:i:s"),
							"status_entrada" => "S"
						]);

						if ($result > 0) {
							$last_query = $model->lastQuery();
							$model->insert("historico", [
								"comando_sql" => $last_query,
								"datahora_acao" => date("Y-m-d H:i:s"),
								"id_usuario" => Session::get("tipo_usuario")
							]);
						}
						else{
							$model->rollback();
							echo "<script>window.location.href='".show_link("/pagamentos/?status=false")."'</script>";
							exit();
						}

						$total_pago += $total_rede_loja;	
					}
				}
			}
		}
		else{
			$tipo_pagamento = "Sem Compressão";

			foreach ($usuarios->fetchAll() as $dados) {
				if (qualificado($dados->id_usuario)) {
					$arvore = obter_arvore_incomprimida($dados->id_usuario);
					$total = 0;

					if ($config->tipo_comissao_rede == 1) {
						for ($i=1; $i <= count($arvore); $i++) {
							for ($j=0; $j < count($arvore[$i]); $j++) {
								$total += obter_valor_total_por_nivel($arvore[$i][$j][0], $i);
							}
						}
					}
					else{
						for ($i=1; $i <= count($arvore); $i++) {
							for ($j=0; $j < count($arvore[$i]); $j++) {
								$total_cashback = 0;
								$result = obter_valor_rede_usuario($arvore[$i][$j][0], $i);

								$total += $result[0][0];

								for ($k=1; $k < count($result); $k++) {
									$total_cashback += ($result[$k][1]/2);
								}

								$result = $model->insert("entrada", [
									"id_usuario" => $arvore[$i][$j][0],
									"valor_entrada" => $total_cashback,
									"descricao_entrada" => "Pagamento de Retorno de Rede Referente as Compras Realizadas no Mês de ".utf8_encode(ucfirst(strftime("%B de %Y", strtotime("today")))),
									"datahora_entrada" => date("Y-m-d H:i:s"),
									"status_entrada" => "S"
								]);

								$total_pago += $total_cashback;	
							}
						}
					}

					$total_pago += $total;

					if ($total > 0) {
						$result = $model->insert("entrada", [
							"id_usuario" => $dados->id_usuario,
							"valor_entrada" => $total,
							"descricao_entrada" => "Pagamento de Bonus da Rede Referente ao Mês de ".utf8_encode(ucfirst(strftime("%B de %Y", strtotime("today")))),
							"datahora_entrada" => date("Y-m-d H:i:s"),
							"status_entrada" => "S"
						]);

						if ($result > 0) {
							$last_query = $model->lastQuery();
							$model->insert("historico", [
								"comando_sql" => $last_query,
								"datahora_acao" => date("Y-m-d H:i:s"),
								"id_usuario" => Session::get("tipo_usuario")
							]);
						}
						else{
							$model->rollback();
							echo "<script>window.location.href='".show_link("/pagamentos/?status=false")."'</script>";
							exit();
						}
					}

					// Pagamento de Plano de Rede de compra de nas loja física
					$total_rede_loja = 0;

					for ($i=1; $i <= count($arvore); $i++) {
						for ($j=0; $j < count($arvore[$i]); $j++) {
							$total_rede_loja += obter_valor_rede_loja_usuario($arvore[$i][$j][0], $i);
						}
					}

					if ($total_rede_loja > 0) {
						$result = $model->insert("entrada", [
							"id_usuario" => $dados->id_usuario,
							"valor_entrada" => $total_rede_loja,
							"descricao_entrada" => "Pagamento de Cashback de Compras nas Loja Físicas Referente ao Mês de ".utf8_encode(ucfirst(strftime("%B de %Y", strtotime("today")))),
							"datahora_entrada" => date("Y-m-d H:i:s"),
							"status_entrada" => "S"
						]);

						if ($result > 0) {
							$last_query = $model->lastQuery();
							$model->insert("historico", [
								"comando_sql" => $last_query,
								"datahora_acao" => date("Y-m-d H:i:s"),
								"id_usuario" => Session::get("tipo_usuario")
							]);
						}
						else{
							$model->rollback();
							echo "<script>window.location.href='".show_link("/pagamentos/?status=false")."'</script>";
							exit();
						}

						$total_pago += $total_rede_loja;	
					}
				}
			}
		}

		$valor_rede = (obter_valor_total_rede() + obter_valor_total_rede_loja());

		$valor_restante = ($valor_rede - $total_pago);

		if ($valor_restante > 0) {
			$result = $model->insert("entrada", [
				"id_usuario" => 1,
				"valor_entrada" => $valor_restante,
				"descricao_entrada" => "Recebimento das Sobras da Rede Referente ao Mês de ".utf8_encode(ucfirst(strftime("%B de %Y", strtotime("today")))),
				"datahora_entrada" => date("Y-m-d H:i:s"),
				"status_entrada" => "S"
			]);

			if ($result > 0) {
				$last_query = $model->lastQuery();
				$model->insert("historico", [
					"comando_sql" => $last_query,
					"datahora_acao" => date("Y-m-d H:i:s"),
					"id_usuario" => Session::get("tipo_usuario")
				]);
			}
			else{
				$model->rollback();
				echo "<script>window.location.href='".show_link("/pagamentos/?status=false")."'</script>";
				exit();
			}
		}

		$result = $model->insert("pagamento", [
			"tipo_pagamento" => $tipo_pagamento,
			"data_pagamento" => date("Y-m-t"),
			"hora_pagamento" => date("H:i:s"),
			"id_usuario" => Session::get("id_usuario")
		]);

		if ($result > 0) {
			$last_query = $model->lastQuery();
			$model->insert("historico", [
				"comando_sql" => $last_query,
				"datahora_acao" => date("Y-m-d H:i:s"),
				"id_usuario" => Session::get("tipo_usuario")
			]);

			$model->commit();
			echo "<script>window.location.href='".show_link("/pagamentos/?status=true")."'</script>";
		}
		else{
			$model->rollback();
			echo "<script>window.location.href='".show_link("/pagamentos/?status=false")."'</script>";
		}
	}
	else{
		show_403();
	}

?>