/** * Add like on review, checkin or photo * * @param $request * @return mixed */ public function addAction(Request $request) { $data = $request->json()->get('Like'); $type = $data['type']; $type_id = $data['type_id']; $user_id = $data['user_id']; $user_data = Users::find($user_id); if (is_null($user_data)) { return showErrorResponse('Invalid user'); } $is_liked = Like::isLiked($user_id, $type, $type_id); if ($is_liked) { $like_count = Like::getCount($type, $type_id); $json_return[KeyParser::data] = array(KeyParser::type => $type, KeyParser::type_id => $type_id, KeyParser::user_id => $user_id, KeyParser::is_existing => CONSTANTS::LIKE_IS_EXISTING, KeyParser::like_count => $like_count); return response()->json($json_return); } switch ($type) { case CONSTANTS::REVIEW: $like_object = Reviews::find($type_id); $like_type = CONSTANTS::NOTIFICATION_TYPE_LIKE_REVIEW; if (!$like_object) { $status_code = CONSTANTS::ERROR_CODE_REVIEW_MISSING; } break; case CONSTANTS::CHECKIN: $like_object = CheckIns::find($type_id); $like_type = CONSTANTS::NOTIFICATION_TYPE_LIKE_CHECKIN; if (!$like_object) { $status_code = CONSTANTS::ERROR_CODE_CHECKIN_MISSING; } break; case CONSTANTS::PHOTO: $like_object = Photos::find($type_id); $like_type = CONSTANTS::NOTIFICATION_TYPE_LIKE_PHOTO; if (!$like_object) { $status_code = CONSTANTS::ERROR_CODE_PHOTO_MISSING; } break; default: return showErrorResponse('Invalid type', HTTP_ACCEPTED, CONSTANTS::ERROR_CODE_INVALID_TYPE); } if (!isset($like_object)) { return showErrorResponse('Invalid type id', HTTP_ACCEPTED, $status_code); } if (!Restaurants::isExists($like_object->restaurant_id)) { return showErrorResponse('Restaurant data not found', HTTP_ACCEPTED, CONSTANTS::ERROR_CODE_GENERAL); } try { $like_data = new Like(); $query_response = $like_data->addLike($type_id, $type, $user_id, $like_object, $like_type); } catch (\Exception $e) { return showErrorResponse($e->getMessage()); } $json_return[KeyParser::data] = array(KeyParser::type => $query_response->type, KeyParser::type_id => $query_response->type_id, KeyParser::user_id => $query_response->user_id, KeyParser::is_existing => CONSTANTS::LIKE_IS_NOT_EXISTING, KeyParser::like_count => Like::getCount($type, $type_id)); return response()->json($json_return); }