# coding: utf-8

from __future__ import absolute_import, division, print_function, unicode_literals

import datetime
from typing import List

import attr

from miwork.dt_code import SimpleUser
from miwork.dt_help import to_json_decorator


@to_json_decorator
@attr.s
class Building(object):
    """建筑物对象
    """
    building_id = attr.ib(type=str, default='')  # 建筑物ID
    description = attr.ib(type=str, default='')  # 建筑物的相关描述
    name = attr.ib(type=str, default='')  # 建筑物名称
    floors = attr.ib(type=List[str], default=attr.Factory(list))  # type: List[str] # 属于当前建筑物的所有楼层列表


@to_json_decorator
@attr.s
class Room(object):
    """会议室对象
    """
    room_id = attr.ib(type=str, default='')  # 会议室ID
    building_id = attr.ib(type=str, default='')  # 会议室所属建筑物ID
    building_name = attr.ib(type=str, default='')  # 会议室所属建筑物名称
    capacity = attr.ib(type=int, default=None)  # 会议室能容纳的人数
    description = attr.ib(type=str, default='')  # 会议室的相关描述
    display_id = attr.ib(type=str, default='')  # 会议室的展示ID
    floor_name = attr.ib(type=str, default='')  # 会议室所在楼层名称
    is_disabled = attr.ib(type=bool, default=False)  # 会议室是否不可用，若会议室不可用，则该值为 True，否则为 False
    name = attr.ib(type=str, default='')  # 会议室名称


@to_json_decorator
@attr.s
class RoomFreeBusy(object):
    """会议室忙闲时间段
    """
    start_time = attr.ib(type=datetime.datetime, default=None)
    end_time = attr.ib(type=datetime.datetime, default=None)
    uid = attr.ib(type=str, default=None)
    original_time = attr.ib(type=int, default=0)
    organizer_info = attr.ib(type=SimpleUser, default=None)
