DeviationDataModel.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using GreenTree.Nachtragsmanagement.Core.Domain.Deviation;
  2. using GreenTree.Nachtragsmanagement.Web.Models.Appendix;
  3. using Newtonsoft.Json;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Web;
  8. namespace GreenTree.Nachtragsmanagement.Web.Models.Deviation
  9. {
  10. public class DeviationDataModel
  11. : IRequireStatusDataModel, IRequireKindDataModel
  12. {
  13. public int Id { get; set; }
  14. public string CustomNumber { get; set; }
  15. public string Description { get; set; }
  16. public DateTime? ReceiptDate { get; set; }
  17. public DateTime? AppendixDate { get; set; }
  18. public decimal Value { get; set; }
  19. public decimal Percentage { get; set; }
  20. public decimal PercentageValue { get; set; }
  21. public int? StatusId { get; set; }
  22. public string StatusDescription { get; set; }
  23. public int? KindId { get; set; }
  24. public string KindDescription { get; set; }
  25. public string Comment { get; set; }
  26. public string SiteDescription { get; set; }
  27. public int? SiteId { get; set; }
  28. public string AppendixDescription { get; set; }
  29. public int? AppendixId { get; set; }
  30. public ICollection<string> DisturbanceEntities { get; set; }
  31. public ICollection<DisturbanceValueDataModel> DisturbanceValueEntities { get; set; }
  32. public string DisturbanceValuesDescription
  33. {
  34. get
  35. {
  36. if (DisturbanceValueEntities == null)
  37. return String.Empty;
  38. else
  39. return String.Join(", ", DisturbanceValueEntities.Select(d => d.Description));
  40. }
  41. }
  42. public DeviationDataModel()
  43. {
  44. DisturbanceEntities = new List<string>();
  45. DisturbanceValueEntities = new List<DisturbanceValueDataModel>();
  46. }
  47. public static DeviationDataModel FromDeviation(Core.Domain.Deviation.Deviation deviationEntity, bool newWhenIsNull)
  48. {
  49. if (deviationEntity == null && newWhenIsNull)
  50. return new DeviationDataModel
  51. {
  52. Id = -1,
  53. Percentage = 100
  54. };
  55. if (deviationEntity == null && !newWhenIsNull)
  56. throw new ArgumentNullException("deviationEntity", "Cannot create DeviationDataModel from NULL deviation entity.");
  57. var model = new DeviationDataModel
  58. {
  59. Id = deviationEntity.Id,
  60. CustomNumber = deviationEntity.CustomNumber,
  61. Description = deviationEntity.Description,
  62. ReceiptDate = deviationEntity.ReceiptDate,
  63. AppendixDate = deviationEntity.AppendixDate,
  64. Value = deviationEntity.Value.Value,
  65. Percentage = deviationEntity.Percentage.HasValue
  66. ? deviationEntity.Percentage.Value
  67. : (decimal)1.0,
  68. PercentageValue = deviationEntity.Value.HasValue && deviationEntity.Percentage.HasValue
  69. ? deviationEntity.Value.Value * deviationEntity.Percentage.Value
  70. : 0,
  71. SiteId = deviationEntity.SiteId,
  72. SiteDescription = deviationEntity.Site == null
  73. ? deviationEntity.Appendix == null
  74. ? String.Empty
  75. : deviationEntity.Appendix.Site == null
  76. ? String.Empty
  77. : deviationEntity.Appendix.Site.CustomNumber
  78. : deviationEntity.Site.CustomNumber,
  79. AppendixId = deviationEntity.AppendixId,
  80. AppendixDescription = deviationEntity.Appendix == null
  81. ? "Offen"
  82. : deviationEntity.Appendix.CustomNumber,
  83. StatusId = deviationEntity.StatusId.Value,
  84. StatusDescription = deviationEntity.Status == null
  85. ? null
  86. : deviationEntity.Status.Description,
  87. KindId = deviationEntity.KindId.Value,
  88. KindDescription = deviationEntity.Kind == null
  89. ? null
  90. : deviationEntity.Kind.Description,
  91. Comment = deviationEntity.Comment,
  92. DisturbanceValueEntities =
  93. deviationEntity.DisturbanceValues
  94. .Select(r =>
  95. new DisturbanceValueDataModel
  96. {
  97. DisturbanceId = r.DisturbanceId,
  98. Description = String.Format("{0} - {1:c2}", r.Disturbance.Description, r.Value),
  99. Value = r.Value
  100. })
  101. .ToList()
  102. };
  103. foreach (var disturbance in model.DisturbanceValueEntities)
  104. {
  105. var json = JsonConvert.SerializeObject(disturbance);
  106. disturbance.Json = json;
  107. model.DisturbanceEntities.Add(json);
  108. }
  109. return model;
  110. }
  111. public Core.Domain.Deviation.Deviation ToDeviation()
  112. {
  113. return new Core.Domain.Deviation.Deviation
  114. {
  115. Id = this.Id,
  116. CustomNumber = this.CustomNumber,
  117. Description = Description,
  118. ReceiptDate = this.ReceiptDate,
  119. AppendixDate = this.AppendixDate,
  120. Value = this.Value,
  121. Percentage = this.Percentage,
  122. SiteId = this.SiteId,
  123. AppendixId = this.AppendixId,
  124. StatusId = this.StatusId,
  125. KindId = this.KindId,
  126. Comment = this.Comment
  127. };
  128. }
  129. }
  130. }