diff --git a/app/controllers/bikes_controller.rb b/app/controllers/bikes_controller.rb index c55ca4c..82e85bb 100644 --- a/app/controllers/bikes_controller.rb +++ b/app/controllers/bikes_controller.rb @@ -61,6 +61,12 @@ class BikesController < ApplicationController end end + def mark_picked_up + @bike = Bike.find(params[:id]) + @bike.mark_picked_up + flash[:notice] = @bike.name + ' was marked as picked up' + redirect_to action: "ready_for_pickup", controller: "freecyclery" + end private def set_bike diff --git a/app/models/bike.rb b/app/models/bike.rb index c97f0e9..be982f9 100644 --- a/app/models/bike.rb +++ b/app/models/bike.rb @@ -16,7 +16,7 @@ class Bike < ActiveRecord::Base def ready_for_pickup? client = self.client - client && self.completion_date && !client.application_voided + client && self.completion_date && !client.application_voided && self.date_sold.nil? end def self.bikes_ready_for_pickup @@ -27,4 +27,9 @@ class Bike < ActiveRecord::Base Bike.all.select{|bike| bike.completion_date && (bike.purpose == "Freecyclery") && !bike.client } end + def mark_picked_up + current_date = Time.new.strftime("%Y-%m-%d") + self.update_attribute(:date_sold, current_date) + end + end diff --git a/app/views/freecyclery/ready_for_pickup.html.haml b/app/views/freecyclery/ready_for_pickup.html.haml index 60cbfa0..979981e 100644 --- a/app/views/freecyclery/ready_for_pickup.html.haml +++ b/app/views/freecyclery/ready_for_pickup.html.haml @@ -8,10 +8,12 @@ %th Brand %th Model %th Client + %th %tbody - @bikes_for_pickup.each do |bike| %tr %td= bike.brand %td= bike.model %td= bike.client.name + %td= button_to "Mark as picked up", {controller: "bikes", action: "mark_picked_up", id: bike.id}, method: :patch, class: "btn btn-default" diff --git a/config/routes.rb b/config/routes.rb index c8439c8..f4944e6 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -7,6 +7,7 @@ Bikedb::Application.routes.draw do get 'print_labels' => 'bikes#print_labels', on: :collection get 'freecyclery_pickup' => 'bikes#freecyclery_pickup', on: :collection patch 'mark_as_sold' => 'bikes#mark_as_sold', on: :member + patch 'mark_picked_up' => 'bikes#mark_picked_up', on: :member end resources :volunteers @@ -18,6 +19,5 @@ Bikedb::Application.routes.draw do get 'closed_applications' => 'freecyclery#closed_applications' get 'ready_for_pickup' => 'freecyclery#ready_for_pickup' get 'available_bikes' => 'freecyclery#available_bikes' - get 'bikes_sold_per_year' => 'reports#bikes_sold_per_year' end diff --git a/notes.txt b/notes.txt index 42d7e5d..5cbc6f5 100644 --- a/notes.txt +++ b/notes.txt @@ -1,16 +1,18 @@ Freecyclery Receipts Reports - Number of bikes sold by year or month. (Bar graph for extra points!) - Number of bikes donated by year or month. (With bar graph!?) - Number of bikes donated according to agency. (Graph?) - Average bike price for year. - + General Reports + bikes donated per year + Yearly Reports + bikes sold by month. (Bar graph for extra points!) + bikes donated by year or month. (With bar graph!?) + bikes donated according to agency. (Graph?) Add some way to navigate to client receipts style client receipts + assign a bike from the available freecyclery bikes page -mark as picked up from the ready for pickup page + validations around parameters that break site if incomplete mark as sold should be disabled after bike is sold there should be nice feedback indicating that the bike was sold