Select Git revision
train_models.r
-
Carl Corder authoredCarl Corder authored
ReportsController.php 7.57 KiB
<?php
class Timeclock_ReportsController extends Unl_Controller_Action
{
protected $_tableNameTransform = array('count' => 'count',
'building_name' => 'Location',
'time' => 'time',
'sex' => 'Gender',
'college' => 'College',
'major_1' => 'Major',
'major_2' => 'Second-Major',
'minor_1' => 'Minor',
'minor_2' => 'Second-Minor',
'degree' => 'Degree',
'class_level' => 'Class',
'honors_program' => 'Honors',
'full_part' => 'Full-time',
'birth_dt' => 'Birthdate',
'ethnic_origin' => 'Ethnicity',
'advisor_name' => 'Advisor',
'pre_prof' => 'Pre-Prof',
'ug_cum_gpa' => 'GPA');
public function indexAction()
{
$this->_redirect('/timeclock/reports/demographics');
}
public function demographicsAction()
{
$userTable = new Auth_Model_Users();
$events = $userTable->fetchCurrentUser()->findDependentRowset('Timeclock_Model_Events');
$eventsArray = array();
foreach ($events as $event) {
$eventsArray[$event->eventId] = $event->name;
}
$this->view->events = $eventsArray;
$this->view->fields = $this->_tableNameTransform;
}
public function getDataAction()
{
$eventId = $this->_getParam('eventId');
$fields = $this->_getParam('fields');
$eventId = intval($eventId);
$peopleTable = new Timeclock_Model_People();
$demographics = $peopleTable->fetchCountBy($eventId, $fields);
$dom = new DOMDocument();
$root = $dom->createElement('result');
$dom->appendChild($root);
foreach ($demographics as $row) {
$recordNode = $dom->createElement('record');
$root->appendChild($recordNode);
foreach ($row as $key => $value) {
$node = $dom->createElement($this->_tableNameTransform[$key]);
$node->appendChild($dom->createTextNode($value));
$recordNode->appendChild($node);
}
}
header('Content-Type: text/xml');
echo $dom->saveXML();
exit;
}
public function monthlyAction()
{
$userTable = new Auth_Model_Users();
$events = $userTable->fetchCurrentUser()->findDependentRowset('Timeclock_Model_Events');
$eventsArray = array();
foreach ($events as $event) {
$eventsArray[$event->eventId] = $event->name;
}
$this->view->events = $eventsArray;
}
public function monthlyPostAction()
{
$in = $this->_getAllParams();
$eventId = $in['eventId'];
$date = strtotime($in['date']);
$startTime = new Zend_Date($date);
$startTime->setDay(1);
$startTime->setHour(0);
$startTime->setMinute(0);
$startTime->setSecond(0);
$endTime = clone $startTime;
$endTime->addMonth(1);
$endTime->subSecond(1);
$this->_redirect('/timeclock/reports/view/eventId/' . $eventId . '/startTime/' . $startTime->getTimestamp() . '/endTime/' . $endTime->getTimestamp());
}
public function weeklyAction()
{
$userTable = new Auth_Model_Users();
$events = $userTable->fetchCurrentUser()->findDependentRowset('Timeclock_Model_Events');
$eventsArray = array();
foreach ($events as $event) {
$eventsArray[$event->eventId] = $event->name;
}
$this->view->events = $eventsArray;
}
public function weeklyPostAction()
{
$in = $this->_getAllParams();
$eventId = $in['eventId'];
$date = strtotime($in['date']);
$startTime = new Zend_Date($date);
$startTime->setWeekday('Sunday');
$startTime->setHour(0);
$startTime->setMinute(0);
$startTime->setSecond(0);
$endTime = clone $startTime;
$endTime->addWeek(1);
$endTime->subSecond(1);
$this->_redirect('/timeclock/reports/view/eventId/' . $eventId . '/startTime/' . $startTime->getTimestamp() . '/endTime/' . $endTime->getTimestamp());
}
public function dailyAction()
{
$userTable = new Auth_Model_Users();
$events = $userTable->fetchCurrentUser()->findDependentRowset('Timeclock_Model_Events');
$eventsArray = array();
foreach ($events as $event) {
$eventsArray[$event->eventId] = $event->name;
}
$this->view->events = $eventsArray;
}
public function dailyPostAction()
{
$in = $this->_getAllParams();
$eventId = $in['eventId'];
$date = strtotime($in['date']);
$startTime = new Zend_Date($date);
$startTime->setHour(0);
$startTime->setMinute(0);
$startTime->setSecond(0);
$endTime = clone $startTime;
$endTime->addDay(1);
$endTime->subSecond(1);
$this->_redirect('/timeclock/reports/view/eventId/' . $eventId . '/startTime/' . $startTime->getTimestamp() . '/endTime/' . $endTime->getTimestamp());
}
public function viewAction()
{
$in = $this->_getAllParams();
$startTime = new Zend_Date($in['startTime']);
$endTime = new Zend_Date($in['endTime']);
$eventId = $in['eventId'];
$userTable = new Auth_Model_Users();
$events = $userTable->fetchCurrentUser()->findDependentRowset('Timeclock_Model_Events');
$userEventIds = array();
foreach ($events as $event) {
$userEventIds[] = $event->eventId;
}
if (!in_array($eventId, $userEventIds)) {
throw new Exception('You do not have access to this event!');
}
$attendancesTable = new Timeclock_Model_Attendances();
$attendances = $attendancesTable->findWithEventInTimeRange($eventId, $startTime, $endTime);
$userAttendances = array();
$userDurations = array();
foreach ($attendances as $attendance) {
if (!array_key_exists($attendance->nuid, $userDurations)) {
$userDurations[$attendance->nuid] = 0;
}
$userDurations[$attendance->nuid] += ($attendance->timeOut - $attendance->timeIn);
$userAttendances[$attendance->nuid][] = array('timeIn' => $attendance->timeIn, 'timeOut' => $attendance->timeOut);
}
$eventTable = new Timeclock_Model_Events();
$event = $eventTable->find($eventId);
$event = $event[0];
$peopleTable = new Timeclock_Model_People();
$nuids = array_keys($userAttendances);
$people = $peopleTable->findWithNuids($nuids);
$peopleArray = array();
foreach ($people as $person) {
$peopleArray[$person->nuid] = $person;
}
$this->view->userDurations = $userDurations;
$this->view->userAttendances = $userAttendances;
$this->view->startTime = $startTime;
$this->view->endTime = $endTime;
$this->view->eventName = $event->name;
$this->view->people = $peopleArray;
}
}