"""
    schemas: Mission plan (un-complied) geenrated by the  Autonomy Engine
    sent to the respective platform's C2 to compile into a platform-specific
    mission plan.
"""
# from . import api, full_message_schema
# from flask_restx import fields

action_schema = {
    "type": "object",
    "properties": {
        "action": {
            "type": "string",
            "description": "Autonomy Engine's action from `move`, `payload`,"
            + " `dive`, `send_hits`, `scanline`, `scanpoint`.",
            "example": "move",
        },
        "flight_style": {
            "type": "string",
            "description": "Platform-specific modes/flight styles to perform"
            + " next action",
            "example": "orbit",
        },
        "latitude_waypoint": {
            "type": "number",
            "description": "Next waypoint, x-coordinate",
            "example": -4.187143188645706,
        },
        "longitude_waypoint": {
            "type": "number",
            "description": "Next waypoint, y-coordinate",
            "example": 50.37072283932642,
        },
        "altitude": {
            "type": "number",
            "description": "Altitude of next action",
            "example": 15.0,
        },
        "depth": {
            "type": "number",
            "description": "Depth of next action",
            "example": 15.0,
        },
        "activate_payload": {
            "type": "boolean",
            "description": "To activate/deactivate sensor for Autosub "
            + "Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`",
            "example": True,
        },
        "send_environmental_data": {
            "type": "boolean",
            "description": "To trigger the platform to send list of observations"
            + " if any found",
            "example": False,
        },
    },
    "required": [
        "action",
        "latitude_waypoint",
        "longitude_waypoint",
    ],
}

mission_plan_schema = {
    "allOf": [{"$ref": "#/components/schemas/Message"}],
    "type": "object",
    "properties": {
        "plan_ID": {"type": "integer"},
        "platform_serial": {"type": "string"},
        "plan": {
            "type": "array",
            "items": action_schema,
        },
    },
    "required": ["plan_ID", "platform_serial", "plan"],
}

# action_schema = api.model(
#     "AutonomyEngineAction",
#     {
#         "action": fields.String(
#             required=True,
#             description="Autonomy Engine's action from `move`, `payload`,"
#             + " `dive`, `send_hits`, `scanline`, `scanpoint`.",
#             example="move",
#         ),
#         "flight_style": fields.String(
#             required=False,
#             description="Platform-specific modes/flight styles to perform"
#             + " next action",
#             example="orbit",
#         ),
#         "latitude_waypoint": fields.Float(
#             required=True,
#             description="Next waypoint, x-coordinate",
#             example=-4.187143188645706,
#         ),
#         "longitude_waypoint": fields.Float(
#             required=True,
#             description="Next waypoint, y-coordinate",
#             example=50.37072283932642,
#         ),
#         "altitude": fields.Float(
#             required=False,
#             description="Altitude of next action",
#             example=15.0,
#         ),
#         "depth": fields.Float(
#             required=False,
#             description="Depth of next action",
#             example=15.0,
#         ),
#         "activate_payload": fields.Boolean(
#             required=False,
#             description="To activate/deactivate sensor for Autosub "
#             + "Hover-1 --> `MBES` sensor and for EcoSUB --> `Sidescan`",
#             example=True,
#         ),
#         "send_environmental_data": fields.Boolean(
#             required=False,
#             description="To trigger the platform to send list of observations"
#             + " if any found",
#             example=False,
#         ),
#     },
# )

# mission_plan_schema = api.model(
#     "MissionPlan",
#     {
#         "message": fields.Nested(
#             full_message_schema,
#             required=True,
#             description="Message header",
#         ),
#         "plan_ID": fields.Integer(
#             required=True,
#             description="Identifier of given mission sequence planned",
#             example=1,
#         ),
#         "platform_serial": fields.String(
#             required=True,
#             description="Serial of target platform to send mission to",
#             example="reav-60",
#         ),
#         "plan": fields.List(
#             fields.Nested(action_schema),
#             required=True,
#             description="Sequence of actions/instructions generated by the "
#             + " Autonomy Engine that should be compiled by the respective C2.",
#         ),
#     },
# )