Skip to content
Snippets Groups Projects
Select Git revision
  • a91a16df1f80f7f6d907fc9fd0c13f64bb6665df
  • master default protected
2 results

train_models.r

Blame
  • 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;
        }
    }