using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Myshipping.Application
{
    /// <summary>
    /// 
    /// </summary>
    public class TaskManageOrderMessageMainInfo
    {
        /// <summary>
        /// 任务类型
        /// </summary>
        public TaskBaseTypeEnum TaskType { get; set; }

        /// <summary>
        /// 任务来源
        /// </summary>
        public TaskSourceEnum TaskSource { get; set; }

        /// <summary>
        /// 船公司代号
        /// </summary>
        public string CarrierId { get; set; }
        /// <summary>
        /// 任务标题
        /// </summary>
        [MaxLength(150), Required(ErrorMessage = "必填")]
        public string TaskTitle { get; set; }

        /// <summary>
        /// 任务描述
        /// </summary>
        [MaxLength(200), Required(ErrorMessage = "必填")]
        public string TaskDesp { get; set; }

        /// <summary>
        /// 订舱业务主键(非必填,推送任务的系统可以明确当票对应的订舱主键需要填入)
        /// </summary>
        public string BookingOrderNo { get; set; }

        /// <summary>
        /// 主单号
        /// </summary>
        public string MBlNo { get; set; }

        /// <summary>
        /// 反馈结果
        /// </summary>
        public string ResultNote { get; set; }

        /// <summary>
        /// 是否异常 1-异常 0-未异常
        /// </summary>
        public int IsException { get; set; } = 0;

        /// <summary>
        /// 任务对应操作人ID
        /// </summary>
        public string TaskUserId { get; set; }

        /// <summary>
        /// 任务对应操作人名称
        /// </summary>
        public string TaskUserName { get; set; }

        /// <summary>
        /// 任务对应部门代码
        /// </summary>
        public string TaskOrgCode { get; set; }

        /// <summary>
        /// 任务对应部门名称
        /// </summary>
        public string TaskOrgName { get; set; }

        /// <summary>
        /// 费用明细(当业务类型是INVOICE_BILL_MAIL-航次账单
        /// </summary>
        public List<TaskManageOrderFeeInfo> FeeList { get; set; }

        /// <summary>
        /// 装船通知(SI)详情(当业务类型是SI_FEEDBACK时,需要填写装船通知详情)
        /// </summary>
        public TaskManageOrderSIFeedBackInfo SIFeedBack { get; set; }

        /// <summary>
        /// 装船通知与提单草单内容对比列表(当业务类型是DRAFT时)
        /// </summary>
        public List<TaskManageOrderSIDraftCompareInfo> SIDraftCompareList { get; set; }

        /// <summary>
        /// VGM反馈详情列表
        /// </summary>
        public List<TaskManageOrderVGMFeedBackInfo> VGMFeedBackList { get; set; }

        /// <summary>
        /// 附件列表
        /// </summary>
        public List<TaskManageOrderFileInfo> FileList { get; set; }

        /// <summary>
        /// 邮件列表
        /// </summary>
        public List<TaskManageOrderMailInfo> EmailList { get; set; }

        /// <summary>
        /// 单票账单
        /// </summary>
        public TaskManageOrderPerBillInfo PerBillInfo { get; set; }

        /// <summary>
        /// 序列化报文详情
        /// </summary>
        public TaskManageOrderExtMessageInfo SerialMsgInfo { get; set; }
    }
}