/*
*  Copyright 2019-2020 Zheng Jie
*
*  Licensed under the Apache License, Version 2.0 (the "License");
*  you may not use this file except in compliance with the License.
*  You may obtain a copy of the License at
*
*  http://www.apache.org/licenses/LICENSE-2.0
*
*  Unless required by applicable law or agreed to in writing, software
*  distributed under the License is distributed on an "AS IS" BASIS,
*  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
*  See the License for the specific language governing permissions and
*  limitations under the License.
*/
package com.usky.meeting.service.dto;

import com.alibaba.fastjson.annotation.JSONField;
import com.alibaba.fastjson.serializer.ToStringSerializer;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.usky.meeting.domain.MeetingDevice;
import com.usky.meeting.domain.MeetingFile;
import com.usky.meeting.service.dto.DmMeetingRoomDto;
import com.usky.meeting.domain.SysUser;
import lombok.Data;
import org.apache.catalina.LifecycleState;

import java.io.Serializable;
import java.sql.Timestamp;
import java.time.LocalDateTime;
import java.util.Set;

/**
* @website https://el-admin.vip
* @description /
* @author shiguangji
* @date 2021-03-15
**/
@Data
public class DmMeetingDto implements Serializable {

    /** 防止精度丢失 */
    @JSONField(serializeUsing = ToStringSerializer.class)
    @JsonFormat(shape = JsonFormat.Shape.STRING)
    private Long meetingId;

    /** 会议议题 */
    private String meetingName;

    /** 会议室id */
    private DmMeetingRoomDto room;

    private Long roomId;

    private String roomName;
    /** 会议介绍 */
    private String meetingDescribe;

    /** 会议类型(如研讨会、部门会议等) */
    private String meetingType;

    /** 参与部门 */
    private DeptDto dept;

    /** 发起人id */
    private DmUserDto initiatorUser;

    private Set<SysUser> users;


    private Set<MeetingDevice> dmDevices;

    /** 开始时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String startDate;

    /** 结束时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private String endDate;

    /** 审批状态(0-审批中 1-审批通过 2-审批驳回) */
    private Integer approveStatus;

    /** 审批者意见 */
    private String approveSuggest;

    /** 实际签到人数 */
    private Integer actualCount;

    /** 应到人数/计划人数 */
    private Integer planCount;

    /** 是否延期(会议是否需要延期30分钟)(0-否 1-是) */
    private Integer isDelay;

    /** 备注 */
    private String remark;

    /** 会议状态(0-未开始 1-进行中 2-已结束) */
    private Integer meetingStatus;

    /** 关联任务id */
    private String taskId;

    /** 任务实例id */
    private String procInstId;

    /** 是否取消(0-否 1-是) */
    private Integer isCancel;

    /** 通知类型(APP/Email/短信) */
    private String sendType;

    /** 会议性质(1-高层会议/0-普通会议) */
    private String meetingProp;

    /** 是否需要审批(0-否 1-是) */
    private Integer isApprove;

    /** 高层会议-指定用户 */
    private Long gcAssignUser;

    /** 会议模式 */
    private Integer meetingMode;

    private Set<Long> gcAssignUsers;

    private Set<Long> approveUsers;

    private Set<DmUserDto> userList;

    private Set<MeetingFile> meetingFileList;
}