public function store($id)
 {
     $chat = CarChat::find($id);
     if ($chat->isOwner($this->user->id)) {
         if (!$chat->receiver->enable_carchats) {
             return $this->respondInsufficientPrivileges('chat.carchats-not-accepting');
         }
     } else {
         if (!$chat->owner->enable_carchats) {
             return $this->respondInsufficientPrivileges('chat.carchats-not-accepting');
         }
     }
     if ($chat->owner->sex == $chat->receiver->sex) {
         return $this->respondInsufficientPrivileges('chat.same-sex');
     }
     //		if (!$chat->isOwner($this->user->id)) {
     //			if ($this->user->enable_carchats) return $this->respondInsufficientPrivileges('chat.carchats-not-accepting');
     //		}
     if (!$chat) {
         return $this->respondNotFound('chat.not-found');
     }
     /*if (!$chat->isOwner($this->user->id) && $chat->byNumber == true) {
     			$chat->byNumber = false;
     			$chat->save();
     			$chat->getMembersTokens()->each(function($token) use($chat) {
     				$state = new StateSender($token->auth_token, true);
     				$state->setCarAsUser($chat, $this->user);
     				$state->send();
     			});
     		}*/
     $content = Input::get('content');
     $message = new CarMessage(['user_id' => $this->user->id]);
     $message->created_at = Carbon::now();
     if (isset($content['text'])) {
         $message->text = $content['text'];
     }
     if (isset($content['car'])) {
         $car = $this->user->cars()->find($content['car']['id']);
         if ($car) {
             $message->car_id = $car->id;
             if ((bool) $content['car']['car_with_number']) {
                 $message->car_number = $car->number;
             }
         }
     }
     if (isset($content['geo'])) {
         $message->lat = $content['geo']['lat'];
         $message->long = $content['geo']['long'];
         $message->location = $content['geo']['location'];
     }
     if (isset($content['image_id'])) {
         $message->image_id = $content['image_id'];
     }
     if (!$chat->isOwner($this->user->id)) {
         $message->user_car_id = $chat->receiver_car_id;
         //TODO check if user still have this car&number
         $message->via_car = true;
         $chat->deleted_by_owner = false;
     } else {
         $chat->deleted_by_receiver = false;
     }
     if ($chat->messages()->save($message)) {
         $chat->last_message_id = $message->id;
         $chat->updated_at = Carbon::now();
         $chat->save();
         $chat->getMembersTokens($this->user->id)->each(function ($token) use($message) {
             $state = new StateSender($token->auth_token, true);
             $state->setMessageAsAdded($this->collectionTransformer->transformMessage($message, true));
             $state->send();
         });
         return $this->respond($this->collectionTransformer->transformMessage($message));
     }
     return $this->respondServerError();
 }
 /**
  * Store a newly message.
  *
  * @return Response
  */
 public function send()
 {
     $chatId = Input::get('chat_id');
     $user = Auth::user();
     if (($content = Input::get('content')) && (int) $chatId > 0 && !is_null($chat = Chat::find((int) $chatId)) && $chat->hasMember($user->id)) {
         foreach ($chat->getUsersIds() as $id) {
             if ($user->isBlocked($id)) {
                 return Response::json(['error' => ['message' => 'Cant send to group with users which blocked', 'status_code' => 1002]], 403);
             }
         }
         if (isset($content['text']) || isset($content['image_id']) && MessageAttachment::whereRaw('id = ? and chat_id = ?', array((int) $content['image_id'], $chat->id))->get()->count() > 0 || isset($content['car']) && ($car = Car::find((int) $content['car']['id'])) || isset($content['geo']) && isset($content['geo']['lat']) && isset($content['geo']['long']) && isset($content['geo']['location'])) {
             if (isset($content['text']) && strlen($content['text']) > 2500) {
                 return $this->respondInsufficientPrivileges('Слишком длинный текст');
             }
             $message = new Message();
             $message->chat_id = $chat->id;
             $message->user_id = $user->id;
             if (isset($content['text'])) {
                 $message->text = $content['text'];
                 //                } else if(isset($content['image_id'])) {
                 //                    $message->image_id = (int)$content['image_id'];
             } else {
                 if (isset($content['car'])) {
                     $message->car_id = $car->id;
                     if ((bool) $content['car']['car_with_number']) {
                         $message->car_number = $car->number;
                     }
                 } else {
                     if (isset($content['geo'])) {
                         $message->lat = $content['geo']['lat'];
                         $message->lng = $content['geo']['long'];
                         $message->location = $content['geo']['location'];
                     }
                 }
             }
             if (isset($content['image_id'])) {
                 $message->image_id = (int) $content['image_id'];
             }
             $message->save();
             $chat->timestamp = DB::raw('NOW()');
             $chat->save();
             foreach ($chat->getUsers() as $user) {
                 $unread = new MessageUnread();
                 $unread->message_id = $message->id;
                 $unread->user_id = $user->id;
                 $unread->chat_id = $chat->id;
                 $unread->save();
             }
             $message = Message::find($message->id);
             foreach ($chat->getMembersTokens() as $token) {
                 $state = new StateSender($token);
                 $state->setMessageAsAdded($message->getAsArray(true));
                 $state->send();
             }
             return $this->respond($message->getAsArray());
         } else {
             return $this->setStatusCode(403)->respondWithError('Unset necessary parameter in correct format');
         }
     } else {
         return $this->setStatusCode(500)->respondWithError('Chat doesn\'t exist');
     }
 }