diff --git a/.rubocop.yml b/.rubocop.yml new file mode 100644 index 0000000..d821d55 --- /dev/null +++ b/.rubocop.yml @@ -0,0 +1,9 @@ +Metrics/LineLength: + Enabled: false + +Metrics/BlockLength: + Enabled: false + +AllCops: + Exclude: + - 'db/schema.rb' \ No newline at end of file diff --git a/Gemfile b/Gemfile index 4b9b4af..c73cc12 100644 --- a/Gemfile +++ b/Gemfile @@ -29,12 +29,12 @@ gem 'jbuilder', '~> 2.5' gem 'jquery-rails', '~> 4.3.1' gem 'kaminari' gem 'mini_magick' +gem 'minitest' gem 'pg', '~> 0.18' gem 'popper_js', '~> 1.12.9', '>= 1.11.1' gem 'pry-rails', group: :development gem 'puma' gem 'rails', '~> 5.1.4' -gem 'minitest' gem 'ransack', github: 'activerecord-hackery/ransack' gem 'rubocop', require: false gem 'sass-rails', '~> 5.0' @@ -53,8 +53,8 @@ end group :development do gem 'listen', '>= 3.0.5', '< 3.2' - gem 'web-console', '>= 3.3.0' gem 'rack-mini-profiler', require: false + gem 'web-console', '>= 3.3.0' end group :production do diff --git a/app/controllers/auto_select.rb b/app/controllers/auto_select.rb index ce3c024..658d852 100644 --- a/app/controllers/auto_select.rb +++ b/app/controllers/auto_select.rb @@ -73,9 +73,9 @@ def auto_select_vehicles unless @people.nil? @numb_vehicles = if !@shares.nil? - (@people - (@shares * 2)) + @shares - else - @people + (@people - (@shares * 2)) + @shares + else + @people end end diff --git a/app/controllers/checklists_controller.rb b/app/controllers/checklists_controller.rb index 19f7278..102f2e4 100644 --- a/app/controllers/checklists_controller.rb +++ b/app/controllers/checklists_controller.rb @@ -21,7 +21,7 @@ def show end end end - + def create_work_order @checklist = Checklist.find(params[:checklist_id]) @vehicle = Vehicle.find(params[:vehicle_id]) @@ -54,7 +54,7 @@ def create @checklist = Checklist.new(checklist_params) respond_to do |format| if @checklist.save - + format.html { redirect_to @checklist, notice: 'Checklist was successfully created.' } format.json { render :show, status: :created, location: @checklist } else @@ -92,7 +92,7 @@ def set_vehicle def checklist_params params.require(:checklist).permit(:date, :user_id, :event_id, :vehicle_id, :fuel_level, - :wash, :deadline, :suspension, :drive_train, :body, + :wash, :deadline, :suspension, :drive_train, :body, :engine, :brake, :safety_equipment, :chassis, :electrical, :cooling_system, :tires, :radio, :exhaust, :steering, :comments, :completed, :defect) diff --git a/app/controllers/defects_controller.rb b/app/controllers/defects_controller.rb index 9eceeb8..9115526 100644 --- a/app/controllers/defects_controller.rb +++ b/app/controllers/defects_controller.rb @@ -1,13 +1,15 @@ # frozen_string_literal: true class DefectsController < ApplicationController - def by_event - @events = Event.where(checklists_completed: true).page(params[:page]) + @vehicles = Vehicle.all + @q = Event.where(defects_reported: true).ransack(params[:q]) + @event_results = @q.result.order(id: :desc).page(params[:page]) end - + def index - @q = Defect.all.ransack(params[:q]) + @vehicles = Vehicle.all + @q = Defect.all.order(id: :desc).ransack(params[:q]) @defects = @q.result.page(params[:page]) end @@ -38,7 +40,7 @@ def destroy format.html { redirect_to defects_url, notice: 'Defect was successfully destroyed.' } end end - + private def set_defect diff --git a/app/controllers/events_controller.rb b/app/controllers/events_controller.rb index f5ce0b8..e604ab1 100644 --- a/app/controllers/events_controller.rb +++ b/app/controllers/events_controller.rb @@ -17,6 +17,8 @@ def index end def show + @event.set_checklists_completed + @event.set_defects_reported @checklists = Checklist.where(event_id: @event.id) @vehicles = @event.vehicles respond_to do |format| @@ -32,15 +34,13 @@ def vehicle_rotation_metrics; end def dashboard @display_events = Event.where('date >= ? AND date <= ?', Date.current - 7.days, Date.current + 14.days) - @set_completed_events = Event.where('date <= ?', Date.current) - @scheduled_events = Event.where(status: 'Scheduled') - @completed_events = Event.where(status: 'Completed') + @set_completed_events = Event.where('date = ?', Date.current) + @scheduled_events = Event.are_scheduled? + @completed_events = Event.are_completed? @assigned_events = Event.where(status: 'Vehicles Assigned') @date = params[:date] ? Date.parse(params[:date]) : Date.today @events_by_date = Event.group('events.id').group_by(&:date) - @set_completed_events.all.each do |event| - event.set_checklists_completed - end + @set_completed_events.all.each(&:set_checklists_completed) end def next_month_calendar @@ -213,6 +213,9 @@ def set_defects end def event_params - params.require(:event).permit(:date, :event_mileage, :location, :event_time, :duration, :end_date, :duration_word, :event_type, :multi_day, :est_mileage, :customers, :calc_mileage, :shares, :class_type, :number, :status, vehicle_ids: []) + params.require(:event).permit(:date, :event_mileage, :location, :event_time, + :duration, :end_date, :duration_word, :event_type, + :multi_day, :est_mileage, :customers, :calc_mileage, + :shares, :class_type, :defects_reported, :number, :status, vehicle_ids: []) end end diff --git a/app/controllers/requests_controller.rb b/app/controllers/requests_controller.rb index f0ea844..53ac6f4 100644 --- a/app/controllers/requests_controller.rb +++ b/app/controllers/requests_controller.rb @@ -4,9 +4,6 @@ class RequestsController < ApplicationController before_action :authenticate_user! before_action :set_request, only: %i[show edit update destroy] before_action :set_vehicle, only: %i[index show edit new] - before_action :set_services, only: %i[show index new edit a_service - shock_service air_filter_service - defects repairs completed_requests in_progress] before_action :check_quant, only: [:show] def index @@ -113,7 +110,7 @@ def dashboard def create_work_order @other_service = Program.find_by(name: 'Other Service') - @request = Request.create(status: 'New', program_id: @other_service.id, vehicle_id: params[:id], + @request = Request.create(status: 'New', program_id: @other_service.id, vehicle_id: params[:id], description: '****** Please fill this in ******', completion_date: Date.current, creator: current_user.name, request_mileage: Vehicle.find(params[:id].mileage)) if @request.save @@ -185,48 +182,13 @@ def new end def edit + @defects = Vehicle.find(@request.vehicle.id).defects @q = Part.ransack(params[:q]) @parts = @q.result.page(params[:page]) end - - def update_service_mileage(request) - @a_service = Program.a_service - @shock_service = Program.shock_service - @air_filter_service = Program.air_filter_service - @tour_car_prep = Program.tour_car_prep - @repairs = Program.repairs - @defects = Program.defect - - vehicle = request.vehicle - @veh_mileage = request.vehicle.mileage - if request.program_id == @a_service.id && request.status == 'Completed' - request.vehicle.update(last_a_service: @veh_mileage) - elsif request.program_id == @shock_service.id && request.status == 'Completed' - request.vehicle.update(last_shock_service: @veh_mileage) - elsif request.program_id == @air_filter_service.id && request.status == 'Completed' - request.vehicle.update(last_air_filter_service: @veh_mileage) - elsif request.program_id == @repairs.id && request.status == 'Completed' - vehicle.update(repair_needed: false, needs_service: false, vehicle_status: 'In-Service') - elsif request.program_id == @tour_car_prep.id && request.status == 'Completed' - vehicle.update(prep: false, needs_service: false, vehicle_status: 'In-Service') - elsif request.program_id == @defects.id && request.status == 'Completed' - vehicle.update(defect: false, needs_service: false, vehicle_status: 'In-Service') - defect_email request - end - end - - def defect_email(request) - if request.users.exists? - defect_emails = [] - request.users.all.each do |user| - defect_emails << user.email - end - UserMailer.new_request_email(defect_emails, request).deliver_now - end - end - - def request_email(request) - unless @request.program_id == @defects.id && @request.status == 'Completed' + + def request_email(_request) + unless @request.defect? && @request.completed? if @request.users.exists? emails = [] @request.users.all.each do |user| @@ -239,18 +201,11 @@ def request_email(request) def create @request = Request.new(request_params) - @a_service = Program.a_service - @shock_service = Program.shock_service - @air_filter_service = Program.air_filter_service - @tour_car_prep = Program.tour_car_prep - @repairs = Program.repairs - @defects = Program.defect respond_to do |format| if @request.save vehicle = @request.vehicle @request.update(request_mileage: vehicle.mileage) - update_service_mileage @request request_email @request format.html { redirect_to @request, notice: 'Work Order was successfully created.' } format.json { render :show, status: :created, location: @request } @@ -271,7 +226,6 @@ def update @defects = Program.defect respond_to do |format| if @request.update(request_params) - update_service_mileage @request if @request.users.exists? && @request.status == 'New' emails = [] @request.users.all.each do |user| @@ -317,16 +271,10 @@ def set_vehicle @vehicles = Vehicle.all end - def set_services - @a_service = Program.find_by(name: 'A-Service') - @shock_service = Program.find_by(name: 'Shock Service') - @air_filter_service = Program.find_by(name: 'Air Filter Change') - @repairs = Program.find_by(name: 'Repairs') - @defects = Program.find_by(name: 'Defect') - @tour_car_prep = Program.find_by(name: 'Tour Car Prep') - end - def request_params - params.require(:request).permit(:number, :description, :special_requets, :completion_date, :completed_date, :poc, :checklist_numb, :creator, :vehicle_id, :status, :image, :creator, :request_mileage, :program_id, part_ids: [], user_ids: []) + params.require(:request).permit(:number, :description, :special_requets, :completion_date, + :completed_date, :poc, :checklist_numb, :creator, :vehicle_id, + :status, :image, :creator, :request_mileage, :program_id, + part_ids: [], user_ids: [], defect_ids: []) end end diff --git a/app/controllers/vehicle_rotation.rb b/app/controllers/vehicle_rotation.rb index 127a495..5aee4ed 100644 --- a/app/controllers/vehicle_rotation.rb +++ b/app/controllers/vehicle_rotation.rb @@ -36,10 +36,9 @@ def vehicle_rotation unless vehicle.last_a_service.nil? vehicle.update(near_a_service_mileage: (vehicle.a_service_interval - (vehicle.mileage - vehicle.last_a_service))) x = vehicle.near_a_service_mileage - case - when x <= 0 + if x <= 0 vehicle.update(use_b: true, use_a: false, dont_use_a_service: true) - when x <= @set_a_service.threshold_numb + elsif x <= @set_a_service.threshold_numb vehicle.update(use_near_service: true, dont_use_a_service: false) else vehicle.update(dont_use_a_service: false) @@ -49,10 +48,9 @@ def vehicle_rotation unless vehicle.last_shock_service.nil? vehicle.update(near_shock_service_mileage: (vehicle.shock_service_interval - (vehicle.mileage - vehicle.last_shock_service))) y = vehicle.near_shock_service_mileage - case - when y < 0 + if y < 0 vehicle.update(use_b: true, use_a: false, dont_use_shock_service: true) - when y <= @set_shock_service.threshold_numb + elsif y <= @set_shock_service.threshold_numb vehicle.update(use_near_service: true, dont_use_shock_service: false) else vehicle.update(dont_use_shock_service: false) @@ -62,10 +60,9 @@ def vehicle_rotation unless vehicle.last_air_filter_service.nil? vehicle.update(near_air_filter_service_mileage: (vehicle.air_filter_service_interval - (vehicle.mileage - vehicle.last_air_filter_service))) z = vehicle.near_air_filter_service_mileage - case - when z < 0 + if z < 0 vehicle.update(use_b: true, use_a: false, dont_use_air_filter_service: true) - when z <= @set_air_filter_service.threshold_numb + elsif z <= @set_air_filter_service.threshold_numb vehicle.update(use_near_service: true, dont_use_air_filter_service: false) else vehicle.update(dont_use_air_filter_service: false) @@ -96,7 +93,7 @@ def vehicle_rotation format.html format.xls format.pdf do - render pdf: "Vehicle Rotation for #{Time.now.strftime('%D')}", layout: 'pdf.pdf.erb', title: "Vehicle Rotation for #{Time.now.strftime('%D')}" + render pdf: "Vehicle Rotation for #{Time.now.strftime('%D')}", layout: 'pdf.pdf.erb', title: "Vehicle Rotation for #{Time.now.strftime('%D')}" end end end @@ -118,10 +115,9 @@ def mileage_calculation unless vehicle.last_a_service.nil? vehicle.update(near_a_service_mileage: (vehicle.a_service_interval - (vehicle.mileage - vehicle.last_a_service))) x = vehicle.near_a_service_mileage - case - when x < 0 + if x < 0 vehicle.update(needs_service: true, a_service: true) - when x <= @set_a_service.threshold_numb + elsif x <= @set_a_service.threshold_numb vehicle.update(near_service: true) else vehicle.update(needs_service: false, a_service: false, near_service: false) @@ -130,26 +126,23 @@ def mileage_calculation unless vehicle.last_shock_service.nil? vehicle.update(near_shock_service_mileage: (vehicle.shock_service_interval - (vehicle.mileage - vehicle.last_shock_service))) y = vehicle.near_shock_service_mileage - case - when y < 0 + if y < 0 vehicle.update(needs_service: true, shock_service: true) - when y <= @set_shock_service.threshold_numb + elsif y <= @set_shock_service.threshold_numb vehicle.update(near_service: true) else vehicle.update(needs_service: false, shock_service: false, near_service: false) end end - unless vehicle.last_air_filter_service.nil? - vehicle.update(near_air_filter_service_mileage: (vehicle.air_filter_service_interval - (vehicle.mileage - vehicle.last_air_filter_service))) - z = vehicle.near_air_filter_service_mileage - case - when z < 0 - vehicle.update(needs_service: true, air_filter_service: true) - when z <= @set_air_filter_service.threshold_numb - vehicle.update(near_service: true) - else - vehicle.update(needs_service: false, air_filter_service: false, near_service: false) - end + next if vehicle.last_air_filter_service.nil? + vehicle.update(near_air_filter_service_mileage: (vehicle.air_filter_service_interval - (vehicle.mileage - vehicle.last_air_filter_service))) + z = vehicle.near_air_filter_service_mileage + if z < 0 + vehicle.update(needs_service: true, air_filter_service: true) + elsif z <= @set_air_filter_service.threshold_numb + vehicle.update(near_service: true) + else + vehicle.update(needs_service: false, air_filter_service: false, near_service: false) end end end diff --git a/app/controllers/vehicles_controller.rb b/app/controllers/vehicles_controller.rb index a556ed4..c5d7f76 100644 --- a/app/controllers/vehicles_controller.rb +++ b/app/controllers/vehicles_controller.rb @@ -57,37 +57,34 @@ def show unless @vehicle.last_a_service.nil? @vehicle.update(near_a_service_mileage: (@vehicle.a_service_interval - (@vehicle.mileage - @vehicle.last_a_service))) x = @vehicle.near_a_service_mileage - case - when x <= 0 + if x <= 0 @vehicle.update(needs_service: true, a_service: true) - when x <= 100 + elsif x <= 100 @vehicle.update(near_service: true) - when x > 100 + elsif x > 100 @vehicle.update(needs_service: false, a_service: false, near_service: false) end end unless @vehicle.last_shock_service.nil? @vehicle.update(near_shock_service_mileage: (@vehicle.shock_service_interval - (@vehicle.mileage - @vehicle.last_shock_service))) y = @vehicle.near_shock_service_mileage - case - when y <= 0 + if y <= 0 @vehicle.update(needs_service: true, shock_service: true) - when y <= 200 + elsif y <= 200 @vehicle.update(near_service: true) - when y > 200 + elsif y > 200 @vehicle.update(needs_service: false, shock_service: false, near_service: false) end end unless @vehicle.last_air_filter_service.nil? @vehicle.update(near_air_filter_service_mileage: (@vehicle.air_filter_service_interval - (@vehicle.mileage - @vehicle.last_air_filter_service))) - + z = @vehicle.near_air_filter_service_mileage - case - when z <= 0 + if z <= 0 @vehicle.update(needs_service: true, air_filter_service: true) - when z <= 50 + elsif z <= 50 @vehicle.update(near_service: true) - when z > 50 + elsif z > 50 @vehicle.update(needs_service: false, air_filter_service: false, near_service: false) end end @@ -202,11 +199,11 @@ def set_defects def vehicle_params params.require(:vehicle).permit(:car_id, :manufacturer, :vehicle_status, :use_near_service, - :vin_number, :vehicle_category_id, :registration_date, :plate_number, - :notes, :repair_needed, :needs_service, :high_use, :mileage, :prep, - :sale_date, :purchaser, :near_service, :a_service, :last_a_service, - :last_shock_service, :last_air_filter_service, :use_a, :use_b, - :dont_use_shock_service, :dont_use_a_service, :dont_use_air_filter_service, + :vin_number, :vehicle_category_id, :registration_date, :plate_number, + :notes, :repair_needed, :needs_service, :high_use, :mileage, :prep, + :sale_date, :purchaser, :near_service, :a_service, :last_a_service, + :last_shock_service, :last_air_filter_service, :use_a, :use_b, + :dont_use_shock_service, :dont_use_a_service, :dont_use_air_filter_service, :veh_category, :location, :shock_service, :times_used, :est_mileage, :a_service_interval, :shock_service_interval, :air_filter_service_interval, :air_filter_service, :location_id, :event_id, vehicle_ids: []) diff --git a/app/helpers/checklists_helper.rb b/app/helpers/checklists_helper.rb index c9cd856..45b2505 100644 --- a/app/helpers/checklists_helper.rb +++ b/app/helpers/checklists_helper.rb @@ -2,55 +2,57 @@ module ChecklistsHelper def status_symbol(vehicle, event) - unless vehicle.checklists.empty? + if vehicle.checklists.empty? + 'fa-thumbs-down' + else if vehicle.checklists.where(event_id: event.id).exists? 'fa-check' else - "fa-thumbs-down" + 'fa-thumbs-down' end - else - "fa-thumbs-down" end end - + def status_word(vehicle, event) - unless vehicle.checklists.empty? + if vehicle.checklists.empty? + 'Not Created' + else if vehicle.checklists.where(event_id: event.id).exists? 'Completed' else - "Not Completed" + 'Not Completed' end - else - "Not Created" end end - + def status_word_color(vehicle, event) - unless vehicle.checklists.empty? + if vehicle.checklists.empty? + 'text-danger' + else if vehicle.checklists.where(event_id: event.id).exists? 'text-success' else - "text-warning" + 'text-warning' end - else - "text-danger" end end - + def status_date_word(vehicle, event) - unless vehicle.checklists.empty? + if vehicle.checklists.empty? + 'Not Created' + else if vehicle.checklists.where(event_id: event.id).exists? vehicle.checklists.find_by(event_id: event.id).date.strftime('%D') else - "Not Completed" + 'Not Completed' end - else - "Not Created" end end - + def deadline_word(vehicle, event) - unless vehicle.checklists.empty? + if vehicle.checklists.empty? + 'Not Created' + else if vehicle.checklists.where(event_id: event.id).exists? if vehicle.checklists.find_by(event_id: event.id).deadline 'Deadlined' @@ -58,13 +60,11 @@ def deadline_word(vehicle, event) 'Not Deadlined' end else - "Not Completed" + 'Not Completed' end - else - "Not Created" end end - + def deadline_badge_color(vehicle, event) unless vehicle.checklists.empty? if vehicle.checklists.where(event_id: event.id).exists? @@ -74,11 +74,11 @@ def deadline_badge_color(vehicle, event) 'badge-success' end else - 'badge-warnining' + 'badge-warning' end end end - + def deadline_symbol(vehicle, event) unless vehicle.checklists.empty? if vehicle.checklists.where(event_id: event.id).exists? @@ -92,16 +92,16 @@ def deadline_symbol(vehicle, event) end end end - + def checklist_link(vehicle, event) - unless vehicle.checklists.empty? + if vehicle.checklists.empty? + 'Not Created' + else if vehicle.checklists.where(event_id: event.id).exists? - link_to "Show Checklist", checklist_path( vehicle.checklists.find_by(event_id: event.id).id), class: "btn btn-danger btn-sm" + link_to 'Show Checklist', checklist_path(vehicle.checklists.find_by(event_id: event.id).id), class: 'btn btn-danger btn-sm' else - "Not Completed" + 'Not Completed' end - else - "Not Created" end end end diff --git a/app/helpers/defects_helper.rb b/app/helpers/defects_helper.rb index 2dd7fff..0cf274b 100644 --- a/app/helpers/defects_helper.rb +++ b/app/helpers/defects_helper.rb @@ -1,2 +1,11 @@ +# frozen_string_literal: true + module DefectsHelper + def category_words(defect) + if defect.category + defect.category.tr('_', ' ').capitalize + else + 'No Category Given' + end + end end diff --git a/app/helpers/events_helper.rb b/app/helpers/events_helper.rb index 62951fb..f00742e 100644 --- a/app/helpers/events_helper.rb +++ b/app/helpers/events_helper.rb @@ -3,34 +3,34 @@ module EventsHelper def vehicle_table_services(vehicle) if vehicle.use_near_service - + end end - def auto_select_vehicles(event) + def auto_select_vehicles(_event) if @event.customers && @event.customers > 0 - link_to "Auto Select Vehicles", auto_select_vehicles_events_path(id: @event.id), class: "btn btn-danger" + link_to 'Auto Select Vehicles', auto_select_vehicles_events_path(id: @event.id), class: 'btn btn-danger' end end - + def checklist_button_color(checklists, vehicle) if checklists.find_by(vehicle_id: vehicle.id).has_defects? - link_to "Checklist", checklist_path(checklists.find_by(vehicle_id: vehicle.id).id), class: "btn btn-warning ml-1" + link_to 'Checklist', checklist_path(checklists.find_by(vehicle_id: vehicle.id).id), class: 'btn btn-warning ml-1' else - link_to "Checklist", checklist_path(checklists.find_by(vehicle_id: vehicle.id).id), class: "btn btn-danger ml-1" + link_to 'Checklist', checklist_path(checklists.find_by(vehicle_id: vehicle.id).id), class: 'btn btn-danger ml-1' end end - + def calendar_symbol(event) if event.vehicles.exists? && event.checklists_completed - 'fa-check' + 'fa-check' elsif !event.checklists_completed && event.vehicles.exists? - 'fa-exclamation-triangle' + 'fa-exclamation-triangle' else 'fa-car' end end - + def calendar_event_word(event) if event.checklists.exists? if event.checklists_completed @@ -42,7 +42,7 @@ def calendar_event_word(event) 'No Vehicles Added!' end end - + def event_link_color(event) if event.is_completed? 'badge-success' diff --git a/app/helpers/requests_helper.rb b/app/helpers/requests_helper.rb index 533dbc9..5c2b1fa 100644 --- a/app/helpers/requests_helper.rb +++ b/app/helpers/requests_helper.rb @@ -2,50 +2,50 @@ module RequestsHelper def date_title(request) - unless request.completed? - "Estimated Completion date:" - else + if request.completed? 'Completed Date:' + else + 'Estimated Completion date:' end end - + def date_badge(request) - unless request.completed? - request.completion_date.strftime("%v") - else + if request.completed? request.completed_date.strftime('%v') + else + request.completion_date.strftime('%v') end end - + def badge_color(request) - unless request.completed? - 'badge-danger' - else + if request.completed? 'badge-success' + else + 'badge-danger' end end - + def date_column(request) - unless request.completed? - 'col-md-4' - else + if request.completed? 'col-md-3' + else + 'col-md-4' end end - + def empty_date_column(request) - unless request.completed? - 'col-md-6' - else + if request.completed? 'col-md-7' + else + 'col-md-6' end end - + def table_date(request) - unless request.completed? - 'Not Completed' - else + if request.completed? request.completed_date.strftime('%v') + else + 'Not Completed' end end end diff --git a/app/helpers/vehicles_helper.rb b/app/helpers/vehicles_helper.rb index 5e74677..d449e17 100644 --- a/app/helpers/vehicles_helper.rb +++ b/app/helpers/vehicles_helper.rb @@ -8,7 +8,7 @@ def fixed_defect_badge(defect) 'badge-danger' end end - + def fixed_defect_word(defect) if defect.fixed 'Fixed' @@ -16,7 +16,7 @@ def fixed_defect_word(defect) 'Not Fixed' end end - + def defect_date(defect) if defect.fixed defect.date_fixed.strftime('%v') diff --git a/app/models/checklist.rb b/app/models/checklist.rb index 1a081a7..f0bd3b5 100644 --- a/app/models/checklist.rb +++ b/app/models/checklist.rb @@ -2,9 +2,9 @@ class Checklist < ApplicationRecord before_save :set_fuel_level, :set_date, :set_wash, - :set_suspension, :set_drive_train, :set_body, - :set_engine, :set_brake, :set_safety_equipment, - :set_chassis, :set_electrcial, :set_cooling_system, + :set_suspension, :set_drive_train, :set_body, + :set_engine, :set_brake, :set_safety_equipment, + :set_chassis, :set_electrcial, :set_cooling_system, :set_tires, :set_radio, :set_exhaust, :set_steering, :defects_detected, :deadlined, :completed after_save :create_defect @@ -12,14 +12,13 @@ class Checklist < ApplicationRecord belongs_to :user belongs_to :event has_many :defects - FUEL_LEVELS = ['Full', '3/4', '1/2', '1/4', 'None'].freeze def set_date self.date = Time.current if date.blank? end - + def set_fuel_level self.fuel_level = 'Checked' if fuel_level.blank? end @@ -79,48 +78,46 @@ def set_radio def set_tires self.tires = 'Checked' if tires.blank? end - + def completed self.completed = true end - + def deadlined @set_repairs = Program.find_by(name: 'Repairs') - @vehicle = self.vehicle + @vehicle = vehicle if deadline @vehicle.update(vehicle_status: 'Out-of-Service', repair_needed: true) - Request.create(status: 'New', - description: 'Vehicle failed pre-operation inspection. Please refer to checklist for defects detected or repairs needed.', - vehicle_id: @vehicle.id, creator: User.find(self.user_id).name, program_id: @set_repairs.id, - completion_date: (Time.now + 7.days), request_mileage: @vehicle.mileage, - checklist_id: self.id, completed_date: Date.current) + Request.create(status: 'New', + description: 'Vehicle failed pre-operation inspection. Please refer to checklist for defects detected or repairs needed.', + vehicle_id: @vehicle.id, creator: User.find(user_id).name, program_id: @set_repairs.id, + completion_date: (Time.now + 7.days), request_mileage: @vehicle.mileage, + checklist_id: id, completed_date: Date.current) end end - - def defects_detected - maintenance = ['engine', 'suspension', 'steering', 'tires', - 'radio', 'chassis', 'exhaust', 'cooling_system', - 'electrical', 'safety_equipment', 'brake', 'body', - 'drive_train', 'suspension'] - self.attributes.each do |k,v| - if v != 'Checked' && maintenance.include?(k) - self.defect = true - end + + def defects_detected + maintenance = %w[engine suspension steering tires + radio chassis exhaust cooling_system + electrical safety_equipment brake body + drive_train suspension] + attributes.each do |k, v| + self.defect = true if v != 'Checked' && maintenance.include?(k) end end - + def has_defects? defect == true end - + def create_defect - maintenance = ['engine', 'suspension', 'steering', 'tires', - 'radio', 'chassis', 'exhaust', 'cooling_system', - 'electrical', 'safety_equipment', 'brake', 'body', - 'drive_train', 'suspension'] - self.attributes.each do |k,v| + maintenance = %w[engine suspension steering tires + radio chassis exhaust cooling_system + electrical safety_equipment brake body + drive_train suspension] + attributes.each do |k, v| if v != 'Checked' && maintenance.include?(k) - Defect.create(description: v, checklist_id: self.id, vehicle_id: self.vehicle.id, category: k) + Defect.create(description: v, checklist_id: id, vehicle_id: vehicle.id, category: k) end end end diff --git a/app/models/defect.rb b/app/models/defect.rb index 5e2534f..0f9ba9b 100644 --- a/app/models/defect.rb +++ b/app/models/defect.rb @@ -1,4 +1,13 @@ +# frozen_string_literal: true + class Defect < ApplicationRecord belongs_to :vehicle belongs_to :checklist + + has_many :defect_requests + has_many :requests, through: :defect_requests + + def user_naming + "  #{description}  ".html_safe + end end diff --git a/app/models/defect_request.rb b/app/models/defect_request.rb new file mode 100644 index 0000000..ff02953 --- /dev/null +++ b/app/models/defect_request.rb @@ -0,0 +1,4 @@ +class DefectRequest < ApplicationRecord + belongs_to :defect + belongs_to :request +end diff --git a/app/models/event.rb b/app/models/event.rb index bb79152..744f381 100644 --- a/app/models/event.rb +++ b/app/models/event.rb @@ -20,6 +20,12 @@ class Event < ApplicationRecord accepts_nested_attributes_for :vehicles + scope :are_scheduled?, -> { where(status: 'Scheduled') } + scope :are_completed?, -> { where(status: 'Completed') } + scope :are_vehicles_assigned?, -> { where(status: 'Vehicles Assigned') } + scope :are_in_progress?, -> { where(status: 'In-Progress') } + scope :are_cancelled?, -> { where(status: 'Cancelled') } + STATUSES = ['Scheduled', 'Vehicles Assigned', 'In-Progress', 'Completed', 'Cancelled'].freeze EVENT_TYPES = ['Odyssey', 'RZR', 'Military Training', 'Race Event', 'Filming', 'Special Event', 'Training Non-NSW', 'Demonstration'].freeze CLASS_TYPES = ['Road Runner', 'Mojave', 'Pioneer', 'Sundown', '2 Day Odyssey', '3 Day Odyssey', '4 Day Odyssey', 'Special Event', 'Training', 'Race'].freeze @@ -38,31 +44,39 @@ def set_customers def set_shares self.shares = 0 if shares.blank? end - + def set_checklists_completed - if self.vehicles.count == Checklist.where(event_id: self.id, completed: true).count - self.update(checklists_completed: true) + if vehicles.count == Checklist.where(event_id: id, completed: true).count + update(checklists_completed: true) + else + update(checklists_completed: false) + end + end + + def set_defects_reported + if checklists.where(defect: true).exists? + update(defects_reported: true) else - self.update(checklists_completed: false) + update(defects_reported: false) end end - + def is_completed? status == 'Completed' end - + def is_scheduled? status == 'Scheduled' end - + def is_vehicles_assigned? status == 'Vehicles Assigned' end - + def is_cancelled? status == 'Cancelled' end - + def is_in_progress? status == 'In-Progress' end diff --git a/app/models/program.rb b/app/models/program.rb index 0604813..1af5516 100644 --- a/app/models/program.rb +++ b/app/models/program.rb @@ -5,8 +5,8 @@ class Program < ApplicationRecord has_many :vehicles, through: :requests validates :rzr_interval, :tour_car_interval, :training_interval, :db_interval, :other_interval, :fleet_interval, presence: true - - scope :a_service, -> { find_by(name: "A-Service") } + + scope :a_service, -> { find_by(name: 'A-Service') } scope :shock_service, -> { find_by(name: 'Shock Service') } scope :air_filter_service, -> { find_by(name: 'Air Filter Change') } scope :tour_car_prep, -> { find_by(name: 'Tour Car Prep') } diff --git a/app/models/request.rb b/app/models/request.rb index 52581d7..f930b3b 100644 --- a/app/models/request.rb +++ b/app/models/request.rb @@ -9,6 +9,9 @@ class Request < ApplicationRecord has_many :part_requests has_many :parts, through: :part_requests + + has_many :defect_requests + has_many :defects, through: :defect_requests has_many :request_part_orders @@ -20,33 +23,95 @@ class Request < ApplicationRecord paginates_per 10 accepts_nested_attributes_for :vehicle, :parts + + after_save :set_defects_fixed, only: [:update] + after_save :update_service_mileage STATUS = ['New', 'In-Progress', 'Completed', 'Overdue'].freeze - - scope :is_new, -> { where(status: "New") } - scope :is_in_progress, -> { where(status: "In-Progress") } - scope :is_completed, -> { where(status: "Completed") } - scope :is_overdue, -> { where(status: "Overdue") } + + scope :is_new, -> { where(status: 'New') } + scope :is_in_progress, -> { where(status: 'In-Progress') } + scope :is_completed, -> { where(status: 'Completed') } + scope :is_overdue, -> { where(status: 'Overdue') } scope :is_an_a_service, -> { where(program_id: Program.a_service.id) } scope :is_a_shock_service, -> { where(program_id: Program.shock_service.id) } scope :is_a_air_filter_service, -> { where(program_id: Program.air_filter_service.id) } scope :is_a_repair, -> { where(program_id: Program.repairs.id) } scope :is_a_defect, -> { where(program_id: Program.defect.id) } scope :is_a_tour_car_prep, -> { where(program_id: Program.tour_car_prep.id) } + + def set_defects_fixed + if self.completed? + self.defects.update(fixed: true, date_fixed: self.completed_date) + end + end def new? - status == "New" + status == 'New' end - + def in_progress? - status == "In-Progress" + status == 'In-Progress' end - + def completed? - status == "Completed" + status == 'Completed' end - + def overdue? status == 'Overdue' end + + def a_service? + program_id == Program.a_service.id + end + + def shock_service? + program_id == Program.shock_service.id + end + + def air_filter_service? + program_id == Program.air_filter_service.id + end + + def repairs? + program_id == Program.repairs.id + end + + def defect? + program_id == Program.defect.id + end + + def tour_car_prep? + program_id == Program.defect.id + end + + def update_service_mileage + vehicle = self.vehicle + veh_mileage = self.vehicle.mileage + if self.a_service? && self.completed? + vehicle.update(last_a_service: veh_mileage) + elsif self.shock_service? && self.completed? + vehicle.update(last_shock_service: veh_mileage) + elsif self.air_filter_service? && self.completed? + vehicle.update(last_air_filter_service: veh_mileage) + elsif self.repairs? && self.completed? + vehicle.update(repair_needed: false, needs_service: false, vehicle_status: 'In-Service') + elsif self.tour_car_prep? && self.completed? + vehicle.update(prep: false, needs_service: false, vehicle_status: 'In-Service') + elsif self.defect? && self.completed? + vehicle.update(defect: false, needs_service: false, vehicle_status: 'In-Service') + defect_email + end + end + + def defect_email + if self.users.exists? + defect_emails = [] + self.users.all.each do |user| + defect_emails << user.email + end + UserMailer.new_request_email(defect_emails, self).deliver_now + end + end end diff --git a/app/models/vehicle.rb b/app/models/vehicle.rb index b04a855..dc19390 100644 --- a/app/models/vehicle.rb +++ b/app/models/vehicle.rb @@ -26,8 +26,8 @@ class Vehicle < ApplicationRecord paginates_per 8 accepts_nested_attributes_for :events - - scope :in_service, -> { where(vehicle_status: "In-Service") } + + scope :in_service, -> { where(vehicle_status: 'In-Service') } STATUSES = ['In-Service', 'Out-of-Service', 'Sold'].freeze CATEGORIES = ['RZR', 'Fleet Vehicle', 'Tour Car', 'Dirt Bike', 'Training Vehicle', 'Other'].freeze @@ -67,29 +67,29 @@ def set_last_air_filter_service def set_times_used self.times_used = 0 if times_used.blank? end - + def set_thresholds - if veh_category == "RZR" + if veh_category == 'RZR' self.a_service_interval = Program.a_service.rzr_interval self.shock_service_interval = Program.shock_service.rzr_interval self.air_filter_service_interval = Program.air_filter_service.rzr_interval - elsif veh_category == "Fleet Vehicle" + elsif veh_category == 'Fleet Vehicle' self.a_service_interval = Program.a_service.fleet_interval self.shock_service_interval = Program.shock_service.fleet_interval self.air_filter_service_interval = Program.air_filter_service.fleet_interval - elsif veh_category == "Tour Car" + elsif veh_category == 'Tour Car' self.a_service_interval = Program.a_service.tour_car_interval self.shock_service_interval = Program.shock_service.tour_car_interval self.air_filter_service_interval = Program.air_filter_service.tour_car_interval - elsif veh_category == "Dirt Bike" + elsif veh_category == 'Dirt Bike' self.a_service_interval = Program.a_service.db_interval self.shock_service_interval = Program.shock_service.db_interval self.air_filter_service_interval = Program.air_filter_service.db_interval - elsif veh_category == "Training Vehicle" + elsif veh_category == 'Training Vehicle' self.a_service_interval = Program.a_service.training_interval self.shock_service_interval = Program.shock_service.training_interval self.air_filter_service_interval = Program.air_filter_service.training_interval - elsif veh_category == "Other" + elsif veh_category == 'Other' self.a_service_interval = Program.a_service.other_interval self.shock_service_interval = Program.shock_service.other_interval self.air_filter_service_interval = Program.air_filter_service.other_interval diff --git a/app/views/defects/_defects_search_box.html.erb b/app/views/defects/_defects_search_box.html.erb new file mode 100644 index 0000000..fba5012 --- /dev/null +++ b/app/views/defects/_defects_search_box.html.erb @@ -0,0 +1,51 @@ +
+
+ Search for Defects +
+
+
+ <%= search_form_for q, :url => {:action => action } do |f|%> +
+
+
+ <%= f.select :vehicle_id_eq, options_from_collection_for_select(@vehicles, "id", "car_id", @q.vehicle_id_eq), {include_blank: "Select Vehicle"}, class: "form-control" %> +
+
+
+
+ <%= f.check_box :fixed_eq, class: "form-check-input" %> + <%= f.label "Fixed", class: "form-check-label"%> +
+
+
+
+
+
+
+
+ <%= f.label "Date Fixed From", class: "mr-1"%> + <%= f.date_field :date_fixed_gteq, class: "form-control", datepicker: true %> +
+
+
+
+ <%= f.label "Date Fixed To", class: "mr-1"%> + <%= f.date_field :date_fixed_lteq, class: "form-control", datepicker: true %> +
+
+
+ +
+ <%= f.submit "Find Defects", class: "btn btn-danger"%> +
+ + <% end %> +
+
+
+
+
+ + <%= link_to 'Back', :back, class: "btn btn-danger" %> +
+ \ No newline at end of file diff --git a/app/views/defects/_defects_table.html.erb b/app/views/defects/_defects_table.html.erb index 99748b2..feba95e 100644 --- a/app/views/defects/_defects_table.html.erb +++ b/app/views/defects/_defects_table.html.erb @@ -24,7 +24,9 @@ <%= link_to defect.vehicle.car_id, vehicle_path(defect.vehicle.id), class: "badge badge-danger"%> - <%= defect.category %> + + <%= category_words defect %> + <%= defect.description %>
diff --git a/app/views/defects/_event_search_box.html.erb b/app/views/defects/_event_search_box.html.erb new file mode 100644 index 0000000..3896a90 --- /dev/null +++ b/app/views/defects/_event_search_box.html.erb @@ -0,0 +1,50 @@ +
+
+

Search For Events

+
+
+
+
+
+ <%= search_form_for q, :url => {:action => action } do |f|%> + +
+ <%= f.label "From", class: "mr-2 font-weight-bold text-danger"%> + <%= f.date_field :date_gteq, class: "form-control", :datepicker => true %> +
+ +
+ <%= f.label "To", class: "mr-4 font-weight-bold text-danger"%> + <%= f.date_field :date_lteq, class: "form-control", :datepicker => true %> +
+
+
+ +
+ <%= f.select :event_type_eq, Event::EVENT_TYPES, {include_blank: "Select Event Type"}, class: "form-control" %> +
+ +
+ <%= f.select :class_type_eq, Event::CLASS_TYPES, {include_blank: "Select Class Type"}, class: "form-control" %> +
+
+
+ +
+ <%= f.select :status_eq, Event::STATUSES, {include_blank: "Select Status"}, class: "form-control" %> +
+ +
+ <%= f.select :location_eq, Event::LOCATION, {include_blank: "Select Location"}, class: "form-control" %> +
+
+ +
+ <%= f.submit "Find Events", class: "btn btn-danger"%> +
+ <% end %> + +
+
+
+
\ No newline at end of file diff --git a/app/views/defects/by_event.html.erb b/app/views/defects/by_event.html.erb index 7d94c5b..2143713 100644 --- a/app/views/defects/by_event.html.erb +++ b/app/views/defects/by_event.html.erb @@ -7,7 +7,7 @@ <%= link_to 'All Defects Reported', defects_path, class: "btn btn-danger"%> -<% @events.each do |event| %> +<% @event_results.each do |event| %>

Event <%= link_to event.id, event_path(event.id), class: "badge badge-danger"%>

@@ -38,4 +38,6 @@
<% end %>
-<%= paginate @events%> \ No newline at end of file +<%= paginate @event_results%> +
+<%= render 'event_search_box', q: @q, action: :by_event%> \ No newline at end of file diff --git a/app/views/defects/index.html.erb b/app/views/defects/index.html.erb index 617ce0a..bc2a7d6 100644 --- a/app/views/defects/index.html.erb +++ b/app/views/defects/index.html.erb @@ -5,6 +5,9 @@ <%= link_to 'Work Order Dashboard', dashboard_requests_path, class: "btn btn-danger"%> <%= link_to 'Defects By Event', by_event_defects_path, class: "btn btn-danger"%>
+ <%= render 'defects_table', defects: @defects %>
-<%= paginate @defects%> \ No newline at end of file +<%= paginate @defects%> +
+<%= render 'defects_search_box', q: @q, action: :index %> \ No newline at end of file diff --git a/app/views/requests/edit.html.erb b/app/views/requests/edit.html.erb index d056633..ec5183f 100644 --- a/app/views/requests/edit.html.erb +++ b/app/views/requests/edit.html.erb @@ -32,8 +32,10 @@
- <%= f.label "Select Vehicle", class: "font-weight-bold" %> - <%= f.select :vehicle_id, Vehicle.all.collect { |v| [v.car_id, v.id]}, {include_blank: "Select Vehicle"}, id: :request_vehicle_id, class: "form-control" %> + Select Defects +
+
+ <%= f.collection_check_boxes :defect_ids, @defects, "id", :user_naming, class: "form-control" %>
diff --git a/app/views/requests/show.html.erb b/app/views/requests/show.html.erb index 68076e2..2fe4bcf 100644 --- a/app/views/requests/show.html.erb +++ b/app/views/requests/show.html.erb @@ -99,11 +99,37 @@
<% end %> + <% if @request.defects.exists? %> +
+
+

+ Defects: +

+
+
+
+ <% @request.defects.each do |defect|%> +
+ + <%= defect.created_at.strftime('%v') %> + +
+
+ <%= defect.description%> +
+ <% end %> +
+
+
+
+
+ <% end %> + <% if @request.users.exists?%>

- Recipents: + Recipients:

diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb index a60e3eb..1ccbe6e 100644 --- a/config/initializers/assets.rb +++ b/config/initializers/assets.rb @@ -13,4 +13,4 @@ # Precompile additional assets. # application.js, application.css, and all non-JS/CSS in the app/assets # folder are already added. -Rails.application.config.assets.precompile += ['pdf.css'] \ No newline at end of file +Rails.application.config.assets.precompile += ['pdf.css'] diff --git a/config/initializers/rack_profiler.rb b/config/initializers/rack_profiler.rb index 96b6cc9..63b2c85 100644 --- a/config/initializers/rack_profiler.rb +++ b/config/initializers/rack_profiler.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true if Rails.env.development? - require "rack-mini-profiler" + require 'rack-mini-profiler' # initialization is skipped so trigger it Rack::MiniProfilerRails.initialize!(Rails.application) diff --git a/config/routes.rb b/config/routes.rb index 9e78799..2ccd093 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -12,10 +12,10 @@ get 'create_work_order' end end - + resources :defects do collection do - get 'by_event' + get 'by_event' end end diff --git a/db/migrate/20180630204338_add_near_services_to_vehicles.rb b/db/migrate/20180630204338_add_near_services_to_vehicles.rb index 155e312..909f51c 100644 --- a/db/migrate/20180630204338_add_near_services_to_vehicles.rb +++ b/db/migrate/20180630204338_add_near_services_to_vehicles.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddNearServicesToVehicles < ActiveRecord::Migration[5.1] def change add_column :vehicles, :near_a_service, :boolean, default: false diff --git a/db/migrate/20180630204826_rename_vehicle_columns.rb b/db/migrate/20180630204826_rename_vehicle_columns.rb index c03059e..0dfc3e6 100644 --- a/db/migrate/20180630204826_rename_vehicle_columns.rb +++ b/db/migrate/20180630204826_rename_vehicle_columns.rb @@ -1,11 +1,13 @@ +# frozen_string_literal: true + class RenameVehicleColumns < ActiveRecord::Migration[5.1] def change - change_column :vehicles, :car_id, :string, default: "Blank" - change_column :vehicles, :manufacturer, :string, default: "Blank" - change_column :vehicles, :vin_number, :string, default: "Blank" + change_column :vehicles, :car_id, :string, default: 'Blank' + change_column :vehicles, :manufacturer, :string, default: 'Blank' + change_column :vehicles, :vin_number, :string, default: 'Blank' change_column :vehicles, :registration_date, :date, default: Time.now - change_column :vehicles, :plate_number, :string, default: "Blank" - change_column :vehicles, :vehicle_status, :string, default: "In-Service" + change_column :vehicles, :plate_number, :string, default: 'Blank' + change_column :vehicles, :vehicle_status, :string, default: 'In-Service' change_column :vehicles, :needs_service, :boolean, default: false change_column :vehicles, :near_service, :boolean, default: false change_column :vehicles, :a_service, :boolean, default: false @@ -14,8 +16,8 @@ def change change_column :vehicles, :repair_needed, :boolean, default: false change_column :vehicles, :defect, :boolean, default: false change_column :vehicles, :near_service, :boolean, default: false - change_column :vehicles, :make, :string, default: "Blank" - change_column :vehicles, :color, :string, default: "Blank" + change_column :vehicles, :make, :string, default: 'Blank' + change_column :vehicles, :color, :string, default: 'Blank' change_column :vehicles, :year, :integer, default: 0 change_column :vehicles, :use_a, :boolean, default: false change_column :vehicles, :use_b, :boolean, default: false @@ -27,11 +29,11 @@ def change change_column :vehicles, :last_shock_service, :float, default: 0.0 change_column :vehicles, :last_air_filter_service, :float, default: 0.0 change_column :vehicles, :times_used, :integer, default: 0.0 - change_column :vehicles, :veh_category, :string, default: "RZR" - change_column :vehicles, :location, :string, default: "RZR Basecamp" + change_column :vehicles, :veh_category, :string, default: 'RZR' + change_column :vehicles, :location, :string, default: 'RZR Basecamp' change_column :vehicles, :high_use, :boolean, default: false - change_column :vehicles, :notes, :string, default: "Blank" - change_column :vehicles, :purchaser, :string, default: "Blank" + change_column :vehicles, :notes, :string, default: 'Blank' + change_column :vehicles, :purchaser, :string, default: 'Blank' change_column :vehicles, :sale_date, :date, default: Time.now change_column :vehicles, :prep, :boolean, default: false end diff --git a/db/migrate/20180703010419_add_checklist_id_to_requests.rb b/db/migrate/20180703010419_add_checklist_id_to_requests.rb index 87ee811..39f0a46 100644 --- a/db/migrate/20180703010419_add_checklist_id_to_requests.rb +++ b/db/migrate/20180703010419_add_checklist_id_to_requests.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddChecklistIdToRequests < ActiveRecord::Migration[5.1] def change add_column :requests, :checklist_id, :integer, default: 0 diff --git a/db/migrate/20180723145136_add_vehicle_specific_intervals_to_services.rb b/db/migrate/20180723145136_add_vehicle_specific_intervals_to_services.rb index 66a5f21..8bab9ba 100644 --- a/db/migrate/20180723145136_add_vehicle_specific_intervals_to_services.rb +++ b/db/migrate/20180723145136_add_vehicle_specific_intervals_to_services.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddVehicleSpecificIntervalsToServices < ActiveRecord::Migration[5.1] def change add_column :programs, :rzr_interval, :float, default: 0.0 diff --git a/db/migrate/20180725151340_add_checklists_completed_to_events.rb b/db/migrate/20180725151340_add_checklists_completed_to_events.rb index 48c502f..2d10831 100644 --- a/db/migrate/20180725151340_add_checklists_completed_to_events.rb +++ b/db/migrate/20180725151340_add_checklists_completed_to_events.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddChecklistsCompletedToEvents < ActiveRecord::Migration[5.1] def change add_column :events, :checklists_completed, :boolean diff --git a/db/migrate/20180731102553_add_defect_to_checklist.rb b/db/migrate/20180731102553_add_defect_to_checklist.rb index 24c0225..5359831 100644 --- a/db/migrate/20180731102553_add_defect_to_checklist.rb +++ b/db/migrate/20180731102553_add_defect_to_checklist.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + class AddDefectToChecklist < ActiveRecord::Migration[5.1] def change add_column :checklists, :defect, :boolean, default: false diff --git a/db/migrate/20180731193315_create_defects.rb b/db/migrate/20180731193315_create_defects.rb index 4eefedf..e0d917b 100644 --- a/db/migrate/20180731193315_create_defects.rb +++ b/db/migrate/20180731193315_create_defects.rb @@ -1,8 +1,10 @@ +# frozen_string_literal: true + class CreateDefects < ActiveRecord::Migration[5.1] def change create_table :defects do |t| - t.string :description, default: "" - t.string :category, default: "" + t.string :description, default: '' + t.string :category, default: '' t.belongs_to :vehicle t.belongs_to :checklist t.boolean :fixed, default: false diff --git a/db/migrate/20180802095126_add_defects_reported_to_events.rb b/db/migrate/20180802095126_add_defects_reported_to_events.rb new file mode 100644 index 0000000..e815031 --- /dev/null +++ b/db/migrate/20180802095126_add_defects_reported_to_events.rb @@ -0,0 +1,7 @@ +# frozen_string_literal: true + +class AddDefectsReportedToEvents < ActiveRecord::Migration[5.1] + def change + add_column :events, :defects_reported, :boolean + end +end diff --git a/db/migrate/20180802112214_create_defect_requests.rb b/db/migrate/20180802112214_create_defect_requests.rb new file mode 100644 index 0000000..106aca1 --- /dev/null +++ b/db/migrate/20180802112214_create_defect_requests.rb @@ -0,0 +1,10 @@ +class CreateDefectRequests < ActiveRecord::Migration[5.1] + def change + create_table :defect_requests do |t| + t.integer :defect_id + t.integer :request_id + + t.timestamps + end + end +end diff --git a/db/migrate/20180802112348_remove_defect_id_from_requests.rb b/db/migrate/20180802112348_remove_defect_id_from_requests.rb new file mode 100644 index 0000000..125dfc7 --- /dev/null +++ b/db/migrate/20180802112348_remove_defect_id_from_requests.rb @@ -0,0 +1,5 @@ +class RemoveDefectIdFromRequests < ActiveRecord::Migration[5.1] + def change + remove_column :requests, :defect_id, :integer + end +end diff --git a/db/schema.rb b/db/schema.rb index 0b37723..54013d9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -10,7 +10,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20180731214905) do +ActiveRecord::Schema.define(version: 20180802112348) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -43,6 +43,13 @@ t.boolean "defect" end + create_table "defect_requests", force: :cascade do |t| + t.integer "defect_id" + t.integer "request_id" + t.datetime "created_at", null: false + t.datetime "updated_at", null: false + end + create_table "defects", force: :cascade do |t| t.string "description" t.bigint "vehicle_id" @@ -84,6 +91,7 @@ t.date "end_date" t.boolean "multi_day" t.boolean "checklists_completed" + t.boolean "defects_reported" end create_table "events_vehicles", force: :cascade do |t| diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 251aa51..5681bb3 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -1,3 +1,5 @@ +# frozen_string_literal: true + # This file was generated by the `rspec --init` command. Conventionally, all # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`. # The generated `.rspec` file contains `--require spec_helper` which will cause @@ -44,57 +46,55 @@ # triggering implicit auto-inclusion in groups with matching metadata. config.shared_context_metadata_behavior = :apply_to_host_groups -# The settings below are suggested to provide a good initial experience -# with RSpec, but feel free to customize to your heart's content. -=begin - # This allows you to limit a spec run to individual examples or groups - # you care about by tagging them with `:focus` metadata. When nothing - # is tagged with `:focus`, all examples get run. RSpec also provides - # aliases for `it`, `describe`, and `context` that include `:focus` - # metadata: `fit`, `fdescribe` and `fcontext`, respectively. - config.filter_run_when_matching :focus - - # Allows RSpec to persist some state between runs in order to support - # the `--only-failures` and `--next-failure` CLI options. We recommend - # you configure your source control system to ignore this file. - config.example_status_persistence_file_path = "spec/examples.txt" - - # Limits the available syntax to the non-monkey patched syntax that is - # recommended. For more details, see: - # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/ - # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ - # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode - config.disable_monkey_patching! - - # This setting enables warnings. It's recommended, but in some cases may - # be too noisy due to issues in dependencies. - config.warnings = true - - # Many RSpec users commonly either run the entire suite or an individual - # file, and it's useful to allow more verbose output when running an - # individual spec file. - if config.files_to_run.one? - # Use the documentation formatter for detailed output, - # unless a formatter has already been configured - # (e.g. via a command-line flag). - config.default_formatter = "doc" - end - - # Print the 10 slowest examples and example groups at the - # end of the spec run, to help surface which specs are running - # particularly slow. - config.profile_examples = 10 - - # Run specs in random order to surface order dependencies. If you find an - # order dependency and want to debug it, you can fix the order by providing - # the seed, which is printed after each run. - # --seed 1234 - config.order = :random - - # Seed global randomization in this process using the `--seed` CLI option. - # Setting this allows you to use `--seed` to deterministically reproduce - # test failures related to randomization by passing the same `--seed` value - # as the one that triggered the failure. - Kernel.srand config.seed -=end + # The settings below are suggested to provide a good initial experience + # with RSpec, but feel free to customize to your heart's content. + # # This allows you to limit a spec run to individual examples or groups + # # you care about by tagging them with `:focus` metadata. When nothing + # # is tagged with `:focus`, all examples get run. RSpec also provides + # # aliases for `it`, `describe`, and `context` that include `:focus` + # # metadata: `fit`, `fdescribe` and `fcontext`, respectively. + # config.filter_run_when_matching :focus + # + # # Allows RSpec to persist some state between runs in order to support + # # the `--only-failures` and `--next-failure` CLI options. We recommend + # # you configure your source control system to ignore this file. + # config.example_status_persistence_file_path = "spec/examples.txt" + # + # # Limits the available syntax to the non-monkey patched syntax that is + # # recommended. For more details, see: + # # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/ + # # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/ + # # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode + # config.disable_monkey_patching! + # + # # This setting enables warnings. It's recommended, but in some cases may + # # be too noisy due to issues in dependencies. + # config.warnings = true + # + # # Many RSpec users commonly either run the entire suite or an individual + # # file, and it's useful to allow more verbose output when running an + # # individual spec file. + # if config.files_to_run.one? + # # Use the documentation formatter for detailed output, + # # unless a formatter has already been configured + # # (e.g. via a command-line flag). + # config.default_formatter = "doc" + # end + # + # # Print the 10 slowest examples and example groups at the + # # end of the spec run, to help surface which specs are running + # # particularly slow. + # config.profile_examples = 10 + # + # # Run specs in random order to surface order dependencies. If you find an + # # order dependency and want to debug it, you can fix the order by providing + # # the seed, which is printed after each run. + # # --seed 1234 + # config.order = :random + # + # # Seed global randomization in this process using the `--seed` CLI option. + # # Setting this allows you to use `--seed` to deterministically reproduce + # # test failures related to randomization by passing the same `--seed` value + # # as the one that triggered the failure. + # Kernel.srand config.seed end