<?php

	class LoginModel {

		private $_db;
		public function __construct() {
			$this->_db = new Base;
		}

		public function send($data){
			$password = $data['clave']; // clave escrita por el usuario en la caja de texto.
			$Sql = "SELECT * FROM `usuarios` WHERE usuario  = :usuario";

			// vincular datos
			$this->_db->query($Sql);
			$this->_db->bind(':usuario', $data['usuario']);
			// Ejecuto la consulta
			$this->_db->execute();
	

			if($this->_db->rowCount() == 1){//comparo si la consulta trajo resultados
			
				$rowsAssoc = $this->_db->rows_assoc();
				$datosUsuario = $rowsAssoc[0];
				$PasswordDB = $datosUsuario['Clave'];//Contraseña guardada en la base de datos.
				
				
				if($PasswordDB == $password){
					echo $_SERVER['REMOTE_ADDR'];
					$this->insertAuditoriaEventos([
						'usuario_id' => $datosUsuario['UsuarioId'],
						'usuario_nombre' => $datosUsuario['Usuario'],
						'tipo_evento' => 'LOGIN',
						'nombre_tabla' => 'usuarios',
						'llave_primaria' => $datosUsuario['UsuarioId'],
						'valores_anteriores' => json_encode([]),
						'valores_nuevos' => json_encode($datosUsuario),
						'ip_origen' => '',
						'aplicacion_origen' => 'UdLosesSubjects',
						'comentario' => 'Inicio de sesión exitoso'
					]);
					return array(true,$rowsAssoc);
				}else{
					$this->insertAuditoriaEventos([
						'usuario_id' => $datosUsuario['UsuarioId'],
						'usuario_nombre' => $datosUsuario['Usuario'],
						'tipo_evento' => 'FAILED_LOGIN',
						'nombre_tabla' => 'usuarios',
						'llave_primaria' => $datosUsuario['UsuarioId'],
						'valores_anteriores' => json_encode([]),
						'valores_nuevos' => json_encode($datosUsuario),
						'ip_origen' => '',
						'aplicacion_origen' => 'UdLosesSubjects',
						'comentario' => 'Inicio de sesión fallido'
					]);
					return array(false);
				}	
			}else if($this->_db->rowCount() == 0){
				return array(false);
			}
			
		}

		
		public function insertAuditoriaEventos($data){
			$query = "INSERT INTO `auditoria_eventos`(`usuario_id`,
													  `usuario_nombre`,
													  `tipo_evento`,
													  `nombre_tabla`,
													  `llave_primaria`,
													  `valores_anteriores`,
													  `valores_nuevos`,
													  `ip_origen`,
													  `aplicacion_origen`,
													  `comentario`) VALUES 
													  (:usuario_id,
													   :usuario_nombre,
													   :tipo_evento,
													   :nombre_tabla,
													   :llave_primaria,
													   :valores_anteriores,
													   :valores_nuevos,
													   :ip_origen,
													   :aplicacion_origen,
													   :comentario)";
			$this->_db->query($query);
			$this->_db->bind(':usuario_id', $data['usuario_id']);
			$this->_db->bind(':usuario_nombre', $data['usuario_nombre']);
			$this->_db->bind(':tipo_evento', $data['tipo_evento']);
			$this->_db->bind(':nombre_tabla', $data['nombre_tabla']);
			$this->_db->bind(':llave_primaria', $data['llave_primaria']);
			$this->_db->bind(':valores_anteriores', $data['valores_anteriores']);
			$this->_db->bind(':valores_nuevos', $data['valores_nuevos']);
			$this->_db->bind(':ip_origen', $data['ip_origen']);
			$this->_db->bind(':aplicacion_origen', $data['aplicacion_origen']);
			$this->_db->bind(':comentario', $data['comentario']);
			$this->_db->execute();
			if($this->_db->rowCount() > 0){
				return true;
			}else{
				return false;
			}
		}
	}
?>
