API
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

BidRepository.cs 6.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225
  1. using Microsoft.EntityFrameworkCore;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using UnivateProperties_API.Containers.ProcessFlow;
  6. using UnivateProperties_API.Context;
  7. using UnivateProperties_API.Model.ProcessFlow;
  8. namespace UnivateProperties_API.Repository.ProccessFlow
  9. {
  10. public class BidRepository : IBidRepository
  11. {
  12. private readonly DataContext _dbContext;
  13. public BidRepository(DataContext dbContext)
  14. {
  15. _dbContext = dbContext;
  16. }
  17. public List<BidItem> Get(Func<BidItem, bool> where)
  18. {
  19. return _dbContext.BidItems.Where(where).ToList();
  20. }
  21. public List<BidItem> GetAll()
  22. {
  23. return _dbContext.BidItems.ToList();
  24. }
  25. public BidItem GetDetailed(Func<BidItem, bool> first)
  26. {
  27. var item = _dbContext.BidItems.FirstOrDefault(first);
  28. return item;
  29. }
  30. public List<BidItem> GetDetailedAll()
  31. {
  32. return GetAll();
  33. }
  34. public List<BidItemDisplay> GetAllBid()
  35. {
  36. List<BidItem> bids = _dbContext.BidItems
  37. .Include("Property")
  38. .Include("TimeshareWeek")
  39. .Include("BidMaker")
  40. .Include("Status")
  41. .Include("Property.Owner")
  42. .Include("Property.Agent")
  43. .ToList();
  44. return LoadDisplay(bids);
  45. }
  46. public List<BidItemDisplay> GetMyBid(Func<BidItem, bool> where)
  47. {
  48. List<BidItem> bids = _dbContext.BidItems
  49. .Include("Property")
  50. .Include("TimeshareWeek")
  51. .Include("BidMaker")
  52. .Include("Status")
  53. .Where(where)
  54. .ToList();
  55. return LoadDisplay(bids);
  56. }
  57. private List<BidItemDisplay> LoadDisplay(List<BidItem> bids)
  58. {
  59. List<BidItemDisplay> list = new List<BidItemDisplay>();
  60. foreach (BidItem item in bids)
  61. {
  62. BidItemDisplay bid = new BidItemDisplay()
  63. {
  64. Id = item.Id,
  65. Offer = (decimal)item.Amount,
  66. Comment = item.Comment,
  67. DeclineReason = item.DeclinedReason
  68. };
  69. if (item.PropertyId != null)
  70. {
  71. bid.Type = "Property";
  72. bid.ShortDescription = item.Property.ShortDescription;
  73. bid.Description = item.Property.Description;
  74. bid.Price = item.Property.Price;
  75. }
  76. if (item.TimeshareWeekId != null)
  77. {
  78. bid.Type = "Timeshare";
  79. bid.ShortDescription = string.Format("{0} {1} {2}", item.TimeshareWeek.ResortCode, item.TimeshareWeek.WeekNumber, item.TimeshareWeek.UnitNumber);
  80. bid.Price = (decimal)item.TimeshareWeek.SellPrice;
  81. bid.Resort = item.TimeshareWeek.ResortName;
  82. bid.Unit = item.TimeshareWeek.UnitNumber;
  83. bid.Module = item.TimeshareWeek.Module;
  84. }
  85. if (item.Status != null)
  86. {
  87. bid.StatusCode = item.Status.Code;
  88. bid.Status = string.Format("{0} - {1}", item.Status.Code, item.Status.Description);
  89. }
  90. if (item.BidMaker != null)
  91. bid.MadeBy = item.BidMaker.Name + " " + item.BidMaker.Surname;
  92. bid.MadeBy = "Bob";
  93. list.Add(bid);
  94. }
  95. return list;
  96. }
  97. public void Insert(BidItem item)
  98. {
  99. var status = _dbContext.Status.Where(x => x.Code == "E1").FirstOrDefault();
  100. if (status != null)
  101. item.StatusId = status.Id;
  102. _dbContext.Add(item);
  103. Save();
  104. }
  105. public void Insert(IEnumerable<BidItem> items)
  106. {
  107. foreach (var item in items)
  108. {
  109. _dbContext.Add(item);
  110. }
  111. Save();
  112. }
  113. public void Remove(BidItem item)
  114. {
  115. var i = _dbContext.BidItems.Find(item);
  116. _dbContext.BidItems.Remove(i);
  117. Save();
  118. }
  119. public void Remove(IEnumerable<BidItem> items)
  120. {
  121. foreach (var item in items)
  122. {
  123. var i = _dbContext.BidItems.Find(item);
  124. _dbContext.BidItems.Remove(i);
  125. }
  126. Save();
  127. }
  128. public void RemoveAtId(int item)
  129. {
  130. var i = _dbContext.BidItems.Find(item);
  131. _dbContext.BidItems.Remove(i);
  132. Save();
  133. }
  134. public void Save()
  135. {
  136. _dbContext.SaveChanges();
  137. }
  138. public void Update(BidItem item)
  139. {
  140. _dbContext.Entry(item).State = EntityState.Modified;
  141. Save();
  142. }
  143. public BidItemDisplay AcceptBid(int id)
  144. {
  145. var item = _dbContext.BidItems
  146. .Include("Property")
  147. .Include("TimeshareWeek")
  148. .Include("BidMaker")
  149. .Include("Status")
  150. .Where(x => x.Id == id).FirstOrDefault();
  151. var status = (from s in _dbContext.Status
  152. where s.Code == "E2"
  153. select s).FirstOrDefault();
  154. if (status != null)
  155. {
  156. item.StatusId = status.Id;
  157. }
  158. _dbContext.Entry(item).State = EntityState.Modified;
  159. Save();
  160. List<BidItem> bids = new List<BidItem>() { item };
  161. return LoadDisplay(bids).Find(x => x.Id == item.Id);
  162. }
  163. public BidItemDisplay DecineBid(BitItemDecline item)
  164. {
  165. var bid = _dbContext.BidItems
  166. .Include("Property")
  167. .Include("TimeshareWeek")
  168. .Include("BidMaker")
  169. .Include("Status")
  170. .Where(x => x.Id == item.Id).FirstOrDefault();
  171. var status = (from s in _dbContext.Status
  172. where s.Code == "E3"
  173. select s).FirstOrDefault();
  174. if (status != null)
  175. {
  176. bid.StatusId = status.Id;
  177. }
  178. bid.DeclinedReason = item.Comment;
  179. _dbContext.Entry(bid).State = EntityState.Modified;
  180. Save();
  181. List<BidItem> bids = new List<BidItem>() { bid };
  182. return LoadDisplay(bids).Find(x => x.Id == bid.Id);
  183. }
  184. public int NewId()
  185. {
  186. // Not sure if properties need it
  187. return 0;
  188. }
  189. }
  190. }