From fdcfaa1d7d92db4a7c94b9f9d4d5c2d8e9cc42fa Mon Sep 17 00:00:00 2001 From: Benjamin ter Kuile Date: Tue, 8 Sep 2015 16:27:21 +0200 Subject: [PATCH] changes --- ...y.js.coffee => list-index-entry.js.coffee} | 0 app/controllers/user_controller.rb | 15 --------------- app/controllers/users/lists_controller.rb | 19 +++++++++++++++++-- app/models/list/join_requests.rb | 11 ++++++----- app/serializers/join_request_serializer.rb | 4 ---- .../users/join_request_serializer.rb | 5 +++++ app/serializers/users/list_serializer.rb | 3 ++- app/serializers/users/user_serializer.rb | 7 ++----- app/services/join_request.rb | 6 +++--- config/routes.rb | 6 ++++-- 10 files changed, 39 insertions(+), 37 deletions(-) rename app/assets/javascripts/user/app/components/{lists/index-entry.js.coffee => list-index-entry.js.coffee} (100%) delete mode 100644 app/serializers/join_request_serializer.rb create mode 100644 app/serializers/users/join_request_serializer.rb diff --git a/app/assets/javascripts/user/app/components/lists/index-entry.js.coffee b/app/assets/javascripts/user/app/components/list-index-entry.js.coffee similarity index 100% rename from app/assets/javascripts/user/app/components/lists/index-entry.js.coffee rename to app/assets/javascripts/user/app/components/list-index-entry.js.coffee diff --git a/app/controllers/user_controller.rb b/app/controllers/user_controller.rb index e75acdc0..63e9db72 100644 --- a/app/controllers/user_controller.rb +++ b/app/controllers/user_controller.rb @@ -71,21 +71,6 @@ class UserController < Users::ApplicationController end end - # POST /user/reject_join_request?user_id=1 - def reject_join_request - render js: '' and return unless params[:user_id].present? - list && list.reject_join_request_for_user!(params[:user_id]) - render js: '' - end - - # POST /user/approve_join_request?user_id=1 - def approve_join_request - render js: '' and return unless params[:user_id].present? - @user = User.find(params[:user_id]) - list && list.approve_join_request_for_user!(@user) - render nothing: true - end - # POST /user/check_table_join_status.json table_id:12345 def check_table_join_status render json: json_alert('messages.table_not_found') and return unless params[:table_id].present? diff --git a/app/controllers/users/lists_controller.rb b/app/controllers/users/lists_controller.rb index 7f11246f..e0840dc8 100644 --- a/app/controllers/users/lists_controller.rb +++ b/app/controllers/users/lists_controller.rb @@ -8,7 +8,7 @@ module Users #lists.reject!{|l| l.id == params[:exclude_list]} if params[:exclude_list].present? #lists.reject!{|l| l.id == current_user.active_list_id } if current_user && current_user.active_list_id.present? # see spec Loading lists and switching to the order products view works, lists loading may unlink active list orders lists.include_relation(:users, :supplier) - render json: JSONAPI::Serializer.serialize(lists, serializer: Users::ListSerializer, include: %w[supplier users], is_collection: true, meta: {total_pages: lists.total_count, page: lists.current_page}) #, root: :lists + render json: JSONAPI::Serializer.serialize(lists, serializer: Users::ListSerializer, include: %w[supplier users], is_collection: true, meta: {total_pages: lists.total_pages, page: lists.current_page}) #, root: :lists end #EMBER @@ -27,7 +27,7 @@ module Users def show @list ||= List.find(params[:id]) if params[:id] render json: {}, status: :not_found and return unless @list.present? && Array.wrap(@list.user_ids).include?(current_user.id) - render json: JSONAPI::Serializer.serialize(@list, serializer: Users::ListSerializer, include: %w[supplier users]) + render json: JSONAPI::Serializer.serialize(@list, serializer: Users::ListSerializer, include: %w[supplier users join_requests join_requests.list join_requests.user]) end # POST /user/list_needs_payment.json @@ -76,5 +76,20 @@ module Users render json: res end + # POST /user/reject_join_request?user_id=1 + def reject_join_request + render js: '' and return unless params[:user_id].present? + active_list && active_list.reject_join_request_for_user!(params[:user_id]) + head :ok + end + + # POST /user/approve_join_request?user_id=1 + def approve_join_request + render js: '' and return unless params[:user_id].present? + @user = User.find(params[:user_id]) + active_list && active_list.approve_join_request_for_user!(@user) + head :ok + end + end end diff --git a/app/models/list/join_requests.rb b/app/models/list/join_requests.rb index 6669e6b6..b2643db2 100644 --- a/app/models/list/join_requests.rb +++ b/app/models/list/join_requests.rb @@ -6,7 +6,7 @@ class List end def join_request_for_user(user) - JoinRequest.new(user: user, list: self) + JoinRequest.new(user: user, list: self, created_at: created_at, updated_at: updated_at) end def join_requests @@ -14,12 +14,13 @@ class List end def send_table_join_request_for_user!(requester) - unless join_request_user_ids.include?(requester.id) or user_ids.include?(requester.id) + #unless join_request_user_ids.include?(requester.id) or user_ids.include?(requester.id) # do not resend + unless user_ids.include?(requester.id) # resend for the sake of it for now @join_requests = nil # bust cache - self.join_request_user_ids << requester.id + self.join_request_user_ids |= [requester.id] self.is_dirty if save - broadcast_users 'user_join_request', JoinRequestSerializer.new(join_request_for_user(requester)).as_json + broadcast_users 'user_join_request', payload: JSONAPI::Serializer.serialize( join_request_for_user(requester), serializer: Users::JoinRequestSerializer, include: %w[list user]) end end end @@ -31,7 +32,7 @@ class List add_user(user) user.save self.is_dirty - save and broadcast_users 'join_request_approved', UserUserSerializer.new(user).as_json + save and broadcast_users 'join_request_approved', id: "jr-#{user.id}" end end diff --git a/app/serializers/join_request_serializer.rb b/app/serializers/join_request_serializer.rb deleted file mode 100644 index 8eda2de8..00000000 --- a/app/serializers/join_request_serializer.rb +++ /dev/null @@ -1,4 +0,0 @@ -class JoinRequestSerializer < Qwaiter::Serializer - attributes :list_id - has_one :user, serializer: Users::UserSerializer -end diff --git a/app/serializers/users/join_request_serializer.rb b/app/serializers/users/join_request_serializer.rb new file mode 100644 index 00000000..145d9426 --- /dev/null +++ b/app/serializers/users/join_request_serializer.rb @@ -0,0 +1,5 @@ +class Users::JoinRequestSerializer + include Qwaiter::UserBaseSerializer + has_one :user, serializer: Users::UserSerializer + has_one :list, serializer: Users::ListSerializer +end diff --git a/app/serializers/users/list_serializer.rb b/app/serializers/users/list_serializer.rb index 897bf267..f4f306a2 100644 --- a/app/serializers/users/list_serializer.rb +++ b/app/serializers/users/list_serializer.rb @@ -6,7 +6,8 @@ class Users::ListSerializer :is_paid, :price, :closed_at has_many :users, serializer: Users::UserSerializer - has_many(:orders, serializer: Users::OrderSerializer){} + has_many(:orders, serializer: Users::OrderSerializer) + has_many :join_requests, serializer: Users::JoinRequestSerializer has_one :supplier, serializer: Users::SupplierSerializer has_one :table, serializer: Users::TableSerializer diff --git a/app/serializers/users/user_serializer.rb b/app/serializers/users/user_serializer.rb index c74345b7..ca3ca604 100644 --- a/app/serializers/users/user_serializer.rb +++ b/app/serializers/users/user_serializer.rb @@ -1,8 +1,5 @@ class Users::UserSerializer include Qwaiter::UserBaseSerializer - attributes :email, :provider, :uid, :name, :avatar - - def name - object.friends_name - end + attributes :email, :provider, :uid, :avatar + attribute(:name){ object.friends_name } end diff --git a/app/services/join_request.rb b/app/services/join_request.rb index 804f7556..9e0fe97c 100644 --- a/app/services/join_request.rb +++ b/app/services/join_request.rb @@ -1,12 +1,12 @@ class JoinRequest - attr_reader :user, :list + attr_reader :user, :list, :created_at, :updated_at def id "jr-#{user_id}" end alias _id id - def initialize(user: nil, list: nil) - @user, @list = user, list + def initialize(user: nil, list: nil, created_at: Time.now, updated_at: Time.now) + @user, @list, @created_at, @updated_at = [user, list, created_at, updated_at] end def user_id diff --git a/config/routes.rb b/config/routes.rb index 5db51318..1bf4b6cf 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -69,8 +69,8 @@ Qwaiter::Application.routes.draw do #get '/user/table_info' => 'user#table_info', as: :user_table_info # get '/user/join_occupied_table' => 'user#join_occupied_table', as: :user_join_occupied_table #post '/user/join_occupied_table' => 'user#request_to_join_occupied_table' - post '/user/reject_join_request' => 'user#reject_join_request' - post '/user/approve_join_request' => 'user#approve_join_request' + #post '/user/reject_join_request' => 'user#reject_join_request' + #post '/user/approve_join_request' => 'user#approve_join_request' post '/user/check_table_join_status' => 'user#check_table_join_status' @@ -89,6 +89,8 @@ Qwaiter::Application.routes.draw do post :needs_payment post :move_to_table post :order_products + post :reject_join_request + post :approve_join_request end resources :orders, only: [:index] end