"""
    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 = 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.",
        ),
    },
)