| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- using System.ComponentModel.DataAnnotations;
- namespace Domain.Entities.Stocks;
- /// <summary>
- /// SEIBro 주식 상장(유통형태 변경) 정보 (getStkListInfo) — 예탁지정·상장 유통형태 변경 이벤트 (Wave 2).
- /// 월 윈도우(ALT_BEGIN_DT~ALT_EXPRY_DT 최대 1개월/콜) 스윕 후 window(적용일 범위) delete+insert 로 반영한다.
- /// 유통형태 코드(BFALT/AFALT_CIRCL_FORM)는 코드 원문 문자열로 저장 — [110]유가 [211]예탁지정 [230]보호예수 등.
- /// </summary>
- public class ListingChangeEvent
- {
- [Key]
- public int ID { get; private set; }
- /// <summary>발행회사 고객번호 (ISSUCO_CUSTNO)</summary>
- public int? IssucoCustno { get; private set; }
- /// <summary>종목코드 (ISIN)</summary>
- public string Isin { get; private set; } = default!;
- /// <summary>단축코드 (SHOTN_ISIN)</summary>
- public string ShotnIsin { get; private set; } = default!;
- /// <summary>종목명 (KOR_SECN_NM)</summary>
- public string KorSecnNm { get; private set; } = default!;
- /// <summary>변경전 유통형태 (BFALT_CIRCL_FORM) — 코드 원문. 미제공 null</summary>
- public string? BfaltCirclForm { get; private set; }
- /// <summary>변경후 유통형태 (AFALT_CIRCL_FORM) — 코드 원문</summary>
- public string? AfaltCirclForm { get; private set; }
- /// <summary>변경(적용)일자 (APLI_DT)</summary>
- public DateOnly ApliDt { get; private set; }
- public DateTime UpdatedAt { get; private set; } = DateTime.UtcNow;
- private ListingChangeEvent() { }
- public static ListingChangeEvent Create(
- int? issucoCustno,
- string isin,
- string shotnIsin,
- string korSecnNm,
- string? bfaltCirclForm,
- string? afaltCirclForm,
- DateOnly apliDt)
- {
- if (string.IsNullOrWhiteSpace(isin))
- {
- throw new ArgumentException("isin required", nameof(isin));
- }
- if (string.IsNullOrWhiteSpace(shotnIsin))
- {
- throw new ArgumentException("shotnIsin required", nameof(shotnIsin));
- }
- if (string.IsNullOrWhiteSpace(korSecnNm))
- {
- throw new ArgumentException("korSecnNm required", nameof(korSecnNm));
- }
- return new ListingChangeEvent
- {
- IssucoCustno = issucoCustno,
- Isin = isin.Trim(),
- ShotnIsin = shotnIsin.Trim(),
- KorSecnNm = korSecnNm.Trim(),
- BfaltCirclForm = string.IsNullOrWhiteSpace(bfaltCirclForm) ? null : bfaltCirclForm.Trim(),
- AfaltCirclForm = string.IsNullOrWhiteSpace(afaltCirclForm) ? null : afaltCirclForm.Trim(),
- ApliDt = apliDt
- };
- }
- }
|