class Admin::Legacy::Service::Families::LogsController < Admin::Legacy::Service::Controller
  def show
    render_success :ok, json: log_props(service_log)
  end

  def update
    if service_log.update(log_params)
      render_success :ok, json: log_props(service_log)
    else
      render_error :unprocessable_entity, errors: service_log
    end
  end

  def destroy
    if service_log.destroy
      render_success :ok
    else
      render_error :unprocessable_entity
    end
  end

  private
    def service_logs
      family.service_logs.includes(:family, :opportunity)
    end

    def service_log
      @service_log ||= service_logs.find_by(id: params[:id])
    end

    def family
      @family ||= current_school.families.find_by(id: params[:family_id])
    end

    def log_params
      params.permit(:hours, :notes, :datetime, :status, :school_year_id).merge(associations)
    end

    def opportunity
      @opportunity ||= current_school.service_opportunities
        .find_by(id: params[:opportunity_id])
    end

    def associations
      {
        author: current_user,
        opportunity: opportunity
      }
    end

    def log_props(log)
      {
        id: log.id,
        datetime: log.datetime,
        opportunity_id: log.opportunity_id,
        opportunity_name: log.opportunity.name,
        notes: log.notes,
        hours: log.hours,
        status: log.status,
        family_name: log.family.name,
        school_year_id: log.school_year_id,
        created_at: log.created_at_or_created_dt
      }
    end
end
