Incam_Intranet/Objects/Empresa.php
2011-04-04 15:16:10 +00:00

209 lines
4.9 KiB
PHP

<?php
/*
* Clase Empresa
*/
include_once("BD.php");
class Empresa {
//Atributos:
/* Usuario que tiene activa la sesión. */
private $usuario;
/* Idioma */
private $locale;
/* Contiene una lista con todos los atributos y su valor*/
private $campos = array();
//Constructor:
/**
* Recupera un pedido a partir de su identificador.
* @param id - datos necesarios para crear un pedido.
*/
function Empresa($usuario, $id, $locale){
$this->usuario = $usuario;
switch (gettype($id)) {
case "string":$this->campos['oid']=$id;
break;
case "array": $this->parseaArray($id);
break;
case "resource": $this->parseaResource($id);
break;
default: echo gettype($id);
break;
}
$this->locale = $locale;
}
/**
* Devuelve el valor de un campo.
* @param nombre - nombre del campo por el que buscar.
* @return valor del campo buscado.
*/
function getValor($nombre){
$especial = false;
if(gettype($nombre) != "integer" && gettype($nombre) != "string"){
return false;
exit;
}
if(array_key_exists($nombre,$this->campos)){
// El campo ya lo habíamos recuperamos, lo mostramos
return $this->campos[$nombre];
} else {
// Hay que recuperar el campo de la base de datos
$consulta="SELECT * FROM clientes WHERE oid=\"".$this->campos['oid']."\"";
switch ($nombre) {
case "nombre_gerente":$idGerente=$this->getValor("gerente");
$consulta="SELECT CONCAT(nombre,\" \",apellidos) FROM usuarios WHERE oid=\"".$idGerente."\"";
$especial = true;
break;
case "nombre_privacidad":$idGerente=$this->getValor("oid");
$consulta="SELECT privado FROM clientes WHERE oid=\"".$idGerente."\"";
$especial = true;
break;
default:
break;
}
$bd=new BD();
if(!$especial){
$valores = $bd->getRegistro($consulta);
// Lo insertamos para nosotros
foreach($valores as $key => $value){
$arrayAct=array($key => $value);
$this->campos=$this->campos + $arrayAct;
}
}else{
// Lo insertamos para nosotros
$valor= $bd->getCampo($consulta);
//echo $valor."-".$consulta;
if($nombre == "nombre_privacidad"){
switch ($valor) {
case 0:
$valor = $this->locale['2213'];
break;
case 1:
$valor = $this->locale['2212'];
break;
default:
break;
}
}
// Lo insertamos para nosotros
$arrayAct=array($nombre => $valor);
$this->campos=$this->campos + $arrayAct;
}
return $this->campos[$nombre];
}
}
/**
* Acceso a los campos de la empresa.
* @return los campos de la empresa.
*/
function getCampos(){
return $this->campos;
}
/**
* Asigna un nuevo campo a la empresa
* @param nombre - nombre del campo a asignar.
* @param valor - valor del campo.
*/
private function setCampo($nombre, $valor){
$viejo = $this->getValor($nombre);
if($viejo != $valor){
$this->campos[$nombre] = $valor;
$dato = $nombre." = '".$valor."',";
return $dato;
}else{
return "";
}
}
/**
* Asigna nuevos campos a la empresa.
* @param array - lista de campos a asignar de la forma campo => valor.
*/
function setCampos($array){
if($this->puedeGestionar()){
$consulta = "UPDATE clientes SET ";
foreach($array as $key => $value){
$consulta .= $this->setCampo($key, $value);
}
//Quitamos la última coma
if ($consulta{strlen($consulta) - 1} == ",")
$consulta = substr($consulta,0,strlen($consulta) - 1);
$oid = $this->getValor("oid");
$consulta .= "WHERE oid='$oid'";
$bd = new BD();
if($bd->execQuery($consulta)){
return true;
}else{
$error = $this->locale['bd'];
throw new Exception($error);
return false;
exit;
}
}else{
$error = $this->locale['2206'];
throw new Exception($error);
return false;
exit;
}
}
/**
* Elimina una empresa de la base de datos.
*/
function eliminar(){
//PERMISOS:
$gerente = $this->getValor("gerente");
if($this->puedeGestionar()){
$oid = $this->getValor("oid");
$consulta = "DELETE FROM clientes WHERE oid='$oid'";
$bd = new BD();
if($bd->execQuery($consulta)){
return true;
}else{
$error = $this->locale['bd'];
throw new Exception($error);
return false;
exit;
}
}else{
$error = $this->locale['2206'];
throw new Exception($error);
return false;
exit;
}
}
/**
* Comprueba si el usuario tiene permisos para gestionar la empresa.
*/
function puedeGestionar(){
//Sólo los gerentes pueden gestionar empresas.
if($this->usuario->tieneRol(3)){
//Sólo puede si es el propio dueño o administrador.
if(($this->usuario->getValor("oid") == $this->getValor("gerente")) || $this->usuario->tieneRol(1)){
return true;
}else{
return false;
}
}else{
return false;
}
}
}
?>