Esempio n. 1
0
 public function getArrayHorarisEspaisMaterial()
 {
     $RET = array();
     $C = new Criteria();
     $C = HorarisespaisPeer::getCriteriaActiu($C, $this->getSiteId());
     //      $C->add( HorarisespaisPeer::IDESPAIEXTERN, null);
     $C->addGroupByColumn(HorarisespaisPeer::MATERIAL_IDMATERIAL);
     $LHE = $this->getHorarisespaiss($C);
     foreach ($LHE as $HE) {
         $OM = MaterialPeer::retrieveByPK($HE->getMaterialIdmaterial());
         if ($OM instanceof Material) {
             $RET[$OM->getIdmaterial()] = array('material' => $OM->getIdmaterial(), 'nom' => $OM->toString(), 'generic' => $OM->getMaterialgenericIdmaterialgeneric());
         }
     }
     return $RET;
 }
Esempio n. 2
0
 public static function update($RMATERIAL, $FCessio, $idS)
 {
     $MERGE = array();
     $OC = $FCessio->getObject();
     $idC = $OC->getCessioId();
     $ERROR = array();
     $C = new Criteria();
     $C->add(self::SITE_ID, $idS);
     $C->add(self::CESSIO_ID, $idC);
     $C->add(self::ACTIU, true);
     foreach ($RMATERIAL as $D => $idM) {
         if (!MaterialPeer::isLliureFranja($idM, $idS, $OC->getDatacessio(), $OC->getDataRetorn(), '00:00', '24:00', null, $idC)) {
             $OM = MaterialPeer::retrieveByPK($idM);
             $ERROR[$idM] = $OM->toString();
         }
     }
     if (empty($ERROR)) {
         foreach (self::doSelect($C) as $V) {
             $V->setActiu(false);
             $V->save();
             $MERGE[$V->getIdcessiomaterial()] = $V;
         }
         foreach ($RMATERIAL as $D => $idM) {
             if (isset($MERGE[$idM])) {
                 $MERGE[$idM]->setActiu(true);
                 $MERGE[$idM]->save();
             } else {
                 $OMC = new Cessiomaterial();
                 $OMC->setMaterialIdmaterial($idM);
                 $OMC->setCessioId($idC);
                 $OMC->setSiteId($idS);
                 $OMC->setActiu(true);
                 $OMC->save();
             }
         }
     }
     return $ERROR;
 }
Esempio n. 3
0
 public function LoadEscullMaterial($OCESSIO, $RMATERIAL = null, $RMATERIALNOINV = "", $ERROR_SELECT_MATERIAL = false)
 {
     $this->MATERIALOUT = array();
     //Si és una cessió nova
     if (!$OCESSIO->isNew() && !$ERROR_SELECT_MATERIAL) {
         $this->MATERIALOUT = CessiomaterialPeer::getSelectMaterialOut($OCESSIO->getCessioId(), $this->IDS);
         $this->MAT_NO_INV = $OCESSIO->getMaterialNoInventariat();
         //Si és una edició
     } else {
         //Carreguem el material no inventariat i passem el material a visualitzar altre cop
         $this->MAT_NO_INV = $RMATERIALNOINV;
         foreach ($RMATERIAL as $G => $AM) {
             $idMG = MaterialPeer::retrieveByPK($AM)->getMaterialgenericIdmaterialgeneric();
             $this->MATERIALOUT[] = array('material' => $AM, 'generic' => $idMG);
         }
     }
     $this->IDC = $this->FCessio->getObject()->getCessioId();
     $this->MODE = 'ESCULL_MATERIAL';
 }
Esempio n. 4
0
 public function GuardaHorari($horaris, $EXTRES, $idS)
 {
     $ERRORS = array();
     $DBDD[] = array();
     //Comprovem que s'hagi entrat un dia
     if (empty($horaris['Dia'])) {
         $ERRORS[] = "No has entrat cap data";
         $DBDD['DIES'] = array();
     } else {
         $DIES = explode(',', $horaris['Dia']);
         foreach ($DIES as $D) {
             list($dia, $mes, $any) = explode('/', $D);
             if (!($any > 2000 && $mes < 13 && $dia < 32)) {
                 $ERRORS[] = "La data que has entrat és incorrecta";
             }
             $DBDD['DIES'][] = "{$any}-{$mes}-{$dia}";
         }
     }
     //Passem l'hora a format numèric per fer les comprovacions
     $DBDD['HoraPre'] = strval($horaris['HoraPre']['hour']) * 60 + strval($horaris['HoraPre']['minute']);
     $DBDD['HoraIn'] = strval($horaris['HoraInici']['hour']) * 60 + strval($horaris['HoraInici']['minute']);
     $DBDD['HoraFi'] = strval($horaris['HoraFi']['hour']) * 60 + strval($horaris['HoraFi']['minute']);
     $DBDD['HoraPost'] = strval($horaris['HoraPost']['hour']) * 60 + strval($horaris['HoraPost']['minute']);
     if ($DBDD['HoraPre'] > $DBDD['HoraIn']) {
         $ERRORS[] = "L'hora de preparació no pot ser més gran que la d'inici.";
     }
     if ($DBDD['HoraIn'] >= $DBDD['HoraFi']) {
         $ERRORS[] = "L'hora d'inici no pot ser més gran o igual que la d'acabament.";
     }
     if ($DBDD['HoraFi'] > $DBDD['HoraPost']) {
         $ERRORS[] = "L'hora d'acabament no pot ser més gran que la de desmuntatge.";
     }
     //Un cop fetes les verificacions... tornem a posar els valors que guardarem
     $DBDD['HoraPre'] = $horaris['HoraPre']['hour'] . ':' . $horaris['HoraPre']['minute'];
     $DBDD['HoraIn'] = $horaris['HoraInici']['hour'] . ':' . $horaris['HoraInici']['minute'];
     $DBDD['HoraFi'] = $horaris['HoraFi']['hour'] . ':' . $horaris['HoraFi']['minute'];
     $DBDD['HoraPost'] = $horaris['HoraPost']['hour'] . ':' . $horaris['HoraPost']['minute'];
     //Hem d'entrar algun espai ja sigui intern o extern i no podem entrar espais interns i a més externs
     if (empty($EXTRES['ESPAISOUT']) && !$EXTRES['ESPAIEXTERN']->isBound()) {
         $ERRORS[] = "Has d'entrar algun espai intern o extern";
     }
     if (!empty($EXTRES['ESPAISOUT']) && $EXTRES['ESPAIEXTERN']->isBound()) {
         $ERRORS[] = "No pots entrar espais interns i externs a la vegada";
     }
     //Mirem que la data no es solapi amb alguna altra activitat al mateix espai
     foreach ($DBDD['DIES'] as $D) {
         //Per tots els espais interns
         foreach ($EXTRES['ESPAISOUT'] as $E => $idE) {
             //Si l'usuari bloqueja un espai hem de mirar que no hi hagi cap activitat aquell dia.
             if ($idE == 22) {
                 $RS = HorarisPeer::getActivitatsDia($D, $idS);
                 if (sizeof($RS) > 0) {
                     $ERRORS[] = "El dia {$D} hi ha " . sizeof($RS) . " activitat(s) que impedeixen el bloqueig.";
                 }
             } else {
                 //Mirem si encaixa amb alguna altra activitat solta
                 $LOH = HorarisPeer::validaDia($D, $idE, $DBDD['HoraPre'], $DBDD['HoraPost'], $horaris['HorarisID'], $idS);
                 if (sizeof($LOH) > 0) {
                     $Espai = EspaisPeer::retrieveByPK($idE)->getNom();
                     foreach ($LOH as $OH) {
                         $OA = $OH->getActivitatss();
                         $nomActivitat = $OA->getNom();
                         $ERRORS[] = "El dia {$D} coincideix a l'espai {$Espai} amb l'activitat '" . $nomActivitat . "'";
                     }
                 } elseif (HorarisPeer::validaDiaBloqueig($D, $horaris['HorarisID'], $this->IDS)) {
                     $ERRORS[] = "El dia {$D} hi ha una activitat que bloqueja tots els espais!";
                 }
             }
         }
         //Comprovem l'ocupació del material
         foreach ($EXTRES['MATERIALOUT'] as $M => $idM) {
             if (!MaterialPeer::isLliure($idM['material'], $this->IDS, $D, $DBDD['HoraPre'], $DBDD['HoraPost'], $horaris['HorarisID'])) {
                 $OM = MaterialPeer::retrieveByPK($idM['material']);
                 if ($OM instanceof Material) {
                     $nom = $OM->toString();
                 } else {
                     $nom = "n/d";
                 }
                 $ERRORS[] = "El material " . $nom . " està ocupat el dia " . $D;
             }
         }
     }
     //Si no hem trobat cap error, guardem els registres d'ocupació.
     if (empty($ERRORS)) {
         HorarisPeer::save($horaris, $DBDD, $EXTRES, $idS);
     }
     return $ERRORS;
 }