Sha256: eadba2373e8e5314171f5b21a84ef82caa3196b08ef8e68fb0d4433a9db766e9

Contents?: true

Size: 1.98 KB

Versions: 1

Compression:

Stored size: 1.98 KB

Contents

require_dependency 'appt/base_controller'

module Appt
  class ExternalCalendarsController < BaseController
    before_action :set_external_calendar, only: [:show, :edit, :update]

    def new
      @external_calendar = ExternalCalendar.new
    end

    def create
      @external_calendar = ExternalCalendar.new(create_params)
      @external_calendar.sync_metadata
      if @external_calendar.save
        redirect_to external_calendar_path(@external_calendar), notice: 'Your external calendar was created.'
      else
        render :new
      end
    end

    def show
      @calendars = @external_calendar.calendars.order(:name).page(params[:calendars_page])
      @blocks = @external_calendar.blocks.includes(:calendar).order(:day, :start, :end).page(params[:blocks_page])
    end

    def edit
    end

    def update
      method = params[:method]
      notice = 'Your external calendar was updated.'

      case method
      when 'sync'
        @target_calendar = Calendar.find_by_id(params[:external_calendar_sync][:calendar_id])

        if @target_calendar
          @external_calendar.sync @target_calendar
          notice = "Your external calendar's blocks were refreshed."
        else
          flash.alert = 'You must select a target calendar.'
        end
      when 'sync_metadata'
        @external_calendar.sync_metadata
        notice = "Your external calendar's metadata was refreshed."
      else
        @external_calendar = update_params
      end

      if @external_calendar.save
        redirect_to external_calendar_path(@external_calendar), notice: notice
      else
        render :show
      end
    end

    def index
      @external_calendars = ExternalCalendar.order(name: :asc).page(params[:page])
    end

  private

    def set_external_calendar
      @external_calendar = ExternalCalendar.find(params[:id])
    end

    def create_params
      params.require(:external_calendar).permit(:url, :name)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
appt-0.0.1.beta.3 app/controllers/appt/external_calendars_controller.rb