<?php
//Llamada al modelo
require 'model/bank_accounts_model.php';

class bank_accounts_controller
{
/**
* Validar entrada de datos.
*
*Funcion para validar entrada de datos antes de ir a la funcion de insercion o edicion. Chequeo de longitud de valores,tipo de datos,duplicidad de datos,existencia*
*
* @return Array [msg=> mensaje del error, status=> F = flase T = true] 
* @param Method POST 
*/
public function validate_bank_account($bancos,$titular,$num_cuenta,$status,$id){
	$per=new bank_accounts_model();
	if (strlen($titular) > 50 || empty($titular)) {
		$datos = array('msg' => 'El titular no debe estar vacío ni exceder los 50 caracteres','status' => false ,'code' => 400);
		return $datos;
	}
	if (strlen($num_cuenta) > 20 || empty($num_cuenta)) {
		$datos = array('msg' => 'Numero de cuenta no debe estar vacío ni exceder los 20 caracteres','status' => false ,'code' => 400);
		return $datos;
	}
	if (!is_null($status) && $status > 2) {
		$datos = array('msg' => 'Status invalid','status' => false ,'code' => 400);
		return $datos;
	}
	$valid=$per->query_banks($bancos);
	if (count($valid) == 0) {
		$datos = array('msg' => 'Error! Banco no existe','status' => false ,'code' => 400);
		return $datos;
	}
	if (!is_null($id)) {
		$valid=$per->check_bank_account($id);
		if (!$valid) {
			$datos = array('msg' => 'Cuenta no existe','status' => false ,'code' => 400);
			return $datos;
		}
	}
	$valid=$per->check_number($num_cuenta,$id);
	if (!$valid) {
		$datos = array('msg' => 'Error! Numero de cuenta existe','status' => false ,'code' => 400);
		return $datos;
	}
	$datos = array('msg' => 'GOOD','status' =>true);
	return $datos;
}

/**
* Consulta de cuentas.
*
*Funcion para consultar cuentas registrados para llenar input*
*
* @return Array msg=mensaje,status,datos=array de la consulta 
* @param 
*/
public function query_bank_accounts(){
	$per=new bank_accounts_model();
	$datos=$per->query_bank_accounts(NULL);
	foreach ($datos as &$value) {
	    $saldos=$per->query_balance($value['id']);
	    $saldo=$saldos[0]["saldo"];
		$saldo=number_format($saldo,2,',','.');
		$value['saldo']=$saldo;
	}
	$datos1 = array('msg' => $_SESSION['lang']['TABLA'],'status' => true,'datos' => $datos);
	return $datos1;
}
/**
* Consulta de bancos.
*
*Funcion para consultar bancos registrados para llenar input*
*
* @return Array msg=mensaje,status,datos=array de la consulta 
* @param 
*/
public function query_banks(){
	$per=new bank_accounts_model();
	$datos=$per->query_banks(NULL);
	$datos1 = array('msg' => $_SESSION['lang']['TABLA'],'status' => true,'datos' => $datos);
	return $datos1;
}
/**
* Registrar cuenta.
*
*Funcion para Registrar cuenta, primero se envia a depurar la informacion ingresada y luego se inserta*
*
* @return Array msg=mensaje,status,datos=boolean 
* @param Method POST 
*/
public function register_bank_account(){
	$per=new bank_accounts_model();
	$bancos=$_POST['bancos'];
	$titular=$_POST['titular'];
	$num_cuenta=$_POST['num_cuenta'];

	$status=1;
	$user=$_SESSION['bn_user_global'];
	$valid=$this->validate_bank_account($bancos,$titular,$num_cuenta,$status,NULL);
	if (!$valid['status']) {
		return $valid;
	}else{
		$datos=$per->register_bank_account($bancos,$titular,$num_cuenta,$status,$user);
		$resp1 = array('msg' => $_SESSION['lang']['REGISTRADO'],'status' => true,'code' => 201);
		$resp2=array('msg' => $_SESSION['lang']['ERROR_INSERT'],'status' => false,'code' => 400);
		$return= (!$datos) ? $resp2 : $resp1;
		return $return;
	}
}
/**
* Vista de cuentas.
*
*Funcion para consultar cuentas registrado por id asi mostrar informacion para editar*
*
* @return Array msg=mensaje,status,datos=array de la consulta 
* @param Method POST Int $var1 id de cuentas
*/
public function view_bank_account(){
	$var1=$_POST['id'];
	$per=new bank_accounts_model();
	$datos=$per->query_bank_accounts($var1);
	if (count($datos) > 0) {
		$datos1 = array('msg' => $_SESSION['lang']['SELECCION'],'status' => true,'datos' => $datos,'code' => 200);
	}else{
		$datos1 = array('msg' => 'Cuenta no existe','status' => false,'code' => 400);
	}
	return $datos1;
}
/**
* Editar cuenta.
*
*Funcion para Registrar cuenta, primero se envia a depurar la informacion ingresada y luego se inserta*
*
* @return Array msg=mensaje,status,datos=boolean 
* @param Method POST 
*/
public function edit_bank_account(){
	$per=new bank_accounts_model();
	$id=$_POST['id'];
	$status=$_POST['status'];
	$user=$_SESSION['bn_user_global'];
	$bancos=$_POST['bancos'];
	$titular=$_POST['titular'];
	$num_cuenta=$_POST['num_cuenta'];
	$valid=$this->validate_bank_account($bancos,$titular,$num_cuenta,$status,$id);
	if (!$valid['status']) {
		return $valid;
	}else{
		$datos=$per->edit_bank_account($bancos,$titular,$num_cuenta,$status,$user,$id);
		$resp1 = array('msg' => $_SESSION['lang']['EDITADO'],'status' => true,'code' => 201);
		$resp2=array('msg' => $_SESSION['lang']['ERROR_INSERT'],'status' => false,'datos' => $datos,'code' => 400);
		$return= (!$datos) ? $resp2 : $resp1;
		return $return;

	}

}

/**
* Elimimar cuenta.
*
*Funcion para eliminar cuenta, chequea si el cuenta existe si arroja true elimina el cuenta*
*
* @return Array msg=mensaje,status,datos=boolean 
*/
public function delete_bank_account(){
	$per=new bank_accounts_model();
	$data1=$_POST['id'];
	$valid=$per->check_bank_account($data1);
	if (!$valid) {
		$datos = array('msg' => 'Cuenta no existe','status' => false,'code' => 400);
		return $datos;
	}
	$datos=$per->delete_bank_account($data1);
	$resp1 = array('msg' => $_SESSION['lang']['ELIMINAR'],'status' => true,'datos' => $datos,'code' => 200);
	$resp2=array('msg' => 'Cuenta posee transacciones asociadas, solo se puede inactivar','status' => false,'code' => 400);
	$return= (!$datos) ? $resp2 : $resp1;
	return $return;
}

/**
* Vista de saldo en cuentas.
*
*Funcion para consultar saldo en cuentas registrado por id asi mostrar informacion para editar*
*
* @return Array msg=mensaje,status,datos=array de la consulta 
*/
public function view_balance(){
	$var1=$_POST['id'];
	$per=new bank_accounts_model();
	$datos=$per->query_bank_accounts($var1);
	if (count($datos) > 0) {
		$datos1 = array('msg' => $_SESSION['lang']['SELECCION'],'status' => true,'datos' => $datos,'code' => 200);
	}else{
		$datos1 = array('msg' => 'Cuenta no existe','status' => false,'code' => 400);
	}
	return $datos1;
}
/**
* Editar balance.
*
*Funcion para Registrar balance, primero se envia a depurar la informacion ingresada y luego se inserta*
*
* @return Array msg=mensaje,status,datos=boolean 
* @param Method POST 
*/
public function edit_balance(){
	$per=new bank_accounts_model();
	$id=$_POST['id'];
	$saldo=str_replace('.','',$_POST['saldo']);
	$saldo=str_replace(',','.', $saldo);
	$user=$_SESSION['bn_user_global'];

	$valid=$per->check_bank_account($id);
	if (!$valid) {
		$datos = array('msg' => 'Cuenta no existe','status' => false,'code' => 400);
		return $datos;
	}
	$valid=$per->check_balance_day($id);
	if (!$valid) {
		$datos = array('msg' => 'Cuenta posee saldo activo realice cierre de caja','status' => false,'code' => 400,'codigo' => 2020);
		return $datos;
	}
	if (empty($saldo) || !is_numeric($saldo)) {
		$datos = array('msg' => 'Error! Campo saldo','status' => false ,'code' => 400);
		return $datos;
	}else{
		$datos=$per->edit_balance($id,$saldo,$user);
		$resp1 = array('msg' => $_SESSION['lang']['EDITADO'],'status' => true,'code' => 201);
		$resp2=array('msg' => $_SESSION['lang']['ERROR_INSERT'],'status' => false,'datos' => $datos,'code' => 400);
		$return= (!$datos) ? $resp2 : $resp1;
		return $return;

	}

}


/**
* Editar cuenta.
*
*Funcion para Registrar cuenta, primero se envia a depurar la informacion ingresada y luego se inserta*
*
* @return Array msg=mensaje,status,datos=boolean 
* @param Method POST 
*/
public function close_balance(){
	$per=new bank_accounts_model();
	$id=$_POST['id'];
	$saldo=str_replace('.','',$_POST['saldo']);
	$saldo=str_replace(',','.', $saldo);
	$user=$_SESSION['bn_user_global'];

	$valid=$per->check_bank_account($id);
	if (!$valid) {
		$datos = array('msg' => 'Cuenta no existe','status' => false,'code' => 400);
		return $datos;
	}
	$valid=$per->check_balance_day($id);
	if (!$valid) {
	if (empty($saldo) || !is_numeric($saldo)) {
		$datos = array('msg' => 'Error! Campo saldo','status' => false ,'code' => 400);
		return $datos;
	}else{
		$datos=$per->close_balance($id,$user);
		$datos=$per->edit_balance($id,$saldo,$user);
		$resp1 = array('msg' => $_SESSION['lang']['EDITADO'],'status' => true,'code' => 201);
		$resp2=array('msg' => $_SESSION['lang']['ERROR_INSERT'],'status' => false,'datos' => $datos,'code' => 400);
		$return= (!$datos) ? $resp2 : $resp1;
		return $return;

	}}

}


}
?>