# -*- encoding : utf-8 -*-

class Admin::NewslettersController < ApplicationController
  layout "admin"


  before_filter :auth_admin

#  require_permission 'newsletter.show'
#  require_permission 'newsletter.add', :only => [:newsletter_new, :newsletter_create]
#  require_permission 'newsletter.edit', :only => [:newsletter_edit, :newsletter_update]
#  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"



	per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 15
	page = (params[:page] and params[:page] != "") ? params[:page] : 1


   @newsletter= Newsletter.order("created_at DESC").page(page).per(per_page)
  end

  def new
    @h2 = "Creer une newsletter"
    @newsletter = Newsletter.new
    render :layout => false
  end

  def create
    @h2 = "Creer une newsletter"

    @newsletter = Newsletter.new(params.require(:newsletter).permit!)

    if @newsletter.save
    	per_page = (params[:per_page] and params[:per_page] != "") ? params[:per_page] : 15
    	page = (params[:page] and params[:page] != "") ? params[:page] : 1


       @newsletters= Newsletter.order("created_at DESC").page(page).per(per_page)
      #redirect_to :action => :index
    else
      render :action => :new
    end
  end

  def edit
    @h2 = "Editer une newsletter"
    @newsletter = Newsletter.find(params[:id])
  end

  def update
    @h2 = "Editer une newsletter"
    @newsletter = Newsletter.find(params[:id])
    if @newsletter.update_attributes(params.require(:newsletter).permit!)
      flash[:notice]= "La newsletter à été mise à jour"

    else
      render :action => :edit
    end
  end

  def show
    @newsletter = Newsletter.find(params[:id])
    @options = {}
    render :layout => "mail"
  end

  def destroy
    @newsletter = Newsletter.find(params[:id])
    @newsletter.destroy
    flash[:notice]= "La newsletter à été supprimé avec succès"
    redirect_to :action => :index

  end


  def send_test
    @errors = []
    @newsletter = Newsletter.find(params[:id])
    #NewsletterMails.newsletter(@newsletter, params[:email]).deliver
    send_helper @newsletter, params[:email]


    flash[:notice]= "La newsletter a bien été envoyée à l'email de test"
    redirect_to :action => :index
  end


  def send_helper(newsletter, email, options = {})

    if email and email != ""

      begin
        @mail_archive = MailArchive.new
        @mail_archive.archive_newsletter_id =  @archive_newsletter.id if @archive_newsletter
        @mail_archive.email = email
        @mail_archive.newsletter_id = newsletter.id

        @mail_archive.customer = options[:customer]
        @mail_archive.save

        options = options.merge({:mail_archive => @mail_archive})


        NewsletterMails.newsletter(newsletter, email, options).deliver if email and email != ""


      rescue
        @errors << "<span class'error'>#{email}</span>"
      end
    end
  end


  def send_newsletter
    @errors = []
    @newsletter = Newsletter.find(params[:id])

    @archive_newsletter = ArchiveNewsletter.create :newsletter_id => @newsletter.id, :title => @newsletter.title, :content => @newsletter.content


    if params[:confirmed_groups]

      CustomerNewsgroup.where(:newsgroup_id => params[:confirmed_groups]).group(:customer_id).each do |aan|
        if aa = aan.customer

          send_helper(@newsletter, aa.email, :customer => aa)

        end


      end


    elsif params[:confirmed_sheets]



      @customers = Customer.where(:id => params[:confirmed_sheets])


      @customers.each do |s|
       send_helper(@newsletter, s.email, :customer => s)
     end

   elsif params[:all_paid]



     @customers = Customer.where("binary_parent_id is not null")


     @customers.each do |s|
      send_helper(@newsletter, s.email, :customer => s)
    end


  elsif params[:all_non_paid_aff]

    CustomerNewsgroup.where(:newsgroup_id => 5).group(:customer_id).each do |aan|
      if aa = aan.customer and !aa.binary_parent_id

        send_helper(@newsletter, aa.email, :customer => aa)

      end


    end



   end


    flash[:notice]= "La newsletter a bien été envoyée à toutes les adresses mail séléctionnée"
    redirect_to :action => :index

  end

  def select_recipients
    @newsletter = Newsletter.find(params[:id])
    @customers = Customer.all




  end



end