Guest User

Untitled

a guest
Mar 18th, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.04 KB | None | 0 0
  1. public interface IDomainService<T, Y, X>
  2. where Y : Resources.IBaseRequest
  3. where T : Resources.IBaseResponse
  4. where X : Resources.IBaseRequirements
  5. {
  6.  
  7. T Submit(Y request);
  8.  
  9. X Requirements(Y request);
  10. }
  11.  
  12. public interface IAdjustmentRequest : IBaseRequest
  13. {
  14. AdjustmentType AdjustmentType { get; set; }
  15.  
  16. decimal AdjustmentQty { get; set; }
  17.  
  18. string TrackingEntityBarcode { get; set; }
  19. }
  20.  
  21. public interface IAdjustmentRequirements : IBaseRequirements
  22. {
  23. DomainEntities.TrackingEntity TrackingEntity { get; set; }
  24. }
  25.  
  26. public interface IAdjustmentResponse : IBaseResponse
  27. {
  28. DomainEntities.TrackingEntity TrackingEntity { get; set; }
  29. }
  30.  
  31. public class AdjustmentService : DomainBaseService<IAdjustmentResponse, IAdjustmentRequest, IAdjustmentRequirements>
  32. {
  33. protected internal override IAdjustmentRequirements TransactionRequirements(IAdjustmentRequest request)
  34. {
  35. Resources.AdjustmentRequirements response = new Resources.AdjustmentRequirements(request);
  36. try
  37. {
  38. //user
  39. base.RequestUser(request, ref response);
  40.  
  41. //inventory
  42. response.TrackingEntity = this.ValidateTrackingEntity(request.TrackingEntityBarcode);
  43.  
  44. //validate qty
  45. if (request.AdjustmentType == Interface.AdjustmentType.QtyDecrease)
  46. if (request.AdjustmentQty > response.TrackingEntity.Qty)
  47. throw new Exception(ExceptionInsufficientOnhand);
  48.  
  49. response.Valid = true;
  50. return response;
  51. }
  52. catch (Exception ex)
  53. {
  54. response.ErrorMessages = ex.Message;
  55. response.Valid = false;
  56. return response;
  57. }
  58. }
  59. protected internal override IAdjustmentResponse CommitTransaction(IAdjustmentRequirements request)
  60. {
  61. try
  62. {
  63. Resources.AdjustmentResponse response = new Resources.AdjustmentResponse()
  64. {
  65. Transactions = new List<Transaction>(),
  66. User = request.User
  67. };
  68.  
  69. switch (request.AdjustmentType)
  70. {
  71. case Granite.DomainModel.Interface.AdjustmentType.QtyIncrease:
  72. request.TrackingEntity.Qty += request.AdjustmentQty;
  73. break;
  74. case Granite.DomainModel.Interface.AdjustmentType.QtyDecrease:
  75. request.TrackingEntity.Qty -= request.AdjustmentQty;
  76. break;
  77. }
  78.  
  79. Transaction transaction = this.BuildProcessTransaction(request, request.TrackingEntity);
  80.  
  81. response.Transactions.Add(transaction);
  82. response.TrackingEntity = request.TrackingEntity;
  83.  
  84. Repository.Session.SaveOrUpdate(transaction);
  85. Repository.Session.SaveOrUpdate(request.TrackingEntity);
  86.  
  87. response.ResponseMessage = string.Format("Adjusted {0} by {1}", request.TrackingEntityBarcode, request.AdjustmentQty);
  88. return response;
  89. }
  90. catch (Exception ex)
  91. {
  92. throw new Exception(ex.Message);
  93. }
  94. }
  95.  
  96.  
  97.  
  98. }
Add Comment
Please, Sign In to add comment