class GroupsController < ApplicationController

  before_filter :require_login
  before_filter :find_accessible_group, only: [:events, :show]

  # Intialize new object to create group.
  def new
    @group = Group.new
    render layout: !request.xhr?
  end

  # Create new group for current user.
  def create
    @group = current_user.owned_groups.new(group_params)
    respond_to do |format|
      if @group.save
        format.js {render 'save'}
      else
        message = "Group was not Created."
        format.js { redirect_via_turbolinks_to new_group_path, notice: message}
      end
    end
  end

  # Find the group for editing.
  def edit
    @group = current_user.owned_groups.find(params[:id])
    render layout: false
  end

  # Find and update the group.
  def update
    @group = current_user.owned_groups.find(params[:id])
    respond_to do |format|
      if @group.update_attributes(group_params)
        format.js {render 'save'}
      else
        message = "Group was not updated."
        format.js { redirect_via_turbolinks_to new_group_path, notice: message}
      end
    end
  end

  # Find and delete the group.
  def destroy
    Group.find(params[:id]).destroy
    respond_to do |format|
      format.js
    end
  end

  # Fetch all events between start date and end date.
  def events
    @start_date = Date.parse(params[:start])
    @end_date = Date.parse(params[:end])
    @events = @group.events.for_date_range(@start_date, @end_date)
    respond_to do |format|
      format.json
    end
  end

  # Find the group.
  def show
    @group = current_user.groups.find(params[:id])
    respond_to do |format|
      format.json { render :partial => 'chat/chat_members', :locals => {:group => @group}}
    end
  end

  private
  def find_accessible_group
    @group = current_user.groups.find(params[:id])
  end

  def group_params
    permitted_parameters = params.required(:group).permit(:name, :description, :user_ids)
    permitted_parameters[:user_ids] = (permitted_parameters[:user_ids].split(',') | [current_user.id]).join(',')
    permitted_parameters
  end
end
