Item.cs 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. using Microsoft.AspNetCore.Mvc.ModelBinding.Validation;
  2. using Microsoft.EntityFrameworkCore;
  3. using System.ComponentModel;
  4. using System.ComponentModel.DataAnnotations;
  5. using System.ComponentModel.DataAnnotations.Schema;
  6. namespace bitforum.Models.Page.Banner
  7. {
  8. [Table("BannerItem")]
  9. [Index(nameof(Order), Name = "IX_BannerItem_Order")]
  10. [Index(nameof(IsActive), Name = "IX_BannerItem_IsActive")]
  11. public class BannerItem
  12. {
  13. [ValidateNever]
  14. [ForeignKey("PositionID")]
  15. public virtual BannerPosition BannerPosition { get; set; } = null!;
  16. [Key]
  17. [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  18. [DisplayName("PK")]
  19. [Comment("PK")]
  20. public int ID { get; set; }
  21. [Required]
  22. [DisplayName("배너 위치 ID")]
  23. [Comment("배너 위치 ID")]
  24. public int PositionID { get; set; }
  25. [Required]
  26. [DisplayName("배너 명")]
  27. [Comment("배너 명")]
  28. [DataType(DataType.Text)]
  29. [StringLength(255)]
  30. public string Subject { get; set; } = null!;
  31. [DisplayName("이미지")]
  32. [Comment("이미지")]
  33. [RegularExpression(@"\.(jpg|jpeg|png|gif)$", ErrorMessage = "이미지 파일은 jpg, jpeg, png, gif 형식이어야 합니다.")]
  34. [StringLength(1024)]
  35. public string? Image { get; set; } = null;
  36. [DisplayName("가로 크기")]
  37. [Comment("가로 크기")]
  38. [Range(1, int.MaxValue, ErrorMessage = "숫자는 1 이상이어야 합니다.")]
  39. public int? Width { get; set; } = 0;
  40. [DisplayName("세로 크기")]
  41. [Comment("세로 크기")]
  42. [Range(1, int.MaxValue, ErrorMessage = "숫자는 1 이상이어야 합니다.")]
  43. public int? Height { get; set; } = 0;
  44. [DisplayName("주소")]
  45. [Comment("주소")]
  46. [DataType(DataType.Url)]
  47. [StringLength(255)]
  48. public string? Link { get; set; } = null;
  49. [Required]
  50. [DisplayName("순서")]
  51. [Comment("순서")]
  52. public int Order { get; set; } = 0;
  53. [Required]
  54. [DisplayName("사용 여부")]
  55. [Comment("사용 여부")]
  56. public bool IsActive { get; set; } = false;
  57. [DisplayName("사용 기간 - 시작")]
  58. [Comment("사용 기간 - 시작")]
  59. [DataType(DataType.DateTime)]
  60. public DateTime? StartAt { get; set; } = null;
  61. [DisplayName("사용 기간 - 종료")]
  62. [Comment("사용 기간 - 종료")]
  63. [DataType(DataType.DateTime)]
  64. public DateTime? EndAt { get; set; } = null;
  65. [DisplayName("조회 수")]
  66. [Comment("조회 수")]
  67. public int Views { get; set; } = 0;
  68. [DisplayName("수정 일시")]
  69. [Comment("수정 일시")]
  70. [DataType(DataType.DateTime)]
  71. public DateTime? UpdatedAt { get; set; } = null;
  72. [DisplayName("등록 일시")]
  73. [Comment("등록 일시")]
  74. [DataType(DataType.DateTime)]
  75. public DateTime CreatedAt { get; set; }
  76. }
  77. }