can find overlapping shows now for moving.

This commit is contained in:
naomiaro 2010-12-09 17:02:37 -05:00
parent 7b22099f12
commit b10c2cfe2a
2 changed files with 35 additions and 11 deletions

View File

@ -14,6 +14,7 @@ class ScheduleController extends Zend_Controller_Action
$ajaxContext->addActionContext('event-feed', 'json')
->addActionContext('add-show-dialog', 'json')
->addActionContext('add-show', 'json')
->addActionContext('move-show', 'json')
->initContext();
}
@ -69,7 +70,8 @@ class ScheduleController extends Zend_Controller_Action
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
$show = new Show($userInfo->type);
$show->moveShow($showId, $deltaDay, $deltaMin);
$this->view->overlap = $show->moveShow($showId, $deltaDay, $deltaMin);
}
public function resizeShowAction()

View File

@ -113,19 +113,31 @@ class Show {
$start = $show["first_show"];
$end = $show["last_show"];
$days = array();
$s_time = $show["start_time"];
$e_time = $show["end_time"];
$hours = $deltaMin/60;
if($hours > 0)
$hours = floor($hours);
else
$hours = ceil($hours);
$mins = abs($deltaMin%60);
$sql = "SELECT time '{$show["start_time"]}' + interval '{$hours}:{$mins}'";
//echo $sql;
$s_time = $CC_DBC->GetOne($sql);
$sql = "SELECT time '{$show["end_time"]}' + interval '{$hours}:{$mins}'";
//echo $sql;
$e_time = $CC_DBC->GetOne($sql);
foreach($res as $show) {
$days[] = $show["day"] + $deltaDay;
}
$shows_overlap = $this->getShows($start, $end, $days, $s_time, $e_time);
echo $shows_overlap;
return $this->getShows($start, $end, $days, $s_time, $e_time, array($showId));
}
public function getShows($start=NULL, $end=NULL, $days=NULL, $s_time=NULL, $e_time=NULL) {
public function getShows($start=NULL, $end=NULL, $days=NULL, $s_time=NULL, $e_time=NULL, $exclude_shows=NULL) {
global $CC_DBC;
$sql;
@ -149,7 +161,7 @@ class Show {
}
$sql_day = join(" OR ", $sql_opt);
$sql = $sql_gen ." WHERE (". $sql_day ." AND (". $sql_range ."))";
$sql = $sql_gen ." WHERE ((". $sql_day .") AND (". $sql_range ."))";
}
if(!is_null($s_time) && !is_null($e_time)) {
$sql_time = "(start_time <= '{$s_time}' AND end_time >= '{$e_time}')
@ -157,7 +169,17 @@ class Show {
OR (end_time > '{$s_time}' AND end_time <= '{$e_time}')
OR (start_time >= '{$s_time}' AND start_time < '{$e_time}')";
$sql = $sql_gen ." WHERE (". $sql_day ." AND (". $sql_range .") AND (". $sql_time ."))";
$sql = $sql_gen ." WHERE ((". $sql_day .") AND (". $sql_range .") AND (". $sql_time ."))";
}
if(!is_null($exclude_shows)){
$sql_opt = array();
foreach ($exclude_shows as $showid) {
$sql_opt[] = "show_id = {$showid}";
}
$sql_showid = join(" OR ", $sql_opt);
$sql = $sql_gen ." WHERE ((". $sql_day .") AND NOT (". $sql_showid .") AND (". $sql_range .") AND (". $sql_time ."))";
}
//echo $sql;