class Vendor

Constants

INDEX_BASE_PATH

Attributes

index_pagenum[RW]
name[RW]
number[RW]
page_url[RW]

Public Class Methods

all() click to toggle source
# File lib/blackfriday2016/vendor.rb, line 29
def self.all
  @@all
end
create_from_collection(vendor_index) click to toggle source

Uses the Scraper class to create new vendors with all the details

# File lib/blackfriday2016/vendor.rb, line 17
def self.create_from_collection(vendor_index)
  vendor_index.each do |vendor|
    self.new(vendor)
  end
end
create_vendors() click to toggle source

Scrapes from the index page, and creates vendors

# File lib/blackfriday2016/vendor.rb, line 24
def self.create_vendors
  vendor_index = Scraper.scrape_index_page(INDEX_BASE_PATH)# + 'index.html')
  self.create_from_collection(vendor_index)
end
display_vendors(page_num=1) click to toggle source

Displays list of Stores

# File lib/blackfriday2016/vendor.rb, line 57
def self.display_vendors(page_num=1)
  puts "-------------------------------------------------------".colorize(:light_blue)
  puts "List of Stores - Black Friday Deals - Page #{page_num}:".center(55)
  puts "-------------------------------------------------------".colorize(:light_blue)
  self.all.each do |vendor|
    puts "#{vendor.number}. ".colorize(:light_red) + "#{vendor.name}".colorize(:light_blue) if vendor.index_pagenum == page_num
  end
  self.index_page_options(page_num)
end
go_to_next_page(page_num) click to toggle source

Method to display next page of stores list if applicable

# File lib/blackfriday2016/vendor.rb, line 78
def self.go_to_next_page(page_num)
  if page_num+1 <= self.page_count
    self.display_vendors(page_num+1)
  else
    puts "You have reached the end of Store List.".colorize(:light_blue)
    self.index_page_options(page_num)
  end
end
go_to_prev_page(page_num) click to toggle source

Method to display previous page of stores list if applicable

# File lib/blackfriday2016/vendor.rb, line 88
def self.go_to_prev_page(page_num)
  if page_num-1 >= 1
    self.display_vendors(page_num-1)
  else
    puts "You have reached the beginning of Store List.".colorize(:light_blue)
    self.index_page_options(page_num)
  end
end
go_to_store_deals(store_num, page_num) click to toggle source

Method to display the first page of deals of a particular selected store

# File lib/blackfriday2016/vendor.rb, line 98
def self.go_to_store_deals(store_num, page_num)
  if store_num <= self.all.count
    Dealpage.display_deal_details(self.return_deal_url(store_num))
  else
    puts "You have entered an invalid Store Number. Please make a valid choice.".colorize(:light_blue)
    self.index_page_options(page_num)
  end
end
index_page_options(page_num=1) click to toggle source

Display Store List menu options

# File lib/blackfriday2016/vendor.rb, line 108
def self.index_page_options(page_num=1)
  puts "-------------------------------------------------------".colorize(:light_blue)
  puts "Please select from options below:".colorize(:green)
  self.print_prev_page if (page_num > 1 && page_num <= self.page_count)
  self.print_next_page if page_num < self.page_count
  puts "\n" + "| Store '" + "#".colorize(:light_red) + "' to " + "See Deals".colorize(:light_blue) + " from a particular Store |"
  puts "| '" + "x".colorize(:light_red) + "' to " + "Exit".colorize(:light_blue) + " the program |"
  print "\n" + "Please Enter your selection: ".colorize(:green)
  input = gets.strip.downcase
  if input == "n"
    self.go_to_next_page(page_num)
  elsif input == "p"
    self.go_to_prev_page(page_num)
  elsif (input.include?(".") || input.include?(",")) #To make float inputs invalid
    puts "You have entered an invalid choice. Please make a valid choice.".colorize(:light_blue)
    self.index_page_options(page_num)
  elsif input.to_i > 0
    store_num = input.to_i
    self.go_to_store_deals(store_num, page_num)
  elsif input == "x"
    puts "Goodbye! Have a nice day.".colorize(:light_blue)
  else
    puts "You have entered an invalid choice. Please make a valid choice.".colorize(:light_blue)
    self.index_page_options(page_num)
  end
end
new(vendor_details) click to toggle source

Initializes each of the vendor attributes

# File lib/blackfriday2016/vendor.rb, line 11
def initialize(vendor_details)
  vendor_details.each {|key,value| self.send(("#{key}="), value)}
  @@all << self
end
page_count() click to toggle source

Count the total number of vendor index pages

# File lib/blackfriday2016/vendor.rb, line 34
def self.page_count
  (self.all.count/10.to_f).ceil
end
print_next_page() click to toggle source

Prints Next Page indicator

print_prev_page() click to toggle source

Prints Previous Page indicator

return_deal_url(input) click to toggle source

Returns the deal page url of a particular vendor

# File lib/blackfriday2016/vendor.rb, line 39
def self.return_deal_url(input)
  return_url = nil
  self.all.each do |vendor|
    return_url = vendor.page_url if vendor.number == input
  end
  return_url
end
return_vendor_name(page_url) click to toggle source

Returns vendor name when given a deal page url

# File lib/blackfriday2016/vendor.rb, line 48
def self.return_vendor_name(page_url)
  vendor_name = nil
  self.all.each do |vendor|
    vendor_name = vendor.name if vendor.page_url == page_url
  end
  vendor_name
end