public function __invoke(array $input)
 {
     $output['weekly_hours'] = [];
     $payload = new Payload();
     $payload->setStatus(Payload::FOUND);
     if (empty($input['token']) || !Authenticator::validateEmployee($input['token'])) {
         $output['error']['num'] = '101';
         $output['error']['msg'] = 'Invalid Token';
         $payload->setOutput($output);
         return $payload;
     }
     $user_mapper = spot()->mapper('Spark\\Project\\Domain\\Entity\\User');
     $employee = $user_mapper->first(['id' => $input['employee_id']]);
     if (!$employee) {
         $output['error']['num'] = '811';
         $output['error']['msg'] = 'Invalid employee_id';
         $payload->setOutput($output);
         return $payload;
     }
     $weeks_back = 5;
     if (!empty($input['weeks_back']) && $input['weeks_back'] > 0) {
         $weeks_back = $input['weeks_back'];
     }
     $mapper = spot()->mapper('Spark\\Project\\Domain\\Entity\\Shift');
     $output['weekly_hours'] = $mapper->getWeeklyHours($input['employee_id'], $weeks_back);
     $payload->setOutput($output);
     return $payload;
 }
 public function __invoke(array $input)
 {
     $output['coworkers_shifts'] = [];
     $payload = new Payload();
     $payload->setStatus(Payload::FOUND);
     if (empty($input['token']) || !Authenticator::validateEmployee($input['token'])) {
         $output['error']['num'] = '101';
         $output['error']['msg'] = 'Invalid Token';
         $payload->setOutput($output);
         return $payload;
     }
     $mapper = spot()->mapper('Spark\\Project\\Domain\\Entity\\Shift');
     $shift = $mapper->first(['id' => $input['shift_id']]);
     if (!$shift) {
         $output['error']['num'] = '811';
         $output['error']['msg'] = 'Invalid shift_id';
         $payload->setOutput($output);
         return $payload;
     }
     $coworkers_shifts = $mapper->getCoworkerShifts($shift->id);
     $return_attrs = ['user_id', 'name', 'start_time', 'end_time'];
     foreach ($coworkers_shifts as $shift) {
         $output['coworkers_shifts'][] = $shift->getAPIOutput($return_attrs);
     }
     if (empty($output['error']['num'])) {
         $output['error']['num'] = '000';
         $output['error']['msg'] = 'SUCCESS';
     }
     $payload->setOutput($output);
     return $payload;
 }
 public function __invoke(array $input)
 {
     $output['shifts'] = [];
     $payload = new Payload();
     $payload->setStatus(Payload::FOUND);
     if (empty($input['token']) || !Authenticator::validateEmployee($input['token'])) {
         $output['error']['num'] = '101';
         $output['error']['msg'] = 'Invalid Token';
         $payload->setOutput($output);
         return $payload;
     }
     if (empty($input['employee_id'])) {
         $output['error']['num'] = '801';
         $output['error']['msg'] = 'employee_id must be specified';
         $payload->setOutput($output);
         return $payload;
     }
     $user_mapper = spot()->mapper('Spark\\Project\\Domain\\Entity\\User');
     $user = $user_mapper->first(['id' => $input['employee_id']]);
     if (!$user) {
         $output['error']['num'] = '811';
         $output['error']['msg'] = 'Invalid employee_id';
         $payload->setOutput($output);
         return $payload;
     }
     $mapper = spot()->mapper('Spark\\Project\\Domain\\Entity\\Shift');
     $shifts = $mapper->where(['employee_id' => $input['employee_id']])->order(['start_time' => 'ASC']);
     $return_attrs = ['manager_id', 'break', 'start_time', 'end_time'];
     foreach ($shifts as $shift) {
         $output['shifts'][] = $shift->getAPIOutput($return_attrs);
     }
     if (empty($output['error']['num'])) {
         $output['error']['num'] = '000';
         $output['error']['msg'] = 'SUCCESS';
     }
     $payload->setOutput($output);
     return $payload;
 }
 public function __invoke(array $input)
 {
     $output['manager'] = [];
     $payload = new Payload();
     $payload->setStatus(Payload::FOUND);
     if (empty($input['token']) || !Authenticator::validateEmployee($input['token'])) {
         $output['error']['num'] = '101';
         $output['error']['msg'] = 'Invalid Token';
         $payload->setOutput($output);
         return $payload;
     }
     if (empty($input['manager_id'])) {
         $output['error']['num'] = '801';
         $output['error']['msg'] = 'manager_id must be specified';
         $payload->setOutput($output);
         return $payload;
     }
     $user_mapper = spot()->mapper('Spark\\Project\\Domain\\Entity\\User');
     $user = $user_mapper->where(['id' => $input['manager_id']])->first();
     if (!$user) {
         $output['error']['num'] = '811';
         $output['error']['msg'] = 'Invalid manager_id';
         $payload->setOutput($output);
         return $payload;
     }
     $return_attrs = ['id', 'name', 'email', 'phone'];
     foreach ($return_attrs as $attr) {
         $manager[$attr] = $user->{$attr};
     }
     $output['manager'] = $manager;
     if (empty($output['error']['num'])) {
         $output['error']['num'] = '000';
         $output['error']['msg'] = 'SUCCESS';
     }
     $payload->setOutput($output);
     return $payload;
 }