public function run()
 {
     $count = \Workshop\Request::get_all()->count();
     $concepts = \Workshop\Concept::get_all()->sort_by('name')->fetch();
     $requests = \Workshop\Request::get_all()->add_filter(array('attr' => 'other', 'type' => 'is_null', 'is_null' => false))->sort_by('created_at desc')->fetch();
     foreach ($concepts as $ws) {
         $ws->total = $ws->requests->count();
     }
     usort($concepts, function ($a, $b) {
         if ($a->total == $b->total) {
             return 0;
         }
         return $a->total > $b->total ? -1 : 1;
     });
     $this->partial('concept/results', array("count" => $count, "concepts" => $concepts, "requests" => $requests));
 }
 public function run()
 {
     $status = 400;
     $message = 'fill-all-fields';
     $data = null;
     $concepts = \Workshop\Concept::get_all()->fetch();
     $opts = array();
     foreach ($concepts as $concept) {
         $opts[$concept->id] = $concept;
     }
     $opts[666] = 'other';
     $f = $this->response->form(array('use_comm' => true));
     $f->input(array('type' => 'text', 'name' => 'name', 'required' => true));
     $f->input(array('type' => 'email', 'name' => 'email', 'required' => true));
     $f->input(array('type' => 'textarea', 'name' => 'other', 'required' => false));
     $f->input(array('type' => 'checkbox', 'name' => 'workshops', 'multiple' => true, 'required' => true, 'options' => $opts));
     if ($f->submited()) {
         if ($f->passed()) {
             $p = $f->get_data();
             $up = array();
             foreach ($p['workshops'] as $key => $val) {
                 if ($val != 666) {
                     $up[] = $val;
                 }
             }
             $p['workshops'] = $up;
             $item = new \Workshop\Request($p);
             $item->save();
             $status = 200;
             $message = 'voted';
             $data = $item->to_object();
         }
     }
     $this->response->mime = 'text/html';
     $this->json_response($status, $message, $data);
 }