amtgard/ORK3

View on GitHub
orkui/controller/controller.Attendance.php

Summary

Maintainability
F
3 days
Test Coverage
<?php

class Controller_Attendance extends Controller {

    public function __construct($call=null, $id=null) {
        parent::__construct($call, $id);

        $this->load_model('Park');
        
        switch ($call) {
            case 'kingdom':
                break;
            case 'park':
                $park_info = $this->Park->get_park_info($id);
                $this->session->park_name = $park_info['ParkInfo']['ParkName'];
                $this->session->kingdom_id = $park_info['KingdomInfo']['KingdomId'];
                $this->session->kingdom_name = $park_info['KingdomInfo']['KingdomName'];
                $this->data['menu']['kingdom'] = array( 'url' => UIR.'Kingdom/index/'.$this->session->kingdom_id, 'display' => $this->session->kingdom_name );
                $this->data['menu']['park'] = array( 'url' => UIR.'Park/index/'.$this->session->park_id, 'display' => $this->session->park_name );
                break;
            case 'event':
                break;
        }
        
        $params = explode('/',$id);
        $id = $params[0];
        $this->data['menu']['attendance'] = array( 'url' => UIR."Attendance/$call/$id", 'display' => 'Attendance' );
    
    }
    
    public function index($action = null) {
    
    }
    
    public function kingdom($k) {
        $params = explode('/',$k);
        $id = $params[0];
        if (count($params) > 1)
            $action = $params[1];
        if (count($params) > 2)
            $del_id = $params[2];

        $this->data['Type'] = $type;
        $this->data['Id'] = $id;
        
        $this->data['DefaultCredits'] = 1;
        
        if (strlen($action) > 0) {
            $this->request->save('Attendance_kingdom', true);
            $r = array('Status'=>0);
            if (!isset($this->session->user_id)) {
                header( 'Location: '.UIR."Login/login/Attendance/park/$id" );
            } else {
                switch ($action) {
                    case 'new':
                        $r = $this->Attendance->add_attendance(
                                $this->session->token, 
                                $this->request->Attendance_kingdom->AttendanceDate, 
                                $id, 
                                null,
                                $this->request->Attendance_kingdom->MundaneId, 
                                $this->request->Attendance_kingdom->ClassId, 
                                $this->request->Attendance_kingdom->Credits
                            );
                        break;
                        $this->data['DefaultCredits'] = $this->request->Attendance_kingdom->Credits;
                    case 'delete':
                        $r = $this->Attendance->delete_attendance($this->session->token, $del_id);
                        break;
                }
                if ($r['Status'] == 0) {
                    $this->data['AttendanceDate'] = $this->request->Attendance_kingdom->AttendanceDate;
                    $this->request->clear('Attendance_kingdom');
                } else if($r['Status'] == 5) {
                    header( 'Location: '.UIR."Login/login/Attendance/park/$id" );
                } else {
                    $this->data['Error'] = $r['Error'].':<p>'.$r['Detail'];
                }
            }
        }
        logtrace('Attendance->park()',array($params, $id, $this->request, $this->request->Attendance_kingdom->AttendanceDate));
                
        if (!isset($this->data['AttendanceDate'])) {
            $this->data['AttendanceDate'] = isset($this->request->AttendanceDate)?$this->request->AttendanceDate:date('Y-m-d');
        }
        $this->data['AttendanceReport'] = $this->Attendance->get_kingdom_attendance_for_date($id, $this->data['AttendanceDate']);
        if ($this->request->exists('Attendance_kingdom')) {
            $this->data['Attendance_kingdom'] = $this->request->Attendance_kingdom->Request;
        }
        $this->data['Classes'] = $this->Attendance->get_classes();
        if ($this->data['Classes']['Status']['Status'] != 0) {
            $this->data['Error'] = $this->data['Classes']['Status']['Error'];
        }
    }
    
  public function behold($p) {
        $params = explode('/',$p);
        $action = $params[0];

    if (is_numeric($action)) {
      $this->session->behold_park_id = $action;
    }
    
    switch ($action) {
      case 'gaze':
          if ($_FILES['GroupSelfie']['size'] > 0 && Common::supported_mime_types($_FILES['GroupSelfie']['type'])) {
            $id = rand(0, 1000000);
            if (move_uploaded_file($_FILES['GroupSelfie']['tmp_name'], DIR_TMP . sprintf("gs_%06d", $id))) {
              $face_im = file_get_contents(DIR_TMP . sprintf("gs_%06d", $id));
              $face_imdata = base64_encode($face_im);
              $faces = $this->Attendance->lookup_by_faces([
                  'Base64Selfie' => $face_imdata
                ]);
              unlink(DIR_TMP . sprintf("gs_%06d", $id));
            }
          }
              $this->data['QueryImage'] = $face_imdata;
              $this->data['FaceLocations'] = $faces;
          $fdata = array();
          foreach ($faces as $k => $fd) {
            $fdata[] = $fd[0]['id'] > 0 ? [$fd[0]['id'], $fd[0]['Persona'], $fd[1]] : [$fd[0]['id'], "", $fd[1]];
          }
              $this->data['FaceData'] = $fdata;
              $this->data['Classes'] = $this->Attendance->get_classes();
          
          logtrace("Faces of Gazes", $faces);
        break;
      case 'behold':
        if (!is_numeric($this->session->behold_park_id)) {
          die ('Park ID is not numeric'); 
        }
        foreach ($this->request->class as $mundane_id => $class_id) {
                        $r = $this->Attendance->add_attendance(
                                $this->session->token, 
                                $this->request->attendance_date, 
                                $this->session->behold_park_id, 
                                null,
                                $mundane_id, 
                                $class_id, 
                                1
                            );
          if ($r['Status'] == 5) {
            header('location: /orkui/index.php?Route=Login/login'); 
          }
        }
        $id = $this->session->behold_park_id;
        unset($this->session->behold_park_id);
        header('location: /orkui/index.php?Route=Attendance/park/' . $id);
        break;
    }
        if (!isset($this->data['AttendanceDate'])) {
            $this->data['AttendanceDate'] = isset($this->request->AttendanceDate)?$this->request->AttendanceDate:date('Y-m-d');
        }
  }
  
    public function park($p) {
        $params = explode('/',$p);
        $id = $params[0];
        if (count($params) > 1)
            $action = $params[1];
        if (count($params) > 2)
            $del_id = $params[2];

        $this->data['Type'] = $type;
        $this->data['Id'] = $id;
        
        $this->data['DefaultCredits'] = 1;
        $this->data['DefaultParkName'] = $this->session->park_name;
        $this->data['DefaultParkId'] = $this->session->park_id;
        $this->data['DefaultKingdomName'] = $this->session->kingdom_name;
        $this->data['DefaultKingdomId'] = $this->session->kingdom_id;
        
        if (strlen($action) > 0) {
            $this->request->save('Attendance_park', true);
            $r = array('Status'=>0);
            if (!isset($this->session->user_id)) {
                header( 'Location: '.UIR."Login/login/Attendance/park/$id" );
            } else {
                switch ($action) {
                    case 'new':
                        $r = $this->Attendance->add_attendance(
                                $this->session->token, 
                                $this->request->Attendance_park->AttendanceDate, 
                                $id, 
                                null,
                                $this->request->Attendance_park->MundaneId, 
                                $this->request->Attendance_park->ClassId, 
                                $this->request->Attendance_park->Credits
                            );
                        $this->data['DefaultCredits'] = $this->request->Attendance_park->Credits;
                        $this->data['DefaultParkName'] = $this->request->Attendance_park->ParkName;
                        $this->data['DefaultParkId'] = $this->request->Attendance_park->ParkId;
                        $this->data['DefaultKingdomName'] = $this->request->Attendance_park->KingdomName;
                        $this->data['DefaultKingdomId'] = $this->request->Attendance_park->KingdomId;
                        break;
                    case 'delete':
                        $r = $this->Attendance->delete_attendance($this->session->token, $del_id);
                        break;
                }
                if ($r['Status'] == 0) {
                    $this->data['AttendanceDate'] = $this->request->Attendance_park->AttendanceDate;
                    $this->request->clear('Attendance_park');
                } else if($r['Status'] == 5) {
                    header( 'Location: '.UIR."Login/login/Attendance/park/$id" );
                } else {
                    $this->data['Error'] = $r['Error'].':<p>'.$r['Detail'];
                }
            }
        }
        logtrace('Attendance->park()',array($params, $id, $this->request, $this->request->Attendance_park->AttendanceDate));
                
        if (!isset($this->data['AttendanceDate'])) {
            $this->data['AttendanceDate'] = isset($this->request->AttendanceDate)?$this->request->AttendanceDate:date('Y-m-d');
        }
        $this->data['AttendanceReport'] = $this->Attendance->get_attendance_for_date($id, $this->data['AttendanceDate']);
        if ($this->request->exists('Attendance_park')) {
            $this->data['Attendance_park'] = $this->request->Attendance_park->Request;
        }
        $this->data['Classes'] = $this->Attendance->get_classes();
        if ($this->data['Classes']['Status']['Status'] != 0) {
            $this->data['Error'] = $this->data['Classes']['Status']['Error'];
        }
    }    

    public function event($p) {
        $params = explode('/',$p);
        $event_id = $params[0];
        $detail_id = $params[1];
        
        if (count($params) > 2)
            $action = $params[2];
        if (count($params) > 3)
            $del_id = $params[3];

        $this->data['DetailId'] = $detail_id;
        $this->data['EventId'] = $event_id;
        $this->data['Id'] = $event_id; // Legacy reference ... christ

        $this->data['DefaultAttendanceCredits'] = 1;
        $this->data['DefaultParkName'] = $this->session->park_name;
        $this->data['DefaultParkId'] = $this->session->park_id;
        $this->data['DefaultKingdomName'] = $this->session->kingdom_name;
        $this->data['DefaultKingdomId'] = $this->session->kingdom_id;
                    
        if (strlen($action) > 0) {
            $this->request->save('Attendance_event', true);
            $r = array('Status'=>0);
            if (!isset($this->session->user_id)) {
                //header( 'Location: '.UIR."Login/login/Attendance/event/$event_id/$detail_id" );
            } else {
                switch ($action) {
                    case 'new':
            $detail = $this->Attendance->get_eventdetail_info($detail_id);

            $r = $this->Attendance->add_attendance(
                                $this->session->token, 
                                $this->request->Attendance_event->AttendanceDate, 
                                valid_id($detail['AtParkId'])?$detail['AtParkId']:null, 
                                $detail_id,
                                $this->request->Attendance_event->MundaneId, 
                                $this->request->Attendance_event->ClassId, 
                                $this->request->Attendance_event->Credits
                            );
                        break;
                    case 'delete':
                        $r = $this->Attendance->delete_attendance($this->session->token, $del_id);
                        break;
                }
                if ($r['Status'] == 0) {
                    $this->data['AttendanceDate'] = $this->request->Attendance_event->AttendanceDate;
                    $this->data['DefaultParkName'] = $this->request->Attendance_event->ParkName;
                    $this->data['DefaultParkId'] = $this->request->Attendance_event->ParkId;
                    $this->data['DefaultKingdomName'] = $this->request->Attendance_event->KingdomName;
                    $this->data['DefaultKingdomId'] = $this->request->Attendance_event->KingdomId;
                    $this->data['DefaultAttendanceCredits'] = $this->request->Attendance_event->Credits;
                    $this->request->clear('Attendance_event');
                } else if($r['Status'] == 5) {
                    //header( 'Location: '.UIR."Login/login/Attendance/event/$event_id/$detail_id" );
                } else {
                    $this->data['Error'] = $r['Error'].':<p>'.$r['Detail'];
                }
            }
        }
            
        $this->data['EventDetailInfo'] = $this->Attendance->get_eventdetail_info($detail_id);
        $this->data['EventInfo'] = $this->Attendance->get_event_info($event_id);
        logtrace('Attendance->event()',array($params, $this->request));
        $this->data['AttendanceReport'] = $this->Attendance->get_attendance_for_event($event_id, $detail_id);
        if ($this->request->exists('Attendance_event')) {
            $this->data['Attendance_event'] = $this->request->Attendance_event->Request;
        }
    $classes = $this->Attendance->get_classes();
        $this->data['Classes'] = $classes['Classes'];
        if ($this->data['Classes']['Status']['Status'] != 0) {
            $this->data['Error'] = $this->data['Classes']['Status']['Error'];
        }
    }    
    
}



?>