public function postAdminStreamControlStreamState($id)
 {
     Auth::getUser()->hasPermissionOr401(Config::get("permissions.mediaItems"), 1);
     $mediaItem = MediaItem::with("liveStreamItem", "liveStreamItem.stateDefinition")->find($id);
     if (is_null($mediaItem)) {
         App::abort(404);
     }
     $liveStreamItem = $mediaItem->liveStreamItem;
     if (is_null($liveStreamItem)) {
         App::abort(404);
     }
     // should receive stream_state which is the value that the stream_state should be set to.
     $requestedState = null;
     if (isset($_POST['stream_state'])) {
         $requestedState = intval($_POST['stream_state']);
     }
     $stateDefinition = !is_null($requestedState) ? LiveStreamStateDefinition::find($requestedState) : null;
     if (is_null($stateDefinition)) {
         throw new Exception("Invalid stream state.");
     }
     $liveStreamItem->stateDefinition()->associate($stateDefinition);
     $liveStreamItem->save();
     $resp = array("streamState" => intval($liveStreamItem->stateDefinition->id));
     return Response::json($resp);
 }
 public function hasJustLeftNotLive()
 {
     return !$this->isNotLive() && $this->exists && $this->isNotLive(LiveStreamStateDefinition::find($this->getOriginal("state_id", 1)));
 }