572 lines
17 KiB
Ruby
572 lines
17 KiB
Ruby
class Public::AnnoncesController < ApplicationController
|
|
layout "public"
|
|
protect_from_forgery :except => [:search]
|
|
before_filter :auth_annonce_account, :only => [:new, :create, :edit, :update]
|
|
|
|
def search
|
|
@search_index = true
|
|
per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 15
|
|
page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
|
|
|
if params[:annonce_cat_id] and params[:annonce_cat_id] != "" and @annonce_cat = AnnonceCat.find(params[:annonce_cat_id])
|
|
|
|
@annonces = @annonce_cat.annonces
|
|
else
|
|
@annonces = Annonce.all
|
|
end
|
|
@annonces = @annonces.valid_to_show
|
|
|
|
if params[:min_price] and params[:min_price] != ""
|
|
@annonces = @annonces.where("price IS NOT NULL and price >= ?",params[:min_price].to_f )
|
|
end
|
|
if params[:max_price] and params[:max_price] != ""
|
|
@annonces = @annonces.where("price IS NULL or price <= ?",params[:max_price].to_f )
|
|
end
|
|
|
|
#recherche par lieu
|
|
|
|
|
|
|
|
@place_search = false
|
|
|
|
if (params[:place] and params[:place] != "") #or (params[:place_lat] and params[:place_lng])
|
|
|
|
if params[:with_radius] and params[:with_radius] != ""
|
|
@place_search = true
|
|
@annonces = @annonces.near([params[:place_lat].to_f, params[:place_lng].to_f], params[:place_dist].to_f, :units => :km, :order => nil)
|
|
|
|
else
|
|
if params[:place] != "" and params[:place_type] and params[:place_type].to_i == 1
|
|
@annonces = @annonces.where("g_postal_code = ? and g_city = ?", params[:place_cp], params[:place_city])
|
|
@place_search = true
|
|
|
|
elsif params[:place] != "" and params[:place_type] and params[:place_type].to_i == 2
|
|
@annonces = @annonces.where("g_postal_code = ?", params[:place_cp])
|
|
@place_search = true
|
|
elsif params[:place] != "" and params[:place_type] and params[:place_type].to_i == 3
|
|
@annonces = @annonces.where("g_sub_state = ?", params[:place_city])
|
|
@place_search = true
|
|
|
|
elsif params[:place] != "" and params[:place_type] and params[:place_type].to_i == 4
|
|
@annonces = @annonces.where("g_state = ?", params[:place_city])
|
|
@place_search = true
|
|
elsif params[:place] != "" and params[:place_type] and params[:place_type].to_i == 5
|
|
@annonces = @annonces.where("g_city = ?", params[:place_city] )
|
|
@place_search = true
|
|
|
|
elsif params[:place] != "" and params[:place_type] and params[:place_type].to_i == 6
|
|
@annonces = @annonces.where("g_country = ?", params[:place_country] )
|
|
@place_search = true
|
|
|
|
end
|
|
|
|
|
|
end
|
|
else
|
|
params[:with_radius] = nil
|
|
params[:place_lat] = nil
|
|
params[:place_lng]=nil
|
|
end
|
|
|
|
|
|
#text
|
|
|
|
|
|
if params[:q]
|
|
|
|
@annonces = @annonces.where("title LIKE ? ", "%"+params[:q].to_s+"%" )
|
|
|
|
|
|
end
|
|
|
|
if @annonce_cat and @annonce_cat.specific?
|
|
@annonces = @annonces.where(:specific_annonce_type => @annonce_cat.specific).joins(@annonce_cat.specific.tableize.singularize.to_sym)
|
|
end
|
|
|
|
|
|
if @annonce_cat and (@annonce_cat.specific == "AnnonceAuto" or @annonce_cat.specific == "AnnonceMoto" or @annonce_cat.specific == "AnnonceUtil")
|
|
|
|
|
|
|
|
if params[:marque_id] and params[:marque_id] != ""
|
|
@annonces = @annonces.where("#{@annonce_cat.specific.tableize}.marque_id = ?",params[:marque_id] )
|
|
|
|
end
|
|
|
|
if params[:energie] and params[:energie] != ""
|
|
@annonces = @annonces.where("#{@annonce_cat.specific.tableize}.energie = ?",params[:energie] )
|
|
|
|
end
|
|
|
|
if params[:bv] and params[:bv] != ""
|
|
@annonces = @annonces.where("#{@annonce_cat.specific.tableize}.bv = ?",params[:bv] )
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
if @annonce_cat and (@annonce_cat.specific == "AnnonceAuto" or @annonce_cat.specific == "AnnonceUtil")
|
|
|
|
if params[:year] and params[:year].size > 3
|
|
|
|
@date = Date.parse(params[:year]+"/01/01")
|
|
@date = @date.beginning_of_year
|
|
|
|
@annonces = @annonces.where("#{@annonce_cat.specific.tableize}.year >= ?", @date)
|
|
|
|
end
|
|
|
|
if params[:max_year] and params[:max_year].size > 3
|
|
|
|
@date = Date.parse(params[:max_year]+"/01/01")
|
|
@date = @date.end_of_year
|
|
|
|
@annonces = @annonces.where("#{@annonce_cat.specific.tableize}.year <= ?", @date)
|
|
|
|
end
|
|
|
|
if params[:min_kms] and params[:min_kms] != ""
|
|
|
|
|
|
@annonces = @annonces.where("#{@annonce_cat.specific.tableize}.kms >= ?", params[:min_kms])
|
|
|
|
end
|
|
|
|
if params[:max_kms] and params[:max_kms] != ""
|
|
|
|
|
|
@annonces = @annonces.where("#{@annonce_cat.specific.tableize}.kms <= ?", params[:max_kms])
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
if params[:tags]
|
|
|
|
@annonce_ids = Annonce.joins(:annonce_tag_cats).where('annonce_tag_cats.tag_cat_id IN (?)', params[:tags]).group('annonce_tag_cats.annonce_id').having('count(*)=?', params[:tags].size)
|
|
annonce_ids = []
|
|
@annonce_ids.each do |annonce_id|
|
|
annonce_ids << annonce_id.id
|
|
end
|
|
@annonce_ids = annonce_ids
|
|
|
|
@annonces = @annonces.where(:id => @annonce_ids)
|
|
|
|
|
|
end
|
|
|
|
|
|
@annonces = @annonces.page(page).per(per_page).reorder("list_head DESC, created_at DESC").all
|
|
|
|
@title = "Sideplace, nouveau site d'annonces gratuites"
|
|
|
|
@description = "Simple, design, efficace, une nouvelle manière de déposer vos annonces. Pour les particuliers et les professionnels, avec programme d'affiliation."
|
|
|
|
end
|
|
|
|
|
|
def geocode
|
|
params[:where] = "#{params[:lat]},#{params[:lng]}"
|
|
end
|
|
|
|
def index
|
|
|
|
per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 10
|
|
|
|
page = (params[:page] and params[:page] != "") ? params[:page] : 1
|
|
|
|
@annonces = Annonce.valid_to_show
|
|
|
|
@annonces = @annonces.page(page).per(per_page).order("list_head DESC, created_at DESC").all
|
|
|
|
|
|
@title = "Sideplace, nouveau site d'annonces gratuites"
|
|
|
|
@description = "Simple, design, efficace, une nouvelle manière de déposer vos annonces. Pour les particuliers et les professionnels, avec programme d'affiliation."
|
|
|
|
|
|
render :layout => "home"
|
|
end
|
|
|
|
|
|
def show
|
|
|
|
if current_annonce_account and @annonce = current_annonce_account.annonces.find_by_id(params[:id])
|
|
|
|
elsif current_admin
|
|
|
|
@annonce = Annonce.find(params[:id])
|
|
else
|
|
|
|
@annonce = Annonce.valid_to_show.find_by_id(params[:id])
|
|
end
|
|
|
|
@no_search = true
|
|
session[:mail_prev] = public_annonce_path(@annonce) if @annonce
|
|
|
|
params[:p] = @annonce.annonce_account.mlm_token.upcase if !cookies[:mlm_token] and @annonce and @annonce.annonce_account.credits_boughts(Date.today) > 0
|
|
|
|
end
|
|
|
|
|
|
def new
|
|
params[:step] = "info"
|
|
|
|
@create = true
|
|
@no_search = true
|
|
@annonce = Annonce.new(:annonce_cat_id => params[:annonce_cat_id], :tel_number => current_annonce_account.tel_number)
|
|
|
|
@annonce.devise_id = session[:devise_id].to_i
|
|
|
|
if @annonce.annonce_cat_id == 5
|
|
#@annonce.specific_annonce_type = "AnnonceAuto"
|
|
@annonce.specific_annonce = AnnonceAuto.new
|
|
elsif @annonce.annonce_cat_id == 6
|
|
@annonce.specific_annonce = AnnonceMoto.new
|
|
elsif @annonce.annonce_cat_id == 10
|
|
@annonce.specific_annonce = AnnonceUtil.new
|
|
elsif @annonce.annonce_cat_id == 11
|
|
@annonce.specific_annonce = AnnonceCarav.new
|
|
elsif @annonce.annonce_cat_id == 12
|
|
@annonce.specific_annonce = AnnonceNaut.new
|
|
elsif @annonce.annonce_cat_id == 17
|
|
@annonce.specific_annonce = AnnonceHab.new
|
|
elsif @annonce.annonce_cat_id == 19
|
|
@annonce.specific_annonce = AnnonceOffice.new
|
|
elsif @annonce.annonce_cat_id == 32
|
|
@annonce.specific_annonce = AnnonceTel.new
|
|
elsif @annonce.annonce_cat_id == 36
|
|
@annonce.specific_annonce = AnnonceNum.new
|
|
elsif @annonce.annonce_cat_id == 49
|
|
@annonce.specific_annonce = AnnoncePdv.new
|
|
elsif @annonce.annonce_cat_id == 52
|
|
@annonce.specific_annonce = AnnoncePet.new
|
|
elsif @annonce.annonce_cat_id == 35
|
|
@annonce.specific_annonce = AnnonceHigh.new
|
|
elsif @annonce.annonce_cat_id == 34
|
|
@annonce.specific_annonce = AnnoncePlay.new
|
|
elsif @annonce.annonce_cat_id == 33
|
|
@annonce.specific_annonce = AnnonceInf.new
|
|
|
|
elsif @annonce.annonce_cat_id == 28
|
|
@annonce.specific_annonce = AnnonceGite.new
|
|
elsif @annonce.annonce_cat_id == 29
|
|
@annonce.specific_annonce = AnnonceCamping.new
|
|
elsif @annonce.annonce_cat_id == 30
|
|
@annonce.specific_annonce = AnnonceHotel.new
|
|
|
|
elsif @annonce.annonce_cat_id == 79
|
|
@annonce.specific_annonce = AnnonceDraw.new
|
|
elsif @annonce.annonce_cat_id == 80
|
|
@annonce.specific_annonce = AnnonceAntiquity.new
|
|
elsif @annonce.annonce_cat_id == 81
|
|
@annonce.specific_annonce = AnnonceGraphic.new
|
|
elsif @annonce.annonce_cat_id == 82
|
|
@annonce.specific_annonce = AnnonceSculpture.new
|
|
|
|
|
|
end
|
|
|
|
end
|
|
|
|
def edit
|
|
params[:step] = "info"
|
|
@annonce = current_annonce_account.annonces.find(params[:id])
|
|
@no_search = true
|
|
|
|
@create = true if params[:create]
|
|
end
|
|
|
|
def specific
|
|
annonce = current_annonce_account.annonces.find(params[:id])
|
|
|
|
end
|
|
|
|
|
|
def photos
|
|
@annonce = current_annonce_account.annonces.find(params[:id])
|
|
params[:step] = "photos"
|
|
@no_search = true
|
|
|
|
@create = true if params[:create]
|
|
end
|
|
|
|
|
|
|
|
|
|
def create
|
|
params[:step] = "info"
|
|
@create = true
|
|
|
|
specific_annonce_params = params[:annonce].delete(:specific_annonce_attributes)
|
|
content_type = params[:annonce][:specific_annonce_type]
|
|
|
|
@annonce = Annonce.new(params.require(:annonce).permit!)
|
|
@annonce.annonce_account = current_annonce_account
|
|
|
|
if content_type
|
|
specific_annonce = content_type.constantize.new(specific_annonce_params.permit!)
|
|
|
|
@annonce.specific_annonce =specific_annonce
|
|
|
|
end
|
|
|
|
|
|
|
|
if @annonce.save
|
|
|
|
|
|
#redirect_to photos_public_annonce_path(@annonce)
|
|
|
|
|
|
|
|
else
|
|
render :action => "new"
|
|
end
|
|
end
|
|
|
|
def confirm
|
|
@annonce = Annonce.find_by_token(params[:id])
|
|
@annonce.enabled = true
|
|
@annonce.save
|
|
|
|
|
|
cookies[:annonce_auth_token] = @annonce.token
|
|
|
|
redirect_to public_my_account_path
|
|
#redirect_to "/"
|
|
end
|
|
def publish
|
|
params[:step] = "publish"
|
|
@annonce = current_annonce_account.annonces.find(params[:id])
|
|
@annonce.published = true
|
|
@annonce.refused = true
|
|
if !@annonce.published_date?
|
|
@annonce.published_date = Date.today
|
|
@annonce.list_head = Time.now
|
|
|
|
|
|
|
|
end
|
|
@annonce.save
|
|
@no_search = true
|
|
|
|
@create = true if params[:create]
|
|
end
|
|
|
|
def update
|
|
params[:step] = "info"
|
|
@create = true if params[:create]
|
|
@annonce = current_annonce_account.annonces.find(params[:id])
|
|
|
|
|
|
|
|
|
|
respond_to do |format|
|
|
if @annonce.update_attributes(params.require(:annonce).permit!)
|
|
|
|
|
|
|
|
format.html {
|
|
redirect_to public_my_account_path
|
|
}
|
|
format.js
|
|
|
|
else
|
|
|
|
format.html { render :action => "edit" }
|
|
format.js { render :action => "edit" }
|
|
end
|
|
end
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
def destroy
|
|
|
|
@annonce = current_annonce_account.annonces.find(params[:id])
|
|
@annonce.enabled = nil
|
|
@annonce.save
|
|
|
|
redirect_to public_my_account_path, :notice => "Votre annonce a bien été désactivée"
|
|
|
|
|
|
|
|
end
|
|
|
|
def options
|
|
@annonce = current_annonce_account.annonces.find(params[:id])
|
|
end
|
|
|
|
def buy_option
|
|
@annonce = current_annonce_account.annonces.find(params[:id])
|
|
@annonce_option_type = AnnonceOptionType.find(params[:annonce_option_type_id])
|
|
@annonce_option_log = nil
|
|
|
|
if current_annonce_account.solde_credits(Date.today) >= @annonce_option_type.cost
|
|
|
|
if @annonce_option_type.slug == "5-photos" and @annonce.nbr_photos <= 10
|
|
@annonce.nbr_photos = @annonce.nbr_photos + 5
|
|
|
|
@transaction = true
|
|
|
|
|
|
|
|
elsif @annonce_option_type.slug == "10-photos" and @annonce.nbr_photos <= 5
|
|
@annonce.nbr_photos = @annonce.nbr_photos + 10
|
|
|
|
@transaction = true
|
|
|
|
elsif @annonce_option_type.slug == "list-head"
|
|
@annonce.list_head = Time.now
|
|
|
|
@transaction = true
|
|
|
|
elsif @annonce_option_type.slug == "surligne-une-semaine"
|
|
|
|
if @annonce.highlight_expire? and @annonce.highlight_expire >= Date.today
|
|
@annonce.highlight_expire = @annonce.highlight_expire + 1.week
|
|
else
|
|
@annonce.highlight_expire = Date.today + 1.week
|
|
end
|
|
|
|
@annonce.highlight = true
|
|
|
|
@transaction = true
|
|
|
|
elsif @annonce_option_type.slug == "surligne-un-mois"
|
|
|
|
|
|
if @annonce.highlight_expire? and @annonce.highlight_expire >= Date.today
|
|
@annonce.highlight_expire = @annonce.highlight_expire + 1.month
|
|
else
|
|
@annonce.highlight_expire = Date.today + 1.month
|
|
end
|
|
|
|
@annonce.highlight = true
|
|
|
|
@transaction = true
|
|
|
|
|
|
elsif @annonce_option_type.slug == "urgent-une-semaine"
|
|
|
|
if @annonce.urgent_expire? and @annonce.urgent_expire >= Date.today
|
|
@annonce.urgent_expire = @annonce.urgent_expire + 1.week
|
|
else
|
|
@annonce.urgent_expire = Date.today + 1.week
|
|
end
|
|
|
|
@annonce.urgent = true
|
|
|
|
@transaction = true
|
|
|
|
elsif @annonce_option_type.slug == "urgent-un-mois"
|
|
|
|
if @annonce.urgent_expire? and @annonce.urgent_expire >= Date.today
|
|
@annonce.urgent_expire = @annonce.urgent_expire + 1.month
|
|
else
|
|
@annonce.urgent_expire = Date.today + 1.month
|
|
end
|
|
|
|
@annonce.urgent = true
|
|
|
|
@transaction = true
|
|
|
|
|
|
|
|
|
|
elsif @annonce_option_type.slug == "big-une-semaine"
|
|
|
|
if @annonce.big_annonce_expire? and @annonce.big_annonce_expire >= Date.today
|
|
@annonce.big_annonce_expire = @annonce.big_annonce_expire + 1.week
|
|
else
|
|
@annonce.big_annonce_expire = Date.today + 1.week
|
|
end
|
|
|
|
@annonce.big_annonce = true
|
|
|
|
@transaction = true
|
|
|
|
elsif @annonce_option_type.slug == "big-un-mois"
|
|
|
|
if @annonce.big_annonce_expire? and @annonce.big_annonce_expire >= Date.today
|
|
@annonce.big_annonce_expire = @annonce.big_annonce_expire + 1.month
|
|
else
|
|
@annonce.big_annonce_expire = Date.today + 1.month
|
|
end
|
|
|
|
@annonce.big_annonce = true
|
|
|
|
@transaction = true
|
|
|
|
|
|
elsif @annonce_option_type.slug == "link"
|
|
@annonce.link = true
|
|
|
|
@transaction = true
|
|
|
|
elsif @annonce_option_type.slug == "video"
|
|
@annonce.video = true
|
|
|
|
@transaction = true
|
|
|
|
end
|
|
|
|
if @transaction == true
|
|
|
|
@annonce_option_log = AnnonceOptionLog.new(:annonce => @annonce, :annonce_option_type => @annonce_option_type, :cost => @annonce_option_type.cost, :name => @annonce_option_type.name, :periode => @annonce_option_type.periode, :periode_type => @annonce_option_type.periode_type)
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
if @annonce_option_log
|
|
|
|
@annonce_option_log.save
|
|
|
|
paid = current_annonce_account.credit_paid @annonce_option_type.cost, @annonce_option_log.id, "AnnonceOptionLog", @annonce_option_log.name
|
|
if paid
|
|
|
|
@annonce.save
|
|
|
|
|
|
|
|
if @annonce_option_type.slug == "10-photos" or @annonce_option_type.slug == "5-photos"
|
|
redirect_to edit_public_annonce_path(:anchor => "photos"), :notice => "Votre option a bien été enregistrée, vous pouvez désormais ajotuer les photos supplémentaires"
|
|
elsif @annonce_option_type.slug == "link"
|
|
redirect_to edit_public_annonce_path(:anchor => "link"), :notice => "Votre option a bien été enregistrée, vous pouvez désormais ajotuer un lien sur votre annonce"
|
|
elsif @annonce_option_type.slug == "video"
|
|
redirect_to edit_public_annonce_path(:anchor => "video"), :notice => "Votre option a bien été enregistrée, vous pouvez désormais ajotuer une video sur votre annonce"
|
|
|
|
|
|
else
|
|
redirect_to public_annonce_path, :notice => "Votre option a bien été enregistrée."
|
|
end
|
|
|
|
|
|
else
|
|
redirect_to :back
|
|
end
|
|
|
|
else
|
|
redirect_to :back
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
end
|