using Microsoft.AspNetCore.Mvc.ModelBinding.Validation; using Microsoft.EntityFrameworkCore; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace bitforum.Models.Page.Banner { [Table("BannerItem")] [Index(nameof(Order), Name = "IX_BannerItem_Order")] [Index(nameof(IsActive), Name = "IX_BannerItem_IsActive")] public class BannerItem { [ValidateNever] [ForeignKey("PositionID")] public virtual BannerPosition BannerPosition { get; set; } = null!; [Key] [DatabaseGenerated(DatabaseGeneratedOption.Identity)] [DisplayName("PK")] [Comment("PK")] public int ID { get; set; } [Required] [DisplayName("배너 위치 ID")] [Comment("배너 위치 ID")] public int PositionID { get; set; } [Required] [DisplayName("배너 명")] [Comment("배너 명")] [DataType(DataType.Text)] [StringLength(255)] public string Subject { get; set; } = null!; [DisplayName("이미지")] [Comment("이미지")] [RegularExpression(@"\.(jpg|jpeg|png|gif)$", ErrorMessage = "이미지 파일은 jpg, jpeg, png, gif 형식이어야 합니다.")] [StringLength(1024)] public string? Image { get; set; } = null; [DisplayName("가로 크기")] [Comment("가로 크기")] [Range(1, int.MaxValue, ErrorMessage = "숫자는 1 이상이어야 합니다.")] public int? Width { get; set; } = 0; [DisplayName("세로 크기")] [Comment("세로 크기")] [Range(1, int.MaxValue, ErrorMessage = "숫자는 1 이상이어야 합니다.")] public int? Height { get; set; } = 0; [DisplayName("주소")] [Comment("주소")] [DataType(DataType.Url)] [StringLength(255)] public string? Link { get; set; } = null; [Required] [DisplayName("순서")] [Comment("순서")] public int Order { get; set; } = 0; [Required] [DisplayName("사용 여부")] [Comment("사용 여부")] public bool IsActive { get; set; } = false; [DisplayName("사용 기간 - 시작")] [Comment("사용 기간 - 시작")] [DataType(DataType.DateTime)] public DateTime? StartAt { get; set; } = null; [DisplayName("사용 기간 - 종료")] [Comment("사용 기간 - 종료")] [DataType(DataType.DateTime)] public DateTime? EndAt { get; set; } = null; [DisplayName("조회 수")] [Comment("조회 수")] public int Views { get; set; } = 0; [DisplayName("수정 일시")] [Comment("수정 일시")] [DataType(DataType.DateTime)] public DateTime? UpdatedAt { get; set; } = null; [DisplayName("등록 일시")] [Comment("등록 일시")] [DataType(DataType.DateTime)] public DateTime CreatedAt { get; set; } } }