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.

WeekRepository.cs 5.8KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. using Microsoft.EntityFrameworkCore;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using UnivateProperties_API.Containers.Timeshare;
  6. using UnivateProperties_API.Context;
  7. using UnivateProperties_API.Model.Timeshare;
  8. using UnivateProperties_API.Repository.Region;
  9. using UnivateProperties_API.Repository.Users;
  10. namespace UnivateProperties_API.Repository.Timeshare
  11. {
  12. public class WeekRepository : IRepository<TimeshareWeek>
  13. {
  14. private readonly DataContext _dbContext;
  15. public WeekRepository(DataContext dbContext)
  16. {
  17. _dbContext = dbContext;
  18. }
  19. public List<TimeshareWeek> Get(Func<TimeshareWeek, bool> where)
  20. {
  21. return _dbContext.Weeks.Where(where).ToList();
  22. }
  23. public List<TimeshareWeek> GetAll()
  24. {
  25. return _dbContext.Weeks.ToList();
  26. }
  27. public TimeshareWeek GetDetailed(Func<TimeshareWeek, bool> first)
  28. {
  29. var item = _dbContext.Weeks.FirstOrDefault(first);
  30. item = GetDetailedWeek(item);
  31. return item;
  32. }
  33. public List<WeekDto> GetDtoListAll()
  34. {
  35. List<WeekDto> list = new List<WeekDto>();
  36. foreach(var item in GetDetailedAll())
  37. {
  38. list.Add(new WeekDto(item));
  39. }
  40. return list;
  41. }
  42. public List<TimeshareWeek> GetDetailedAll()
  43. {
  44. var list = GetAll();
  45. List<TimeshareWeek> weeklist = new List<TimeshareWeek>();
  46. foreach(var item in list)
  47. {
  48. weeklist.Add(GetDetailedWeek(item));
  49. }
  50. return weeklist;
  51. }
  52. private TimeshareWeek GetDetailedWeek(TimeshareWeek week)
  53. {
  54. if(week.AgencyId != null)
  55. {
  56. AgencyRepository agency = new AgencyRepository(_dbContext);
  57. week.Agency = agency.Get(x => x.Id == week.AgencyId).FirstOrDefault();
  58. }
  59. if(week.AgentId != null)
  60. {
  61. AgentRepository agent = new AgentRepository(_dbContext);
  62. week.Agent = agent.Get(x => x.Id == week.AgentId).FirstOrDefault();
  63. }
  64. if (week.StatusId != 0)
  65. {
  66. StatusRepository status = new StatusRepository(_dbContext);
  67. week.Status = status.Get(x => x.Id == week.StatusId).FirstOrDefault();
  68. }
  69. if (week.RegionId != 0)
  70. {
  71. ProvinceRepository province = new ProvinceRepository(_dbContext);
  72. week.Region = province.Get(x => x.Id == week.RegionId).FirstOrDefault();
  73. }
  74. if (week.OwnerId != 0)
  75. {
  76. IndividualRepository individual = new IndividualRepository(_dbContext);
  77. week.Owner = individual.Get(x => x.Id == week.OwnerId).FirstOrDefault();
  78. }
  79. return week;
  80. }
  81. public void Insert(TimeshareWeek item)
  82. {
  83. item = GetDetailedWeek(item);
  84. // Set starting Status of A1
  85. StatusRepository repo = new StatusRepository(_dbContext);
  86. item.Status = repo.GetDetailed(s => s.Code == "A1");
  87. if(item.Status != null)
  88. {
  89. //Create initial
  90. item.Status = new Status()
  91. {
  92. Code = "A1",
  93. Description = "Pending verification",
  94. StatusType = StatusType.Timeshare,
  95. ModifiedBy = "KobusB"
  96. };
  97. }
  98. _dbContext.Add(item);
  99. Save();
  100. }
  101. public void Insert(IEnumerable<TimeshareWeek> items)
  102. {
  103. foreach (var item in items)
  104. {
  105. _dbContext.Add(item);
  106. }
  107. Save();
  108. }
  109. public void Remove(TimeshareWeek item)
  110. {
  111. var i = _dbContext.Weeks.Find(item);
  112. _dbContext.Weeks.Remove(i);
  113. Save();
  114. }
  115. public void Remove(IEnumerable<TimeshareWeek> items)
  116. {
  117. foreach (var item in items)
  118. {
  119. var i = _dbContext.Weeks.Find(item);
  120. _dbContext.Weeks.Remove(i);
  121. }
  122. Save();
  123. }
  124. public void RemoveAtId(int item)
  125. {
  126. var i = _dbContext.Weeks.Find(item);
  127. _dbContext.Weeks.Remove(i);
  128. Save();
  129. }
  130. public void Save()
  131. {
  132. _dbContext.SaveChanges();
  133. }
  134. public void Update(TimeshareWeek item)
  135. {
  136. _dbContext.Entry(item).State = EntityState.Modified;
  137. Save();
  138. }
  139. public List<TimeshareWeek> GetBy(WeekFilterDto week)
  140. {
  141. List<TimeshareWeek> item = GetDetailedAll();
  142. if (!string.IsNullOrEmpty(week.RegionCode))
  143. {
  144. item = item.Where(x => x.Region != null && x.Region.Code?.ToLower() == week.RegionCode.ToLower()).ToList();
  145. }
  146. if (!string.IsNullOrEmpty(week.ResortCode))
  147. {
  148. item = item.Where(x => x.ResortCode?.ToLower() == week.ResortCode).ToList();
  149. }
  150. if (week.Date != null)
  151. {
  152. item = item.Where(x =>
  153. x.ArrivalDate >= week.Date.Value.AddDays(-7)
  154. && x.DepartureDate <= week.Date.Value.AddDays(7)).ToList();
  155. }
  156. if (week.MinAmount != null && week.MinAmount != 0)
  157. {
  158. item = item.Where(x => x.SellPrice >= week.MinAmount).ToList();
  159. }
  160. if (week.MaxAmount != null && week.MaxAmount != 0)
  161. {
  162. item.Where(x => x.SellPrice <= week.MaxAmount).ToList();
  163. }
  164. return item;
  165. }
  166. }
  167. }