Sha256: 4dfa426976440720ba95b192da054266cefdb6937fa15ae255917c44623c8c83

Contents?: true

Size: 1.8 KB

Versions: 2

Compression:

Stored size: 1.8 KB

Contents

require_dependency "chaskiq/application_controller"

module Chaskiq
  class SubscribersController < ApplicationController

    before_filter :find_base_models

    layout "chaskiq/empty"

    def show
      #TODO, we should obfustate code
      find_subscriber
      render "edit"
    end

    def new
      @subscriber = @campaign.list.subscribers.new
    end

    def edit
      find_subscriber
    end

    def update
      find_subscriber
      if @subscriber.update_attributes(resource_params) && @subscriber.errors.blank?
        flash[:notice] = "you did it!"
        @subscriber.suscribe! unless @subscriber.subscribed?
        redirect_to campaign_path(@campaign)
      else
        render "edit"
      end
    end

    def create
      @subscriber = @campaign.list.subscribers.create(resource_params)
      if @subscriber.errors.blank?
        flash[:notice] = "you did it!"
        redirect_to campaign_path(@campaign)
      else
        render "new"
      end
    end

    def delete
      find_subscriber
    end

    def destroy
      find_subscriber
      begin
        if @subscriber.unsuscribe!
          flash[:notice] = "Thanks, you will not receive more emails from this newsletter!"
          redirect_to campaign_path(@campaign)
        end
      rescue
        flash[:notice] = "Thanks, you will not receive more emails from this newsletter!"
        redirect_to campaign_path(@campaign)
      end
    end


  protected

    def find_subscriber
      @subscriber = @campaign.list.subscribers.find_by(email: URLcrypt.decode(params[:id]))
    end

    def find_base_models
      @campaign = Chaskiq::Campaign.find(params[:campaign_id])
      @list = @campaign.list
    end


    def resource_params
      return [] if request.get?
      params.require(:subscriber).permit(:email, :name, :last_name)
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
chaskiq-0.0.3 app/controllers/chaskiq/subscribers_controller.rb
chaskiq-0.0.2 app/controllers/chaskiq/subscribers_controller.rb