diff --git a/app/controllers/admin/newsletters_controller.rb b/app/controllers/admin/newsletters_controller.rb index e4d61a8..d1e8792 100755 --- a/app/controllers/admin/newsletters_controller.rb +++ b/app/controllers/admin/newsletters_controller.rb @@ -12,6 +12,17 @@ class Admin::NewslettersController < ApplicationController # require_permission 'newsletter.delete', :only => [:newsletter_del] # require_permission 'newsletter.send', :only => [:send_test, :send_newsletter, :select_recipients] + +def history_detail + @archive_newsletter = ArchiveNewsletter.find(params[:id]) + @newsletter = @archive_newsletter.newsletter +end + + +def history + @newsletter = Newsletter.find(params[:id]) +end + def index @h2 = "Lister les newsletters éxistantes" diff --git a/app/models/archive_newsletter.rb b/app/models/archive_newsletter.rb index b9e1a0e..d7bd0d3 100644 --- a/app/models/archive_newsletter.rb +++ b/app/models/archive_newsletter.rb @@ -1,3 +1,4 @@ class ArchiveNewsletter < ActiveRecord::Base belongs_to :newsletter + has_many :mail_archives end diff --git a/app/views/admin/newsletters/history.html.haml b/app/views/admin/newsletters/history.html.haml new file mode 100644 index 0000000..8a96ff7 --- /dev/null +++ b/app/views/admin/newsletters/history.html.haml @@ -0,0 +1,26 @@ +%h1= @newsletter.title +%table.table + %tr + %th Date d'envoi + %th Nombre de messages envoyés + %th Nombre de messages lus + %th Nombre de messages non-lus + -ArchiveNewsletter.where(:newsletter_id => @newsletter.id).all.each do |archive_newsletter| + %tr + %td=l archive_newsletter.created_at + %td=mail_send = archive_newsletter.mail_archives.count() + %td + =mail_read = archive_newsletter.mail_archives.where(:readed => true).count() + -if mail_send > 0 + ="(" + =number_to_percentage (100.0*mail_read)/mail_send, :precision => 1 + =")" + %td + =mail_no_read = mail_send - mail_read + -if mail_send > 0 + ="(" + =link_to number_to_percentage((100.0*mail_no_read)/mail_send, :precision => 1), history_detail_admin_newsletter_path(archive_newsletter.id) + =")" + + + \ No newline at end of file diff --git a/app/views/admin/newsletters/history_detail.html.haml b/app/views/admin/newsletters/history_detail.html.haml new file mode 100644 index 0000000..c74a783 --- /dev/null +++ b/app/views/admin/newsletters/history_detail.html.haml @@ -0,0 +1,45 @@ +%h1= @newsletter.title +%table.table + %tr + %th Date d'envoi + %th Nombre de messages envoyés + %th Nombre de messages lus + %th Nombre de messages non-lus + + %tr + %td=l @archive_newsletter.created_at + %td=mail_send = @archive_newsletter.mail_archives.count() + %td + =mail_read = @archive_newsletter.mail_archives.where(:readed => true).count() + -if mail_send > 0 + ="(" + =number_to_percentage (100.0*mail_read)/mail_send, :precision => 1 + =")" + %td + =mail_no_read = mail_send - mail_read + -if mail_send > 0 + ="(" + = number_to_percentage((100.0*mail_no_read)/mail_send, :precision => 1) + =")" +%h3 Liste des mails n'ayant pas reçu la newsletter +%table.table + -@archive_newsletter.mail_archives.where("readed != 1 or readed is null").all.each do |mail_archive| + %tr + %td + =mail_archive.email + %td + + %td + =link_to "Fiche adhérent", admin_sheet_path(mail_archive.sheet_id), :remote => true if mail_archive.sheet_id? + +%h3 Liste des mails ayant reçu la newsletter +%table.table + -@archive_newsletter.mail_archives.where("readed = 1").all.each do |mail_archive| + %tr + %td + =mail_archive.email + %td + + %td + =link_to "Fiche adhérent", admin_sheet_path(mail_archive.sheet_id), :remote => true if mail_archive.sheet_id? + \ No newline at end of file diff --git a/app/views/admin/newsletters/index.html.haml b/app/views/admin/newsletters/index.html.haml index d0846f1..022d2da 100755 --- a/app/views/admin/newsletters/index.html.haml +++ b/app/views/admin/newsletters/index.html.haml @@ -36,6 +36,7 @@ = link_to i(:"envelope-o"), select_recipients_admin_newsletter_path(u) = link_to i(:pencil), edit_admin_newsletter_path(u) = link_to i(:"eye"), admin_newsletter_path(u), :target => "_blank" + = link_to i(:"history"), history_admin_newsletter_path(u) diff --git a/config/routes.rb b/config/routes.rb index 4d35906..5ed5932 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -48,6 +48,9 @@ Survey::Application.routes.draw do resources :newsletters do member do + get :history + get :history_detail + get "select_recipients" put "select_recipients" post "send_test"