using PowerEasy.WebFuture.DataMigrations.Foundation.Enum;
using PowerEasy.WebFuture.DataMigrations.Foundation.Enum.ContentManage;

namespace PowerEasy.WebFuture.DataMigrations.MigrationProgramme.SiteFactoryProgramme.Model
{
    /// <summary>
    /// 软件。
    /// </summary>
    public class Soft
    {
        /// <summary>
        /// 内容Id。
        /// </summary>
        public int ContentId { get; set; }

        /// <summary>
        /// 原内容Id。
        /// </summary>
        public int SourceId { get; set; } = 0;

        /// <summary>
        /// 软件名称。
        /// </summary>
        public string Title { get; set; }

        /// <summary>
        /// 内容链接地址。
        /// </summary>
        public string LinkUrl { get; set; } = string.Empty;

        /// <summary>
        /// 软件地址。
        /// </summary>
        public string DownloadUrl { get; set; }

        /// <summary>
        /// 软件介绍。
        /// </summary>
        public string Content { get; set; }

        /// <summary>
        /// 节点Id。
        /// </summary>
        public int? NodeId { get; set; }

        /// <summary>
        /// 一级节点Id。
        /// </summary>
        public int? RootNodeID { get; set; } = 0;

        /// <summary>
        /// 二级节点Id。
        /// </summary>
        public int? MasterNodeID { get; set; } = 0;

        /// <summary>
        /// 所属站点Id。
        /// </summary>
        public int? BelongSiteId { get; set; }

        /// <summary>
        /// 内容模型Id。
        /// </summary>
        public int? MoldId { get; set; }

        /// <summary>
        /// 源站点Id。
        /// </summary>
        public int? SourceSiteId { get; set; } = null;

        /// <summary>
        /// 实软件Id。
        /// </summary>
        public int? ActualContentId { get; set; } = null;

        /// <summary>
        /// 发文部门Id。
        /// </summary>
        public int? DepartmentId { get; set; } = null;

        /// <summary>
        /// 副名称。
        /// </summary>
        public string Subheading { get; set; }

        /// <summary>
        /// 完整名称。
        /// </summary>
        public string TitleIntact { get; set; }

        /// <summary>
        /// 标题颜色。
        /// </summary>
        public string TitleColor { get; set; } = string.Empty;

        /// <summary>
        /// 标题字形。
        /// </summary>
        public FontStyle TitleFontStyle { get; set; } = FontStyle.Regular;

        /// <summary>
        /// 索引号。
        /// </summary>
        public string Identifier { get; set; } = string.Empty;

        /// <summary>
        /// 更新说明。
        /// </summary>
        public string ReleaseNotes { get; set; } = string.Empty;

        /// <summary>
        /// 软件大小。
        /// </summary>
        public long SoftSize { get; set; } = 0;

        /// <summary>
        /// 运行平台
        /// </summary>
        public string OperatingSystem { get; set; } = string.Empty;

        /// <summary>
        /// 软件版本。
        /// </summary>
        public string SoftVersion { get; set; }

        /// <summary>
        /// 软件授权。
        /// </summary>
        public int? LicenseType { get; set; } = null;

        /// <summary>
        /// 软件类型。
        /// </summary>
        public int? SoftType { get; set; } = null;

        /// <summary>
        /// 软件语言。
        /// </summary>
        public int? SoftLanguage { get; set; } = null;

        /// <summary>
        /// 软件评级。
        /// </summary>
        public int? SoftStars { get; set; } = null;

        /// <summary>
        /// 解压密码
        /// </summary>
        public string DecompressPassword { get; set; }

        /// <summary>
        /// 备案号
        /// </summary>
        public string RegistrationNumber { get; set; } = string.Empty;

        /// <summary>
        /// 开发商
        /// </summary>
        public string Developer { get; set; } = string.Empty;

        /// <summary>
        /// 作者。
        /// </summary>
        public string Author { get; set; }

        /// <summary>
        /// 软件来源。
        /// </summary>
        public string CopyFrom { get; set; }

        /// <summary>
        /// 演示地址
        /// </summary>
        public string DemoUrl { get; set; }

        /// <summary>
        /// 注册地址
        /// </summary>
        public string RegistrationURL { get; set; } = string.Empty;

        /// <summary>
        /// 简介。
        /// </summary>
        public string Intro { get; set; }

        /// <summary>
        /// 关键字。
        /// </summary>
        public string Keyword { get; set; }

        /// <summary>
        /// 封面图片。
        /// </summary>
        public string FeaturedImage { get; set; }

        /// <summary>
        /// 发布形式。
        /// </summary>
        public string PublicationForm { get; set; } = string.Empty;

        /// <summary>
        /// 涉及秘密事项。
        /// </summary>
        public string SecretMatters { get; set; } = string.Empty;

        /// <summary>
        /// 所在部门。
        /// </summary>
        public string Department { get; set; } = string.Empty;

        /// <summary>
        /// 允许评论。
        /// </summary>
        public bool EnabledComment { get; set; } = false;

        /// <summary>
        /// 下载数。
        /// </summary>
        public int DownloadCount { get; set; } = 0;

        /// <summary>
        /// 点击数。
        /// </summary>
        public int Hits { get; set; }

        /// <summary>
        /// PC点击数。
        /// </summary>
        public int PcHits { get; set; } = 0;

        /// <summary>
        /// Pad点击数。
        /// </summary>
        public int PadHits { get; set; } = 0;

        /// <summary>
        /// Phone点击数。
        /// </summary>
        public int PhoneHits { get; set; } = 0;

        /// <summary>
        /// 微信点击数。
        /// </summary>
        public int WeiXinHits { get; set; } = 0;

        /// <summary>
        /// 审核状态。
        /// </summary>
        public Status Status { get; set; }

        /// <summary>
        /// 节点关闭前审核状态。
        /// </summary>
        public Status? LastStatus { get; set; } = null;

        /// <summary>
        /// 归档状态。
        /// </summary>
        public bool Archived { get; set; } = false;

        /// <summary>
        /// 归档时间。
        /// </summary>
        public DateTime? ArchivedTime { get; set; } = null;

        /// <summary>
        /// 优先级。
        /// </summary>
        public int Priority { get; set; }

        /// <summary>
        /// 优先级复位日期。
        /// </summary>
        public DateTime? TopPriorityDate { get; set; } = null;

        /// <summary>
        /// 内容标识符。
        /// </summary>
        public string ContentIdentifier { get; set; } = string.Empty;

        /// <summary>
        /// 稿件来源（报送-1，推送-2）。
        /// </summary>
        public SourceType SourceType { get; set; } = SourceType.HomeStation;

        /// <summary>
        /// 录入者。
        /// </summary>
        public string Inputter { get; set; }

        /// <summary>
        /// 投稿人Id。
        /// </summary>
        public int UserId { get; set; } = 0;

        /// <summary>
        /// 投稿时间。
        /// </summary>
        public DateTime? SubmissionTime { get; set; } = null;

        /// <summary>
        /// 发布时间。
        /// </summary>
        public DateTime PublishTime { get; set; }

        /// <summary>
        /// 创建时间。
        /// </summary>
        public DateTime CreateTime { get; set; }

        /// <summary>
        /// 更新时间。
        /// </summary>
        public DateTime UpdateTime { get; set; }

        /// <summary>
        /// 稿件状态改变的时间。
        /// </summary>
        /// <remarks>用来表示采用时间或退稿时间。</remarks>
        public DateTime? StatusUpdateTime { get; set; }

        /// <summary>
        /// 已推送到微博。
        /// </summary>
        public bool PushToWeibo { get; set; } = false;

        /// <summary>
        /// 是否已推送到下级站点/站群。
        /// </summary>
        public bool? IsPushed { get; set; } = null;

        /// <summary>
        /// 是否已报送到上级站点/站群。
        /// </summary>
        public bool? IsSubmited { get; set; } = false;

        /// <summary>
        /// 发送到的目标节点目录。
        /// </summary>
        public string SentToTargetNodeDirectory { get; set; } = string.Empty;

        /// <summary>
        /// 来源的目标节点目录。
        /// </summary>
        public string SourceNodeDirectory { get; set; } = string.Empty;

        /// <summary>
        /// 目标站点ID。
        /// </summary>
        public int? SiteInterfaceTargetSiteId { get; set; } = null;

        /// <summary>
        /// 目标站点名称。
        /// </summary>
        public string SiteInterfaceTargetSiteName { get; set; } = string.Empty;

        /// <summary>
        /// 目标节点ID。
        /// </summary>
        public int? SiteInterfaceTargetNodeId { get; set; } = null;

        /// <summary>
        /// 目标节点名称。
        /// </summary>
        public string SiteInterfaceTargetNodeName { get; set; } = string.Empty;

        /// <summary>
        /// 目标平台上的内容ID。
        /// </summary>
        public int? SiteInterfaceTargetContentId { get; set; } = null;

        /// <summary>
        /// 报送出去的外站群接口Id。
        /// </summary>
        public int? SiteInterfaceId { get; set; } = null;

        /// <summary>
        /// 报送过来的外站群Id。
        /// </summary>
        public int? ExternalSiteId { get; set; } = null;

        /// <summary>
        /// 报送过来的外站群的站点Id。
        /// </summary>
        public int? ExternalSourceSiteId { get; set; } = null;

        /// <summary>
        /// 来源节点ID。
        /// </summary>
        public int? ExternalSourceNodeId { get; set; } = null;

        /// <summary>
        /// 来源平台上的内容ID。
        /// </summary>
        public int? ExternalSourceContentId { get; set; } = null;

        /// <summary>
        /// 图片数量。
        /// </summary>
        public int PhotoQuantity { get; set; } = 0;

        /// <summary>
        /// 音频数量。
        /// </summary>
        public int AudioQuantity { get; set; } = 0;

        /// <summary>
        /// 多媒体数量。
        /// </summary>
        public int MultimediaQuantity { get; set; } = 0;

        /// <summary>
        /// 字数。
        /// </summary>
        public int? WordQuantity { get; set; } = 0;

        /// <summary>
        /// 原数据库信息Id。
        /// </summary>
        public int HistoryId { get; set; }

        /// <summary>
        /// 内容页模板。
        /// </summary>
        public string ContentViewPath { get; set; } = string.Empty;

        /// <summary>
        /// 自动同步。
        /// </summary>
        public bool AutoSync { get; set; } = false;

        /// <summary>
        /// IP访问限定类型。
        /// </summary>
        public IPLimitType IPLimitType { get; set; } = IPLimitType.AllowAll;

        /// <summary>
        /// IP访问限定设置。
        /// </summary>
        public string IPLimitSetting { get; set; } = string.Empty;

        /// <summary>
        /// 审核步骤状态。
        /// </summary>
        public int AuditProcessStepStatus { get; set; } = 0;

        /// <summary>
        /// 是否退回重审。
        /// </summary>
        public bool IsNotApprove { get; set; } = false;

        /// <summary>
        /// 关联内容数量。
        /// </summary>
        public int RelationCount { get; set; } = 0;

        /// <summary>
        /// 内容路由Url。
        /// </summary>
        public string ContentRouteUrl { get; set; } = string.Empty;

        /// <summary>
        /// 点赞数。
        /// </summary>
        public int Likes { get; set; } = 0;

        /// <summary>
        /// 收藏数。
        /// </summary>
        public int Favorites { get; set; } = 0;

        /// <summary>
        /// 评论数。
        /// </summary>
        public int CommentCount { get; set; } = 0;

        /// <summary>
        /// 第三方系统同步状态。
        /// </summary>
        public ExternalSyncStatus ExternalSyncStatus { get; set; } = ExternalSyncStatus.Not;

        /// <summary>
        /// 是否强制关闭敏感信息过滤功能。
        /// </summary>
        public bool IsCloseSensitiveInformationFiltering { get; set; } = false;

        /// <summary>
        /// 跨模型报/推送、复制时的源内容基础模型。
        /// </summary>
        public MoldType? SourceMoldType { get; set; } = null;

        /// <summary>
        /// 目标平台上的内容模型。
        /// </summary>
        /// <remarks>外站群报送时影子软件、接收端软件使用。</remarks>
        public MoldType? TargetMoldType { get; set; } = null;

        /// <summary>
        /// 稿费金额。
        /// </summary>
        public decimal Remuneration { get; set; } = 0;

        /// <summary>
        /// 稿费状态。
        /// </summary>
        public RemunerationStatus RemunerationStatus { get; set; } = RemunerationStatus.WithoutPay;

        /// <summary>
        /// 相关图片。
        /// </summary>
        public string SoftRelatedPhotos { get; set; } = string.Empty;

        /// <summary>
        /// 定时发布时间。
        /// </summary>
        public DateTime? TimedPublishTime { get; set; } = null;

        /// <summary>
        /// 定时取消发布时间。
        /// </summary>
        public DateTime? TimedApproveWaitTime { get; set; } = null;

        /// <summary>
        /// 报送状态。
        /// </summary>
        public PushState? PushState { get; set; } = null;

        /// <summary>
        /// 是否有待审核评论。
        /// </summary>
        public bool AnyPendingAuditComment { get; set; } = false;

        /// <summary>
        /// 最新评论时间。
        /// </summary>
        public DateTime? LatestCommentTime { get; set; } = null;

        /// <summary>
        /// 用于排序的点击数。（点击数/10取整）。
        /// </summary>
        public int SortHits { get; set; } = 0;

        /// <summary>
        /// 投递到微信。
        /// </summary>
        public bool PushToWeixin { get; set; } = false;

        /// <summary>
        /// 内容访问类型。
        /// </summary>
        public ContentPurviewType PurviewType { get; set; } = ContentPurviewType.Open;

        /// <summary>
        /// 扩展内容（用于后台扩展字段内容的保存）。
        /// </summary>
        public string ExtendContent { get; set; } = "<ExtendContent />";

        /// <summary>
        /// 通过全文检索结果检测的时间。
        /// 通过全文检索结果检测。
        /// </summary>
        public PassFulltextSearchType PassFulltextSearch { get; set; } = PassFulltextSearchType.UnCheck;
    }
}
