Added newsletter controller and routes

This commit is contained in:
María Checa
2018-02-09 17:50:32 +01:00
parent 07f2419f8f
commit 49adcfde02
2 changed files with 62 additions and 2 deletions

View File

@@ -1,6 +1,47 @@
class Admin::NewslettersController < Admin::BaseController class Admin::NewslettersController < Admin::BaseController
def index def index
@newsletters = Newsletter.all
end
def show
@newsletter = Newsletter.find(params[:id])
end
def new
@newsletter = Newsletter.new
end
def create
@newsletter = Newsletter.new(newsletter_params)
if @newsletter.save
notice = t("admin.newsletters.create_success")
redirect_to [:admin, @newsletter], notice: notice
else
render :new
end
end
def edit
@newsletter = Newsletter.find(params[:id])
end
def update
@newsletter = Newsletter.find(params[:id])
if @newsletter.update(newsletter_params)
redirect_to [:admin, @newsletter], notice: t("admin.newsletters.update_success")
else
render :edit
end
end
def destroy
@newsletter = Newsletter.find(params[:id])
@newsletter.destroy
redirect_to admin_newsletters_path, notice: t("admin.newsletters.delete_success")
end end
def users def users
@@ -9,4 +50,20 @@ class Admin::NewslettersController < Admin::BaseController
send_file(File.join(zip.path), type: 'application/zip') send_file(File.join(zip.path), type: 'application/zip')
end end
def deliver
@newsletter = Newsletter.find(params[:id])
Mailer.newsletter(@newsletter).deliver_later
@newsletter.update(sent_at: Time.current)
redirect_to [:admin, @newsletter], notice: t("admin.newsletters.send_success")
end
private
def newsletter_params
newsletter_params = params.require(:newsletter)
.permit(:subject, :segment_recipient, :from, :body)
newsletter_params.merge(segment_recipient: newsletter_params[:segment_recipient].to_i)
end
end end

View File

@@ -142,7 +142,10 @@ namespace :admin do
resource :activity, controller: :activity, only: :show resource :activity, controller: :activity, only: :show
resources :newsletters, only: :index do resources :newsletters do
member do
post :deliver
end
get :users, on: :collection get :users, on: :collection
end end