diff --git a/app/controllers/light/newsletters_controller.rb b/app/controllers/light/newsletters_controller.rb index b6e1918..3e81778 100644 --- a/app/controllers/light/newsletters_controller.rb +++ b/app/controllers/light/newsletters_controller.rb @@ -7,7 +7,7 @@ class NewslettersController < ApplicationController :show, :edit, :update, :destroy, :web_version] def index - type = params[:type].present? ? params[:type] : 'Monthly Newsletter' + type = params[:type].present? ? params[:type] : Newsletter::VALID_NEWSLETTER_TYPES[:MONTHLY] @newsletters = Newsletter.where(newsletter_type: type).order_by([:sent_on, :desc]) end @@ -64,13 +64,13 @@ def send_newsletter type = @newsletter.newsletter_type case type - when 'Opt-In Letter' + when Newsletter::VALID_NEWSLETTER_TYPES[:OPT_IN] Light::OptInWorker.perform_async(@newsletter.id.to_s) flash[:notice] = 'Sent Opt-In newsletter successfully' - when 'Opt-Out Letter' + when Newsletter::VALID_NEWSLETTER_TYPES[:OPT_OUT] Light::OptOutWorker.perform_async(@newsletter.id.to_s) flash[:notice] = 'Sent Opt-Out newsletter successfully' - when 'Monthly Newsletter' + when Newsletter::VALID_NEWSLETTER_TYPES[:MONTHLY] Light::UserWorker.perform_async(@newsletter.id.to_s) flash[:notice] = 'Sent Monthly newsletter successfully' else diff --git a/app/controllers/light/users_controller.rb b/app/controllers/light/users_controller.rb index abb6ee4..f0400e3 100644 --- a/app/controllers/light/users_controller.rb +++ b/app/controllers/light/users_controller.rb @@ -37,7 +37,7 @@ def create def unsubscribe if @user.present? && @user.sidekiq_status == 'Subscribed' @user.update( - is_subscribed: 'false', + is_subscribed: false, unsubscribed_at: DateTime.now, sidekiq_status: 'Unsubscribed' ) @@ -50,7 +50,7 @@ def unsubscribe def subscribe if @user.present? && @user.sidekiq_status == 'Unsubscribed' @user.update( - is_subscribed: 'true', + is_subscribed: true, sidekiq_status: 'Subscribed', subscribed_at: DateTime.now, remote_ip: request.remote_ip, @@ -152,8 +152,8 @@ def response_message(status) if dummy_token? "#{status.capitalize} successfully!!" elsif @user.nil? - "Hey, it seems request you are trying to access is invalid. If you have any " + - "concerns about our newsletter's subscription, kindly get in touch with " + + 'Hey, it seems request you are trying to access is invalid. If you have any ' + + 'concerns about our newsletters subscription, kindly get in touch with ' + "hr@joshsoftware.com" else "You have already #{status}!!" diff --git a/app/models/light/user.rb b/app/models/light/user.rb index 552600b..d3714b2 100644 --- a/app/models/light/user.rb +++ b/app/models/light/user.rb @@ -83,12 +83,7 @@ def self.import(file, email='') {success: 'You will get an update email.'} end - def self.users_for_opt_in_mail - date = Date.today.strftime('%Y%m') - self.new_users.where(:sent_on.nin => [date], is_blocked: false).order_by([:email_id, :asc]) - end - - def self.users_for_opt_out_mail + def self.get_new_users date = Date.today.strftime('%Y%m') self.new_users.where(:sent_on.nin => [date], is_blocked: false).order_by([:email_id, :asc]) end diff --git a/app/workers/light/opt_in_worker.rb b/app/workers/light/opt_in_worker.rb index f3062e6..c1a9726 100644 --- a/app/workers/light/opt_in_worker.rb +++ b/app/workers/light/opt_in_worker.rb @@ -5,7 +5,7 @@ class OptInWorker def perform(newsletter_id) date = Date.today.strftime("%Y%m") - users = Light::User.users_for_opt_in_mail + users = Light::User.get_new_users number_of_opt_in_users = users.count number_of_opt_in_users_count = number_of_opt_in_users current_batch = 0 diff --git a/app/workers/light/opt_out_worker.rb b/app/workers/light/opt_out_worker.rb index b524024..01bbc49 100644 --- a/app/workers/light/opt_out_worker.rb +++ b/app/workers/light/opt_out_worker.rb @@ -5,7 +5,7 @@ class OptOutWorker def perform(newsletter_id) date = Date.today.strftime("%Y%m") - users = Light::User.users_for_opt_out_mail + users = Light::User.get_new_users number_of_opt_out_users = users.count number_of_opt_out_users_count = number_of_opt_out_users current_batch = 0 diff --git a/app/workers/light/user_worker.rb b/app/workers/light/user_worker.rb index 81d0003..55d8f74 100644 --- a/app/workers/light/user_worker.rb +++ b/app/workers/light/user_worker.rb @@ -6,7 +6,7 @@ class UserWorker def perform(newsletter_id) date = Date.today.strftime("%Y%m") number_of_subscribed_users = Light::User.where(is_subscribed: true, :sent_on.nin => [date], is_blocked: {"$ne" => true}).count - #number_of_subscribed_users = Light::User.users_for_opt_in_mail.count + #number_of_subscribed_users = Light::User.get_new_users.count number_of_subscribed_users_count = number_of_subscribed_users current_batch = 0 users_in_batch = 250 @@ -17,7 +17,7 @@ def perform(newsletter_id) if newsletter while number_of_subscribed_users > 0 user_ids = Light::User.where(is_subscribed: true, :sent_on.nin => [date] , is_blocked: {"$ne" => true}).order_by([:email_id, :asc]).limit(users_in_batch).skip(users_in_batch*current_batch).collect { |user| user.id.to_s } - #user_ids = Light::User.users_for_opt_in_mail.order_by([:email_id, :asc]).limit(users_in_batch).skip(users_in_batch*current_batch).collect { |user| user.id.to_s } + #user_ids = Light::User.get_new_users.order_by([:email_id, :asc]).limit(users_in_batch).skip(users_in_batch*current_batch).collect { |user| user.id.to_s } current_batch += 1 number_of_subscribed_users -= users_in_batch Light::HardWorker.perform_async(user_ids, newsletter.id.to_s, date) diff --git a/spec/controllers/light/users_controller_spec.rb b/spec/controllers/light/users_controller_spec.rb index befd9a4..1780a67 100644 --- a/spec/controllers/light/users_controller_spec.rb +++ b/spec/controllers/light/users_controller_spec.rb @@ -51,7 +51,7 @@ module Light end it 'not arise' do - post :create, {user: {email_id: '',username: 'kanhaiya', is_subscribed: 'false'}} + post :create, {user: {email_id: '',username: 'kanhaiya', is_subscribed: false}} expect(flash[:error]).to eq('Error while creating user') expect(response).to render_template('new') end