Class: WorldTopMovies::DB::Movie

Inherits:
ActiveRecord::Base
  • Object
show all
Defined in:
lib/world_top_movies/models/movie.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.add_movies(user:, movie_urls:) ⇒ Object



24
25
26
27
28
29
30
31
32
33
# File 'lib/world_top_movies/models/movie.rb', line 24

def self.add_movies(user:, movie_urls:)
  # Finds or creates new Favourite movie instances and adds them to the given user
  movie_urls.class != Array && movie_urls = movie_urls.split()
  movie_urls.each do |movie_url|
    if user.movies.none? { |m| m.url == movie_url }
      attributes = self.generate_attributes_from_url(movie_url)
      user.movies << self.find_or_create_by(attributes)
    end
  end
end

.generate_attributes_from_url(movie_url) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/world_top_movies/models/movie.rb', line 6

def self.generate_attributes_from_url(movie_url)
  fav_movie = WorldTopMovies::Movie.find_by_url(movie_url)
  attributes = {
    title: fav_movie.title,
    year: fav_movie.year,
    duration: fav_movie.duration,
    genres: fav_movie.genres.join(" - "),
    user_rating: fav_movie.user_rating,
    metascore: fav_movie.metascore,
    description: fav_movie.description,
    director: fav_movie.director,
    stars: fav_movie.stars.join(" - "),
    votes: fav_movie.votes,
    gross_revenue: fav_movie.gross_revenue,
    url: fav_movie.url,
  }
end

Instance Method Details



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/world_top_movies/models/movie.rb', line 35

def print_movie_details
  attributes = {
    title: self.title,
    year: self.year,
    duration: self.duration,
    genres: self.genres,
    user_rating: self.user_rating,
    metascore: self.metascore.to_s,
    description: self.description,
    director: self.director,
    stars: self.stars,
    votes: self.votes,
    gross_revenue: self.gross_revenue,
    url: self.url,
    database: true,
  }
  movie = WorldTopMovies::Movie.new(attributes)
  movie.scrape_and_print_movie
  print_movie_notes
end


56
57
58
59
60
61
62
# File 'lib/world_top_movies/models/movie.rb', line 56

def print_movie_notes
  logged_user = WorldTopMovies::CLI.user
  notes = self.notes.select { |n| n.user && n.user.username == logged_user.username }
  puts "\n----------------#{"My Own notes".bold}------------------"
  notes.empty? ? puts("No notes left") : notes.each { |n| puts "\n-#{n.note_message}- on #{n.created_at.localtime}" }
  puts "----------------------------------------------"
end