summaryrefslogtreecommitdiff
path: root/app/controllers/characters/hearth/hearth_plantings_controller.rb
blob: 198943fa583c6920a00a17fb27ab8b08e7ec2b44 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
class Characters::Hearth::HearthPlantingsController < ApplicationController
  before_action :redirect_unless_character_has_loamspire, :set_hearth

  def index
    @hearth_plantings = @hearth.hearth_plantings
    @planting_activities = Activity.where("gid like ?", "plant_%")
  end

  def create
    item = Item.find(params[:item_id])
    unless item.tags&.include?("seed")
      flash[:alert] = "You can only plant seeds here."
      redirect_to character_hearth_loamspire_path and return
    end

    quantity = [params[:quantity], @hearth.available_planting_spots].min
    if quantity < 1
      flash[:alert] = "You don't have any available planting slots."
      redirect_to character_hearth_loamspire_path and return
    end

    @hearth_planting = @hearth.hearth_plantings.new(item: item, quantity: quantity)
    if @hearth_planting.save
      flash[:notice] = "Planted #{quantity} #{item.name}."
    else
      flash[:alert] = "Failed to plant seeds."
    end
    redirect_to character_hearth_loamspire_path
  end

  private
    def redirect_unless_character_has_loamspire
      redirect_to character_hearth_path(current_char) unless current_char.hearth.has_amenity?("loamspire", 1)
    end

    def set_hearth
      @hearth = current_char.hearth
    end
end