Beispiel #1
0
 /**
  * Handle domain logic for an action.
  *
  * @param array $input
  *
  * @return PayloadInterface
  */
 public function __invoke(array $input)
 {
     $user = $this->user_repository->getFromInputToken($input);
     if ($user->role !== 'manager') {
         throw new AuthException('Only managers have access to do that');
     }
     if (empty($input['manager_id'])) {
         $input['manager_id'] = $user->id;
     }
     $input['start_time'] = date('Y-m-d G:i:s', strtotime($input['start_time']));
     if ($input['start_time'] === false) {
         throw new \DomainException("Could not parse 'start time'");
     }
     $input['end_time'] = date('Y-m-d G:i:s', strtotime($input['end_time']));
     if ($input['end_time'] === false) {
         throw new \DomainException("Could not parse 'end time'");
     }
     // only grab the necessary fields
     $values = array_intersect_key($input, array_flip(['manager_id', 'employee_id', 'break', 'start_time', 'end_time']));
     $shift = $this->shift_repository->create($values);
     return $this->payload->withStatus(PayloadInterface::OK)->withOutput([$shift]);
 }