class Users::FavoritesController

Public Instance Methods

accept() click to toggle source

To accept the friend request

# File app/controllers/users/favorites_controller.rb, line 42
def accept
  @friend =  ActsAsFriendable::Friendship.find(params[:user_id])
  @friend.update(approved: true)
  FriendMailer.delay(queue: :mailer).friendship_request_status_email(@friend)
  respond_to do |format|
    format.js {render 'accept'}
  end
end
index() click to toggle source

List all the friends.

# File app/controllers/users/favorites_controller.rb, line 26
def index
  add_breadcrumb 'Favorites'
  @favorites = current_user.friends.includes(:profile_image)
  if params[:query].present?
    @favorites = @favorites.where("LOWER(name) Like :query OR LOWER(email) LIKE :query", query: "%#{params[:query]}%").where.not(email: current_user.email)
  end
  @favorites = @favorites.page(params[:page]).per(20)
  respond_to do |format|
    format.html
    format.json do
      render json: @favorites.as_json(only: [:id, :email], methods: [:name_with_email])
    end
  end
end
mark() click to toggle source

To mark as friend.

# File app/controllers/users/favorites_controller.rb, line 8
def mark
  current_user.mark_favorite(@user)
  pusher_data = {user: {id: @user.id, full_name: @user.full_name, type: @user.type, image: self.class.helpers.image_path(@user.image_url(:thumb)), common_group_ids: current_user.groups.where(id: @user.groups).pluck(:id)}}
  if @user.tutor?
    pusher_data[:user].merge!(in_person_session_url: new_tutor_tutoring_session_path(@user)) if @user.available_for_in_person?
    pusher_data[:user].merge!(video_session_url: new_video_session_path(session: {tutor_id: @user.id})) if @user.available_for_video?
  end
  pusher_data[:user].merge!(unfriend_url: unmark_user_favorites_path(@user.id)) if current_user.is_favorite_users?(@user)
  pusher_data[:user].merge!(friend_url: mark_user_favorites_path(@user.id)) if !current_user.is_favorite_users?(@user)
end
reject() click to toggle source

To reject the friend request

# File app/controllers/users/favorites_controller.rb, line 52
def reject
  @friend = ActsAsFriendable::Friendship.find(params[:user_id])
  @friend.update(approved: false)
  ActsAsTenant.current_tenant.pusher_configuration.client.trigger_async("private-user-#{@friend.user_id}", 'friendship-rejected', {id: @friend.friend_id, common_group_ids: current_user.groups.where(id: @friend.friend.groups).pluck(:id)})
  current_user.unmark_favorite(@friend.user)
  FriendMailer.delay(queue: :mailer).friendship_request_status_email(@friend)
  respond_to do |format|
    format.js {render 'reject'}
  end
end
unmark() click to toggle source

To unfriend the friend.

# File app/controllers/users/favorites_controller.rb, line 20
def unmark
  current_user.unmark_favorite(@user)
  ActsAsTenant.current_tenant.pusher_configuration.client.trigger_async("private-user-#{current_user.id}", 'remove-from-favorite', {id: @user.id, name: @user.name, type: @user.type, image: self.class.helpers.image_path(@user.image_url(:thumb)), common_group_ids: current_user.groups.where(id: @user.groups).pluck(:id)})
end