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