CC-5150: Calendar->Add/Remove Show contents: Exception happens when try to adding contents for show

This commit is contained in:
denise 2013-05-16 13:42:06 -04:00
parent f4d313a67c
commit 3d09747990
3 changed files with 19 additions and 38 deletions

View file

@ -29,24 +29,6 @@ WHERE ends > now() AT TIME ZONE 'UTC'
AND file_id is not null AND file_id is not null
SQL; SQL;
/* If an instance id gets passed into this function we need to check
* if it is a repeating show. If it is a repeating show, we need to
* check for any files scheduled in the future in the linked instances
* as well
*/
if (!is_null($instanceId)) {
$excludeIds = array();
$ccShow = CcShowInstancesQuery::create()
->findPk($instanceId)
->getCcShow();
if ($ccShow->isLinked()) {
foreach ($ccShow->getOtherInstances($instanceId) as $instance) {
$excludeIds[] = $instance->getDbId();
}
$sql .= " AND instance_id IN (".implode(",", $excludeIds).")";
}
}
$files = Application_Common_Database::prepareAndExecute( $sql, array()); $files = Application_Common_Database::prepareAndExecute( $sql, array());
$real_files = array(); $real_files = array();

View file

@ -1323,7 +1323,7 @@ SQL;
} }
public static function setIsScheduled($p_scheduleItem, $p_status, public static function setIsScheduled($p_scheduleItem, $p_status,
$p_fileId=null, $instanceId=null) { $p_fileId=null) {
if (is_null($p_fileId)) { if (is_null($p_fileId)) {
$fileId = Application_Model_Schedule::GetFileId($p_scheduleItem); $fileId = Application_Model_Schedule::GetFileId($p_scheduleItem);
@ -1334,7 +1334,7 @@ SQL;
$updateIsScheduled = false; $updateIsScheduled = false;
if (!is_null($fileId) && !in_array($fileId, if (!is_null($fileId) && !in_array($fileId,
Application_Model_Schedule::getAllFutureScheduledFiles($instanceId))) { Application_Model_Schedule::getAllFutureScheduledFiles())) {
$file->_file->setDbIsScheduled($p_status)->save(); $file->_file->setDbIsScheduled($p_status)->save();
$updateIsScheduled = true; $updateIsScheduled = true;
} }
@ -1344,26 +1344,25 @@ SQL;
public static function updatePastFilesIsScheduled() public static function updatePastFilesIsScheduled()
{ {
/* Retrieve files that are scheduled in the past OR that belong /* Set the is_scheduled flag to false where it was true in the
* to a show that has ended. We need to check if the show has * past, and where tracks are not scheduled in the future and do
* ended incase a track is overbooked, since that alone will * not belong to a show that has not ended yet. We need to check
* indicate the show is still scheduled in the future * for show end times in case a track is overbooked, which would
* indicate it is still scheduled in the future
*/ */
$sql = <<<SQL $sql = <<<SQL
SELECT s.file_id, s.instance_id FROM cc_schedule AS s UPDATE cc_files SET is_scheduled = false
WHERE is_scheduled = true
AND id NOT IN (
SELECT s.file_id FROM cc_schedule AS s
LEFT JOIN cc_show_instances AS i LEFT JOIN cc_show_instances AS i
ON s.instance_id = i.id ON s.instance_id = i.id
WHERE s.ends < now() at time zone 'UTC' WHERE s.ends > now() at time zone 'UTC'
OR i.ends < now() at time zone 'UTC' AND i.ends > now() at time zone 'UTC'
)
SQL; SQL;
$files = Application_Common_Database::prepareAndExecute($sql); Application_Common_Database::prepareAndExecute($sql, array(),
Application_Common_Database::EXECUTE);
foreach ($files as $file) {
if (!is_null($file['file_id'])) {
self::setIsScheduled(null, false, $file['file_id'], $file['instance_id']);
}
}
} }
public function getRealClipLength($p_cuein, $p_cueout) { public function getRealClipLength($p_cuein, $p_cueout) {

View file

@ -194,7 +194,7 @@ class CcShow extends BaseCcShow {
{ {
return CcShowInstancesQuery::create() return CcShowInstancesQuery::create()
->filterByCcShow($this) ->filterByCcShow($this)
->filterByDbId($instanceId, Criteria::NOT_IN) ->filterByDbId($instanceId, Criteria::NOT_EQUAL)
->find(); ->find();
} }
} // CcShow } // CcShow