Class: User
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- User
- Includes:
- PgSearch
- Defined in:
- app/models/user.rb
Class Method Summary collapse
-
.check_coupon(coupon_id) ⇒ Object
Stripe Coupon Checking.
- .enable ⇒ Object
- .encode(user) ⇒ Object
- .find_for_facebook_oauth(auth) ⇒ Object
- .find_for_google_oauth2(access_token, signed_in_resource = nil) ⇒ Object
- .find_for_twitter_oauth(auth, signed_in_resource = nil) ⇒ Object
- .for_oauth(oauth) ⇒ Object
- .is_valid_user(email, password) ⇒ Object
- .process_uri(uri) ⇒ Object
- .serialize_into_session(record) ⇒ Object
Instance Method Summary collapse
- #assign_api_token ⇒ Object
- #average_rating ⇒ Object
- #can_do_this(org, setting) ⇒ Object
-
#get_asset_purchase_vendor ⇒ Object
Get Asset Purchase Vendor.
-
#get_asset_repair_vendor ⇒ Object
Get Asset Vendor.
- #get_role(org_id) ⇒ Object
- #get_role_name(org_id) ⇒ Object
- #idle?(date, s_time, e_time) ⇒ Boolean
- #mailboxer_email(object) ⇒ Object
- #name ⇒ Object
- #notifications ⇒ Object
- #notify_alert(swap) ⇒ Object
- #notify_message(lateness) ⇒ Object
- #notify_new_signup(org_id) ⇒ Object
- #persisted? ⇒ Boolean
- #rating_for_vendors(vendor) ⇒ Object
- #reset_user_password_token ⇒ Object
- #send_instructions ⇒ Object
-
#send_shift_reminder(min) ⇒ Object
Function for MT2W.
-
#stripe_create(token, plan_id, coupon) ⇒ Object
functions for Sripe of TrackMyAssets.
- #to_json ⇒ Object
- #unread_notifications_count ⇒ Object
- #update_card(subscriber, card_info) ⇒ Object
Class Method Details
.check_coupon(coupon_id) ⇒ Object
Stripe Coupon Checking
114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'app/models/user.rb', line 114 def self.check_coupon(coupon_id) Stripe.api_key = "sk_test_eIdlWzka50kLJLNIqAIklamd" already_coupon = Stripe::Coupon.all already_coupon.data.each do |ex_coupon| if ex_coupon and !ex_coupon.id.blank? and ex_coupon.id == coupon_id @coupon = coupon_id else end end return @coupon end |
.enable ⇒ Object
190 191 192 |
# File 'app/models/user.rb', line 190 def self.enable where(:disabled => false) end |
.encode(user) ⇒ Object
368 369 370 |
# File 'app/models/user.rb', line 368 def self.encode user JWT.encode({ user_id: user.id, exp: (DateTime.now + 30).to_i }, JWT_SECRET, JWT_ALGORITHM) end |
.find_for_facebook_oauth(auth) ⇒ Object
193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 |
# File 'app/models/user.rb', line 193 def self.find_for_facebook_oauth(auth) where(auth.slice(:provider, :uid)).first_or_initialize.tap do |user| already_user = User.where(:email => auth.info.email).first if !user.persisted? and auth.info.email and already_user.blank? user.provider = auth.provider user.uid = auth.uid user.email = auth.info.email user.password = Devise.friendly_token[0,20] user.first_name = auth.info.first_name user.last_name = auth.info.last_name # user.username = auth.info.name # assuming the user model has a name user.avatar = process_uri(auth.info.image) # assuming the user model has an image user.save(:validate=>false) return user elsif already_user return already_user else return false end end end |
.find_for_google_oauth2(access_token, signed_in_resource = nil) ⇒ Object
290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 |
# File 'app/models/user.rb', line 290 def self.find_for_google_oauth2(access_token, signed_in_resource=nil) data = access_token.info user = User.where(:provider => access_token.provider, :uid => access_token.uid ).first if user return user else registered_user = User.where(:email => data.email).first if registered_user return registered_user else user = User.new user.provider = access_token.provider user.uid = access_token.uid user.email = data["email"] user.password = Devise.friendly_token[0,20] user.first_name = data.first_name user.last_name = data.last_name user.avatar = data.image # assuming the user model has an image user.save(:validate=>false) return user end end end |
.find_for_twitter_oauth(auth, signed_in_resource = nil) ⇒ Object
267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 |
# File 'app/models/user.rb', line 267 def self.find_for_twitter_oauth(auth, signed_in_resource=nil) user = User.where(:provider => auth.provider, :uid => auth.uid).first if user return user else user = User.new name = auth.info.name if name.include?(" ") user.first_name = name.split(" ").first user.last_name = name.split(" ").second else user.first_name = name user.last_name = " " end user.provider = auth.provider user.uid = auth.uid user.password = Devise.friendly_token[0,20] user.avatar = auth.info.image user.save(:validate=>false) return user end end |
.for_oauth(oauth) ⇒ Object
372 373 374 375 376 377 |
# File 'app/models/user.rb', line 372 def self.for_oauth oauth oauth.get_data data = oauth.data user = find_by_email(data[:email]) user = user.present? ? user : data end |
.is_valid_user(email, password) ⇒ Object
175 176 177 178 |
# File 'app/models/user.rb', line 175 def self.is_valid_user(email,password) @user = User.find_by_email(email) @user and @user.valid_password?(password) ? @user : nil end |
.process_uri(uri) ⇒ Object
215 216 217 218 219 |
# File 'app/models/user.rb', line 215 def self.process_uri(uri) avatar_url = URI.parse(uri) avatar_url.scheme = 'https' avatar_url.to_s end |
.serialize_into_session(record) ⇒ Object
167 168 169 |
# File 'app/models/user.rb', line 167 def self.serialize_into_session(record) [record.id.to_s, record.authenticatable_salt] end |
Instance Method Details
#assign_api_token ⇒ Object
171 172 173 |
# File 'app/models/user.rb', line 171 def assign_api_token update_attribute(:api_token, SecureRandom.uuid) end |
#average_rating ⇒ Object
379 380 381 382 |
# File 'app/models/user.rb', line 379 def = VendorRating.where(vendor_id: self.id).average("rating") return .to_i end |
#can_do_this(org, setting) ⇒ Object
258 259 260 261 262 263 264 265 |
# File 'app/models/user.rb', line 258 def can_do_this(org,setting) role = get_role_name(org.id) if (role == 'admin' || role == 'manager' || role == 'super_admin' || setting) return true else return false end end |
#get_asset_purchase_vendor ⇒ Object
Get Asset Purchase Vendor
389 390 391 |
# File 'app/models/user.rb', line 389 def get_asset_purchase_vendor Asset.where("purchase_vendor_id = ?", self.id) end |
#get_asset_repair_vendor ⇒ Object
Get Asset Vendor
384 385 386 |
# File 'app/models/user.rb', line 384 def get_asset_repair_vendor Asset.where("vendor_id = ?", self.id) end |
#get_role(org_id) ⇒ Object
251 252 253 254 255 256 |
# File 'app/models/user.rb', line 251 def get_role(org_id) member = self.member.where(:organization_id => org_id).first if member.present? return member.roles.first end end |
#get_role_name(org_id) ⇒ Object
245 246 247 248 249 250 |
# File 'app/models/user.rb', line 245 def get_role_name(org_id) member = self.member.where(:organization_id => org_id).first if member.present? return member.roles.first.name end end |
#idle?(date, s_time, e_time) ⇒ Boolean
314 315 316 317 318 |
# File 'app/models/user.rb', line 314 def idle?(date, s_time, e_time) shift = self.shifts.where( "due_date = :date AND ( ((start_time <= :s_time) AND (end_time >= :s_time)) OR ((:e_time >= start_time) AND (:e_time <= end_time)) OR ((start_time >= :s_time) AND (end_time <= :e_time)) ) ", {:date => date, :s_time => s_time, :e_time => e_time}).first false if shift true if shift.nil? end |
#mailboxer_email(object) ⇒ Object
364 365 366 |
# File 'app/models/user.rb', line 364 def mailboxer_email(object) self.email end |
#name ⇒ Object
360 361 362 |
# File 'app/models/user.rb', line 360 def name "#{first_name}"+ ' ' + "#{last_name}" end |
#notifications ⇒ Object
137 138 139 |
# File 'app/models/user.rb', line 137 def notifications Notification.joins(:subscribers).where(notification_users: {user_id: self.id}).order(created_at: :desc) end |
#notify_alert(swap) ⇒ Object
324 325 326 327 328 329 330 331 332 333 334 335 336 337 |
# File 'app/models/user.rb', line 324 def notify_alert(swap) if self.email_notify Notifier.delay.swap(self.email,swap.id) end if self.sms_notify content = "Swap Date : #{swap.shift.due_date} Start Time : #{swap.shift.start_time} End Time : #{swap.shift.end_time}" arguments = { :to => self.phone_number, :content => content } SmsWorker.perform_async(arguments) end end |
#notify_message(lateness) ⇒ Object
339 340 341 342 343 344 345 346 347 348 349 350 351 352 |
# File 'app/models/user.rb', line 339 def (lateness) if self.email_notify Notifier.delay.late(self.email,lateness.id) end if self.sms_notify content = "Lateness Reason : #{lateness.reason} Start Time : #{lateness.shift.start_time} End Time : #{lateness.shift.end_time}" arguments = { :to => self.phone_number, :content => content } SmsWorker.perform_async(arguments) end end |
#notify_new_signup(org_id) ⇒ Object
320 321 322 323 |
# File 'app/models/user.rb', line 320 def notify_new_signup(org_id) emails = self.organizations.find_by_id(org_id).users.with_role(:manager).collect { |user| user.email } Notifier.delay.new_signup(emails,self.id) end |
#persisted? ⇒ Boolean
221 222 223 |
# File 'app/models/user.rb', line 221 def persisted? !(new_record? || destroyed?) end |
#rating_for_vendors(vendor) ⇒ Object
127 128 129 130 131 132 133 134 135 |
# File 'app/models/user.rb', line 127 def (vendor) = self..find_by_vendor_id(vendor.id) if ! = vendor..new() .user_id = self.id .vendor_id = vendor.id end end |
#reset_user_password_token ⇒ Object
160 161 162 163 164 165 |
# File 'app/models/user.rb', line 160 def reset_user_password_token self.reset_password_token = SecureRandom.hex(3) self.reset_password_sent_at = Time.now.utc self.save!(validate: false) self.reset_password_token end |
#send_instructions ⇒ Object
354 355 356 357 358 |
# File 'app/models/user.rb', line 354 def send_instructions template = 'send_instructions' subject = "Reset password instructions" Notifier.delay.send_instructions(self, subject, template) end |
#send_shift_reminder(min) ⇒ Object
Function for MT2W
181 182 183 184 185 186 187 188 |
# File 'app/models/user.rb', line 181 def send_shift_reminder(min) self.shifts.each do |shift| d = shift.due_date t = shift.start_time - min.to_i.minutes dt = DateTime.new(d.year, d.month, d.day, t.hour, t.min, t.sec) ShiftReminderWorker.perform_at(dt,self.email,"Your shift starts in #{min} minutes") end end |
#stripe_create(token, plan_id, coupon) ⇒ Object
functions for Sripe of TrackMyAssets
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'app/models/user.rb', line 94 def stripe_create(token, plan_id , coupon) Stripe.api_key = "sk_test_eIdlWzka50kLJLNIqAIklamd" already_coupon = Stripe::Coupon.all already_coupon.data.each do |ex_coupon| if ex_coupon and !ex_coupon.id.blank? and ex_coupon.id == coupon @coupon_code = coupon else @coupon_code end end customer = Stripe::Customer.create( :description => "http://trackmyassets.biz", :plan => plan_id, :source => token , :coupon => @coupon_code ) return customer['id'] end |
#to_json ⇒ Object
145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
# File 'app/models/user.rb', line 145 def to_json { :id => self.id, :email => self.email, :first_name => self.first_name, :last_name => self.last_name, :phone => self.phone_number, # :address => self.address, :roles => self.roles, :is_invited => !self.invitation_created_at.nil?, :is_accepted => !self.invitation_accepted_at.nil?, :is_locked => !self.locked_at.nil? } end |
#unread_notifications_count ⇒ Object
141 142 143 |
# File 'app/models/user.rb', line 141 def unread_notifications_count Notification.joins(:subscribers).where(notification_users: {user_id: self.id, seen: false}).order(created_at: :desc).count() end |
#update_card(subscriber, card_info) ⇒ Object
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 |
# File 'app/models/user.rb', line 225 def update_card(subscriber, card_info) token = Stripe::Token.create( card: { number: card_info[:number], exp_month: card_info[:exp_month], exp_year: card_info[:exp_year], cvc: card_info[:cvc] } ) customer = Stripe::Customer.retrieve(subscriber.customer_id) card = customer.cards.create(card: token.id) card.save customer.default_card = card.id customer.save rescue Stripe::InvalidRequestError => e logger.error "Stripe Error While Updating Card Info: #{e.}" errors.add :base, "#{e.}" false end |