<?php

class Timeclock_EventManagerController extends Unl_Controller_Action 
{
    public function indexAction()
    {
        $userTable = new Auth_Model_Users();
        $eventsTable = new Timeclock_Model_Events();
        
        $events = $eventsTable->findWithAdminUserId($userTable->fetchCurrentUser()->userId);
        
        $this->view->events = $events;
    }
    
    public function addPostAction()
    {
        $in = $this->_getAllParams();
        
        $eventTable = new Timeclock_Model_Events();
        $event = $eventTable->fetchNew();
        
        $event->name = $in['name'];
        $event->anonymous = $in['anonymous'];
        $event->allUsers = $in['allUsers'];
        
        $userTable = new Auth_Model_Users();
        $event->owner = $userTable->fetchCurrentUser()->userId;
        
        $event->save();
        
        $eventAttendeeTable = new Timeclock_Model_EventAttendees();
        foreach ($in['attendees'] as $nuid) {
        	$attendee = $eventAttendeeTable->fetchNew();
        	$attendee->event = $event->eventId;
        	$attendee->nuid = $nuid;
        	$attendee->save();
        }
        
        $eventAdminTable = new Timeclock_Model_EventAdministrators();
        
        $eventAdmin = $eventAdminTable->fetchNew();
        $eventAdmin->event = $event->eventId;
        $eventAdmin->user = $userTable->fetchCurrentUser()->userId;
        $eventAdmin->save();
        
        
        $this->_redirect('/timeclock/event-manager');
    }
    
    public function editPostAction()
    {
        $in = $this->_getAllParams();
        
        $eventTable = new Timeclock_Model_Events();
        $eventAttendeeTable = new Timeclock_Model_EventAttendees();
        $eventAdminTable = new Timeclock_Model_EventAdministrators();
        $userTable = new Auth_Model_Users();
        
        foreach ($in['edit'] as $id => $data) {
            $event = $eventTable->find($id)->current();
            if (!$event) {
                continue;
            }
            if ($data['delete']) {
                $event->delete();
                continue;
            }
            
            $event->name = $data['name'];
            $event->anonymous = $data['anonymous'];
            $event->allUsers = $data['allUsers'];
            $event->save();
            
            if (array_key_exists('attendees', $data)) {
	            foreach ($data['attendees'] as $attendeeId => $attendeeData) {
	            	$attendee = $eventAttendeeTable->find($attendeeId)->current();
	            	if (!$attendee) {
	            		$attendee = $eventAttendeeTable->fetchNew();
	            		$attendee->event = $event->eventId;
	            	}
	            	if (array_key_exists('delete', $attendeeData) && $attendeeData['delete']) {
	            		$attendee->delete();
	            		continue;
	            	}
	            	
	            	$attendee->nuid = $attendeeData['nuid'];
	            	$attendee->save();
	            }
            }
            
            if (array_key_exists('admins', $data)) {
	            foreach ($data['admins'] as $eventAdminId => $adminData) {
	            	$eventAdmin = $eventAdminTable->find($eventAdminId)->current();
	            	$user = $userTable->findWithUsername($adminData['username']);
	            	
	            	if (!$eventAdmin) {
	            		$eventAdmin = $eventAdminTable->fetchNew();
	            		$eventAdmin->event = $event->eventId;
	            	}
	            	if (array_key_exists('delete', $adminData) && $adminData['delete']) {
	            		$eventAdmin->delete();
	            		continue;
	            	}
	            	
	            	$eventAdmin->user = $user->userId;
	            	$eventAdmin->save();
	            }
            }
        }
        
        $this->_redirect('/timeclock/event-manager');
    }
}