Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
2.4.1
1 change: 1 addition & 0 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ gem 'has_friendship'
source 'https://rails-assets.org' do
gem 'rails-assets-bootstrap-datepicker'
gem "rails-assets-underscore"
gem "rails-assets-select2"
end

group :development, :test do
Expand Down
2 changes: 2 additions & 0 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,7 @@ GEM
rails-assets-bootstrap-datepicker (1.8.0)
rails-assets-jquery (>= 1.7.1, < 4.0.0)
rails-assets-jquery (3.3.1)
rails-assets-select2 (4.0.5)
rails-assets-underscore (1.9.1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
Expand Down Expand Up @@ -272,6 +273,7 @@ DEPENDENCIES
puma (~> 3.0)
rails (~> 5.0.1)
rails-assets-bootstrap-datepicker!
rails-assets-select2!
rails-assets-underscore!
sass-rails (~> 5.0)
simple-form-datepicker (~> 0.1.3)
Expand Down
1 change: 1 addition & 0 deletions app/assets/javascripts/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
//= require bootstrap

//= require underscore
//= require select2
//= require gmaps/google
//= require cloudinary/jquery.cloudinary
//= require attachinary
Expand Down
7 changes: 7 additions & 0 deletions app/assets/javascripts/select2_components.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
$(document).ready(function() {
$('.select2-event_type').select2({
minimumResultsForSearch: Infinity,
tags: true
}
);
});
3 changes: 1 addition & 2 deletions app/assets/stylesheets/application.scss
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
@import "font-awesome";
@import "vendor/index";
@import "bootstrap-datepicker";
@import "select2";


/*
Expand Down Expand Up @@ -42,5 +43,3 @@
// background: #f6f7f8 !important;

// }


2 changes: 0 additions & 2 deletions app/controllers/event_types_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,7 @@ class EventTypesController < ApplicationController
def index
# @event_types = EventType.order(:name).where("name like ?", "%#{params[:term]}%")
# render json: @event_types.map(&:name)

@event_types = EventType.order(:name).where("name ilike ?", "#{params[:term].capitalize}%")

respond_to do |format|
format.html
format.json {render json: @event_types.map(&:name)}
Expand Down
32 changes: 21 additions & 11 deletions app/controllers/events_controller.rb
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def index
elsif search["event_type"].present?
@location = current_user.address
@game = search["event_type"]
@events = Event.include_address(@location).game_name(@game.capitalize).exclude_user(current_user)
@events = Event.include_address(@location).game_name(@game).exclude_user(current_user)
else search["address"].present?
@location = search["address"]
@events = Event.include_address(@location).exclude_user(current_user)
Expand All @@ -62,19 +62,30 @@ def show

def new
@event = Event.new
@event_type_pickeds = @event.event_type_pickeds.build
# @event_types = EventType.all.map { |event_type| {id: event_type.id, text: event_type.name} }
@event_types = EventType.all
end

def create
@event = Event.new(event_params)
# @event_type = EventType.new(name: params[:event][:event_type_name])
# @event.event_type = @event_type
@event.user = current_user

event_types = params[:event][:event_type_pickeds][:event_type_names].reject(&:blank?)
event_types.map! { |event_type_name| { event_type_id: EventType.find_or_create_by(name: event_type_name).id } }
@event.event_type_pickeds.build(event_types)

# event_types.each { |event_type| @event.event_type_pickeds.build(event_type_id: event_type.id) }

# @event.event_type_pickeds = event_type_ids.map { |event_type_id| EventTypePicked.new(event_type_id: event_type_id) }
# event_type_ids = params[:event][:event_type_pickeds][:event_type_ids]
# @event.event_type_pickeds << event_type_ids.map { |event_type_id| EventTypePicked.new(event_type_id: event_type_id) }

if @event.save
redirect_to event_path(@event), notice: "Event created! Here is your recap :)"
else
render :new , alert: "Ooooops, something missing! Please try again"
end
#ne pas oublier de formater les dates et les noms de villes en capitalise
redirect_to event_path(@event), notice: "Event created! Here is your recap :)"
else
render :new , alert: "Ooooops, something missing! Please try again"
end
end

def edit
Expand Down Expand Up @@ -119,13 +130,12 @@ def myevents


def event_params
params.require(:event).permit(:title, :event_type_name, :description, :happen_at, :participant_number, :canceled_at, :address, photos: [])
params.require(:event).permit(:title, :description, :happen_at, :participant_number, :canceled_at, :address, photos: [])
#,event_type_pickeds_attributes: [:event_type_id]
end





end


30 changes: 18 additions & 12 deletions app/models/event.rb
Original file line number Diff line number Diff line change
@@ -1,12 +1,15 @@
class Event < ApplicationRecord
belongs_to :user
belongs_to :event_type



has_many :participations, dependent: :destroy
has_many :users, through: :participations
validates :event_type, presence: true

has_many :event_type_pickeds, dependent: :destroy #, inverse_of: :event
has_many :event_types, through: :event_type_pickeds, dependent: :destroy

# accepts_nested_attributes_for :event_type_pickeds, allow_destroy: true

# validates :event_type_pickeds, presence: true
validates :happen_at, presence: true
validates :address, presence: true
validates :user, presence: true
Expand All @@ -26,17 +29,20 @@ def self.exclude_user(user)
end

def self.game_name(game)
game = EventType.where(name: game)
Event.where(event_type: game)
game = EventType.where(name: game.capitalize).pluck(:id)
# # etp = EventTypePicked.where(event_type: game)
# # etp.collect {|etp| etp.event}
# Event.joins(:event_type_pickeds).where(event_type_pickeds.event_type_id = game)
Event.joins(:event_type_pickeds).where({event_type_pickeds: {event_type: game}})
end

def event_type_name
event_type.try(:name)
end
# def event_type_name
# event_type.try(:name)
# end

def event_type_name=(name)
self.event_type = EventType.find_or_create_by(name: name.capitalize) if name.present?
end
# def event_type_name=(name)
# self.event_type = EventType.find_or_create_by(name: name.capitalize) if name.present?
# end

# scope :include_address, -> (location) { where("address like ?", "%#{@location}%" )}
scope :event_date, -> (formated_date) { where(happen_at: formated_date )}
Expand Down
6 changes: 4 additions & 2 deletions app/models/event_type.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
class EventType < ApplicationRecord
class EventType < ApplicationRecord

belongs_to :category
validates :name, uniqueness: true
has_many :events, dependent: :destroy
has_many :events, through: :event_type_pickeds, dependent: :destroy
has_many :event_type_preferences, dependent: :destroy
has_many :event_type_pickeds, dependent: :destroy

end
5 changes: 5 additions & 0 deletions app/models/event_type_picked.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class EventTypePicked < ApplicationRecord
belongs_to :event_type
belongs_to :event #, inverse_of: :event_type_pickeds
# validates_presence_of :event
end
14 changes: 6 additions & 8 deletions app/views/events/_form.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,16 @@

<div class="game">
<div class="row">
<div class="col-xs-12 text-left ">
<h3>Which game?</h3>
<%= f.input_field :event_type_name, data: { autocomplete_source: event_types_path }, class: "form-control" %>
<div class="col-xs-12 text-left ">
<h3>Which game?</h3>
<%= f.simple_fields_for :event_type_pickeds do |e| %>
<%= e.input :event_type_names , collection: @event_types, label_method: :name, value_method: :name, label: false, input_html: {class: 'select2-event_type', multiple: 'multiple'} %>
<% end %>
</div>
</div>
</div>


<div class="title">
<div class="row">
<div class="col-xs-12 text-left">
Expand Down Expand Up @@ -74,8 +77,3 @@
</div>
<% end %>
</div>





4 changes: 3 additions & 1 deletion app/views/events/index.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -109,7 +109,9 @@
</div>
</div>
<div class="card-description">
<p><%= event.event_type.name.capitalize %></p>
<% event.event_type_pickeds.each do |event_type_picked| %>
<p><%= event_type_picked.event_type.name.capitalize %></p>
<% end %>
</div>

<div class="card-address">
Expand Down
9 changes: 6 additions & 3 deletions app/views/events/myevents.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@
</div>
<div class="right_side_myevents">
</div>

</div>
<div class="result-myevents">
<!-- <div class="container"> -->
Expand All @@ -49,7 +48,9 @@
<%= @count_of_interested %>
</div>
<div class="card-description">
<p><%= event.event_type.name.capitalize %></p>
<% event.event_type_pickeds.each do |event_type_picked| %>
<p><%= event_type_picked.event_type.name %></p>
<% end %>
</div>
<div class="card-address">
<p><%= event.address %></p>
Expand Down Expand Up @@ -107,7 +108,9 @@
<%= participation_demand.event.user.firstname %>
</div>
<div class="card-description">
<p><%= participation_demand.event.event_type.name.capitalize %></p>
<% participation_demand.event.event_type_pickeds.each do |event_type_picked| %>
<p><%= event_type_picked.event_type.name.capitalize %></p>
<% end %>
</div>
<div class="card-address">
<p><%= participation_demand.event.address %></p>
Expand Down
4 changes: 3 additions & 1 deletion app/views/events/show.html.erb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,9 @@
<% "" %>
<% end %></h4>
<div class="eventgame">
<p><%= @event.event_type.name %></p>
<% @event.event_type_pickeds.each do |event_type_picked| %>
<p><%= event_type_picked.event_type.name %></p>
<% end %>
</div>

<div class="organiser text-center">
Expand Down
10 changes: 10 additions & 0 deletions db/migrate/20180722194341_create_event_type_pickeds.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
class CreateEventTypePickeds < ActiveRecord::Migration[5.0]
def change
create_table :event_type_pickeds do |t|
t.references :event_type, foreign_key: true
t.references :event, foreign_key: true

t.timestamps
end
end
end
5 changes: 5 additions & 0 deletions db/migrate/20180722195854_remove_event_type_from_events.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
class RemoveEventTypeFromEvents < ActiveRecord::Migration[5.0]
def change
remove_column :events, :event_type_id, :integer
end
end
22 changes: 15 additions & 7 deletions db/schema.rb
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
#
# It's strongly recommended that you check this file into your version control system.

ActiveRecord::Schema.define(version: 20180122152719) do
ActiveRecord::Schema.define(version: 20180722195854) do

# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
Expand Down Expand Up @@ -46,6 +46,15 @@
t.index ["user_id"], name: "index_category_preferences_on_user_id", using: :btree
end

create_table "event_type_pickeds", force: :cascade do |t|
t.integer "event_type_id"
t.integer "event_id"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.index ["event_id"], name: "index_event_type_pickeds_on_event_id", using: :btree
t.index ["event_type_id"], name: "index_event_type_pickeds_on_event_type_id", using: :btree
end

create_table "event_type_preferences", force: :cascade do |t|
t.integer "event_type_id"
t.integer "user_id"
Expand All @@ -65,19 +74,17 @@

create_table "events", force: :cascade do |t|
t.integer "user_id"
t.datetime "happen_at"
t.datetime "canceled_at"
t.datetime "due_at"
t.string "address"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.float "latitude"
t.float "longitude"
t.date "happen_at"
t.date "due_at"
t.date "canceled_at"
t.string "title"
t.string "description"
t.integer "participant_number"
t.integer "event_type_id"
t.index ["event_type_id"], name: "index_events_on_event_type_id", using: :btree
t.index ["user_id"], name: "index_events_on_user_id", using: :btree
end

Expand Down Expand Up @@ -128,10 +135,11 @@

add_foreign_key "category_preferences", "categories"
add_foreign_key "category_preferences", "users"
add_foreign_key "event_type_pickeds", "event_types"
add_foreign_key "event_type_pickeds", "events"
add_foreign_key "event_type_preferences", "event_types"
add_foreign_key "event_type_preferences", "users"
add_foreign_key "event_types", "categories"
add_foreign_key "events", "event_types"
add_foreign_key "events", "users"
add_foreign_key "participations", "events"
add_foreign_key "participations", "users"
Expand Down
Loading