• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

foodcoops / foodsoft / 21521827700

30 Jan 2026 03:53PM UTC coverage: 42.78% (-24.3%) from 67.127%
21521827700

Pull #1269

github

lentschi
Remove GitHub deploy workflow
Pull Request #1269: Remove GitHub deploy workflow

3087 of 7216 relevant lines covered (42.78%)

11.86 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

31.03
/app/controllers/group_orders_controller.rb
1
# Controller for all ordering-actions that are performed by a user who is member of an Ordergroup.
2
# Management actions that require the "orders" role are handled by the OrdersController.
3
class GroupOrdersController < ApplicationController
1✔
4
  # Security
5
  before_action :ensure_ordergroup_member
1✔
6
  before_action :ensure_open_order, only: %i[new create edit update]
1✔
7
  before_action :ensure_my_group_order, only: %i[show edit update]
1✔
8
  before_action :enough_apples?, only: %i[new create]
1✔
9

10
  # Index page.
11
  def index
1✔
12
    @closed_orders_including_group_order = Order.closed.limit(5).ordergroup_group_orders_map(@ordergroup)
×
13
    @finished_not_closed_orders_including_group_order = Order.finished_not_closed.ordergroup_group_orders_map(@ordergroup)
×
14
  end
15

16
  def show
1✔
17
    @order = @group_order.order
×
18
  end
19

20
  def new
1✔
21
    ordergroup = params[:stock_order] ? nil : @ordergroup
×
22
    @group_order = @order.group_orders.build(ordergroup: ordergroup, updated_by: current_user)
×
23
    @ordering_data = @group_order.load_data
×
24
  end
25

26
  def edit
1✔
27
    @ordering_data = @group_order.load_data
×
28
  end
29

30
  def create
1✔
31
    @group_order = GroupOrder.new(params[:group_order])
×
32
    begin
33
      @group_order.save_ordering!
×
34
      redirect_to group_order_url(@group_order), notice: I18n.t('group_orders.create.notice')
×
35
    rescue ActiveRecord::StaleObjectError
36
      redirect_to group_orders_url, alert: I18n.t('group_orders.create.error_stale')
×
37
    rescue StandardError => e
38
      logger.error('Failed to update order: ' + e.message)
×
39
      redirect_to group_orders_url, alert: I18n.t('group_orders.create.error_general')
×
40
    end
41
  end
42

43
  def update
1✔
44
    @group_order.attributes = params[:group_order]
×
45
    @group_order.updated_by = current_user
×
46
    begin
47
      @group_order.save_ordering!
×
48
      redirect_to group_order_url(@group_order), notice: I18n.t('group_orders.update.notice')
×
49
    rescue ActiveRecord::StaleObjectError
50
      redirect_to group_orders_url, alert: I18n.t('group_orders.update.error_stale')
×
51
    rescue StandardError => e
52
      logger.error('Failed to update order: ' + e.message)
×
53
      redirect_to group_orders_url, alert: I18n.t('group_orders.update.error_general')
×
54
    end
55
  end
56

57
  # Shows all Orders of the Ordergroup
58
  # if selected, it shows all orders of the foodcoop
59
  def archive
1✔
60
    # get only orders belonging to the ordergroup
61
    @closed_orders = Order.closed.page(params[:page]).per(10)
×
62
    @closed_orders_including_group_order = @closed_orders.ordergroup_group_orders_map(@ordergroup)
×
63
    @finished_not_closed_orders_including_group_order = Order.finished_not_closed.ordergroup_group_orders_map(@ordergroup)
×
64

65
    respond_to do |format|
×
66
      format.html # archive.html.haml
×
67
      format.js   # archive.js.erb
×
68
    end
69
  end
70

71
  private
1✔
72

73
  # Returns true if @current_user is member of an Ordergroup.
74
  # Used as a :before_action by OrdersController.
75
  def ensure_ordergroup_member
1✔
76
    @ordergroup = @current_user.ordergroup
×
77
    return unless @ordergroup.nil?
×
78

79
    redirect_to root_url, alert: I18n.t('group_orders.errors.no_member')
×
80
  end
81

82
  def ensure_open_order
1✔
83
    @order = Order.includes(%i[supplier order_articles]).find(order_id_param)
×
84
    unless @order.open?
×
85
      flash[:notice] = I18n.t('group_orders.errors.closed')
×
86
      redirect_to action: 'index'
×
87
    end
88
  rescue ActiveRecord::RecordNotFound
89
    redirect_to group_orders_url, alert: I18n.t('group_orders.errors.notfound')
×
90
  end
91

92
  def ensure_my_group_order
1✔
93
    @group_order = GroupOrder.find(params[:id])
×
94
    return unless @group_order.ordergroup != @ordergroup && (@group_order.ordergroup || !current_user.role_orders?)
×
95

96
    redirect_to group_orders_url, alert: I18n.t('group_orders.errors.notfound')
×
97
  end
98

99
  def enough_apples?
1✔
100
    return unless @ordergroup.not_enough_apples?
×
101

102
    redirect_to group_orders_url,
×
103
                alert: t('not_enough_apples', scope: 'group_orders.messages', apples: @ordergroup.apples,
104
                                              stop_ordering_under: FoodsoftConfig[:stop_ordering_under])
105
  end
106

107
  def order_id_param
1✔
108
    params[:order_id] || (params[:group_order] && params[:group_order][:order_id])
×
109
  end
110
end
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc