· 8 years ago · Mar 05, 2018, 06:30 PM
1def create
2 Rails.logger.event.debug("===New Create===n")
3 @user_check = true;
4
5 #@event = Event.new(event_params)
6 @event = Event.new(event_user_params)
7
8 @users = User.new
9
10 @event.users.each do |user|
11 user.password = SecureRandom.base64
12 user.password_confirmation = user.password
13 #test all saves here
14 if(!user.try(:save))
15 user_check = false;
16 end
17 end
18 Rails.logger.event.debug("Can we save all users: #{@user_check}. If true, continue.")
19 if(@user_check)
20 #add all saves here
21 #add all associations here
22 @event.users.each do |user|
23 @user_in_database = User.find_by email: user.email
24 Rails.logger.event.debug("User in database check. Id: #{@user_in_database.id}. Email: #{@user_in_database.email}.")
25 if (@user_in_database.nil?) # if user is not in the database (unique email check)
26 # create a new user
27 User.transaction do
28 user.save
29 end
30 Rails.logger.event.debug("User id check: #{@user}")
31 @event_user = EventUser.new(user_id: user.id, event_id: params[:event_id])
32 # create a new join table record
33 EventUser.transaction do
34 @event_user.save
35 end
36 else
37 @event_user_join = EventUser.find_by user_id: @user_in_database.id, event_id: params[:event_id]
38 Rails.logger.event.debug("Is there a join on this event for this user?. Join object: #{@event_user_join}. If this is nil, no join exists.")
39 if (@event_user_join.nil?)
40 @event_user = EventUser.new(user_id: @user_in_database.id, event_id: params[:event_id])
41 EventUser.transaction do
42 @event_user.save
43 end
44 else
45 Rails.logger.event.debug("Join user_id: #{@event_user_join.user_id}. Join event_id: #{@event_user_join.event_id}.")
46 Rails.logger.event.debug("Try removing join.")
47 EventUser.transaction do
48 @event_user_join.delete
49 end
50 Rails.logger.event.debug("Removal success.")
51 end
52 end
53 end
54 Rails.logger.event.debug("===Redirect to Event Guests Page===n")
55 redirect_to event_display_path(params[:event_id])
56 else
57 render 'new'
58 Rails.logger.event.debug("===Render New===n")
59 end
60end
61
62private
63 def event_user_params
64 #params.require(:user).permit(:first_name, :last_name, :email)
65 params.require(:event).permit(users_attributes: [:id, :first_name, :last_name, :email, :_destroy])
66 end
67
68 def random_password
69 random_pass = SecureRandom.base64
70
71 end
72
73class User < ApplicationRecord
74 # Include default devise modules. Others available are:
75 # :confirmable, :lockable, :timeoutable and :omniauthable
76 devise :database_authenticatable, :registerable,
77 :recoverable, :rememberable, :trackable, :validatable
78
79 has_many :event_users
80 has_many :events, through: :event_users
81 #validation code...
82end
83
84class EventUser < ApplicationRecord
85 belongs_to :event
86 belongs_to :user
87end
88
89class Event < ApplicationRecord
90 #belongs_to :user
91 belongs_to :owner, class_name: "User", foreign_key: :user_id
92 has_many :event_users
93 has_many :users, through: :event_users
94
95 accepts_nested_attributes_for :users
96 #validation code...
97end
98
99class DeviseCreateUsers < ActiveRecord::Migration[5.1]
100 def change
101 create_table :users do |t|
102 ## Database authenticatable
103 t.string :email, null: false, default: ""
104 t.string :encrypted_password, null: false, default: ""
105
106 ## Recoverable
107 t.string :reset_password_token
108 t.datetime :reset_password_sent_at
109
110 ## Rememberable
111 t.datetime :remember_created_at
112
113 ## Trackable
114 t.integer :sign_in_count, default: 0, null: false
115 t.datetime :current_sign_in_at
116 t.datetime :last_sign_in_at
117 t.string :current_sign_in_ip
118 t.string :last_sign_in_ip
119
120 t.timestamps null: false
121 end
122
123 add_index :users, :email, unique: true
124 add_index :users, :reset_password_token, unique: true
125 end
126end
127
128class AddNamesToUsers < ActiveRecord::Migration[5.1]
129 def change
130 add_column :users, :first_name, :string, null: false, default: ""
131 add_column :users, :last_name, :string, null: false, default: ""
132 end
133end
134
135class CreateEvents < ActiveRecord::Migration[5.1]
136 def change
137 create_table :events do |t|
138 t.string :name, null: false, default: ""
139 t.text :description, null: true
140 t.integer :option, null: false, default: 1
141 t.string :street_address, null: true
142 t.integer :apartment_number, null: true
143 t.string :city, null: true
144 t.date :date, null: true
145 t.time :time, null: true
146 t.string :password, null: false, default: ""
147 t.references :user, foreign_key: true
148 end
149 end
150end
151
152class CreateJoinTableEventUser < ActiveRecord::Migration[5.1]
153 def change
154 create_join_table :events, :users do |t|
155 t.index [:event_id, :user_id]
156 t.index [:user_id, :event_id]
157 end
158 end
159end
160
161class RenameTableEventsUsers < ActiveRecord::Migration[5.1]
162 def change
163 rename_table :events_users, :event_users
164 end
165end
166
167Rails.logger.event.debug("Try removing join.")
168 EventUser.transaction do
169 @event_user_join.delete
170 end
171 Rails.logger.event.debug("Removal success.")
172 end
173
174{"utf8"=>"✓","authenticity_token"=>"HfCo+U+X7DtWUrCn/O2KFEkioGtXyut99NEsjUL08DBs+4FMWkuKYAH0x8cCN8a0OQwiwwxbUBeNz6dqeotZhg==",
175"event"=>
176{"id"=>"16",
177"owner"=>"5",
178"users_attributes"=>
179{"0"=>{"first_name"=>"Test1", "last_name"=>"Test11", "email"=>"test1@test.com", "_destroy"=>"false", "id"=>"8"},
180 "1"=>{"first_name"=>"Test4", "last_name"=>"Test44", "email"=>"test4@test.com", "_destroy"=>"false", "id"=>"11"},
181 "2"=>{"first_name"=>"Test5", "last_name"=>"Test55", "email"=>"test5@test.com", "_destroy"=>"false", "id"=>"12"}}},
182"commit"=>"Save",
183"event_id"=>"16"}