From 15e27f8166e6b1332ca1852b91230f9384e3027a Mon Sep 17 00:00:00 2001 From: Naomi Aro Date: Fri, 30 Aug 2013 00:43:43 -0400 Subject: [PATCH] history records for a show have times validated within show range. --- .../controllers/PlayouthistoryController.php | 1 - .../application/models/airtime/CcSubjs.php | 15 +++- .../application/services/HistoryService.php | 90 ++++++++++++------- .../application/services/UserService.php | 7 +- .../scripts/form/edit-history-item.phtml | 9 ++ .../js/airtime/playouthistory/historytable.js | 13 ++- 6 files changed, 89 insertions(+), 46 deletions(-) diff --git a/airtime_mvc/application/controllers/PlayouthistoryController.php b/airtime_mvc/application/controllers/PlayouthistoryController.php index b6aadf568..d28c96412 100644 --- a/airtime_mvc/application/controllers/PlayouthistoryController.php +++ b/airtime_mvc/application/controllers/PlayouthistoryController.php @@ -202,7 +202,6 @@ class PlayouthistoryController extends Zend_Controller_Action public function editListItemAction() { $id = $this->_getParam('id', null); - Logging::info("Id is: $id"); $populate = isset($id) ? true : false; diff --git a/airtime_mvc/application/models/airtime/CcSubjs.php b/airtime_mvc/application/models/airtime/CcSubjs.php index 908adf554..78fd56d9e 100644 --- a/airtime_mvc/application/models/airtime/CcSubjs.php +++ b/airtime_mvc/application/models/airtime/CcSubjs.php @@ -1,11 +1,9 @@ filterByDbHost($this->getDbId()) ->count() > 0; } + + public function isHostOfShowInstance($instanceId) + { + $showInstance = CcShowInstancesQuery::create() + ->findPk($instanceId); + + return CcShowHostsQuery::create() + ->filterByDbShow($showInstance->getDbShowId()) + ->filterByDbHost($this->getDbId()) + ->count() > 0; + } } // CcSubjs diff --git a/airtime_mvc/application/services/HistoryService.php b/airtime_mvc/application/services/HistoryService.php index 275c8d4fe..ed411efd0 100644 --- a/airtime_mvc/application/services/HistoryService.php +++ b/airtime_mvc/application/services/HistoryService.php @@ -803,31 +803,72 @@ class Application_Service_HistoryService return $select; } + private function validateHistoryItem($instanceId, $form) { + + /* + $userService = new Application_Service_UserService(); + $currentUser = $userService->getCurrentUser(); + + if (!$currentUser->isAdminOrPM()) { + if (empty($instance_id) ) { + + } + } + */ + + $valid = true; + + $recordStartsEl = $form->getElement("his_item_starts"); + $recordStarts = $recordStartsEl->getValue(); + $recordEndsEl = $form->getElement("his_item_starts"); + $recordEnds = $recordEndsEl->getValue(); + + $timezoneLocal = new DateTimeZone($this->timezone); + + $startDT = new DateTime($recordStarts, $timezoneLocal); + $endDT = new DateTime($recordEnds, $timezoneLocal); + + if ($recordStarts > $recordEnds) { + $valid = false; + $recordEndsEl->addErrorMessage("End time must be after start time"); + } + + if (isset($instanceId)) { + + $instance = CcShowInstancesQuery::create()->findPk($instanceId, $this->con); + $inStartsDT = $instance->getDbStarts(null); + $inEndsDT = $instance->getDbEnds(null); + + if ($startDT < $inStartsDT) { + $valid = false; + $form->addErrorMessage("History item begins before show."); + } + else if ($startDT > $inEndsDT) { + $valid = false; + $form->addErrorMessage("History item begins after show."); + } + } + + return $valid; + } + public function createPlayedItem($data) { try { $form = $this->makeHistoryItemForm(null); $history_id = $form->getElement("his_item_id"); - $instance_id = $data["instance_id"]; + $instanceId = $data["instance_id"]; $json = array(); - if ($form->isValid($data)) { + if ($form->isValid($data) && $this->validateHistoryItem($instanceId, $form)) { + $history_id->setIgnore(true); $values = $form->getValues(); - Logging::info("created list item"); - Logging::info($values); - - $this->populateTemplateItem($values, null, $instance_id); + $this->populateTemplateItem($values, null, $instanceId); } else { - Logging::info("created list item NOT VALID"); - - $msgs = $form->getMessages(); - Logging::info($msgs); - $json["form"] = $form; - $json["error"] = $msgs; } return $json; @@ -842,31 +883,21 @@ class Application_Service_HistoryService try { $id = $data["his_item_id"]; - $instance_id = $data["instance_id"]; + $instanceId = $data["instance_id"]; $form = $this->makeHistoryItemForm($id); $history_id = $form->getElement("his_item_id"); $history_id->setRequired(true); - Logging::info($data); $json = array(); - if ($form->isValid($data)) { + if ($form->isValid($data) && $this->validateHistoryItem($instanceId, $form)) { + $history_id->setIgnore(true); $values = $form->getValues(); - - Logging::info("edited list item"); - Logging::info($values); - - $this->populateTemplateItem($values, $id, $instance_id); + $this->populateTemplateItem($values, $id, $instanceId); } else { - Logging::info("edited list item NOT VALID"); - - $msgs = $form->getMessages(); - Logging::info($msgs); - $json["form"] = $form; - $json["error"] = $msgs; } return $json; @@ -885,22 +916,15 @@ class Application_Service_HistoryService $history_id = $form->getElement("his_file_id"); $history_id->setRequired(true); - Logging::info($data); $json = array(); if ($form->isValid($data)) { $history_id->setIgnore(true); $values = $form->getValues(); - Logging::info("edited list item"); - Logging::info($values); - $this->populateTemplateFile($values, $id); } else { - $msgs = $form->getMessages(); - Logging::info($msgs); - $json["error"] = $msgs; } diff --git a/airtime_mvc/application/services/UserService.php b/airtime_mvc/application/services/UserService.php index 879ba4d48..40e077a39 100644 --- a/airtime_mvc/application/services/UserService.php +++ b/airtime_mvc/application/services/UserService.php @@ -1,10 +1,5 @@ + getErrorMessages() ?> + 0) : ?> + + +
getElement($name); ?> diff --git a/airtime_mvc/public/js/airtime/playouthistory/historytable.js b/airtime_mvc/public/js/airtime/playouthistory/historytable.js index 3e7aae7cd..9be44d77f 100644 --- a/airtime_mvc/public/js/airtime/playouthistory/historytable.js +++ b/airtime_mvc/public/js/airtime/playouthistory/historytable.js @@ -486,13 +486,19 @@ var AIRTIME = (function(AIRTIME) { }); } - function makeHistoryDialog(html) { - $hisDialogEl = $(html); + function processDialogHtml($el) { if (inShowsTab) { - $hisDialogEl.find("#his_choose_instance").remove(); + $el.find("#his_choose_instance").remove(); } + return $el + } + + function makeHistoryDialog(html) { + $hisDialogEl = $(html); + $hisDialogEl = processDialogHtml($hisDialogEl); + $hisDialogEl.dialog({ title: $.i18n._("Edit History Record"), modal: false, @@ -604,6 +610,7 @@ var AIRTIME = (function(AIRTIME) { if (json.form !== undefined) { var $newForm = $(json.form); + $newForm = processDialogHtml($newForm); $hisDialogEl.html($newForm.html()); initializeDialog(); }