DeviationDataModel.cs 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  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. : IRequireAppendixDataModel, 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 DeviationDataModel()
  33. {
  34. DisturbanceEntities = new List<string>();
  35. DisturbanceValueEntities = new List<DisturbanceValueDataModel>();
  36. }
  37. public static DeviationDataModel FromDeviation(Core.Domain.Deviation.Deviation deviationEntity, bool newWhenIsNull)
  38. {
  39. if (deviationEntity == null && newWhenIsNull)
  40. return new DeviationDataModel
  41. {
  42. Id = -1,
  43. Percentage = 100
  44. };
  45. if (deviationEntity == null && !newWhenIsNull)
  46. throw new ArgumentNullException("deviationEntity", "Cannot create DeviationDataModel from NULL deviation entity.");
  47. var model = new DeviationDataModel
  48. {
  49. Id = deviationEntity.Id,
  50. CustomNumber = deviationEntity.CustomNumber,
  51. Description = deviationEntity.Description,
  52. ReceiptDate = deviationEntity.ReceiptDate,
  53. AppendixDate = deviationEntity.AppendixDate,
  54. Value = deviationEntity.Value.Value,
  55. Percentage = deviationEntity.Percentage.Value,
  56. PercentageValue = deviationEntity.Value.Value * ((decimal)deviationEntity.Percentage.Value / (decimal)100),
  57. SiteId = deviationEntity.SiteId,
  58. SiteDescription = deviationEntity.Site == null
  59. ? deviationEntity.Appendix == null
  60. ? String.Empty
  61. : deviationEntity.Appendix.Site.CustomNumber
  62. : deviationEntity.Site.CustomNumber,
  63. AppendixId = deviationEntity.AppendixId,
  64. AppendixDescription = deviationEntity.Appendix == null
  65. ? "Offen"
  66. : deviationEntity.Appendix.CustomNumber,
  67. StatusId = deviationEntity.StatusId.Value,
  68. StatusDescription = deviationEntity.Status == null
  69. ? null
  70. : deviationEntity.Status.Description,
  71. KindId = deviationEntity.KindId.Value,
  72. KindDescription = deviationEntity.Kind == null
  73. ? null
  74. : deviationEntity.Kind.Description,
  75. Comment = deviationEntity.Comment,
  76. DisturbanceValueEntities =
  77. deviationEntity.DisturbanceValues
  78. .Select(r =>
  79. new DisturbanceValueDataModel
  80. {
  81. DisturbanceId = r.DisturbanceId,
  82. Description = String.Format("{0} - {1:c2}", r.Disturbance.Description, r.Value),
  83. Value = r.Value
  84. })
  85. .ToList()
  86. };
  87. foreach (var disturbance in model.DisturbanceValueEntities)
  88. {
  89. var json = JsonConvert.SerializeObject(disturbance);
  90. disturbance.Json = json;
  91. model.DisturbanceEntities.Add(json);
  92. }
  93. return model;
  94. }
  95. public Core.Domain.Deviation.Deviation ToDeviation()
  96. {
  97. return new Core.Domain.Deviation.Deviation
  98. {
  99. Id = this.Id,
  100. CustomNumber = this.CustomNumber,
  101. Description = Description,
  102. ReceiptDate = this.ReceiptDate,
  103. AppendixDate = this.AppendixDate,
  104. Value = this.Value,
  105. Percentage = this.Percentage,
  106. SiteId = this.SiteId,
  107. AppendixId = this.AppendixId,
  108. StatusId = this.StatusId,
  109. KindId = this.KindId,
  110. Comment = this.Comment
  111. };
  112. }
  113. }
  114. }