class LibrariesController < ApplicationController before_filter :require_login def index libraries = Library.where(nil) libraries = if params[:filter] == 'mine' libraries.where(user_id: current_user.id).order('created_at desc') else libraries.where(status: :published).order('visited_count desc') end search = params[:search].to_s.strip libraries = libraries.where('title LIKE ?', "%#{search}%") if search.present? @libraries = paginateHelper libraries.includes(user: :user_extensions) end def show @library = Library.find(params[:id]) @library.increment_visited_count! end def new @library = current_user.libraries.new end def create @library = current_user.libraries.new Libraries::SaveService.new(@library, current_user, params).call redirect_to library_path(id: @library.id) rescue ActiveRecord::RecordInvalid => _ render 'new' end def edit @library = current_library end def update @library = current_library Libraries::SaveService.new(@library, current_user, params).call redirect_to library_path(id: @library.id) rescue ActiveRecord::RecordInvalid => _ render 'edit' end def publish Libraries::SubmitService.new(current_library).call render json: { status: 0 } rescue Libraries::SubmitService::Error => ex render json: { status: 0, message: ex.message } end private def current_library @_current_library ||= current_user.libraries.find(params[:id]) end end