Finished phase006
This commit is contained in:
@@ -38,9 +38,20 @@ class FuelEntriesController < ApplicationController
|
||||
end
|
||||
|
||||
def prepare_vehicle_show
|
||||
@maintenance_schedules = @vehicle.maintenance_schedules.order(:maintenance_type)
|
||||
@maintenance_schedules = @vehicle.maintenance_schedules.active.order(:maintenance_type)
|
||||
@maintenance_schedule_statuses = maintenance_schedule_statuses(@maintenance_schedules)
|
||||
@fuel_entries = @vehicle.fuel_entries.includes(:updated_by_user).order(date: :desc, created_at: :desc)
|
||||
@maintenance_entries = @vehicle.maintenance_entries.includes(:updated_by_user).order(date: :desc, created_at: :desc)
|
||||
@maintenance_entry = @vehicle.maintenance_entries.build(date: Date.current)
|
||||
end
|
||||
|
||||
def maintenance_schedule_statuses(schedules)
|
||||
schedules.index_with do |schedule|
|
||||
latest_entry = @vehicle.maintenance_entries
|
||||
.where("lower(name) = ?", schedule.maintenance_type.downcase)
|
||||
.order(date: :desc, created_at: :desc)
|
||||
.first
|
||||
MaintenanceScheduleStatus.new(schedule, latest_entry, current_odometer: @vehicle.current_odometer)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -53,9 +53,20 @@ class MaintenanceEntriesController < ApplicationController
|
||||
end
|
||||
|
||||
def prepare_vehicle_show
|
||||
@maintenance_schedules = @vehicle.maintenance_schedules.order(:maintenance_type)
|
||||
@maintenance_schedules = @vehicle.maintenance_schedules.active.order(:maintenance_type)
|
||||
@maintenance_schedule_statuses = maintenance_schedule_statuses(@maintenance_schedules)
|
||||
@fuel_entries = @vehicle.fuel_entries.includes(:updated_by_user).order(date: :desc, created_at: :desc)
|
||||
@maintenance_entries = @vehicle.maintenance_entries.includes(:updated_by_user).order(date: :desc, created_at: :desc)
|
||||
@fuel_entry = @vehicle.fuel_entries.build(date: Date.current)
|
||||
end
|
||||
|
||||
def maintenance_schedule_statuses(schedules)
|
||||
schedules.index_with do |schedule|
|
||||
latest_entry = @vehicle.maintenance_entries
|
||||
.where("lower(name) = ?", schedule.maintenance_type.downcase)
|
||||
.order(date: :desc, created_at: :desc)
|
||||
.first
|
||||
MaintenanceScheduleStatus.new(schedule, latest_entry, current_odometer: @vehicle.current_odometer)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
class MaintenanceSchedulesController < ApplicationController
|
||||
before_action :set_vehicle
|
||||
before_action :set_maintenance_schedule, only: %i[show edit update deactivate]
|
||||
|
||||
def index
|
||||
@maintenance_schedules = @vehicle.maintenance_schedules.order(active: :desc, maintenance_type: :asc)
|
||||
end
|
||||
|
||||
def show
|
||||
end
|
||||
|
||||
def new
|
||||
@maintenance_schedule = @vehicle.maintenance_schedules.build(
|
||||
baseline_odometer: @vehicle.current_odometer,
|
||||
baseline_date: Date.current
|
||||
)
|
||||
end
|
||||
|
||||
def create
|
||||
@maintenance_schedule = @vehicle.maintenance_schedules.build(maintenance_schedule_params)
|
||||
|
||||
if @maintenance_schedule.save
|
||||
redirect_to vehicle_maintenance_schedules_path(@vehicle), notice: "Maintenance schedule created."
|
||||
else
|
||||
render :new, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def edit
|
||||
end
|
||||
|
||||
def update
|
||||
if @maintenance_schedule.update(maintenance_schedule_params)
|
||||
redirect_to vehicle_maintenance_schedules_path(@vehicle), notice: "Maintenance schedule updated."
|
||||
else
|
||||
render :edit, status: :unprocessable_entity
|
||||
end
|
||||
end
|
||||
|
||||
def deactivate
|
||||
@maintenance_schedule.update!(active: false)
|
||||
redirect_to vehicle_maintenance_schedules_path(@vehicle), notice: "Maintenance schedule deactivated."
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_vehicle
|
||||
@vehicle = Vehicle.find(params[:vehicle_id])
|
||||
end
|
||||
|
||||
def set_maintenance_schedule
|
||||
@maintenance_schedule = @vehicle.maintenance_schedules.find(params[:id])
|
||||
end
|
||||
|
||||
def maintenance_schedule_params
|
||||
params.require(:maintenance_schedule).permit(
|
||||
:maintenance_type,
|
||||
:mileage_interval,
|
||||
:time_interval,
|
||||
:baseline_odometer,
|
||||
:baseline_date,
|
||||
:active
|
||||
)
|
||||
end
|
||||
end
|
||||
@@ -72,10 +72,27 @@ class VehiclesController < ApplicationController
|
||||
end
|
||||
|
||||
def prepare_show
|
||||
@maintenance_schedules = @vehicle.maintenance_schedules.order(:maintenance_type)
|
||||
@maintenance_schedules = @vehicle.maintenance_schedules.active.order(:maintenance_type)
|
||||
@maintenance_schedule_statuses = maintenance_schedule_statuses(@maintenance_schedules)
|
||||
@fuel_entries = @vehicle.fuel_entries.includes(:updated_by_user).order(date: :desc, created_at: :desc)
|
||||
@maintenance_entries = @vehicle.maintenance_entries.includes(:updated_by_user).order(date: :desc, created_at: :desc)
|
||||
@fuel_entry ||= @vehicle.fuel_entries.build(date: Date.current)
|
||||
@maintenance_entry ||= @vehicle.maintenance_entries.build(date: Date.current)
|
||||
end
|
||||
|
||||
def maintenance_schedule_statuses(schedules)
|
||||
schedules.index_with do |schedule|
|
||||
latest_entry = latest_maintenance_entry_for(schedule)
|
||||
status = MaintenanceScheduleStatus.new(schedule, latest_entry, current_odometer: @vehicle.current_odometer)
|
||||
MaintenanceNotification.record_status_change(schedule, status)
|
||||
status
|
||||
end
|
||||
end
|
||||
|
||||
def latest_maintenance_entry_for(schedule)
|
||||
@vehicle.maintenance_entries
|
||||
.where("lower(name) = ?", schedule.maintenance_type.downcase)
|
||||
.order(date: :desc, created_at: :desc)
|
||||
.first
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user