class Admin::TimeCard::RequestsController < Admin::Controller
  def index
    render_success :ok, json: time_card_requests.map { |c| request_props(c) }
  end

  def show
    render_success :ok, json: request_props(time_card_request)
  end

  def update
    if time_card_request.update(request_params)
      render_success :ok, json: request_props(time_card_request)
    else
      render_error :unprocessable_entity, errors: time_card_request
    end
  end

  def destroy
    if time_card_request.destroy
      render_success :ok
    else
      render_error :unprocessable_entity, errors: time_card_request
    end
  end

  private
    def time_card_requests
      current_school.time_card_requests
    end

    def time_card_request
      @time_card_request ||= time_card_requests.find_by(id: params[:id])
    end

    def request_params
      params.permit(
        :user_id,
        :date,
        :days,
        :hours,
        :task_id,
        :comments,
        :status,
        :author_id
      )
    end

    def request_props(time_card_request)
      {
        id: time_card_request.id,
        user_id: time_card_request.user_id,
        employee_name: time_card_request.user.full_name(:reverse),
        date: time_card_request.date,
        days: time_card_request.days,
        hours: time_card_request.hours,
        task_id: time_card_request.task_id? ? time_card_request.task_id : nil,
        task_name: time_card_request.task&.name,
        comments: time_card_request.comments,
        status: time_card_request.status,
        author_id: time_card_request.author_id,
        created_at: time_card_request.created_at
      }
    end
end
