from marshmallow import fields, validate, Schema


class MessageSchema(Schema):
    message = fields.Str()


class FreeTimeSchema(Schema):
    id = fields.Integer()
    start_date = fields.DateTime(required=True)
    end_date = fields.DateTime(required=True)


class ListOfFreeTimesSchema(Schema):
    free_times = fields.List(fields.Nested(FreeTimeSchema))


class ListOfTermOfDefenceSchema(Schema):
    term_of_defences = fields.List(fields.Nested(FreeTimeSchema))


class TimeAvailabilityCreateSchema(Schema):
    start_date = fields.DateTime(required=True)
    end_date = fields.DateTime(required=True)
    project_supervisor_id = fields.Integer(required=True)  # temporary field it will be removed in the future


# temporary class it will be removed in the future
class TemporaryProjectSupervisorSchema(Schema):
    id = fields.Integer(required=True)

class ProjectSupervisorTermQuerySchema(Schema):
    id = fields.Integer(required=True)
    term = fields.Integer(required=True, validate=validate.OneOf([1, 2]))