Models.cs 32 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024
  1. using Gateway.Payment.Shared;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.ComponentModel.DataAnnotations;
  5. using System.Text;
  6. namespace Gateway.POS.Models
  7. {
  8. public class FuelItemDto
  9. {
  10. public int PumpId { get; set; }
  11. public int NozzleLogicalId { get; set; }
  12. public int? SiteLevelNozzleId { get; set; }
  13. /// <summary>
  14. /// Gets or sets the fule product name this transaction consumed, like #93, #95, #DIESEL and etc.
  15. /// </summary>
  16. public string FuelProductName { get; set; }
  17. public string FuelProductCode { get; set; }
  18. public decimal Qualtity { get; set; }
  19. public decimal Price { get; set; }
  20. public decimal Amount { get; set; }
  21. public decimal? TotalVolume { get; set; }
  22. public string FuelTrxSequenceNumber { get; set; }
  23. public DateTime? FuelingStartTime { get; set; }
  24. public DateTime? FuelingEndTime { get; set; }
  25. }
  26. public class FuelItem
  27. {
  28. public int Id { get; set; }
  29. public int PumpId { get; set; }
  30. public int NozzleLogicalId { get; set; }
  31. public int? SiteLevelNozzleId { get; set; }
  32. /// <summary>
  33. /// Gets or sets the fule product name this transaction consumed, like #93, #95, #DIESEL and etc.
  34. /// </summary>
  35. public string FuelProductName { get; set; }
  36. public string FuelProductCode { get; set; }
  37. public decimal Qualtity { get; set; }
  38. public decimal Price { get; set; }
  39. public decimal Amount { get; set; }
  40. public decimal? TotalVolume { get; set; }
  41. public string FuelTrxSequenceNumber { get; set; }
  42. public DateTime? FuelingStartTime { get; set; }
  43. public DateTime? FuelingEndTime { get; set; }
  44. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("Transaction")]
  45. public int TransactionId { get; set; }
  46. public Transaction Transaction { get; set; }
  47. }
  48. public enum TransactionTypeEnum
  49. {
  50. Sale,
  51. Refund,
  52. EndOfShift,
  53. EndOfDay,
  54. }
  55. public enum TransactionStateEnum
  56. {
  57. Finished,
  58. Open,
  59. }
  60. public enum DiscountTypeEnum
  61. {
  62. PriceSubstract,
  63. TrxTotalAmountSubstract,
  64. TrxTotalAmountPercentage,
  65. }
  66. /// <summary>
  67. /// used for create a discount definition.
  68. /// </summary>
  69. public class DiscountDto
  70. {
  71. public int? Id { get; set; }
  72. public string Name { get; set; }
  73. public string Description { get; set; }
  74. public DiscountTypeEnum DiscountType { get; set; }
  75. public DateTime? StartTime { get; set; }
  76. public DateTime? EndTime { get; set; }
  77. public string TargetFuelProductCode { get; set; }
  78. public string Command { get; set; }
  79. }
  80. public class Discount
  81. {
  82. public int Id { get; set; }
  83. public bool IsMarkedAsDeletion { get; set; }
  84. public string Name { get; set; }
  85. public string Description { get; set; }
  86. public DiscountTypeEnum DiscountType { get; set; }
  87. public DateTime? StartTime { get; set; }
  88. public DateTime? EndTime { get; set; }
  89. public DateTime CreatedTime { get; set; }
  90. public DateTime? ModifiedTime { get; set; }
  91. public string TargetFuelProductCode { get; set; }
  92. public string Command { get; set; }
  93. }
  94. public enum PaymentMethodEnum
  95. {
  96. Cash,
  97. WX_SCAN,
  98. ALI_SCAN,
  99. ALL_IN_SCAN,
  100. ALL_IN_SCAN_V2,
  101. ClassicCpuCard,
  102. /// <summary>
  103. /// 直接从作为入口的sub account 上的profit account, or its account's profit account with type fund里扣
  104. /// </summary>
  105. DirectMembershipProfitAccountFundRedeem,
  106. }
  107. public class PaymentInputDto
  108. {
  109. public PaymentMethodEnum Method { get; set; }
  110. public string CardReaderName { get; set; }
  111. public int? TargetMembershipAccountId { get; set; }
  112. public int? TargetMembershipSubAccountId { get; set; }
  113. /// <summary>
  114. /// Gets or sets 用户授权码, 当商户用扫码枪扫用户的条形码时得到的字符串
  115. /// </summary>
  116. public string AuthCode { get; set; }
  117. public decimal ExpectAmount { get; set; }
  118. }
  119. public class Payment
  120. {
  121. public int Id { get; set; }
  122. public PaymentMethodEnum Method { get; set; }
  123. public string CardReaderName { get; set; }
  124. public int? TargetMembershipAccountId { get; set; }
  125. public int? TargetMembershipSubAccountId { get; set; }
  126. /// <summary>
  127. /// Gets or sets 用户授权码, 当商户用扫码枪扫用户的条形码时得到的字符串
  128. /// </summary>
  129. public string AuthCode { get; set; }
  130. /// <summary>
  131. /// unique per trx and will be used in refund to link with original trx in remote payment service provider.
  132. /// </summary>
  133. public string BillNumber { get; set; }
  134. public decimal ExpectAmount { get; set; }
  135. public decimal PaidAmount { get; set; }
  136. public TradeStatusEnum TradeStatus { get; set; }
  137. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("Transaction")]
  138. public int TransactionId { get; set; }
  139. public Transaction Transaction { get; set; }
  140. public string Comment { get; set; }
  141. }
  142. public class PaymentOutputDto
  143. {
  144. public PaymentMethodEnum Method { get; set; }
  145. public string CardReaderName { get; set; }
  146. public int? TargetMembershipAccountId { get; set; }
  147. public int? TargetMembershipSubAccountId { get; set; }
  148. /// <summary>
  149. /// Gets or sets 用户授权码, 当商户用扫码枪扫用户的条形码时得到的字符串
  150. /// </summary>
  151. public decimal ExpectAmount { get; set; }
  152. public decimal PaidAmount { get; set; }
  153. public TradeStatusEnum TradeStatus { get; set; }
  154. public string Comment { get; set; }
  155. }
  156. public class AppliedDiscount
  157. {
  158. public int Id { get; set; }
  159. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("Discount")]
  160. public int DiscountId { get; set; }
  161. public Discount Discount { get; set; }
  162. public decimal DiscountedAmount { get; set; }
  163. }
  164. public class TransactionInputDto
  165. {
  166. public int? RefundTrxId { get; set; }
  167. public TransactionTypeEnum TransactionType { get; set; }
  168. public TransactionSubTypeEnum? TransactionSubType { get; set; }
  169. public decimal? TotalAmount { get; set; }
  170. /// <summary>
  171. /// the final charge will based on this value.
  172. /// </summary>
  173. public decimal? NetAmount { get; set; }
  174. public List<PaymentInputDto> Payments { get; set; }
  175. public int OperatorId { get; set; }
  176. /// <summary>
  177. /// Gets or sets the terminal id for submit this order
  178. /// </summary>
  179. public string TerminalId { get; set; }
  180. public DateTime? ClientSideTimestamp { get; set; }
  181. public List<FuelItemDto> FuelItems { get; set; }
  182. public string Comment { get; set; }
  183. }
  184. public enum TransactionSubTypeEnum
  185. {
  186. MembershipProfitAccount_Redeem_Loyalty,
  187. MembershipProfitAccount_Redeem_Coupon,
  188. MembershipProfitAccount_Recharge_Fund_ToSubAccount_ByCard,
  189. MembershipProfitAccount_Recharge_Fund_ToSubAccount_ById,
  190. MembershipProfitAccount_Recharge_Fund_ToAccount_ById
  191. }
  192. public class TransactionCommitState
  193. {
  194. public int StateCode { get; set; }
  195. public string Reason { get; set; }
  196. }
  197. public class TransactionOutputDto
  198. {
  199. public int? Id { get; set; }
  200. public TransactionCommitState CommitState { get; set; }
  201. public TransactionTypeEnum TransactionType { get; set; }
  202. public System.Nullable<Gateway.POS.Models.TransactionSubTypeEnum> TransactionSubType { get; set; }
  203. public decimal? TotalAmount { get; set; }
  204. /// <summary>
  205. /// the final charge will based on this value.
  206. /// </summary>
  207. public decimal? NetAmount { get; set; }
  208. public List<PaymentOutputDto> Payments { get; set; }
  209. public MembershipProfitAccountRechargeOutputDto MembershipProfitAccountRecharge { get; set; }
  210. public MembershipProfitAccountRedeemOutputDto MembershipProfitAccountRedeem { get; set; }
  211. public string ReceiptId { get; set; }
  212. public OperatorOutputDto Operator { get; set; }
  213. public string ShiftId { get; set; }
  214. /// <summary>
  215. /// Gets or sets the terminal id for submit this order
  216. /// </summary>
  217. public string TerminalId { get; set; }
  218. public string SiteId { get; set; }
  219. public List<FuelItemDto> FuelItems { get; set; }
  220. public List<AppliedDiscount> AppliedDiscounts { get; set; }
  221. }
  222. public class Transaction
  223. {
  224. public int Id { get; set; }
  225. public TransactionTypeEnum TransactionType { get; set; }
  226. public TransactionSubTypeEnum? TransactionSubType { get; set; }
  227. public decimal? TotalAmount { get; set; }
  228. /// <summary>
  229. /// the final charge will based on this value.
  230. /// </summary>
  231. public decimal? NetAmount { get; set; }
  232. public List<Payment> Payments { get; set; }
  233. //public int? MembershipProfitAccountRechargeId { get; set; }
  234. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("MembershipProfitAccountRechargeId")]
  235. public MembershipProfitAccountRecharge MembershipProfitAccountRecharge { get; set; }
  236. //public int? MembershipProfitAccountRedeemId { get; set; }
  237. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("MembershipProfitAccountRedeemId")]
  238. public MembershipProfitAccountRedeem MembershipProfitAccountRedeem { get; set; }
  239. public string ReceiptId { get; set; }
  240. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("Operator")]
  241. public int OperatorId { get; set; }
  242. public Operator Operator { get; set; }
  243. public string ShiftId { get; set; }
  244. /// <summary>
  245. /// Gets or sets the terminal id for submit this order
  246. /// </summary>
  247. public string TerminalId { get; set; }
  248. public string SiteId { get; set; }
  249. public DateTime? ClientSideTimestamp { get; set; }
  250. public DateTime ServerSideTimestamp { get; set; }
  251. public List<FuelItem> FuelItems { get; set; }
  252. public List<AppliedDiscount> AppliedDiscounts { get; set; }
  253. public string Comment { get; set; }
  254. }
  255. public class Operator
  256. {
  257. public int Id { get; set; }
  258. public string Name { get; set; }
  259. public List<Gateway.POS.Models.MembershipSubAccount> OperatorCards { get; set; }
  260. public string Password { get; set; }
  261. public string Description { get; set; }
  262. public DateTime CreatedTimestamp { get; set; }
  263. }
  264. public class OperatorOutputDto
  265. {
  266. public int Id { get; set; }
  267. public string Name { get; set; }
  268. public string Description { get; set; }
  269. public DateTime CreatedTimestamp { get; set; }
  270. }
  271. public enum MembershipLevelEnum
  272. {
  273. FirstLevel,
  274. SecondLevel,
  275. ThirdLevel,
  276. FourthLevel,
  277. FifthLevel,
  278. }
  279. public class MemberGroup
  280. {
  281. public int Id { get; set; }
  282. public string Name { get; set; }
  283. public string Description { get; set; }
  284. }
  285. public class MembershipAccount
  286. {
  287. public int Id { get; set; }
  288. [Required]
  289. public string Name { get; set; }
  290. public string CompanyName { get; set; }
  291. public int Age { get; set; }
  292. public string PhoneNumber { get; set; }
  293. public string Address { get; set; }
  294. public string Email { get; set; }
  295. public DateTime? Birth { get; set; }
  296. public bool IsMale { get; set; }
  297. public string Description { get; set; }
  298. public string InvoiceTaxNumber { get; set; }
  299. public string InvoiceCompanyName { get; set; }
  300. public MembershipLevelEnum? MembershipLevel { get; set; }
  301. public List<Gateway.POS.Models.MembershipSubAccount> SubAccounts { get; set; }
  302. public bool AllowSubAccountAccessProfitAccounts { get; set; }
  303. public bool EnableProfitAccountBalanceChangeNotify { get; set; }
  304. public System.Collections.Generic.List<Gateway.POS.Models.MembershipProfitAccount> ProfitAccounts { get; set; }
  305. public System.Collections.Generic.List<Gateway.POS.Models.MembershipAccount_M2M_MembershipTag> AccountTags { get; set; }
  306. public string ConsumeRestrictionComplexData { get; set; }
  307. public System.DateTime? ClientSideTimestamp { get; set; }
  308. public System.DateTime? ServerSideLastModifiedTimestamp { get; set; }
  309. public System.DateTime ServerSideCreatedTimestamp { get; set; }
  310. public System.DateTime? SuspendStateStartTime { get; set; }
  311. public System.DateTime? SuspendStateEndTime { get; set; }
  312. public int? CreateByOperatorId { get; set; }
  313. public Operator CreateByOperator { get; set; }
  314. }
  315. public class MembershipAccountInputDto
  316. {
  317. public int? Id { get; set; }
  318. public string Name { get; set; }
  319. public string CompanyName { get; set; }
  320. public int Age { get; set; }
  321. public string PhoneNumber { get; set; }
  322. public string Address { get; set; }
  323. public string Email { get; set; }
  324. public System.DateTime? Birth { get; set; }
  325. public bool IsMale { get; set; }
  326. public string Description { get; set; }
  327. public string InvoiceTaxNumber { get; set; }
  328. public string InvoiceCompanyName { get; set; }
  329. public bool AllowSubAccountAccessProfitAccounts { get; set; }
  330. public bool EnableProfitAccountBalanceChangeNotify { get; set; }
  331. public System.Collections.Generic.List<Gateway.POS.Models.MembershipAccount_M2M_MembershipTagDto> AccountTags { get; set; }
  332. public string ConsumeRestrictionComplexData { get; set; }
  333. public System.DateTime? ClientSideTimestamp { get; set; }
  334. public System.DateTime? SuspendStateStartTime { get; set; }
  335. public System.DateTime? SuspendStateEndTime { get; set; }
  336. public int? CreateByOperatorId { get; set; }
  337. }
  338. public class MembershipAccountOutputDto
  339. {
  340. public int Id { get; set; }
  341. public string Name { get; set; }
  342. public string CompanyName { get; set; }
  343. public int Age { get; set; }
  344. public string PhoneNumber { get; set; }
  345. public string Address { get; set; }
  346. public string Email { get; set; }
  347. public System.DateTime? Birth { get; set; }
  348. public bool IsMale { get; set; }
  349. public string Description { get; set; }
  350. public string InvoiceTaxNumber { get; set; }
  351. public string InvoiceCompanyName { get; set; }
  352. public MembershipLevelEnum? MembershipLevel { get; set; }
  353. public bool AllowSubAccountAccessProfitAccounts { get; set; }
  354. public bool EnableProfitAccountBalanceChangeNotify { get; set; }
  355. public List<Gateway.POS.Models.MembershipSubAccountOutputDto> SubAccounts { get; set; }
  356. public List<Gateway.POS.Models.MembershipProfitAccountOutputDto> ProfitAccounts { get; set; }
  357. public List<Gateway.POS.Models.MembershipAccount_M2M_MembershipTagDto> AccountTags { get; set; }
  358. public DateTime? ServerSideLastModifiedTimestamp { get; set; }
  359. public DateTime ServerSideCreatedTimestamp { get; set; }
  360. public DateTime? SuspendStateStartTime { get; set; }
  361. public DateTime? SuspendStateEndTime { get; set; }
  362. public int? CreateByOperatorId { get; set; }
  363. }
  364. public class MembershipProfitAccount
  365. {
  366. public int Id { get; set; }
  367. public MembershipProfitAccountRedeemAuthModeEnum RedeemAuthMode { get; set; }
  368. public string RedeemAuthPassword { get; set; }
  369. public MembershipProfitAccountProfitTypeEnum ProfitType { get; set; }
  370. public decimal? Balance { get; set; }
  371. public string BalanceComplexData { get; set; }
  372. public System.Collections.Generic.List<Gateway.POS.Models.MembershipProfitAccountRecharge> ProfitRecharges { get; set; }
  373. public System.Collections.Generic.List<Gateway.POS.Models.MembershipProfitAccountRedeem> ProfitRedeems { get; set; }
  374. public int? MembershipAccountId { get; set; }
  375. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("MembershipAccountId")]
  376. public MembershipAccount Account { get; set; }
  377. public int? MembershipSubAccountId { get; set; }
  378. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("MembershipSubAccountId")]
  379. public MembershipSubAccount SubAccount { get; set; }
  380. public System.DateTime? ServerSideLastModifiedTimestamp { get; set; }
  381. public System.DateTime ServerSideCreatedTimestamp { get; set; }
  382. }
  383. public class MembershipProfitAccountInputDto
  384. {
  385. public int? Id { get; set; }
  386. public MembershipProfitAccountRedeemAuthModeEnum RedeemAuthMode { get; set; }
  387. public string RedeemAuthPassword { get; set; }
  388. public MembershipProfitAccountProfitTypeEnum ProfitType { get; set; }
  389. public int? MembershipAccountId { get; set; }
  390. public int? MembershipSubAccountId { get; set; }
  391. }
  392. public enum MembershipProfitAccountProfitTypeEnum
  393. {
  394. Loyalty,
  395. Fund,
  396. Coupon
  397. }
  398. public class MembershipProfitAccountOutputDto
  399. {
  400. public int Id { get; set; }
  401. public MembershipProfitAccountRedeemAuthModeEnum RedeemAuthMode { get; set; }
  402. public MembershipProfitAccountProfitTypeEnum ProfitType { get; set; }
  403. public decimal? Balance { get; set; }
  404. public string BalanceComplexData { get; set; }
  405. public System.Collections.Generic.List<Gateway.POS.Models.MembershipProfitAccountRechargeOutputDto> ProfitRecharges { get; set; }
  406. public System.Collections.Generic.List<Gateway.POS.Models.MembershipProfitAccountRedeemOutputDto> ProfitRedeems { get; set; }
  407. public int? MembershipAccountId { get; set; }
  408. public int? MembershipSubAccountId { get; set; }
  409. }
  410. public enum ProfitAccountRechargeSourceEnum
  411. {
  412. BySystemTrx,
  413. OffSystemCash,
  414. OffSystemManualHandbookDebit,
  415. OffSystemBankTransfer
  416. }
  417. public class MembershipProfitAccountRecharge
  418. {
  419. public int Id { get; set; }
  420. public ProfitAccountRechargeSourceEnum RechargeSource { get; set; }
  421. public decimal? RechargeAmount { get; set; }
  422. public decimal? ProfitAccountAmountBalance { get; set; }
  423. public System.DateTime? InvoiceIssuedDateTime { get; set; }
  424. public string Description { get; set; }
  425. public System.DateTime Timestamp { get; set; }
  426. public int MembershipProfitAccountId { get; set; }
  427. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("MembershipProfitAccountId")]
  428. public MembershipProfitAccount ProfitAccount { get; set; }
  429. public int? CreateByOperatorId { get; set; }
  430. public Operator CreateByOperator { get; set; }
  431. public int? SourceTrxId { get; set; }
  432. /// <summary>
  433. /// in most case the redeem operation is started by a trx.
  434. /// </summary>
  435. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("SourceTrxId")]
  436. public Transaction SourceTrx { get; set; }
  437. }
  438. public class MembershipProfitAccountRechargeRequest
  439. {
  440. public ProfitAccountRechargeSourceEnum RechargeSource { get; set; }
  441. public decimal RechargeAmount { get; set; }
  442. public string Description { get; set; }
  443. public int? CreateByOperatorId { get; set; }
  444. public Transaction SourceTrx { get; set; }
  445. }
  446. public class MembershipProfitAccountRechargeOutputDto
  447. {
  448. public int Id { get; set; }
  449. public ProfitAccountRechargeSourceEnum RechargeSource { get; set; }
  450. public int? SourceTrxId { get; set; }
  451. //public int? RechargeSourceTrxId { get; set; }
  452. public decimal? RechargeAmount { get; set; }
  453. public decimal? ProfitAccountAmountBalance { get; set; }
  454. public System.DateTime? InvoiceIssuedDateTime { get; set; }
  455. public string Description { get; set; }
  456. public System.DateTime Timestamp { get; set; }
  457. public int MembershipProfitAccountId { get; set; }
  458. //public MembershipProfitAccountOutputDto ProfitAccount { get; set; }
  459. public int? CreateByOperatorId { get; set; }
  460. /// <summary>
  461. /// in most case the redeem operation is started by a trx.
  462. /// </summary>
  463. //public TransactionOutputDto SourceTrx { get; set; }
  464. }
  465. public class MembershipProfitAccountRedeem
  466. {
  467. public int Id { get; set; }
  468. public string Purpose { get; set; }
  469. public decimal? RedeemedProfitAmount { get; set; }
  470. public string RedeemedProfitComplexData { get; set; }
  471. public decimal? ProfitAccountAmountBalance { get; set; }
  472. public string Description { get; set; }
  473. public System.DateTime Timestamp { get; set; }
  474. public int MembershipProfitAccountId { get; set; }
  475. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("MembershipProfitAccountId")]
  476. public MembershipProfitAccount ProfitAccount { get; set; }
  477. public int? CreateByOperatorId { get; set; }
  478. public Operator CreateByOperator { get; set; }
  479. public int? SourceTrxId { get; set; }
  480. /// <summary>
  481. /// in most case the redeem operation is started by a trx.
  482. /// </summary>
  483. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("SourceTrxId")]
  484. public Transaction SourceTrx { get; set; }
  485. }
  486. public enum MembershipProfitAccountRedeemAuthModeEnum
  487. {
  488. None,
  489. Password,
  490. SMS
  491. }
  492. /// <summary>
  493. /// a dedicated object for carry input, cannot mapping to MembershipProfitAccountRedeem
  494. /// </summary>
  495. public class MembershipProfitAccountRedeemRequest
  496. {
  497. public MembershipProfitAccountProfitTypeEnum ProfitAccountType { get; set; }
  498. public string RedeemAuthCode { get; set; }
  499. public string Purpose { get; set; }
  500. public decimal? RedeemProfitAmount { get; set; }
  501. public string RedeemProfitComplexData { get; set; }
  502. public string Description { get; set; }
  503. public MembershipSubAccountIdentityInputDto SubAccountIdentity { get; set; }
  504. public int? CreateByOperatorId { get; set; }
  505. public Transaction SourceTrx { get; set; }
  506. }
  507. public class MembershipProfitAccountRedeemOutputDto
  508. {
  509. public int Id { get; set; }
  510. public string Purpose { get; set; }
  511. public decimal? RedeemedProfitAmount { get; set; }
  512. public string RedeemedProfitComplexData { get; set; }
  513. public decimal? ProfitAccountAmountBalance { get; set; }
  514. public string Description { get; set; }
  515. public System.DateTime Timestamp { get; set; }
  516. public int MembershipProfitAccountId { get; set; }
  517. public int? CreateByOperatorId { get; set; }
  518. public int? SourceTrxId { get; set; }
  519. /// <summary>
  520. /// in most case the redeem operation is started by a trx.
  521. /// </summary>
  522. //public TransactionOutputDto SourceTrx { get; set; }
  523. }
  524. public class MembershipSubAccountIdentityInputDto
  525. {
  526. public int? Id { get; set; }
  527. //public int MembershipSubAccountId { get; set; }
  528. public MembershipSubAccountIdentityCarrierTypeEnum IdentityCarrierType { get; set; }
  529. public string Identity { get; set; }
  530. public string Description { get; set; }
  531. }
  532. public class MembershipSubAccountIdentityOutputDto
  533. {
  534. public int? Id { get; set; }
  535. public int MembershipSubAccountId { get; set; }
  536. public MembershipSubAccountIdentityCarrierTypeEnum IdentityCarrierType { get; set; }
  537. public string Identity { get; set; }
  538. public string Description { get; set; }
  539. }
  540. public class MembershipSubAccountIdentity
  541. {
  542. public int Id { get; set; }
  543. public int MembershipSubAccountId { get; set; }
  544. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("MembershipSubAccountId")]
  545. public MembershipSubAccount SubAccount { get; set; }
  546. public MembershipSubAccountIdentityCarrierTypeEnum IdentityCarrierType { get; set; }
  547. [Required]
  548. public string Identity { get; set; }
  549. public string Description { get; set; }
  550. }
  551. public class MembershipSubAccount
  552. {
  553. public int Id { get; set; }
  554. public int MembershipAccountId { get; set; }
  555. [System.ComponentModel.DataAnnotations.Schema.ForeignKey("MembershipAccountId")]
  556. public MembershipAccount Account { get; set; }
  557. public List<MembershipProfitAccount> ProfitAccounts { get; set; }
  558. public List<MembershipSubAccountIdentity> Identities { get; set; }
  559. public MembershipSubAccountStateEnum AccountState { get; set; }
  560. public System.DateTime? LastAccountStateUpdateTime { get; set; }
  561. public string LastAccountStateUpdateReason { get; set; }
  562. public System.DateTime? SuspendStateStartTime { get; set; }
  563. public System.DateTime? SuspendStateEndTime { get; set; }
  564. public System.DateTime ServerSideCreatedTimestamp { get; set; }
  565. public System.DateTime? ServerSideLastModifiedTimestamp { get; set; }
  566. public string SubAccountHolderName { get; set; }
  567. public string SubAccountHolderPhoneNumber { get; set; }
  568. public string SubAccountHolderEmail { get; set; }
  569. public string SubAccountHolderAddress { get; set; }
  570. public bool EnableProfitAccountBalanceChangeNotify { get; set; }
  571. public System.Nullable<Gateway.POS.Models.MembershipLevelEnum> MembershipLevel { get; set; }
  572. public System.Collections.Generic.List<Gateway.POS.Models.MembershipSubAccount_M2M_MembershipTag> SubAccountTags { get; set; }
  573. public string ConsumeRestrictionComplexData { get; set; }
  574. public string Description { get; set; }
  575. public int? CreateByOperatorId { get; set; }
  576. public Operator CreateByOperator { get; set; }
  577. }
  578. public class MembershipSubAccount_M2M_MembershipTag
  579. {
  580. public int MembershipSubAccountId { get; set; }
  581. public MembershipSubAccount SubAccount { get; set; }
  582. public int MembershipTagId { get; set; }
  583. public MembershipTag Tag { get; set; }
  584. }
  585. public class MembershipSubAccount_M2M_MembershipTagDto
  586. {
  587. public int? MembershipTagId { get; set; }
  588. public MembershipTagDto Tag { get; set; }
  589. }
  590. public enum MembershipSubAccountIdentityCarrierTypeEnum
  591. {
  592. Card_DesFireEv1,
  593. Wechat_MiniProgram
  594. }
  595. public class MembershipSubAccountInputDto
  596. {
  597. public int? Id { get; set; }
  598. public int AccountId { get; set; }
  599. public List<MembershipSubAccountIdentityInputDto> Identities { get; set; }
  600. public MembershipSubAccountStateEnum AccountState { get; set; }
  601. public string LastAccountStateUpdateReason { get; set; }
  602. public System.DateTime? SuspendStateStartTime { get; set; }
  603. public System.DateTime? SuspendStateEndTime { get; set; }
  604. public string SubAccountHolderName { get; set; }
  605. public string SubAccountHolderPhoneNumber { get; set; }
  606. public string SubAccountHolderEmail { get; set; }
  607. public string SubAccountHolderAddress { get; set; }
  608. public bool EnableProfitAccountBalanceChangeNotify { get; set; }
  609. public System.Collections.Generic.List<Gateway.POS.Models.MembershipSubAccount_M2M_MembershipTagDto> SubAccountTags { get; set; }
  610. public string ConsumeRestrictionComplexData { get; set; }
  611. public string Description { get; set; }
  612. public int? CreateByOperatorId { get; set; }
  613. }
  614. public class MembershipSubAccountOutputDto
  615. {
  616. public int? Id { get; set; }
  617. public int MembershipAccountId { get; set; }
  618. public List<Gateway.POS.Models.MembershipProfitAccountOutputDto> ProfitAccounts { get; set; }
  619. public List<MembershipSubAccountIdentityOutputDto> Identities { get; set; }
  620. public MembershipSubAccountStateEnum AccountState { get; set; }
  621. public System.DateTime? SuspendStateStartTime { get; set; }
  622. public System.DateTime? SuspendStateEndTime { get; set; }
  623. public System.DateTime ServerSideCreatedTimestamp { get; set; }
  624. public System.DateTime? ServerSideLastModifiedTimestamp { get; set; }
  625. public string SubAccountHolderName { get; set; }
  626. public string SubAccountHolderPhoneNumber { get; set; }
  627. public string SubAccountHolderEmail { get; set; }
  628. public string SubAccountHolderAddress { get; set; }
  629. public bool EnableProfitAccountBalanceChangeNotify { get; set; }
  630. public Models.MembershipLevelEnum? MembershipLevel { get; set; }
  631. public List<Gateway.POS.Models.MembershipSubAccount_M2M_MembershipTagDto> SubAccountTags { get; set; }
  632. public string ConsumeRestrictionComplexData { get; set; }
  633. public string Description { get; set; }
  634. public int? CreateByOperatorId { get; set; }
  635. }
  636. public enum MembershipSubAccountStateEnum
  637. {
  638. Normal,
  639. Suspend,
  640. ReportLost,
  641. ReportBroken
  642. }
  643. public class MembershipTag
  644. {
  645. public int Id { get; set; }
  646. public string Name { get; set; }
  647. public string Description { get; set; }
  648. public List<Gateway.POS.Models.MembershipAccount_M2M_MembershipTag> AccountTags { get; set; }
  649. public List<Gateway.POS.Models.MembershipSubAccount_M2M_MembershipTag> SubAccountTags { get; set; }
  650. }
  651. public class MembershipTagDto
  652. {
  653. public int? Id { get; set; }
  654. public string Name { get; set; }
  655. public string Description { get; set; }
  656. public bool MarkForDeletion { get; set; }
  657. }
  658. public class MembershipAccount_M2M_MembershipTag
  659. {
  660. public int MembershipAccountId { get; set; }
  661. public MembershipAccount Account { get; set; }
  662. public int MembershipTagId { get; set; }
  663. public MembershipTag Tag { get; set; }
  664. }
  665. public class MembershipAccount_M2M_MembershipTagDto
  666. {
  667. public int? MembershipTagId { get; set; }
  668. public MembershipTagDto Tag { get; set; }
  669. }
  670. public class MembershipConsumeRestrictionDto
  671. {
  672. public int Id
  673. {
  674. get; set;
  675. }
  676. public string Name
  677. {
  678. get; set;
  679. }
  680. public string AllowProductCodesStr
  681. {
  682. get; set;
  683. }
  684. public string DisallowProductCodesStr
  685. {
  686. get; set;
  687. }
  688. public string AllowCarRegistrationNumbersStr
  689. {
  690. get; set;
  691. }
  692. public decimal? MaxConsumeAmountPerDay
  693. {
  694. get; set;
  695. }
  696. public decimal? MaxConsumeTimesPerDay
  697. {
  698. get; set;
  699. }
  700. public decimal? MaxConsumeAmountPerWeek
  701. {
  702. get; set;
  703. }
  704. public decimal? MaxConsumeTimesPerWeek
  705. {
  706. get; set;
  707. }
  708. public decimal? MaxConsumeAmountPerMonth
  709. {
  710. get; set;
  711. }
  712. public decimal? MaxConsumeTimesPerMonth
  713. {
  714. get; set;
  715. }
  716. public string AllowSiteLevelNozzleIdsStr
  717. {
  718. get; set;
  719. }
  720. public string DisallowSiteLevelNozzleIdsStr
  721. {
  722. get; set;
  723. }
  724. public string AllowPumpAndNozzleLogicalIdsStr
  725. {
  726. get; set;
  727. }
  728. public string DisallowPumpAndNozzleLogicalIdsStr
  729. {
  730. get; set;
  731. }
  732. }
  733. }