예제 #1
0
 public function run()
 {
     $signups = \Workshop\SignUp::get_all()->where(array("lunch" => true, "canceled" => false))->add_filter(array("attr" => "id_assigned_to", "type" => "exact", "exact" => [3, 5, 9, 10]))->fetch();
     $stats = array();
     $default = [1, 2];
     $foods = \Food\Item::get_all()->where(array('date' => $this::DATE))->fetch();
     $canSend = array();
     foreach ($foods as $food) {
         $canSend[$food->id] = $food;
         $stats[$food->id] = 0;
     }
     foreach ($signups as $person) {
         $food = $person->food->where(array('date' => $this::DATE))->fetch();
         if (count($food)) {
             foreach ($food as $item) {
                 $stats[$item->id] += 1;
             }
         } else {
             foreach ($default as $item) {
                 $stats[$item] += 1;
             }
         }
     }
     $this->partial('stats/delivery', array("stats" => $stats, "foods" => $canSend));
 }
예제 #2
0
 public function run()
 {
     $account_pay = \Workshop\Check::get_all()->reset_cols()->add_cols(array('SUM(amount) as `total`'))->where(array("is_paid" => false))->assoc_with(null)->fetch_one();
     $account_sum = \Workshop\Payment::get_all()->reset_cols()->add_cols(array('SUM(amount) as `total`'))->assoc_with(null)->fetch_one();
     $stats = array("total" => \Workshop\SignUp::get_all()->count(), "unpaid" => \Workshop\SignUp::get_all()->where(array('paid' => false, 'solved' => false))->count(), "paid" => \Workshop\SignUp::get_all()->where(array('paid' => true))->count(), "waiting" => \Workshop\SignUp::get_all()->where(array('paid' => true, 'solved' => false, 'canceled' => false))->count(), "solved" => \Workshop\SignUp::get_all()->where(array('solved' => true, 'canceled' => false))->count(), "meals" => \Workshop\SignUp::get_all()->where(array('solved' => true, 'lunch' => true, 'canceled' => false))->count(), "hotel" => \Workshop\SignUp::get_all()->where(array('solved' => true, 'hotel' => true, 'canceled' => false))->count(), "expected_cnt" => \Workshop\Check::get_all()->where(array("is_paid" => false))->count(), "expected_sum" => $account_pay['total'], "received_cnt" => \Workshop\Payment::get_all()->count(), "received_sum" => $account_sum['total']);
     $ws = \Workshop::get_all()->fetch();
     foreach ($ws as $w) {
         $w->sig_total = $w->signups->count();
         $w->ass_total = $w->assignees->count();
     }
     $this->partial('stats/signups', array("stats" => $stats, "workshops" => $ws));
 }
 public function run()
 {
     $ppl = \Workshop\SignUp::get_all(array("solved" => true, "lunch" => true, 'canceled' => false))->add_filter(array("attr" => 'id_assigned_to', "type" => 'is_null', "is_null" => false))->sort_by('name_first, name_last')->fetch();
     $defaults = array('2016-05-14' => array(\Food\Item::find(1), \Food\Item::find(2)), '2016-05-15' => array(\Food\Item::find(5), \Food\Item::find(7)));
     $participants = array();
     $focus = array('2016-05-14', '2016-05-15');
     foreach ($ppl as $person) {
         $days = array();
         foreach ($focus as $date_str) {
             $date = new \DateTime($date_str);
             $days[$date_str] = array("date" => $date->format('d. m. Y'), "items" => array(), 'food' => $defaults[$date->format('Y-m-d')]);
             $food = $person->food->where(array("date" => $date_str))->fetch();
             if (any($food)) {
                 $days[$date_str]['food'] = $food;
             }
         }
         $participants[] = array("days" => $days, "name" => $person->toName());
     }
     $this->partial('stats/participant-lunch', array("participants" => $participants));
 }
예제 #4
0
 public function run()
 {
     $food = \Food\Item::get_all(array("edible" => true))->sort_by('type, blank desc')->fetch();
     $days = array();
     foreach ($food as $item) {
         $date = $item->date->format('Y-m-d');
         if (!array_key_exists($date, $days)) {
             $days[$date] = array("date" => $item->date, "items" => array());
         }
         $item->type_label = $item->type == 1 ? 'Polévka' : 'Hlavní';
         $item->total = $item->eaters->where(array("solved" => true))->count();
         if ($item->blank) {
             $today_picked = \Workshop\SignUp::get_all()->where(array('solved' => true, 'canceled' => false))->join('workshop_signup_has_food_item', 'USING(id_workshop_signup)', 'wshfi', 'left')->join('food_item', 'USING(id_food_item)', 'fi', 'left')->where(array('type' => $item->type, 'date' => $item->date->format('Y-m-d H:i:s')), 'fi')->count();
             $signups_total = \Workshop\SignUp::get_all()->where(array('solved' => true, 'lunch' => true))->count();
             $unpicked = $signups_total - $today_picked;
             $item->total += $unpicked;
         }
         $days[$date]['items'][] = $item;
     }
     $this->partial('stats/meals', array("days" => $days));
 }
예제 #5
0
 public function run()
 {
     $ppl = \Workshop\SignUp::get_all(array("solved" => true, "canceled" => false))->add_filter(array("attr" => 'id_assigned_to', "type" => 'is_null', "is_null" => false))->sort_by('name_first, name_last')->fetch();
     $this->partial('stats/check-in', array("participants" => $ppl));
 }
예제 #6
0
 public function run()
 {
     $items = \Workshop\SignUp::get_all()->where(array('paid' => false, 'solved' => false, 'canceled' => false))->fetch();
     $this->partial('stats/non-payers', array("items" => $items));
 }
예제 #7
0
 public function run()
 {
     $conds = array('paid' => true, 'solved' => true, 'canceled' => false);
     $items = \Workshop\SignUp::get_all()->reset_cols()->add_cols(array("team" => 'team', "total" => 'COUNT(*)'))->where($conds)->group_by('team')->assoc_with(null)->sort_by('total desc')->fetch();
     $this->partial('stats/teams', array("items" => $items));
 }
예제 #8
0
 public function run()
 {
     $total = \Workshop\SignUp::count_all(array("hotel" => true, "solved" => true, "canceled" => false));
     $rooms = $this->fetchRooms();
     $this->partial('stats/hotel', array("total" => $total, "free" => $rooms['free'], "rooms" => $rooms['rooms'], "housed" => $rooms['housed']));
 }
예제 #9
0
 public function cmd_lostAndFound()
 {
     \System\Init::full();
     $users = \Workshop\SignUp::get_all()->where(array("solved" => true, "newsletter" => true, "sentLostAndFound" => false))->fetch();
     \Helper\Cli::do_over($users, function ($key, $user) {
         $ren = new \System\Template\Renderer\Txt();
         $ren->reset_layout();
         $ren->partial('mail/notif/lost-and-found', array("user" => $user, "symvar" => $user->check->symvar));
         $mail = new \Helper\Offcom\Mail(array('rcpt' => array($user->email), 'subject' => 'Improtřesk 2016 - Ztráty a nálezy, pozvánka', 'reply_to' => \System\Settings::get('offcom', 'default', 'reply_to'), 'message' => $ren->render_content()));
         $mail->send();
         $user->sentLostAndFound = true;
         $user->save();
     });
 }