forked from fixin.me/fixin.me
Implement measurements create/destroy and index listing
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
class MeasurementsController < ApplicationController
|
||||
before_action except: :index do
|
||||
raise AccessForbidden unless current_user.at_least(:active)
|
||||
end
|
||||
|
||||
def index
|
||||
@measurements = []
|
||||
#@measurements = current_user.units.ordered.includes(:base, :subunits)
|
||||
readouts = current_user.readouts.includes(:quantity, :unit).order(created_at: :desc)
|
||||
@measurements = readouts.group_by(&:created_at).map do |created_at, grouped|
|
||||
Measurement.new(created_at: created_at, readouts: grouped)
|
||||
end
|
||||
end
|
||||
|
||||
def new
|
||||
@@ -9,8 +15,33 @@ class MeasurementsController < ApplicationController
|
||||
end
|
||||
|
||||
def create
|
||||
timestamp = Time.current
|
||||
@readouts = readout_params.map do |rp|
|
||||
r = current_user.readouts.new(rp)
|
||||
r.created_at = timestamp
|
||||
r
|
||||
end
|
||||
|
||||
if @readouts.all?(&:valid?)
|
||||
Readout.transaction { @readouts.each(&:save!) }
|
||||
@measurement = Measurement.new(readouts: @readouts, created_at: timestamp)
|
||||
flash.now[:notice] = t('.success')
|
||||
else
|
||||
render :new, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
@measurement = Measurement.new(id: params[:id].to_i,
|
||||
created_at: Time.at(params[:id].to_i))
|
||||
current_user.readouts.where(created_at: @measurement.created_at).delete_all
|
||||
@measurements_empty = current_user.readouts.empty?
|
||||
flash.now[:notice] = t('.success')
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def readout_params
|
||||
params.require(:readouts).map { |r| r.permit(:quantity_id, :value, :unit_id) }
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user