90 lines
2.7 KiB
Ruby
90 lines
2.7 KiB
Ruby
class Customer < ApplicationRecord
|
|
|
|
#self.primary_key = :customer_id
|
|
|
|
before_create :generate_custom_id
|
|
has_many :orders
|
|
has_many :sales
|
|
|
|
validates_presence_of :name, :contact_no, :email
|
|
validates :contact_no, uniqueness: true
|
|
validates :email, uniqueness: true
|
|
|
|
paginates_per 50
|
|
|
|
def self.get_member_account(customer)
|
|
membership = MembershipSetting.find_by_membership_type("paypar_url")
|
|
memberaction = MembershipAction.find_by_membership_type("get_all_member_account")
|
|
merchant_uid = memberaction.merchant_account_id.to_s
|
|
auth_token = memberaction.auth_token.to_s
|
|
url = membership.gateway_url.to_s + memberaction.gateway_url.to_s
|
|
# urltest =self.url_exist?(url)
|
|
|
|
begin
|
|
response = HTTParty.get(url, :body => { membership_id: customer.membership_id,merchant_uid:merchant_uid,auth_token:auth_token}.to_json,
|
|
:headers => {
|
|
'Content-Type' => 'application/json',
|
|
'Accept' => 'application/json'
|
|
},
|
|
:timeout => 10
|
|
)
|
|
rescue Net::OpenTimeout
|
|
response = { status: false }
|
|
end
|
|
|
|
return response;
|
|
|
|
end
|
|
|
|
def self.search(search)
|
|
if search
|
|
# find(:all, :conditions => ['name LIKE ? OR contact_no LIKE ?', "%#{search}%", "%#{search}%"])
|
|
where("name LIKE ? OR contact_no LIKE ?", "%#{search}%", "%#{search}%",)
|
|
else
|
|
find(:all)
|
|
end
|
|
end
|
|
|
|
# require "net/http"
|
|
# def self.url_exist?(url_string)
|
|
# url = URI.parse(url_string)
|
|
|
|
|
|
# req = Net::HTTP.new(url.host, url.port)
|
|
# puts "hhhhhhhhhhhh"
|
|
# puts req.to_json
|
|
# req.use_ssl = (url.scheme == 'https')
|
|
# puts "aaaaaaaaaaaa"
|
|
# puts req.use_ssl?
|
|
# path = url.path if url.path.present?
|
|
# puts "bbbbbbbbbbbbb"
|
|
# puts path
|
|
# res = req.request_head(path || '/')
|
|
# puts "cccccccccccccc"
|
|
# puts res.to_json
|
|
# puts "ddddddddd"
|
|
# puts res.kind_of?(Net::HTTPRedirection)
|
|
# if res.kind_of?(Net::HTTPRedirection)
|
|
# url_exist?(res['location']) # Go after any redirect and make sure you can access the redirected URL
|
|
# else
|
|
# ! %W(4 5).include?(res.code[0]) # Not from 4xx or 5xx families
|
|
# end
|
|
# rescue Errno::ENOENT
|
|
# false #false if can't find the server
|
|
# end
|
|
|
|
|
|
# def self.search(search)
|
|
# where("name LIKE ? OR contact_no LIKE ?", "%#{search}%", "%#{search}%",)
|
|
# end
|
|
|
|
def lastest_invoices
|
|
sales.where(:customer_id => self.id).order("created_at desc").limit(5)
|
|
end
|
|
|
|
private
|
|
def generate_custom_id
|
|
self.customer_id = SeedGenerator.generate_id(self.class.name, "CUS")
|
|
end
|
|
end
|