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

class system_payments_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_system_payment($cuentas,$cant_dep,$monto_dep,$cant_trans,$monto_trans,$id){
	$per=new system_payments_model();

	if (!is_numeric($cant_dep) ) {
		$datos = array('msg' => 'Cantidad de depositos no debe estar vacio minimo 0','status' => false ,'code' => 400);
		return $datos;
	}
	if (empty($monto_dep) || !is_numeric($monto_dep)) {
		$datos = array('msg' => 'Error! Campo Monto depositos','status' => false ,'code' => 400);
		return $datos;
	}
	if ($cant_dep <= 0 && $monto_dep > 0) {
		$datos = array('msg' => 'Error! Cantidad de depositos no coincide con el monto','status' => false ,'code' => 400);
		return $datos;
	}
	if ($cant_dep > 0 && $monto_dep <= 0) {
		$datos = array('msg' => 'Error! Cantidad de depositos no coincide con el monto','status' => false ,'code' => 400);
		return $datos;
	}

	if (!is_numeric($cant_trans) ) {
		$datos = array('msg' => 'Cantidad de transferencias no debe estar vacio minimo 0','status' => false ,'code' => 400);
		return $datos;
	}
	if (empty($monto_trans) || !is_numeric($monto_trans)) {
		$datos = array('msg' => 'Error! Campo Monto transferencias','status' => false ,'code' => 400);
		return $datos;
	}
	if ($cant_trans <= 0 && $monto_trans > 0) {
		$datos = array('msg' => 'Error! Cantidad de transferencias no coincide con el monto','status' => false ,'code' => 400);
		return $datos;
	}
	if ($cant_trans > 0 && $monto_trans <= 0) {
		$datos = array('msg' => 'Error! Cantidad de transferencias no coincide con el monto','status' => false ,'code' => 400);
		return $datos;
	}
	if (!is_null($cuentas)) {
		$valid=$per->query_bank_accounts($cuentas);
		if (count($valid) == 0) {
			$datos = array('msg' => 'Error! Cuenta no existe','status' => false ,'code' => 400);
			return $datos;
		}
		$valid=$per->check_date_payment($cuentas);
		if (!$valid) {
			$datos = array('msg' => 'Error! Cuenta Posee pagos de sistema registrado para la fecha actual.','status' => false ,'code' => 400);
			return $datos;
		}}

		if (!is_null($id)) {
			$valid=$per->check_system_payment($id);
			if (!$valid) {
				$datos = array('msg' => 'Error! pago de sistema no pertenece a la fecha actual no podra editar','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_system_payments(){
	$per=new system_payments_model();
	$date=date('Y-m-d');
	$fecha=(empty($_POST['fecha'])) ? $date : $_POST['fecha'];
	$datos=$per->query_system_payments(NULL,$fecha);
	foreach ($datos as &$value) {
		$suma=$value["monto_dep"]+$value["monto_tra"];
		$suma=number_format($suma,2,',','.');
		$monto_dep=number_format($value["monto_dep"],2,',','.');
		$monto_tra=number_format($value["monto_tra"],2,',','.');
		$value['monto_tra']=$monto_tra;
		$value['monto_dep']=$monto_dep;
		$value['total']=$suma;
		$value['fecha_pago']=(empty($value["fecha_pago"]))? $date : $value["fecha_pago"] ;
	}
	$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_bank_accounts(){
	$per=new system_payments_model();
	$per1=new bank_transactions_model();

	$datos=$per->query_bank_accounts(NULL);
	foreach ($datos as &$value) {
		$saldos=$per1->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;
}
/**
* 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_system_payment(){
	$per=new system_payments_model();
	$cuentas=$_POST['cuentas'];
	//$cant_dep=$_POST['cant_dep'];
	$cant_dep=(empty($_POST['cant_dep']))? 0 : $_POST['cant_dep'];

	$monto_dep=(empty($_POST['monto_dep']))? '0,00' : $_POST['monto_dep'];
	$monto_dep=str_replace('.','',$monto_dep);
	$monto_dep=str_replace(',','.', $monto_dep);
	//$cant_trans=$_POST['cant_trans'];
	$cant_trans=(empty($_POST['cant_trans']))? 0 : $_POST['cant_trans'];

	$monto_trans=(empty($_POST['monto_trans']))? '0,00' : $_POST['monto_trans'];
	$monto_trans=str_replace('.','',$monto_trans);
	$monto_trans=str_replace(',','.', $monto_trans);
	$user=$_SESSION['bn_user_global'];
	$valid=$this->validate_system_payment($cuentas,$cant_dep,$monto_dep,$cant_trans,$monto_trans,NULL);
	if (!$valid['status']) {
		return $valid;
	}else{
		$datos=$per->register_system_payment($cuentas,$cant_dep,$monto_dep,$cant_trans,$monto_trans,$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_system_payment(){
	$var1=$_POST['id'];
	$per=new system_payments_model();
	$datos=$per->query_system_payments($var1,2);
	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;
}
/**
* 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 edit_system_payment(){
	$per=new system_payments_model();
	$id=$_POST['id'];
	$cant_dep=$_POST['cant_dep'];
	$monto_dep=(empty($_POST['monto_dep']))? '0,00' : $_POST['monto_dep'];
	$monto_dep=str_replace('.','',$monto_dep);
	$monto_dep=str_replace(',','.', $monto_dep);
	$cant_trans=$_POST['cant_trans'];
	$monto_trans=(empty($_POST['monto_trans']))? '0,00' : $_POST['monto_trans'];
	$monto_trans=str_replace('.','',$monto_trans);
	$monto_trans=str_replace(',','.', $monto_trans);
	$user=$_SESSION['bn_user_global'];
	$valid=$this->validate_system_payment(NULL,$cant_dep,$monto_dep,$cant_trans,$monto_trans,$id);
	if (!$valid['status']) {
		return $valid;
	}else{

		$datos=$per->edit_system_payment($id,$cant_dep,$monto_dep,$cant_trans,$monto_trans,$user);
		$resp1 = array('msg' => $_SESSION['lang']['EDITADO'],'status' => true,'code' => 201);
		$resp2=array('msg' => $_SESSION['lang']['ERROR_INSERT'],'status' => false,'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_system_payment(){
	$per=new system_payments_model();
	$data1=$_POST['id'];
	$valid=$per->check_system_payment($data1);
	if (!$valid) {
		$datos = array('msg' => 'Pago en sistema no se puede eliminar','status' => false,'code' => 400);
		return $datos;
	}
	$datos=$per->delete_system_payment($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;
}


}
?>