DeviationDataModel.cs 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. using GreenTree.Nachtragsmanagement.Web.Models.Appendix;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Web;
  6. namespace GreenTree.Nachtragsmanagement.Web.Models.Deviation
  7. {
  8. public class DeviationDataModel
  9. : IRequireAppendixDataModel, IRequireStatusDataModel, IRequireDisturbanceDataModel, IRequireKindDataModel
  10. {
  11. public int Id { get; set; }
  12. public string CustomNumber { get; set; }
  13. public string Description { get; set; }
  14. public DateTime ReceiptDate { get; set; }
  15. public DateTime? AppendixDate { get; set; }
  16. public decimal Value { get; set; }
  17. public int Percentage { get; set; }
  18. public decimal PercentageValue { get; set; }
  19. public int? StatusId { get; set; }
  20. public string StatusDescription { get; set; }
  21. public int? KindId { get; set; }
  22. public string KindDescription { get; set; }
  23. public string Comment { get; set; }
  24. public string SiteDescription { get; set; }
  25. public int? SiteId { get; set; }
  26. public string AppendixDescription { get; set; }
  27. public int? AppendixId { get; set; }
  28. public ICollection<int> DisturbanceValues { get; set; }
  29. public ICollection<string> DisturbanceDescriptions { get; set; }
  30. public string DisturbanceDescription
  31. {
  32. get
  33. {
  34. if (DisturbanceDescriptions == null)
  35. return String.Empty;
  36. else
  37. return String.Join(", ", DisturbanceDescriptions);
  38. }
  39. }
  40. public DeviationDataModel()
  41. {
  42. DisturbanceValues = new List<int>();
  43. DisturbanceDescriptions = new List<string>();
  44. }
  45. public static DeviationDataModel FromDeviation(Core.Domain.Deviation.Deviation deviationEntity, bool newWhenIsNull)
  46. {
  47. if (deviationEntity == null && newWhenIsNull)
  48. return new DeviationDataModel
  49. {
  50. Id = -1,
  51. Percentage = 100
  52. };
  53. if (deviationEntity == null && !newWhenIsNull)
  54. throw new ArgumentNullException("deviationEntity", "Cannot create DeviationDataModel from NULL deviation entity.");
  55. return new DeviationDataModel
  56. {
  57. Id = deviationEntity.Id,
  58. CustomNumber = deviationEntity.CustomNumber,
  59. Description = deviationEntity.Description,
  60. ReceiptDate = deviationEntity.ReceiptDate,
  61. AppendixDate = deviationEntity.AppendixDate,
  62. Value = deviationEntity.Value.Value,
  63. Percentage = deviationEntity.Percentage.Value,
  64. PercentageValue = deviationEntity.Value.Value * (deviationEntity.Percentage.Value / 100),
  65. SiteId = deviationEntity.SiteId,
  66. SiteDescription = deviationEntity.Site == null
  67. ? null
  68. : deviationEntity.Site.CustomNumber,
  69. AppendixId = deviationEntity.AppendixId,
  70. AppendixDescription = deviationEntity.Appendix == null
  71. ? null
  72. : deviationEntity.Appendix.CustomNumber,
  73. StatusId = deviationEntity.StatusId.Value,
  74. StatusDescription = deviationEntity.Status == null
  75. ? null
  76. : deviationEntity.Status.Description,
  77. KindId = deviationEntity.KindId.Value,
  78. KindDescription = deviationEntity.Kind == null
  79. ? null
  80. : deviationEntity.Kind.Description,
  81. Comment = deviationEntity.Comment,
  82. DisturbanceValues =
  83. deviationEntity.Disturbances
  84. .Select(r => r.Id)
  85. .ToList(),
  86. DisturbanceDescriptions =
  87. deviationEntity.Disturbances
  88. .Select(r => r.Description)
  89. .ToList()
  90. };
  91. }
  92. public Core.Domain.Deviation.Deviation ToDeviation()
  93. {
  94. return new Core.Domain.Deviation.Deviation
  95. {
  96. Id = this.Id,
  97. CustomNumber = this.CustomNumber,
  98. Description = Description,
  99. ReceiptDate = this.ReceiptDate,
  100. AppendixDate = this.AppendixDate,
  101. Value = this.Value,
  102. Percentage = this.Percentage,
  103. SiteId = this.SiteId,
  104. AppendixId = this.AppendixId,
  105. StatusId = this.StatusId,
  106. KindId = this.KindId,
  107. Comment = this.Comment
  108. };
  109. }
  110. }
  111. }