<?php

class Sistema_Model_RolesMenus extends Agro_Db_Table_Abstract {
	protected $_schema = 'sistema';
	protected $_name = 'roles_menus';
	
	public function save(array $data) {
		$Row = $this->createRow();
		
		$Row->id_role = $data[id_role];
		$Row->id_menu = $data[id_menu];
		
		return $Row->save();
	}
	
	public function removeMenuRole($id) {
		return $this->_db->query("delete from sistema.roles_menus where id_role = $id");
	}
	
	public function setUserRole($idUser, $idRole) {
		if ($idUser && $idRole && $idRole != 1) {
			$this->_db->query("delete from sistema.usuarios_menus where id_usuario = $idUser");
			
			$MenuUsuario = new Sistema_Model_MenusUsuarios();
			$Roles = $this->fetchAll("id_role = $idRole");
			
			if ($Roles) {
				foreach ($Roles as $menu) {
					$data = array();
					$data['id_usuario'] = $idUser;
					$data['id_menu'] = $menu['id_menu'];
					
					$MenuUsuario->insert($data);
				}
			}
		}
	}
	
	public function setMenuRole($idRole, $menus) {
		$Usuario = new Sistema_Model_Usuarios();
		
		try {
			if (is_array($menus)) {
				foreach ($menus as $menu) {
					$data = array();
					$data['id_role'] = $idRole;
					$data['id_menu'] = $menu;
					
					$this->insert($data);
				}
			}
			
			$Rs = $Usuario->fetchAll("id_role = $idRole")->toArray();
			foreach ($Rs as $row) {
				$this->setUserRole($row['id'], $idRole);
			}
			
			return true;
		} catch (Exception $e) {
			return false;
		}
	}
}