<?php
namespace App\Controller;

use App\Definition\Controller;
use Incoviba\old\Venta\Venta;
use Incoviba\old\Venta\Pago;
use Carbon\Carbon;
use Incoviba\old\Venta\Escritura;
use Incoviba\old\Common\Banco;
use Incoviba\old\Venta\Credito;
use Incoviba\old\Venta\Subsidio;
use Incoviba\old\Venta\EstadoPago;
use Incoviba\old\Venta\TipoEstadoVenta;
use Incoviba\old\Venta\EstadoVenta;

class Escrituras
{
	use Controller;

	protected static function setDefault()
	{
		self::$default = view('construccion');
	}
	public static function add()
	{
		$id = get('venta');
		if ($id == null) {
			header('Location: .');
		}
		$venta = \Model::factory(Venta::class)->findOne($id);
		return view('ventas.escrituras.add', compact('venta'));
	}
	public static function agregar()
	{
		$id = get('venta');
		$venta = \Model::factory(Venta::class)->findOne($id);

		$f = Carbon::createFromDate(post('escritura_year'), post('escritura_month'), post('escritura_day'), config('app.timezone'));
		$venta->escriturado = $f->format('Y-m-d');

		if (post('valor_reajuste')) {
			$reajuste = \Model::factory(Pago::class)->create();
			$reajuste->valor = correctNumber(post('valor_reajuste'));
			$fp = Carbon::createFromDate(post('reajuste_year'), post('reajuste_month'), post('reajuste_day'), config('app.timezone'));
			$reajuste->fecha = $fp->format('Y-m-d');
			$reajuste->uf = (float) uf($fp)->uf->value;
			$reajuste->newPagado();

			$pie = $venta->pie();
			$pie->reajuste = $reajuste->id;
			$pie->save();
		}
		if (post('escritura_valor') or post('escritura_valor_uf')) {
			$pago = \Model::factory(Pago::class)->create();
			$fp = Carbon::createFromDate(post('pago_escritura_year'), post('pago_escritura_month'), post('pago_escritura_day'), config('app.timezone'));
			$pago->fecha = $fp->format('Y-m-d');
			$pago->uf = (float) uf($fp)->uf->value;
			if (post('escritura_valor')) {
				$pago->valor = correctNumber(post('escritura_valor'));
				$pago->newPagado();
			} else {
				$pago->valor = correctNumber(post('escritura_valor_uf')) * $pago->uf;
				$pago->new();
			}

			$escritura = \Model::factory(Escritura::class)->create();
			$escritura->pago = $pago->id;
			$escritura->valor = $pago->valor('uf');
			$escritura->fecha = $pago->fecha;
			$escritura->save();

			$venta->escritura = $escritura->id;
		}
		if (post('subsidio_ahorrado') or post('subsidio_valor')) {
			$total = post('subsidio_ahorrado') + post('subsidio_valor');
			$subsidio = \Model::factory(Subsidio::class)->create();
			$pago = \Model::factory(Pago::class)->create();
			$pago->fecha = $f->format('Y-m-d');
			$pago->uf = (float) uf($f)->uf->value;
			$pago->valor = correctNumber(post('subsidio_ahorrado')) * $pago->uf;
			$pago->new();
			$subsidio->pago = $pago->id;
			$pago = \Model::factory(Pago::class)->create();
			$pago->fecha = $f->format('Y-m-d');
			$pago->uf = (float) uf($f)->uf->value;
			$pago->valor = correctNumber(post('subsidio_valor')) * $pago->uf;
			$pago->new();
			$subsidio->subsidio = $pago->id;
			$subsidio->save();

			$venta->subsidio = $subsidio->id;
		}
		if (post('credito_valor')) {
			$pago = \Model::factory(Pago::class)->create();
			$pago->fecha = $f->format('Y-m-d');
			$pago->uf = (float) uf($f)->uf->value;
			$valor = post('credito_valor');
			if (strpos($valor, ',') !== false) {
				$valor = correctNumber($valor);
			}
			$pago->valor = $valor * $pago->uf;
			$banco = \Model::factory(Banco::class)->where('nombre', post('credito_banco'))->findOne();
			$pago->banco = $banco->id;
			$pago->new();

			$credito = \Model::factory(Credito::class)->create();
			$credito->pago = $pago->id;
			$credito->save();

			$venta->credito = $credito->id;
		} elseif (post('credito_banco')) {
			$pago = $venta->credito()->pago();
			$banco = \Model::factory(Banco::class)->where('nombre', post('credito_banco'))->findOne();
			$pago->banco = $banco->id;
			$pago->save();
		}

		$tipo = \Model::factory(TipoEstadoVenta::class)->where('descripcion', 'escriturando')->findOne();
		$data = [
		'venta' => $venta->id,
		'estado' => $tipo->id,
		'fecha' => $venta->escriturado
		];
		$estado = \Model::factory(EstadoVenta::class)->create($data);
		$estado->save();
		$venta->save();
		header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $venta->id]));
	}
	public static function edit()
	{
		$id = get('venta');
		$venta = \Model::factory(Venta::class)->findOne($id);
		echo view('ventas.escrituras.edit', compact('venta'));
	}
	public static function editar()
	{
		$id = get('venta');
		$venta = \Model::factory(Venta::class)->findOne($id);
		$f = Carbon::createFromDate(post('year'), post('month'), post('day'), config('app.timezone'));
		$uf = uf($f);

		$valor = correctNumber(post('valor'));
		if ($valor == '') {
			$valor_uf = correctNumber(post('valor_uf'));
			$valor = $valor_uf * $uf->uf->value;
		}
		$pago = $venta->escritura()->pago();
		if ($pago->valor != $valor) {
			$pago->valor = $valor;
		}
		if ($pago->fecha != $f->format('Y-m-d')) {
			$pago->fecha = $f->format('Y-m-d');
			$pago->uf = $uf->uf->value;
		}

		$pago->save();
		header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $venta->id]));
	}
	public static function informe()
	{
		$id = get('venta');
		$venta = \Model::factory(Venta::class)->findOne($id);
		return view('ventas.escrituras.informe', compact('venta'));
	}
	public static function pagar()
	{
		$id = get('venta');
		$venta = model(Venta::class)->findOne($id);

		return view('ventas.escrituras.pagar', compact('venta'));
	}
	public static function pagado()
	{
		$id = get('venta');
		$venta = model(Venta::class)->findOne($id);

		$f = Carbon::createFromDate(post('year'), post('month'), post('day'), config('app.timezone'));

		$data = [
				'pago' => $venta->escritura()->pago()->id,
				'fecha' => $f->format('Y-m-d'),
				'estado' => 1
		];
		$estado = model(EstadoPago::class)->create($data);
		$estado->save();
		header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $venta->id]));
	}
	public static function abonar()
	{
		$id = get('venta');
		$venta = model(Venta::class)->findOne($id);

		return view('ventas.escrituras.abonar', compact('venta'));
	}
	public static function abonado()
	{
		$id = get('venta');
		$venta = model(Venta::class)->findOne($id);

		$f = Carbon::createFromDate(post('year'), post('month'), post('day'), config('app.timezone'));

		$data = [
				'pago' => $venta->escritura()->pago()->id,
				'fecha' => $f->format('Y-m-d'),
				'estado' => 2
		];
		$estado = model(EstadoPago::class)->create($data);
		$estado->save();
		header('Location: ' . url('', ['p' => 'ventas', 'a' => 'show', 'venta' => $venta->id]));
	}
}
?>
