# == Schema Information
#
# Table name: registered_products
#
#  id                  :integer          not null, primary key
#  reseller_id         :integer
#  product_id          :integer
#  user_id             :integer
#  product_code        :string(255)
#  serial_number       :string(255)
#  firmware_version    :string(255)
#  registration_reason :string(255)
#  created_at          :datetime
#  updated_at          :datetime
#  registration_code   :string(255)
#

class RegisteredProduct < ActiveRecord::Base
  before_save 'set_reg_code'
  #before_save 'create_registration'

  belongs_to :product
  belongs_to :reseller
  belongs_to :user

  validates :reseller_id, :presence => true
  validates :product_id, :presence => true
  validates :firmware_version, :presence => true
  validates :registration_reason, :presence => true

  def set_reg_code
    ref_code = self.product_code
    reg_code = 0

    for i in 0..ref_code.length-1
      reg_code = reg_code + ref_code.to_s[i].ord.to_i
    end

    reg_code = reg_code.to_i * ref_code.length * self.product.MagicNumber.to_i
    write_attribute(:registration_code, reg_code)
    write_attribute(:active, true)
  end

  def create_registration
    @registration = Registration.new(:Name => self.user.name, :ProductName => self.product.ProductName,  :CompanyName => self.user.company, :Street => self.user.address,
                                   :City => self.user.city, :State => self.user.state, :ZipCode => self.user.zip, :Country => self.user.country_id, :EmailAddress => self.user.email,
                                   :EmailAddress1 => self.user.email, :PhoneNumber => self.user.phone, :Reseller => self.reseller, :RefCode => self.product_code, :RegCode => self.registration_code,
                                   :FWVersion => self.firmware_version, :SerialNumber => self.serial_number, :Reason => self.registration_reason)
    @registration.save

    UserMailer.new_registration(@product.product.ProductName, reg_code, @user.email).deliver!
  end
end
