//--------------------------------------------------------------------
//     此代码由T4模板自动生成  byzhouhang 20210918
//	   生成时间 2022-04-25 09:46:34 
//     对此文件的更改可能会导致不正确的行为，并且如果重新生成代码，这些更改将会丢失。
//--------------------------------------------------------------------
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Domain.Share;

namespace IRaCIS.Core.Application.ViewModel
{
    /// <summary> SystemNoticeView  列表视图模型 </summary>
    public class SystemNoticeView : SystemNoticeBasicInfo
    {
        public Guid? PublishedUserId { get; set; }

        public DateTime? PublishedTime { get; set; }

        public string PublishUserName { get; set; }


        public DateTime CreateTime { get; set; }
        public Guid CreateUserId { get; set; }

        public string CreateUserName { get; set; }


        public DateTime UpdateTime { get; set; }
        public Guid UpdateUserId { get; set; }

        public string FullFilePath { get; set; }

        public SystemNotice_NoticeStateEnum ActualNoticeStateEnum

        {
            get
            {
                if (NoticeStateEnum == SystemNotice_NoticeStateEnum.HavePublished && EndDate != null && EndDate < DateTime.Now)
                {
                    return SystemNotice_NoticeStateEnum.HaveExpired;
                }
                else
                {
                    return NoticeStateEnum;
                }
            }
        }

        public List<UserTypeSimpleDTO> NoticeUserTypeList { get; set; }

    }

    ///<summary>SystemNoticeQuery  列表查询参数模型</summary>
    public class SystemNoticeQuery : PageInput
    {
        public string NoticeContent { get; set; } = string.Empty;

        public string FileName { get; set; } = string.Empty;

        public SystemNotice_NoticeTypeEnum? NoticeTypeEnum { get; set; }

        public SystemNotice_NoticeLevelEnum? NoticeLevelEnum { get; set; }

        public SystemNotice_ApplicableProjectEnum? ApplicableProjectEnum { get; set; }

        public SystemNotice_NoticeModeEnum? NoticeModeEnum { get; set; }

        public SystemNotice_NoticeStateEnum? NoticeStateEnum { get; set; }


    }

    public class SystemNoticeBasicInfo
    {
        public Guid? Id { get; set; }
        public string NoticeContent { get; set; }

        public SystemNotice_NoticeTypeEnum NoticeTypeEnum { get; set; }

        public SystemNotice_NoticeLevelEnum NoticeLevelEnum { get; set; }

        public SystemNotice_ApplicableProjectEnum ApplicableProjectEnum { get; set; }

        public SystemNotice_NoticeModeEnum NoticeModeEnum { get; set; }

        public SystemNotice_NoticeStateEnum NoticeStateEnum { get; set; }

        public DateTime? StartDate { get; set; }
        public DateTime? EndDate { get; set; }
        public string FileName { get; set; }
        public string Path { get; set; }
    }

    ///<summary> SystemNoticeAddOrEdit  列表查询参数模型</summary>
    public class SystemNoticeAddOrEdit : SystemNoticeBasicInfo
    {


        public Guid[] NoticeUserTypeIdList { get; set; }
    }


    public class SystemNoticeReadDTO : SystemNoticeBasicInfo
    {
        public DateTime CreateTime { get; set; }
        public Guid CreateUserId { get; set; }

        public string CreateUserName { get; set; }

        public string FullFilePath { get; set; }

        public bool IsRead { get; set; }


        public Guid? PublishedUserId { get; set; }

        public DateTime? PublishedTime { get; set; }

        public string PublishUserName { get; set; }

        public SystemNotice_NoticeStateEnum ActualNoticeStateEnum

        {
            get
            {
                if (NoticeStateEnum == SystemNotice_NoticeStateEnum.HavePublished && EndDate != null && EndDate < DateTime.Now)
                {
                    return SystemNotice_NoticeStateEnum.HaveExpired;
                }
                else
                {
                    return NoticeStateEnum;
                }
            }
        }

    }

    public class SystemNoticeUserTypeView
    {
        public Guid Id { get; set; }
        public Guid SystemNoticeId { get; set; }
        public DateTime CreateTime { get; set; }
        public Guid CreateUserId { get; set; }
        public Guid UserTypeId { get; set; }
    }


}


