From b10c2cfe2a22f9a178df9d6051e1758c2e7865cc Mon Sep 17 00:00:00 2001 From: naomiaro Date: Thu, 9 Dec 2010 17:02:37 -0500 Subject: [PATCH] can find overlapping shows now for moving. --- .../controllers/ScheduleController.php | 6 ++- application/models/Shows.php | 40 ++++++++++++++----- 2 files changed, 35 insertions(+), 11 deletions(-) diff --git a/application/controllers/ScheduleController.php b/application/controllers/ScheduleController.php index 6acb96ee3..35833755a 100644 --- a/application/controllers/ScheduleController.php +++ b/application/controllers/ScheduleController.php @@ -13,7 +13,8 @@ class ScheduleController extends Zend_Controller_Action $ajaxContext = $this->_helper->getHelper('AjaxContext'); $ajaxContext->addActionContext('event-feed', 'json') ->addActionContext('add-show-dialog', 'json') - ->addActionContext('add-show', '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() diff --git a/application/models/Shows.php b/application/models/Shows.php index 888e6ec0e..8e55e5e8c 100644 --- a/application/models/Shows.php +++ b/application/models/Shows.php @@ -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,12 +169,22 @@ 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; - return $CC_DBC->GetAll($sql); + return $CC_DBC->GetAll($sql); } public function getFullCalendarEvents($start, $end, $weekday=NULL) {