def prepare_input_measures(property_recommendations, goal):
    """
    Basic function to convert recommendations_to_upload to a format that is
    suitable for the optimiser - large
    :param property_recommendations:   object containing the recommendations, created in the plan trigger api
    :param goal:    goal to be optimised for, should be one of the keys in gain_map. E.g. if the gain is SAP points,
                    the goal should reflect that desired gain
    :return:    Nested list of input measures
    """

    goal_map = {
        "Increase EPC": "sap_points"
    }

    goal_key = goal_map[goal]
    if not goal_key:
        raise NotImplementedError("Not implemented this gain type - investigate me")

    input_measures = []
    for recs in property_recommendations:

        if recs[0]["type"] == "solar_pv":
            # if the recommendation is a solar recommendation with a battery, we exclude it from the optimisation.
            recs = [r for r in recs if ~r["has_battery"]]

        input_measures.append(
            [
                {
                    "id": rec["recommendation_id"],
                    "cost": rec["total"],
                    "gain": rec[goal_key],
                    "type": rec["type"]
                }
                for rec in recs
            ]
        )

    return input_measures
