DeviationDataModel.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  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 int 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.Value,
  66. PercentageValue = deviationEntity.Value.Value * ((decimal)deviationEntity.Percentage.Value / (decimal)100),
  67. SiteId = deviationEntity.SiteId,
  68. SiteDescription = deviationEntity.Site == null
  69. ? deviationEntity.Appendix == null
  70. ? String.Empty
  71. : deviationEntity.Appendix.Site.CustomNumber
  72. : deviationEntity.Site.CustomNumber,
  73. AppendixId = deviationEntity.AppendixId,
  74. AppendixDescription = deviationEntity.Appendix == null
  75. ? "Offen"
  76. : deviationEntity.Appendix.CustomNumber,
  77. StatusId = deviationEntity.StatusId.Value,
  78. StatusDescription = deviationEntity.Status == null
  79. ? null
  80. : deviationEntity.Status.Description,
  81. KindId = deviationEntity.KindId.Value,
  82. KindDescription = deviationEntity.Kind == null
  83. ? null
  84. : deviationEntity.Kind.Description,
  85. Comment = deviationEntity.Comment,
  86. DisturbanceValueEntities =
  87. deviationEntity.DisturbanceValues
  88. .Select(r =>
  89. new DisturbanceValueDataModel
  90. {
  91. DisturbanceId = r.DisturbanceId,
  92. Description = String.Format("{0} - {1:c2}", r.Disturbance.Description, r.Value),
  93. Value = r.Value
  94. })
  95. .ToList()
  96. };
  97. foreach (var disturbance in model.DisturbanceValueEntities)
  98. {
  99. var json = JsonConvert.SerializeObject(disturbance);
  100. disturbance.Json = json;
  101. model.DisturbanceEntities.Add(json);
  102. }
  103. return model;
  104. }
  105. public Core.Domain.Deviation.Deviation ToDeviation()
  106. {
  107. return new Core.Domain.Deviation.Deviation
  108. {
  109. Id = this.Id,
  110. CustomNumber = this.CustomNumber,
  111. Description = Description,
  112. ReceiptDate = this.ReceiptDate,
  113. AppendixDate = this.AppendixDate,
  114. Value = this.Value,
  115. Percentage = this.Percentage,
  116. SiteId = this.SiteId,
  117. AppendixId = this.AppendixId,
  118. StatusId = this.StatusId,
  119. KindId = this.KindId,
  120. Comment = this.Comment
  121. };
  122. }
  123. }
  124. }