diff --git a/app/controllers/orders_controller.rb b/app/controllers/orders_controller.rb index 5af3905..0269690 100644 --- a/app/controllers/orders_controller.rb +++ b/app/controllers/orders_controller.rb @@ -3,7 +3,7 @@ class OrdersController < ApplicationController include ApplicationHelper load_resource :user - load_and_authorize_resource :order, through: :user, shallow: true, except: :destroy + load_and_authorize_resource :order, through: :user, shallow: true def new products = (@user.products.for_sale.select("products.*", "sum(order_items.count) as count").group(:product_id).order("count desc") | Product.for_sale) @@ -20,22 +20,17 @@ class OrdersController < ApplicationController end def destroy - order = Order.unscoped.find(params[:id]) - authorize! :destroy, order - if order.cancel - flash[:success] = "Order has been removed." - else - flash[:error] = "Something went wrong. Perhaps this order was already cancelled, or it has been place too long ago." - end + @order.destroy + flash[:success] = "Order has been removed." redirect_to root_path end def overview - @users = User.members.publik.order(:uid) + @users = User.members.publik.order(:name) end def quickpay - user = User.find(params[:user_id]) + user = User.find(params[:id]) order = user.orders.build order.order_items << OrderItem.new(count: 1, product: user.dagschotel, order: order) if order.save diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index ee4d610..7f24330 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -2,7 +2,7 @@ require 'digest/md5' module ApplicationHelper def get_color(user) - Digest::MD5.hexdigest(user.nickname)[0..5] + Digest::MD5.hexdigest(user.name)[0..5] end def get_color_style(user) @@ -28,7 +28,7 @@ module ApplicationHelper postData = Net::HTTP.post_form(URI.parse('https://slack.com/api/users.list'), {'token'=>Rails.application.secrets.access_token}) data = JSON.parse(postData.body) if data["ok"] - slackmember = data["members"].select{ |m| m["profile"]["email"] == user.uid + "@zeus.ugent.be" }.first + slackmember = data["members"].select{ |m| m["profile"]["email"] == user.name + "@zeus.ugent.be" }.first if slackmember Webhook.new(channel: "@" + slackmember["name"], username: "Tab").ping(message) diff --git a/app/models/order.rb b/app/models/order.rb index d551d14..20fe86c 100644 --- a/app/models/order.rb +++ b/app/models/order.rb @@ -7,7 +7,6 @@ # price_cents :integer # created_at :datetime not null # updated_at :datetime not null -# cancelled :boolean default("f") # transaction_id :integer # @@ -23,24 +22,12 @@ class Order < ActiveRecord::Base before_save { |o| o.order_items = o.order_items.reject{ |oi| oi.count == 0 } } after_create { Delayed::Job.enqueue TabApiJob.new(id) } - default_scope -> { where(cancelled: false) } - validates :user, presence: true validates :order_items, presence: true, in_stock: true validates :price_cents, presence: true accepts_nested_attributes_for :order_items - def cancel - return false if cancelled || created_at < 5.minutes.ago - - User.decrement_counter(:orders_count, user.id) - update_attribute(:cancelled, true) - self.order_items.each(&:cancel) - tab_api_cancelled - true - end - def to_sentence self.order_items.map { |oi| pluralize(oi.count, oi.product.name) diff --git a/app/models/order_item.rb b/app/models/order_item.rb index b30b43b..0e809b8 100644 --- a/app/models/order_item.rb +++ b/app/models/order_item.rb @@ -15,6 +15,7 @@ class OrderItem < ActiveRecord::Base validates :product, presence: true validates :count, presence: true, numericality: { only_integer: true, greater_than_or_equal_to: 0 } + before_destroy :put_back_in_stock after_create :remove_from_stock accepts_nested_attributes_for :product @@ -24,13 +25,13 @@ class OrderItem < ActiveRecord::Base super end - def cancel - self.product.increment!(:stock, self.count) - end - private def remove_from_stock product.decrement!(:stock, count) end + + def put_back_in_stock + product.increment!(:stock, self.count) + end end diff --git a/app/models/user.rb b/app/models/user.rb index f89e00a..c9a997c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -20,7 +20,7 @@ # orders_count :integer default("0") # koelkast :boolean default("f") # provider :string -# uid :string +# name :string # encrypted_password :string default(""), not null # private :boolean default("f") # @@ -43,17 +43,13 @@ class User < ActiveRecord::Base scope :publik, -> { where private: false } def self.from_omniauth(auth) - where(provider: auth.provider, uid: auth.uid).first_or_create do |user| + where(provider: auth.provider, name: auth.uid).first_or_create do |user| user.provider = auth.provider - user.uid = auth.uid + user.name = auth.uid user.avatar = Identicon.data_url_for auth.uid end end - def nickname - self.uid - end - def debt 42.15 end @@ -61,6 +57,6 @@ class User < ActiveRecord::Base # Change URL params for User def to_param - "#{id} #{nickname}".parameterize + "#{id} #{name}".parameterize end end diff --git a/app/views/admins/schulden.csv.erb b/app/views/admins/schulden.csv.erb deleted file mode 100644 index 1400970..0000000 --- a/app/views/admins/schulden.csv.erb +++ /dev/null @@ -1,3 +0,0 @@ -<%- headers = ['nickname', 'schulden'] -%> -<%= CSV.generate_line headers -%> -<% @users.each do |user| %><%= CSV.generate_line([user.nickname, user.debt]) %><% end %> diff --git a/app/views/devise/sessions/new.html.erb b/app/views/devise/sessions/new.html.erb index 13da1a0..067cb71 100644 --- a/app/views/devise/sessions/new.html.erb +++ b/app/views/devise/sessions/new.html.erb @@ -3,7 +3,7 @@
<%= f_form_for(resource, :as => resource_name, :url => session_path(resource_name)) do |f| %> - <%= f.text_field :uid %> + <%= f.text_field :name %> <%= f.password_field :password %> <% if devise_mapping.rememberable? %> diff --git a/app/views/layouts/_header.html.erb b/app/views/layouts/_header.html.erb index a9cfd1a..29011ac 100644 --- a/app/views/layouts/_header.html.erb +++ b/app/views/layouts/_header.html.erb @@ -48,7 +48,7 @@ <% end %>