Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Beylul Kbreab #66

Open
wants to merge 8 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 37 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
coverage/

*.gem
*.rbc
/.config
/coverage/
/InstalledFiles
/pkg/
/spec/reports/
/test/tmp/
/test/version_tmp/
/tmp/

## Specific to RubyMotion:
.dat*
.repl_history
build/

## Documentation cache and generated files:
/.yardoc/
/_yardoc/
/doc/
/rdoc/

## Environment normalisation:
/.bundle/
/vendor/bundle
/lib/bundler/man/

# for a library or gem, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# Gemfile.lock
# .ruby-version
# .ruby-gemset

# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
.rvmrc
7 changes: 7 additions & 0 deletions Rakefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
require 'rake/testtask'

Rake::TestTask.new do |t|
t.test_files = FileList['specs/*_spec.rb']
end

task default: :test
20 changes: 20 additions & 0 deletions far_mar.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# gems your project needs
require 'csv'

# our namespace module
module FarMar; end

# all of our data classes that live in the module
require_relative 'lib/market'
require_relative 'lib/product'
require_relative 'lib/sale'
require_relative 'lib/vendor'
# ...require all needed classes


# The module provides a namespace for the
# application. A namespace ensures the classes
# we create will not 'collide' or 'overlap' with a class that could exist elsewhere in a codebase (like in a gem).
#
# For example, Sale is a very generic class name that could very realistically exist in many codebases. Creating
# a module called FarMar allows us to specify which Sale we're talking about; FarMar::Sale is much more explicit and likely to be unique.
52 changes: 52 additions & 0 deletions lib/market.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# require 'csv'
# require_relative 'vendor'

module FarMar
class Market

attr_reader :id, :name, :address, :city, :county, :state, :zip

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

def self.all
info = {}
# CSV.read('../support/markets.csv').each do |line|
CSV.read('support/markets.csv').each do |line|
id = line[0].to_i
name = line[1]
address = line[2]
city = line[3]
county = line[4]
state = line[5]
zip = line[6]
info[id] = self.new(id, name, address, city, county, state, zip)
end
return info
end

def self.find(id)
self.all[id]
end

def vendors
vendor_info = FarMar::Vendor.by_market(@id)
return vendor_info
end
end
end


# # c = FarMar.find(1)
#
# c = FarMar::Market.new(3, "name", "address", "city", "county", "state", 8880)
# p c.vendors
#
# # p FarMar::Market.all
80 changes: 80 additions & 0 deletions lib/product.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# require 'csv'
# require_relative 'vendor'
# require_relative 'sale'
module FarMar
class Product

attr_reader :id, :name, :vendor_id, :vendor_info, :sale_info

def initialize(id, name, vendor_id)
@id = id
@name = name
@vendor_id = vendor_id
@vendor_info = []
@sale_info = []
end

def self.all
info = {}
CSV.read('support/products.csv').each do |line|
# CSV.read('../support/products.csv').each do |line|
id = line[0].to_i
name = line[1]
vendor_id = line[2].to_i
info[id] = self.new(id, name, vendor_id)
end
return info
end

def self.find(id)
self.all[id]
end

def vendor
vendors = FarMar::Vendor.all
vendors.each do |key, line|
if @vendor_id == line.id
@vendor_info << line
end
end
return @vendor_info
end

def sales
sale = FarMar::Sale.all
sale.each do |key, line|
if @id == line.product_id
@sale_info << line
end
end
return @sale_info
end

def self.by_vendor(vendor_id)
product_info = []
product = FarMar::Product.all
product.each do |key, line|
if vendor_id == line.vendor_id
product_info << line
end
end
return product_info
end

def number_of_sales
total = 0
@sale_info.each do |line|
line
total += 1
end
return total
end
end
end


# p = FarMar::Product.new(2, "name", 2)
# p p.sales
# p p.number_of_sales
# p p.vendor
# p FarMar::Product.by_vendor(4)
84 changes: 84 additions & 0 deletions lib/sale.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# require 'date'
# require 'time'

# require 'csv'

# require_relative 'vendor'
# require_relative 'product'

module FarMar
class Sale

attr_reader :id, :amount, :purchase_time, :vendor_id, :product_id,
:vendor_info, :product_info

def initialize(id, amount, purchase_time, vendor_id, product_id)
@id = id
@amount = amount.to_i
@purchase_time = purchase_time
@vendor_id = vendor_id
@product_id = product_id
@vendor_info = []
@product_info = []
end

def self.all
info = {}
CSV.read('support/sales.csv').each do |line|
# CSV.read('../support/sales.csv').each do |line|
id = line[0].to_i
amount = line[1].to_i
purchase_time = DateTime.parse(line[2])
vendor_id = line[3].to_i
product_id = line[4].to_i

info[id] = self.new(id, amount, purchase_time, vendor_id, product_id)
end
return info
end

def self.find(id)
self.all[id]
end

def vendor
vendors = FarMar::Vendor.all
vendors.each do |key, line|
if @vendor_id == line.id
@vendor_info << line
end
end
return @vendor_info
end

def product
products = FarMar::Product.all
products.each do |key, line|
if @product_id == line.id
@product_info << line
end
end
return @product_info
end

def self.between(beginning_time, end_time)
purchased_items = []

self.all.each do |key, line|
if line.purchase_time >= beginning_time && line.purchase_time <= end_time
purchased_items << line
end
return purchased_items
end
end
end
end



# p= FarMar::Sale.new(1, 89, "purchase_time", 5, 4)
# puts p.vendor
# p FarMar::Sale.between(DateTime.parse("9290,2013-11-07 04:34:56"), DateTime.parse("9290,2013-12-07 06:34:56"))
# p FarMar::Sale.all

# p p.product
91 changes: 91 additions & 0 deletions lib/vendor.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# require 'csv'
# require_relative 'market'
# require_relative 'product'
# require_relative 'sale'
module FarMar
class Vendor

attr_reader :id, :name, :no_of_employee, :market_id, :market_info
#, :sale_info

def initialize (id, name, no_of_employee, market_id)
@id = id
@name = name
@no_of_employee = no_of_employee
@market_id = market_id
@market_info = []
# @product_info = []
# @sale_info = []
end

def self.all
info = {}
# CSV.read('../support/vendors.csv').each do |line|
CSV.read('support/vendors.csv').each do |line|
id = line[0].to_i
name = line[1]
no_of_employee = line[2].to_i
market_id = line[3].to_i
info[id] = self.new(id, name, no_of_employee, market_id)
end
return info
end

def self.find(id)
self.all[id]
end

def market
markets = FarMar::Market.all
markets.each do |key, line|
if @market_id == line.id
@market_info << line
end
end
return @market_info
end

def products
product_info = FarMar::Product.by_vendor(@id)
return product_info
end

def sales
sale_info = []
sale = FarMar::Sale.all
sale.each do |key, line|
if @id == line.vendor_id
sale_info << line
end
end
return sale_info
end

def self.by_market(market_id)
vendor_info = []
vendors = Vendor.all

vendors.each do |key, line|
if market_id == line.market_id
puts vendor_info << line
end
end
return vendor_info
end

def revenue
sum = 0
total = sales.inject(0){|sum, line| sum + line.amount}
return total
end
end
end

# p FarMar::Vendor.by_market(2)
# p = FarMar::Vendor.new(1, "name", 123, 1)
# p p.revenue
# p p.market
# p p.products
# p p.sales

# p FarMar::Vendor.all
Loading