Files
grecia/app/controllers/admin/newsletters_controller.rb
Bertocq 4becd0eb35 Change Newsletter's segment_recipient to string
Why:

Newsletter attribute `segment_recipient` is an integer to be used as
enum. There's no advantage to store a number instead of an string if the
ammount of elements in the table is not going to be huge, or we can take
advantage of using an enum.

Also maintaining both Newsletters enum paired with UserSegments::SEGMENTS
would be a maintenance burden.

How:

* Migration to change segment_recipient column from integer to string
* Removing enumeration from Newsletter model class
* Using UserSegments::SEGMENTS instead of Newsletter.segment_recipients
or integer values
2018-02-21 11:46:11 +01:00

62 lines
1.3 KiB
Ruby

class Admin::NewslettersController < Admin::BaseController
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
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
params.require(:newsletter).permit(:subject, :segment_recipient, :from, :body)
end
end