Skip to content

Commit 5814bce

Browse files
tejaszambreswapnilchincholkar
authored andcommitted
User edit form changes
- Added few fields to user edit form - Updated some fields as readonly - Modified the params for newly added fields - Added constant for different user status
1 parent 4d3bea6 commit 5814bce

File tree

5 files changed

+77
-42
lines changed

5 files changed

+77
-42
lines changed

app/controllers/light/users_controller.rb

Lines changed: 26 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,22 @@ def sendtest
4343
end
4444

4545
def unsubscribe
46-
if @user.present? && @user.sidekiq_status == 'Subscribed'
47-
@user.update(is_subscribed: 'false',
48-
unsubscribed_at: DateTime.now,
49-
sidekiq_status: 'Unsubscribed')
46+
if @user.present? && @user.sidekiq_status == Light::User::STATUS[:subscribed]
47+
@user.update(
48+
is_subscribed: false,
49+
unsubscribed_at: DateTime.now,
50+
sidekiq_status: Light::User::STATUS[:unsubscribed]
51+
)
5052
@message = 'Unsubscribed successfully!!'
5153
else
5254
@message = response_message('unsubscribed')
5355
end
5456
end
5557

5658
def subscribe
57-
if @user.present? && @user.sidekiq_status == 'Unsubscribed'
58-
@user.update(is_subscribed: 'true',
59-
sidekiq_status: 'Subscribed',
59+
if @user.present? && @user.sidekiq_status == Light::User::STATUS[:unsubscribed]
60+
@user.update(is_subscribed: true,
61+
sidekiq_status: Light::User::STATUS[:subscribed],
6062
subscribed_at: DateTime.now,
6163
remote_ip: request.remote_ip,
6264
user_agent: request.env['HTTP_USER_AGENT'])
@@ -116,16 +118,20 @@ def auto_opt_in
116118
def opt_in
117119
@user = Light::User.where(email_id: params[:email]).first
118120
if @user.present?
119-
@user.update_attributes(is_subscribed: true,
120-
sidekiq_status: 'Subscribed',
121-
subscribed_at: DateTime.now)
121+
@user.update_attributes(
122+
is_subscribed: true,
123+
sidekiq_status: Light::User::STATUS[:subscribed],
124+
subscribed_at: DateTime.now
125+
)
122126
else
123127
u_name = params[:username].blank? ? params[:email] : params[:username]
124-
@user = Light::User.new(username: u_name,
125-
email_id: params[:email],
126-
source: 'web subscription request',
127-
subscribed_at: DateTime.now,
128-
sidekiq_status: 'Subscribed')
128+
@user = Light::User.new(
129+
username: u_name,
130+
email_id: params[:email],
131+
source: 'web subscription request',
132+
subscribed_at: DateTime.now,
133+
sidekiq_status: Light::User::STATUS[:subscribed]
134+
)
129135
end
130136
respond_to do |format|
131137
format.json { head :no_content }
@@ -139,7 +145,10 @@ def thank_you
139145

140146
private
141147
def users_params
142-
params.require(:user).permit(:id, :email_id, :is_subscribed, :joined_on, :source, :username)
148+
params.require(:user).permit(
149+
:id, :email_id, :is_subscribed, :joined_on, :is_blocked,
150+
:sidekiq_status, :source, :username
151+
)
143152
end
144153

145154
def user_with_token
@@ -154,7 +163,7 @@ def response_message(status)
154163
if dummy_token?
155164
"#{status.capitalize} successfully!!"
156165
elsif @user.nil?
157-
"Hey, it seems request you are trying to access is invalid. If you have any " +
166+
"Hey, it seems request you are trying to access is invalid. If you have any " +
158167
"concerns about our newsletter's subscription, kindly get in touch with " +
159168
"<a href='mailto:[email protected]' class='email'>[email protected]</a>"
160169
else

app/models/light/user.rb

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,11 @@ class User
44
include Mongoid::Slug
55
include Mongoid::History::Trackable
66

7-
NEW_USER = "new user"
7+
STATUS = {
8+
new_user: 'new_user', subscribed: 'Subscribed', unsubscribed: 'Unsubscribed',
9+
block: 'Block', bounced: 'Bounced', spam: 'Spam', invalid: 'Invalid',
10+
opt_in: 'Opt in mail sent'
11+
}
812

913
field :email_id, type: String
1014
field :username, type: String
@@ -32,21 +36,21 @@ class User
3236
:user_agent, :is_subscribed, :unsubscribed_at]
3337
before_create do
3438
self.joined_on = Date.today
35-
self.sidekiq_status = NEW_USER if self.sidekiq_status.blank?
39+
self.sidekiq_status = STATUS[:new_user] if self.sidekiq_status.blank?
3640
self.token = Devise.friendly_token
3741
while User.where(token: self.token).present?
3842
self.token = Devise.friendly_token
3943
end
4044
end
4145

42-
scope :subscribed_users, -> { where(is_subscribed: true, sidekiq_status: 'Subscribed') }
43-
scope :unsubscribed_users, -> { where(is_subscribed: false, sidekiq_status: 'Unsubscribed') }
44-
scope :new_users, -> { where(is_subscribed: false, sidekiq_status: NEW_USER) }
45-
scope :blocked_users, -> { where(is_subscribed: false, sidekiq_status: 'Block') }
46-
scope :bounced_users, -> { where(is_subscribed: false, sidekiq_status: 'Bounced') }
47-
scope :spam_users, -> { where(is_subscribed: false, sidekiq_status: 'Spam') }
48-
scope :invalid_users, -> { where(is_subscribed: false, sidekiq_status: 'Invalid') }
49-
scope :opt_in_users, -> { where(is_subscribed: false, sidekiq_status: 'Opt in mail sent') }
46+
scope :subscribed_users, -> { where(is_subscribed: true, sidekiq_status: STATUS[:subscribed]) }
47+
scope :unsubscribed_users, -> { where(is_subscribed: false, sidekiq_status: STATUS[:unsubscribed]) }
48+
scope :new_users, -> { where(is_subscribed: false, sidekiq_status: STATUS[:new_user]) }
49+
scope :blocked_users, -> { where(is_subscribed: false, sidekiq_status: STATUS[:block]) }
50+
scope :bounced_users, -> { where(is_subscribed: false, sidekiq_status: STATUS[:bounced]) }
51+
scope :spam_users, -> { where(is_subscribed: false, sidekiq_status: STATUS[:spam]) }
52+
scope :invalid_users, -> { where(is_subscribed: false, sidekiq_status: STATUS[:invalid]) }
53+
scope :opt_in_users, -> { where(is_subscribed: false, sidekiq_status: STATUS[:opt_in]) }
5054

5155
def self.add_users_from_worksheet(worksheet, column = 1)
5256
fails = []

app/views/light/users/edit.html.haml

Lines changed: 28 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,32 @@
11
= render 'light/newsletters/top_navbar'
2-
3-
= simple_form_for (@user), html: {role: 'form', class: 'form-horizontal'} do |f|
4-
%table
5-
%tr
6-
%td
7-
= f.input :email_id, input_html:{class: 'span3'}
8-
= f.input :username, input_html:{class: 'span3'}
9-
= f.input :is_subscribed, :as => :select, input_html:{class: 'span3'}
10-
= f.input :joined_on, input_html: { 'data-behaviour' => 'datepicker'}, input_html:{class: 'span3'}
11-
= f.input :source, input_html:{class: 'span3'}
12-
= f.button :submit, class: "btn btn-success controls"
2+
%center
3+
= simple_form_for (@user), html: {role: 'form', class: 'form-horizontal'} do |f|
4+
%h2 Edit User
5+
%br
6+
%table
7+
%tr
8+
%td
9+
= f.input :email_id, input_html: {class: 'span3'}
10+
= f.input :username, input_html: {class: 'span3'}
11+
= f.input :sent_on, label: 'Last Sent On', input_html: {class: 'span3', readonly: true}, value: @user.sent_on.last
12+
= f.input :source, input_html: {class: 'span3', readonly: true}
13+
= f.input :joined_on, input_html: { 'data-behaviour': 'datepicker'}, input_html:{class: 'span3', readonly: true}
14+
= f.input :subscribed_at, input_html: {class: 'span3', readonly: true}
15+
= f.input :unsubscribed_at, input_html: {class: 'span3', readonly: true}
16+
= f.input :opt_in_mail_sent_at, input_html: {class: 'span3', readonly: true}
17+
= f.input :sidekiq_status, as: :select, collection: Light::User::STATUS.values, label: 'Status', prompt: 'Select Status', selected: @user.sidekiq_status
18+
%br
19+
= f.label 'Blocked'
20+
.make-switch{tabindex: 0, 'data-on': 'success', 'data-off': 'warning', 'data-on-label': 'Yes', 'data-off-label': 'No'}
21+
= f.check_box :is_blocked, {}, 'true', 'false'
22+
%br
23+
%br
24+
= f.label 'Subscribed'
25+
.make-switch{tabindex: 0, 'data-on': 'success', 'data-off': 'warning', 'data-on-label': 'Yes', 'data-off-label': 'No'}
26+
= f.check_box :is_subscribed, {}, 'true', 'false'
27+
%br
28+
%br
29+
= f.button :submit, class: 'btn btn-success controls'
1330

1431
:javascript
1532
$('[data-behaviour~=datepicker]').datepicker({

app/views/light/users/index.html.haml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@
5151
%td.text-center= '{{email_id}}'
5252
%td.text-center= '{{username}}'
5353
%td.text-center
54-
%a{ :href => "/newsletter/users/{{_id.$oid}}/edit", :class => 'btn btn-sm btn-success'} Edit
54+
%a{ :href => "/newsletter/users/{{id}}/edit", :class => 'btn btn-sm btn-success'} Edit
5555

56-
%a{ :href => "/newsletter/users/{{_id.$oid}}", data:{ :confirm => 'Are you sure?', method: 'delete'}, :class => 'btn btn-sm btn-danger' } Delete
56+
%a{ :href => "/newsletter/users/{{id}}", data:{ :confirm => 'Are you sure?', method: 'delete'}, :class => 'btn btn-sm btn-danger' } Delete
5757

5858
.col-lg-12.padding_none.pull-right
5959
#user_pagination.col-lg-12

app/workers/light/import_worker.rb

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,13 @@ def perform(rows, email_id, source = "Business Card")
1212
rows.each do |row|
1313
email = "#{row[1]}"
1414
name = "#{row[0] || row[1]}"
15-
user = Light::User.create(username: name, email_id: email, source: source,
16-
is_subscribed: false, sidekiq_status: Light::User::NEW_USER) if email.present? or name.present?
15+
user = Light::User.create(
16+
username: name,
17+
email_id: email,
18+
source: source,
19+
is_subscribed: false,
20+
sidekiq_status: Light::User::STATUS[:new_user]
21+
) if email.present? or name.present?
1722
csv << [email, row[0], user.errors.messages] if user.present? and user.errors.present?
1823
end
1924
UserMailer.import_contacts_update(email_id, file_path).deliver

0 commit comments

Comments
 (0)