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; }
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; }
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'; }
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; }