OWASP/railsgoat

View on GitHub
app/controllers/schedule_controller.rb

Summary

Maintainability
A
35 mins
Test Coverage
# frozen_string_literal: true
class ScheduleController < ApplicationController

  def create
    message = false

      if params[:schedule][:event_type] == "pto"
        sched = Schedule.new(schedule_params)
        sched.date_begin, sched.date_end = format_schedule_date(params[:date_range1])
        sched.user_id = current_user.id
        a = sched.date_end
        if sched.save
          message = true
        end
      end

    respond_to do |format|
      format.json { render json: {msg: message ? "success" : "failure" } }
    end
  end

  def get_pto_schedule
    begin
       schedules = current_user.paid_time_off.schedule
       jfs = []
       schedules.each do |s|
          hash = Hash.new
          hash[:id] = s[:id]
          hash[:title] = s[:event_name]
          hash[:start] = s[:date_begin]
          hash[:end] = s[:date_end]
          jfs << hash
       end
    rescue
    end
    respond_to do |format|
       format.json { render json: jfs.to_json }
    end
  end

  private

  # Returns a two part array consisting of dates
  # First value is the begin date and the second is the end date
  def format_schedule_date(date_array)
   begin
     vals = []
     return vals if date_array.empty?
     date_array.split("-").each do |s|
       date = Date.strptime(s.strip, "%m/%d/%Y")
       vals <<(date)
     end
   rescue ArgumentError
     return []
   end
     return vals
  end

  private

  def schedule_params
    params.require(:schedule).permit(:date_begin, :date_end, :event_desc, :event_name, :event_type)
  end
end