Activity Monitor + Video size + Changes imposed by Daniel

This commit is contained in:
Nicolas VARROT 2016-04-13 15:14:01 +02:00
parent 4fae39de24
commit 8538404a9a
41 changed files with 340 additions and 203 deletions

View File

@ -56,6 +56,7 @@ content_type_to_move =false
$(document).ready ->
$(document).on 'click', 'input.datepicker', ->
$(this).datetimepicker(
language: 'fr'
@ -397,6 +398,3 @@ $(document).on "click", "#menu_item_informations .save", ->
$(document).on "click", "#menu_item_informations h4", ->
$(this).next(".panel").toggle()
return false

View File

@ -2,7 +2,7 @@
//= require bootstrap/alert
//= require bootstrap/button
//= require bootstrap/carousel
//= require bootstrap/collapse
//= require bootstrap/dropdown
//= require bootstrap/tab
//= require bootstrap/transition

View File

@ -691,3 +691,10 @@ height: 100%;
cursor: inherit;
display: block;
}
.mfp-iframe-holder .mfp-content {
width: 90%;
max-width: 100%;
}

View File

@ -20,6 +20,16 @@ class Admin::CustomersController < ApplicationController
end
def connected_customers
@customers_5m = Customer.where("last_activity > ?", DateTime.now - 5.minutes)
@customers_1h = Customer.where("last_activity > ?", DateTime.now - 1.hour)
@customers_24h = Customer.where("last_activity > ?", DateTime.now - 24.hours)
end
def show
@customer = Customer.find(params[:id])
end

View File

@ -68,7 +68,7 @@ class Admin::NeedsController < ApplicationController
def download_devis
@need = Need.find(params[:need_id])
send_file @need.devis.file.path, :filename => "devis-need-#{@need.id}.#{@need.devis.file.extension}"
send_file @need.devis.file.path, :filename => "proposition-besoin-#{@need.id}.#{@need.devis.file.extension}"
end
def create
@ -150,7 +150,7 @@ class Admin::NeedsController < ApplicationController
def accept
@need = Need.find(params[:id])
if @need.offers.length < 1
flash[:error] = "Vous devez créer au moins une proposition avant de passer ce besoin en négocié"
flash[:error] = "Vous devez créer au moins une offre avant de passer ce besoin en négocié"
else
if @need.accept!
flash[:notice] = "Le besoin est maintenant négocié"

View File

@ -65,7 +65,7 @@ class Admin::OffersController < ApplicationController
@offer = Offer.new(offer_params)
if @offer.save
@need.offers << @offer
flash[:notice] = "Proposition créée avec succès."
flash[:notice] = "Offre créée avec succès."
@offer.validate!
redirect_to admin_need_offers_path(@need)
else
@ -83,7 +83,7 @@ class Admin::OffersController < ApplicationController
def update
@offer = Offer.find(params[:id])
if @offer.update_attributes(offer_params)
flash[:notice] = "Proposition modifiée avec succès."
flash[:notice] = "Offre modifiée avec succès."
if params[:need_id]
@need = Need.find(params[:need_id])
redirect_to admin_need_offers_path(@need)
@ -99,9 +99,9 @@ class Admin::OffersController < ApplicationController
@offer = Offer.find(params[:id])
if(@offer.destroy)
flash[:notice] = "Proposition supprimée avec succès."
flash[:notice] = "Offre supprimée avec succès."
else
flash[:error] = "Impossible de supprimer cette proposition"
flash[:error] = "Impossible de supprimer cette offre"
end
if params[:need_id]

View File

@ -16,6 +16,9 @@ class ApplicationController < ActionController::Base
if !current_customer
session[:before_auth_url] = request.url
redirect_to new_public_customers_auth_path(:p => params[:p], :for_annonce => (true if params[:controller] == "public/annonces"))
else
@current_customer.last_activity = DateTime.now
@current_customer.save
end
end
@ -43,6 +46,7 @@ class ApplicationController < ActionController::Base
a_c = Customer.find_by_token(cookies[:customer_auth_token])
if !a_c.lock
@current_customer = a_c
else
cookies[:customer_auth_token] = nil
nil

View File

@ -7,7 +7,7 @@ class Public::AcceptedOffersController < ApplicationController
def download_devis
@accepted_offer = AcceptedOffer.find(params[:id])
if(@accepted_offer.customer.id != current_customer.id)
flash[:error] = "Vous n'avez pas la permission de télécharger ce devis"
flash[:error] = "Vous n'avez pas la permission de télécharger cette offre"
redirect_back_or_default :root
else
@accepted_offer.state = :devis_downloaded

View File

@ -78,7 +78,7 @@ class Public::NeedsController < ApplicationController
return redirect_to :back
end
send_file @need.devis.file.path, filename: "devis-need-#{@need.id}.#{@need.devis.file.extension}"
send_file @need.devis.file.path, filename: "proposition-need-#{@need.id}.#{@need.devis.file.extension}"
end
@ -117,8 +117,9 @@ class Public::NeedsController < ApplicationController
def create
@need = Need.new(need_params)
@need.author = current_customer
if !@need.devis?
flash[:error] = "Vous devez joindre un devis au format PDF"
if !@need.devis? && !@need.note?
flash[:error] = "Vous devez joindre une proposition au format PDF ou au moins préciser son prix dans le champ d'information"
return render :action => "new"
end

View File

@ -7,7 +7,7 @@ class Public::OffersController < ApplicationController
def accept
if @offer.customers.include?(current_customer)
flash[:error] = "Vous avez déjà accepter cette proposition"
flash[:error] = "Vous avez déjà accepter cette offre"
return redirect_back_or_default :root
end
@accepted_offer = AcceptedOffer.new
@ -15,7 +15,7 @@ class Public::OffersController < ApplicationController
@accepted_offer.offer = @offer
@document = Document.new
@document.title = "Proposition"
@document.title = "Offre"
@accepted_offer.documents << @document
if @accepted_offer.save
@ -26,7 +26,7 @@ class Public::OffersController < ApplicationController
CustomerMailer.offer_accepted(current_customer, @accepted_offer).deliver
flash[:notice] = "Proposition acceptée avec succès !"
flash[:notice] = "Offre acceptée avec succès !"

View File

@ -87,7 +87,7 @@ class Public::WishesController < ApplicationController
return redirect_to :back
end
send_file @wish.devis.file.path, filename: "devis-need-#{@need.id}.#{@wish.devis.file.extension}"
send_file @wish.devis.file.path, filename: "proposition-need-#{@need.id}.#{@wish.devis.file.extension}"
end

View File

@ -78,21 +78,21 @@ class CustomerMailer < ApplicationMailer
def offer_accepted(customer, accepted_offer)
@accepted_offer = accepted_offer
@customer = customer
mail to: @customer.email, :subject => "Vous avez accepté une proposition"
mail to: @customer.email, :subject => "Vous avez accepté une offre"
end
def document_available(customer, document)
@document = document
@customer = customer
mail to: @customer.email, :subject => "Document disponible pour la proposition #{@document.accepted_offer.offer.need.title}"
mail to: @customer.email, :subject => "Document disponible pour l'offre #{@document.accepted_offer.offer.need.title}"
end
def document_verified(customer, document)
@document = document
@customer = customer
mail to: @customer.email, :subject => "Document vérifié pour la proposition #{@document.accepted_offer.offer.need.title}"
mail to: @customer.email, :subject => "Document vérifié pour l'offre #{@document.accepted_offer.offer.need.title}"
end

View File

@ -4,7 +4,7 @@ class Wish < ActiveRecord::Base
mount_uploader :devis, WishDevisUploader
validates :devis, :presence => true
validates :note, presence: true, if: "!devis?"
validates :need, :presence => true
validates :customer, :presence => true
end

View File

@ -0,0 +1,23 @@
%tr#customer_row
%td
= link_to "#{customer.firstname} #{customer.name} ",edit_admin_customer_path(customer)
%td
= link_to customer.organisation, edit_admin_customer_path(customer)
%td
-if customer.phone?
= i("phone") + " #{customer.phone}"
%td
=customer.city
%td
=link_to customer.email, "mailto:#{customer.email}"
%td
=customer.last_activity
="(Il y a #{time_ago_in_words(customer.last_activity)})"
%td.actions{:style => "width:150px;text-align:right;"}
=link_to i(:"comments"), admin_conversation_path(customer)

View File

@ -21,6 +21,7 @@
%td.actions{:style => "width:150px;text-align:right;"}
=link_to i(:"comments"), admin_conversation_path(customer)
= link_to i(:"trash-o"), [:admin, customer], :data => {:confirm => 'Voulez-vous vraiment supprimer ce compte utilisateur ?'}, :method => :delete, :remote => true
=# link_to i(:eye), [:admin, customer]
= link_to i(:pencil), edit_admin_customer_path(customer)

View File

@ -0,0 +1,82 @@
%h1 Moniteur d'activité
%h3 Utilisateurs actifs ces 5 dernières minutes
%table.table.table-hover.table-striped.customer_table
%thead#customer_rows_header.rows_header
%tr
%th
Prénom/Nom
%th
Société
%th
Téléphone
%th
Ville
%th
Email
%th
Dernière activité
%th
%tbody#customer_rows.rows
=render partial: "admin/customers/connected_customers", collection: @customers_5m, as: :customer
%h3 Utilisateurs ayant été actifs durant ces 60 dernières minutes
%table.table.table-hover.table-striped.customer_table
%thead#customer_rows_header.rows_header
%tr
%th
Prénom/Nom
%th
Société
%th
Téléphone
%th
Ville
%th
Email
%th
Dernière activité
%th
%tbody#customer_rows.rows
=render partial: "admin/customers/connected_customers", collection: @customers_1h, as: :customer
%h3 Utilisateurs ayant été actifs au cours de ces dernières 24 heures
%table.table.table-hover.table-striped.customer_table
%thead#customer_rows_header.rows_header
%tr
%th
Prénom/Nom
%th
Société
%th
Téléphone
%th
Ville
%th
Email
%th
Dernière activité
%th
%tbody#customer_rows.rows
=render partial: "admin/customers/connected_customers", collection: @customers_24h, as: :customer

View File

@ -11,7 +11,7 @@
=f.input :description, :label => "Description : ", :rows => 5, :input_html => {:style => "height:100px;"}
=f.input :image_file_id, :label => "Image", :as => :qi_image_select
=f.input :author, :label => "Auteur", include_blank: "Administrateur"
= f.input :note, :label => "Informations supplémentaires pour Négos", :rows => 5, :input_html => {:style => "height:100px;"}
-#= f.input :note, :label => "Informations supplémentaires pour Négos (Si vous n'avez pas attaché de proposition, merci de préciser son prix dans ce champ)", :rows => 5, :input_html => {:style => "height:100px;"}
.actions
= f.submit "Sauvegarder", :class => "btn btn-primary"

View File

@ -15,10 +15,10 @@
%td.actions{:style => "width:150px;text-align:right"}
-if @need
= link_to i(:"cog"), accepted_admin_offer_path(offer), title: "Gérer les propositions par client"
= link_to i(:"trash"), [:admin,@need, offer], :data => {:confirm => 'Voulez-vous vraiment supprimer cette proposition ?'}, :method => :delete
= link_to i(:"cog"), accepted_admin_offer_path(offer), title: "Gérer les offres par client"
= link_to i(:"trash"), [:admin,@need, offer], :data => {:confirm => 'Voulez-vous vraiment supprimer cette offre ?'}, :method => :delete
= link_to i(:pencil), edit_admin_need_offer_path(@need, offer)
-else
= link_to i(:"cog"), accepted_admin_offer_path(offer), title: "Gérer les propositions par client"
= link_to i(:"trash"), [:admin, offer], :data => {:confirm => 'Voulez-vous vraiment supprimer cette proposition ?'}, :method => :delete
= link_to i(:"cog"), accepted_admin_offer_path(offer), title: "Gérer les offres par client"
= link_to i(:"trash"), [:admin, offer], :data => {:confirm => 'Voulez-vous vraiment supprimer cette offre ?'}, :method => :delete
= link_to i(:pencil), edit_admin_offer_path(offer)

View File

@ -1,5 +1,5 @@
%h1
= "Gestion des propositions par client pour le besoin "
= "Gestion des offres par client pour le besoin "
<strong>
= @offer.need.title
</strong>
@ -10,7 +10,7 @@
=pluralize(@offer.need.wishes.length, "Personne")
</strong>
%h4
= "Propositions acceptées: "
= "Offres acceptées: "
<strong>
=pluralize(@offer.accepted_offers.length, "Personne")
</strong>
@ -37,7 +37,7 @@
%th
Email
%th{style:"text-align:center"}
Propositions acceptée?
Offres acceptée?
%th{style:"text-align:center"}
Documents
%th{style:"text-align:center"}

View File

@ -1,4 +1,4 @@
%h1
Modifier une proposition
Modifier une offre
=render :partial => "form"

View File

@ -1,33 +1,33 @@
-if @need
%h1
Gestion des propositions pour le besoin
Gestion des offres pour le besoin
%strong= @need.title
%p.alert.alert-info
Seul les propositions concernant le besoin
Seul les offres concernant le besoin
%strong= @need.title
sont affichées sur cette page.
%br
Pour voir toutes les propositions, aller dans l'onglet
%strong Gestion des propositions
Pour voir toutes les offres, aller dans l'onglet
%strong Gestion des offres
depuis la barre de navigation
-else
%h1
Gestion des propositions
Gestion des offres
%p.alert.alert-info
Cette page affiche toutes les propositions existantes.
Cette page affiche toutes les offres existantes.
%br
Pour créer une proposition, il faut d'abord choisir un besoin. Pour cela, passer par l'onglet
Pour créer une offre, il faut d'abord choisir un besoin. Pour cela, passer par l'onglet
%strong Gestion des besoins
puis cliquer sur le bouton
%strong= ic(:gift)
en face du besoin de votre choix.
-if @offers.length < 1
Aucune proposition actuellement
Aucune offre actuellement
-if @need
%br
%br
=link_to "Ajouter une proposition", new_admin_need_offer_path(@need),class:"btn btn-primary"
=link_to "Ajouter une offre", new_admin_need_offer_path(@need),class:"btn btn-primary"
%br
-else
.row
@ -38,7 +38,7 @@
%tr
%th
Besoin concerné par la proposition
Besoin concerné par l'offre
%th
Fournisseur
%th
@ -46,7 +46,7 @@
%th{style:"text-align:center;"}
Clients Intéressés
%th{style:"text-align:center;"}
Propositions Acceptées
Offres Acceptées
%th{:style => "width:100px"}
&nbsp;
@ -57,7 +57,7 @@
.pagination.pull-right= paginate @offers
.col-md-2
-if @need
=link_to "Ajouter une proposition", new_admin_need_offer_path(@need),class:"btn btn-primary btn-block"
=link_to "Ajouter une offre", new_admin_need_offer_path(@need),class:"btn btn-primary btn-block"
%br
= semantic_form_for :search, :html => {id: :search_form, :method => :get } do |f|
= f.inputs do

View File

@ -1,4 +1,4 @@
%h1
Créer une proposition pour le besoin
Créer une offre pour le besoin
%strong= @need.title
=render :partial => "form"

View File

@ -6,9 +6,9 @@
=wish.created_at
%td
-if wish.devis?
= link_to ic(:download) + " Télécharger devis", download_devis_admin_need_wish_path(wish.need, wish), class:"btn btn-primary btn-sm"
= link_to ic(:download) + " Télécharger sa proposition", download_devis_admin_need_wish_path(wish.need, wish), class:"btn btn-primary btn-sm"
-else
Aucun devis
Aucune proposition attachée
%td
-if wish.note?
=wish.note

View File

@ -10,7 +10,7 @@
%th
Intéressé le
%th
Devis
Proposition
%th
Informations supplémentaires
%th{:style => "width:100px"}

View File

@ -3,5 +3,5 @@
%p
Le client
%strong= @accepted_offer.customer.fullname
vient d'accepter la proposition concernant le besoin
vient d'accepter l'offre concernant le besoin
%strong= @accepted_offer.offer.need.title

View File

@ -1,7 +1,7 @@
%p Bonjour,
%p
Un document est disponible pour une proposition que vous avez récemment acceptée:
Un document est disponible pour une offre que vous avez récemment acceptée:
%strong= @document.accepted_offer.offer.need.title
%p

View File

@ -1,7 +1,7 @@
%p Bonjour,
%p
Un document que vous nous avez récemment retourné pour la proposition
Un document que vous nous avez récemment retourné pour l'offre
%strong= @document.accepted_offer.offer.need.title
vient d'être vérifié

View File

@ -5,6 +5,6 @@
%strong= @need.title
vient d'être négocié !"
%p Rendez-vous sur notre site afin de voir notre proposition
%p Rendez-vous sur notre site afin de voir notre offre
%p Merci

View File

@ -1,7 +1,7 @@
%p Bonjour,
%p
Vous venez d'accepter une proposition pour le besoin
Vous venez d'accepter une offre pour le besoin
%strong= @accepted_offer.offer.need.title
%p Merci

View File

@ -16,7 +16,6 @@
%body.admin
%nav#admin_nav.navbar.navbar-default.navbar-inverse{role: "navigation"}
.container-fluid
@ -50,12 +49,13 @@
%li= link_to " Besoins", admin_needs_path
%li= link_to " Catégories", admin_need_categories_path
%li= link_to " Propositions", admin_offers_path
%li= link_to " Offres", admin_offers_path
- unread_messages = ContactMessage.where(read_by_admin: false).count
-if unread_messages > 0
%li=link_to content_tag(:span,unread_messages , style:"background-color:#D9534F", class: 'badge') + " Contacts", admin_conversations_path
-else
%li= link_to " Contacts", admin_conversations_path
%li= link_to " Moniteur d'activité", admin_connected_customers_path
%ul.nav.navbar-nav.navbar-right

View File

@ -1,4 +1,4 @@
.center.white.row
.row.gutter
%h1= i(:"file") + " Documents à retourner pour la proposition #{@accepted_offer.offer.need.title}"
%h1= i(:"file") + " Documents à retourner pour l'offre #{@accepted_offer.offer.need.title}"

View File

@ -47,30 +47,31 @@
=link_to "Modifier mes infos", public_edit_infos_path, :class => "btn btn-primary"
.padding.center.white
%h3
Mes propositions acceptées
Mes offres acceptées
%div.alert.alert-info
%p
Voici la liste de toutes les propositions que vous avez acceptées.
Voici la liste de toutes les offres que vous avez acceptées.
Cest ici que vous pouvez accéder aux offres disponibles.
%p
Une fois téléchargé, vous devez nous renvoyer le mandat signé afin de pour bénéficier de la proposition.
Une fois téléchargé, vous devez nous renvoyer le mandat signé afin de pouvoir bénéficier de l'offre.
%p
Noubliez pas que cest lintérêt de chacun de contribuer à NEGOS, en participant, en communiquant afin dobtenir la meilleure proposition
%strong
Noubliez pas que cest lintérêt de chacun de contribuer à NEGOS, en participant, en communiquant afin dobtenir la meilleure offre
-if @accepted_offers.length > 0
=render "public/needs/accepted_offers_index", accepted_offers: @accepted_offers
.pagination= paginate @accepted_offers, param_name: 'page_offers'
-else
%p
Vous n'avez pas encore accepté de proposition
Vous n'avez pas encore accepté d'offre
.padding.center.white
%h3
Mes besoins
Mes intérêts
%div.alert.alert-info
%p
Signaler votre intérêt, vous permet daccéder au fil de discussion ainsi quau suivi propre à chaque besoin.
%p
Cela nous permet de vous envoyer des propositions intéressantes si nous décidons de négocier ce besoin.
Cela nous permet de vous envoyer des offres intéressantes si nous décidons de négocier ce besoin.
-if @wishes.length > 0
=render "public/wishes/index", wishes: @wishes
.pagination= paginate @wishes , param_name: 'page_wishes'
@ -79,12 +80,12 @@
Vous n'êtes encore intéressé par aucun besoin
.padding.center.white
%h3
Mes propositions de besoin
Mes besoins
%div.alert.alert-info
%p
Si vous avez un besoin qui ne fait pas encore parti de notre liste, vous pouvez vous-même le proposer à Négos. 
%p
Votre proposition sera alors soumise à une courte validation par l'un de nos modérateurs. 
Votre proposition de besoin sera alors soumise à une courte validation par l'un de nos modérateurs. 
%p
Vous serez informé par courriel de son acceptation.
-if @needs.length > 0

View File

@ -3,7 +3,7 @@
= f.input :title, :label => "Titre de votre besoin"
= f.input :category, :as => :select, include_blank: "Toute catégorie", :collection => @tree.map{|c| [(c.level > 0 ? ('&nbsp;&nbsp;&nbsp;' * (c.level - 1)) + "|- ": "").html_safe + c.name, c.id]}, label: "Catégorie de besoin"
= f.input :description, :label => "Description", :rows => 5, :input_html => {:style => "height:100px;"}
= f.input :devis, type: :file, :label => "Devis/Offre (Fichier au format PDF)"
= f.input :devis, type: :file, :label => "Votre proposition (Fichier au format PDF)"
= f.input :note, :label => "Informations supplémentaires (visibles uniquement par les administrateurs Négos)", :rows => 5, :input_html => {:style => "height:100px;"}
%br

View File

@ -64,7 +64,7 @@
-elsif(need.negociated?)
-if(need.customers.include?(current_customer))
=link_to i(:"download") +" Voir les propositions", public_need_path(need), class: "btn btn-success pull-right"
=link_to i(:"download") +" Voir les offres", public_need_path(need), class: "btn btn-success pull-right"
-else
=link_to i(:"times-circle") + " Négociation terminée", public_need_path(need) , class: "btn btn-danger pull-right"

View File

@ -27,7 +27,7 @@
= f.input :c, as: :category, selected: params[:c], input_html: {:name => 'c' }, label: 'Filtrer par catégorie', :include_blank => "Toute catégorie" , :as => :select, :collection => @tree.map{|c| [(c.level > 0 ? ('&nbsp;&nbsp;&nbsp;' * (c.level - 1)) + "|- ": "").html_safe + c.name, c.id]}
.clear
= f.inputs do
= f.input :s, as: :state, selected: params[:s], input_html: {:name => 's' }, label: 'Filter par état', :include_blank => "Tous les états" , :as => :select, :collection => [["En sondage","verified"],["En négociation","negociating"],["Négocié","negociated"],["Négociation échouée","failed"]]
= f.input :s, as: :state, selected: params[:s], input_html: {:name => 's' }, label: 'Filter par état', :include_blank => "Tous les états" , :as => :select, :collection => [["En sondage","verified"],["En négociation","negociating"],["Négocié","negociated"]]
.clear
:javascript

View File

@ -54,7 +54,7 @@
%h3 Vous avez aussi ce besoin ? signalez-le nous !
%p Vous pouvez marquer votre interêt pour ce besoin en cliquant sur le bouton <strong>Ça m'intéresse !</strong>
%p Si il y a un nombre suffisant de personnes intéressées par ce même besoin, une négociation sera entamée auprès des fournisseurs afin de vous faire une offre intéressante.
%p Une fois la négociation terminée, vous serez libre d'accepter ou non la proposition.
%p Une fois la négociation terminée, vous serez libre d'accepter ou non l'offre.
-elsif @need.negociating?
-if @need.customers.include?(current_customer)
@ -74,8 +74,8 @@
.alert.alert-success
%h3 Négociation terminée
%p= "Nous avons négocié ce besoin à partir de #{number_to_currency(offers.first.price, locale: :fr)}"
%p Vous avez maintenant le choix d'accepter ou refuser la proposition.
%p <strong>Une fois la proposition acceptée, vous devrez nous retourner au plus vite le mandat signé</strong>
%p Vous avez maintenant le choix d'accepter ou refuser l'offre.
%p <strong>Une fois l'offre acceptée, vous devrez nous retourner au plus vite le mandat signé</strong>
-else
.alert.alert-success
%h3 Négociation terminée
@ -103,7 +103,7 @@
-elsif @need.negociated?
-if @need.offers.length > 0
%h2= i(:"gift") + " Les propositions négociées"
%h2= i(:"gift") + " Les offres négociées"
-@need.offers.each do |offer|
.offer
@ -113,18 +113,18 @@
-if offer.need.customers.include?(current_customer)
-if !offer.customers.include?(current_customer)
.accept-offer
=link_to i(:"check") + " Accepter la proposition", accept_public_need_offer_path(@need, offer), data: {confirm: "Voulez-vous vraiment accepter cette proposition ? Attention, cette action vous engage à payer la somme proposée."}, class: "btn btn-lg btn-success "
=link_to i(:"check") + " Accepter l'offre", accept_public_need_offer_path(@need, offer), data: {confirm: "Voulez-vous vraiment accepter cette offre ? Attention, cette action vous engage à payer la somme proposée."}, class: "btn btn-lg btn-success "
-else
.offer-accepted
=i(:"check") + " Proposition Acceptée"
=i(:"check") + " Offre Acceptée"
.my-account-link
Vous devez maintenant nous retourner le mandat signé, rendez-vous rubrique
=link_to "Mon compte", public_my_account_path
pour gérer vos propositions acceptées.
pour gérer vos offres acceptées.
-else
.offer-not-aceptable
Proposition non disponible
Offre non disponible
.clear

View File

@ -2,13 +2,13 @@
=f.inputs do
-if @wish.devis?
= link_to ic(:download) + " Voir votre devis actuel", download_devis_public_need_wish_path(@need, @wish), class: "btn btn-primary"
= link_to ic(:download) + " Télécharger votre proposition", download_devis_public_need_wish_path(@need, @wish), class: "btn btn-primary"
%br
%br
-else
= f.input :devis, type: :file, :label => "Devis de votre offre actuelle (Fichier au format PDF)"
= f.input :devis, type: :file, :label => "Votre proposition (Fichier au format PDF)"
= f.input :note, :label => "Informations supplémentaires (visibles uniquement par les administrateurs Négos)", :rows => 5, :input_html => {:style => "height:100px;"}
= f.input :note, :label => "Informations supplémentaires (Si vous n'avez pas attaché de proposition, merci de préciser son prix dans ce champ)", :rows => 5, :input_html => {:style => "height:100px;"}
%br

View File

@ -5,8 +5,8 @@
Je signale mon intérêt pour le besoin
=link_to @need.title, public_need_path(@need)
.alert.alert-info
%h2 Joindre mon devis
%p Si vous êtes intéressé par ce besoin, faites nous part de votre offre actuelle en nous fournissant un devis.
%h2 Joindre ma proposition
%p Si vous êtes intéressé par ce besoin, faites nous part de votre proposition actuelle au format PDF.
%p
Une fois ce formulaire validé, vous pourrez si besoin revenir sur cette page depuis l'onglet
%strong Mon Compte

View File

@ -269,6 +269,8 @@ Rails.application.routes.draw do
end
end
resources :need_categories
resources :needs do
get :download_devis
@ -324,9 +326,11 @@ Rails.application.routes.draw do
get :accepted
end
end
get :connected_customers, to: "customers#connected_customers"
resources :customers do
member do
get :validate
end
end

View File

@ -0,0 +1,5 @@
class AddLastActivityToUser < ActiveRecord::Migration
def change
add_column :customers, :last_activity, :datetime, default:nil
end
end

View File

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20160318165409) do
ActiveRecord::Schema.define(version: 20160413101451) do
create_table "accepted_offers", force: :cascade do |t|
t.datetime "created_at", null: false
@ -223,6 +223,7 @@ ActiveRecord::Schema.define(version: 20160318165409) do
t.datetime "account_validated_at"
t.float "latitude", limit: 24
t.float "longitude", limit: 24
t.datetime "last_activity"
end
create_table "data_files", force: :cascade do |t|