# frozen_string_literal: true # A prepaid-pack added to the shopping cart class CartItem::PrepaidPack < CartItem::BaseItem def initialize(pack, customer) raise TypeError unless pack.is_a? PrepaidPack @pack = pack @customer = customer super end def pack raise InvalidGroupError if @pack.group_id != @customer.group_id @pack end def price amount = pack.amount elements = { pack: amount } { elements: elements, amount: amount } end def name "#{@pack.minutes / 60} h" end def to_object ::StatisticProfilePrepaidPack.new( prepaid_pack_id: @pack.id, statistic_profile_id: StatisticProfile.find_by(user: @customer).id ) end def type 'pack' end def valid?(_all_items) if @pack.disabled @errors[:item] = I18n.t('cart_item_validation.pack') return false end true end end