Skip to content
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
coverage
DS_Store
1 change: 1 addition & 0 deletions .ruby-gemset
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
farmar
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.3.0
9 changes: 9 additions & 0 deletions Rakefile.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
require 'rake/testtask'

Rake::TestTask.new do |t|
t.libs = ["lib"]
t.warning = true
t.test_files = FileList['spec/*_spec.rb']
end

task default: :test
12 changes: 12 additions & 0 deletions far_mar.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@

require 'CSV'
module FarMar



end

require_relative './lib/market'
require_relative './lib/product'
require_relative './lib/vendor'
require_relative './lib/sale'
Binary file added lib/.DS_Store
Binary file not shown.
54 changes: 54 additions & 0 deletions lib/market.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
#require_relative '../far_mar'
require 'CSV'
class FarMar::Market
include FarMar
attr_reader :id, :name, :address, :city, :county, :state ,:zip

def initialize(id=nil,name=nil,address=nil,city=nil,county=nil,state=nil,zip=nil)
@id = id.to_s
@name = name
@address = address
@city = city
@county = county
@state = state
@zip = zip
end

def self.all
markets = []
CSV.read("./support/markets.csv").each do |line|
markets << self.new(line[0],line[1],line[2],line[3],line[4],line[5],line[6])
end
return markets #just as a reminder out side of loop
end


def self.find(id)
CSV.read("./support/markets.csv").each do |line|
if line[0] == id.to_s
return self.new(line[0],line[1],line[2],line[3],line[4],line[5],line[6])
end
end
end

def vendors
vendor_list= []
CSV.read("./support/vendors.csv").each do |line|
if line[3] == @id.to_s
vendor_list<< FarMar::Vendor.new(line[0],line[1],line[2],line[3])
end
end
return vendor_list #just as a reminder out side of loop

end










end
65 changes: 65 additions & 0 deletions lib/product.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#require_relative '../far_mar'
require 'CSV'
class FarMar::Product
include FarMar
attr_reader :id, :name, :vendor, :vendor_id
def initialize(id=nil,name=nil,vendor_id=nil,product_id=nil)
@id = id.to_i
@name = name.to_s
@vendor_id = vendor_id.to_i
@product_id = product_id.to_i
end

def self.all
products = []
CSV.read("./support/products.csv").each do |line| #remember to take off dot when using rake
products << self.new(line[0],line[1],line[2])
end
return products #just as a reminder out side of loop
end

def self.find(id)
CSV.read("./support/products.csv").each do |line| #remember to take off dot when using rake
if line[0] == id.to_s
return self.new(line[0],line[1],line[2])
end
end
end

def vendor
vendor_list = []
CSV.read("./support/vendors.csv").each do |line|
if line[0] == vendor_id.to_s
vendor_list<< FarMar::Vendor.new(line[0],line[1],line[2],line[3])
end
end
return vendor_list #just as a reminder out side of loop
end


def sales
sales_list = []
CSV.read("./support/sales.csv").each do |line|
if line[4] == id.to_s
sales_list << FarMar::Sale.new(line[0],line[1],line[3],line[4])
end
end
return sales_list

end

def number_of_sales
sales.length
end

def self.by_vendor(vendor_id)
vendor_id_list = []
CSV.read("./support/products.csv").each do |line|
if line[2] == vendor_id.to_s
vendor_id_list << FarMar::Product.new(line[0],line[1],line[2])
end
end
vendor_id_list
end

end
65 changes: 65 additions & 0 deletions lib/sale.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
#require_relative './far_mar' if i want to run it in IRB
require 'CSV'
class FarMar::Sale
include FarMar
attr_reader :id, :amount, :purchase_time, :vendor_id, :product_id
def initialize(id=nil,amount=nil,purchase_time=nil,vendor_id=nil,product_id=nil)
@id = id.to_s
@amount = amount
@purchase_time = purchase_time
@vendor_id = vendor_id.to_i
@product_id = product_id.to_i
end


def self.all
sales = []
CSV.read("./support/sales.csv").each do |line|
sales << self.new(line[0],line[1],line[2],line[3],line[4])
end
return sales #just as a reminder out side of loop
end

def self.find(id)
CSV.read("./support/sales.csv").each do |line|
if line[0] == id.to_s
return self.new(line[0],line[1],line[2],line[3],line[4])
end
end
end


def vendor
vendor_list = []
CSV.read("./support/vendors.csv").each do |line|
if line[0].to_i == vendor_id.to_i
vendor_list << FarMar::Vendor.new(line[0],line[1],line[2],line[3])
end
end
return vendor_list
end


def product
product_list = []
CSV.read("./support/products.csv").each do |line|
if line[0].to_i == product_id.to_i
product_list << FarMar::Product.new(line[0],line[1],line[2],line[3])
end
end
return product_list
end

def self.between(beginning_time,end_time)
beginning_time = Date.parse(beginning_time)
end_time = Date.parse(end_time)
times_range = []
CSV.read("./support/sales.csv").each do |line|
if ((beginning_time..end_time).cover? Date.parse(line[2]))
times_range << FarMar::Sale.new(line[0],line[1],line[2],line[3],line[4])
end
end
return times_range
end

end
87 changes: 87 additions & 0 deletions lib/vendor.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
#require_relative './far_mar'if i want to run it in IRB
require 'CSV'
class FarMar::Vendor
include FarMar
attr_reader :id, :name, :no_of_employees, :market_id
def initialize(id=nil,name=nil,no_of_employees=nil,market_id=nil)
@id = id.to_s
@name = name
@no_of_employees = no_of_employees.to_s
@market_id = market_id.to_s
end


def self.all
vendors = []
CSV.read("./support/vendors.csv").each do |line|
vendors << self.new(line[0],line[1],line[2],line[3])
end
return vendors #just as a reminder out side of loop
end

def self.find(id)
CSV.read("./support/vendors.csv").each do |line|
if line[0] == id.to_s
return self.new(line[0],line[1],line[2],line[3])
end
end
end


def market
market_list= []
CSV.read("./support/markets.csv").each do |line|
if line[0] == market_id.to_s
market_list<< FarMar::Market.new(line[0],line[1],line[2],line[3],line[4],line[5],line[6])
end
end
return market_list #just as a reminder out side of loop

end



def products
product_list = []
CSV.read("./support/products.csv").each do |line|
if line[2] == id.to_s
product_list<< FarMar::Product.new(line[0],line[1],line[2])
end
end
return product_list #just as a reminder out side of loop

end

def sales
sales_list = []
CSV.read("./support/sales.csv").each do |line|
if line[3] == id.to_s
sales_list << FarMar::Sale.new(line[0],line[1],line[2],line[3],line[4])
end
end
return sales_list
end

def revenue
revenue_list = []
CSV.read("./support/sales.csv").each do |line|
if line[3] == id.to_s
revenue_list << FarMar::Sale.new(line[0],line[1],line[2],line[3],line[4]).amount.to_i
end
end
revenue_list.reduce(0,:+)

end

def self.by_market(market_id)
market_id_list = []
CSV.read("./support/vendors.csv").each do |line|
if line[3] == market_id.to_s
market_id_list << self.new(line[0],line[1],line[2],line[3])
end
end

market_id_list
end

end
43 changes: 43 additions & 0 deletions spec/market_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
require_relative './spec_helper'

describe FarMar::Market do
let(:market_instance) {FarMar::Market.new}
let(:market_class) {FarMar::Market}

it "is an object we have access to" do
FarMar::Market.wont_be_nil
end

describe "FarMar::Market#vendors" do
it "will return a vendor with it's market id" do
FarMar::Market.find("3").vendors.pop.must_be_instance_of FarMar::Vendor
end
end


describe "FarMar::Market#self.all" do
it "will return an array that is greater than 0" do
(FarMar::Market.all.count > 0).must_equal true
end
end

describe " FarMar::Market#self.find" do
it "will return a market with id 5" do
FarMar::Market.find(5).must_be_instance_of FarMar::Market
end
end
end








# describe FarMar::Market do
#
# it "is an object we have access to" do
# FarMar::Market.wont_be_nil
# end
# end
Loading