API
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

WeekRepository.cs 5.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  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. private TimeshareWeek GetWeekDetailed(TimeshareWeek week)
  28. {
  29. // Get Agent
  30. if(week.AgentId != 0 && week.Agent == null)
  31. {
  32. AgentRepository agentRepo = new AgentRepository(_dbContext);
  33. week.Agent = agentRepo.GetDetailed(x => x.Id == week.AgentId);
  34. }
  35. // Get Agency
  36. if(week.AgencyId != 0 && week.Agency == null)
  37. {
  38. AgencyRepository agencyRepo = new AgencyRepository(_dbContext);
  39. week.Agency = agencyRepo.GetDetailed(x => x.Id == week.AgencyId);
  40. }
  41. // Get Region
  42. if(week.RegionId != 0 && week.Region == null)
  43. {
  44. ProvinceRepository provinceRepo = new ProvinceRepository(_dbContext);
  45. week.Region = provinceRepo.GetDetailed(x => x.Id == week.RegionId);
  46. }
  47. // Get Status
  48. if(week.StatusId != 0 && week.Status == null)
  49. {
  50. StatusRepository statusRepo = new StatusRepository(_dbContext);
  51. week.Status = statusRepo.GetDetailed(x => x.Id == week.StatusId);
  52. }
  53. return week;
  54. }
  55. public TimeshareWeek GetDetailed(Func<TimeshareWeek, bool> first)
  56. {
  57. var item = _dbContext.Weeks.FirstOrDefault(first);
  58. item = GetWeekDetailed(item);
  59. return item;
  60. }
  61. public List<TimeshareWeek> GetDetailedAll()
  62. {
  63. var list = GetAll();
  64. List<TimeshareWeek> weeklist = new List<TimeshareWeek>();
  65. foreach(var item in list)
  66. {
  67. weeklist.Add(GetWeekDetailed(item));
  68. }
  69. return weeklist;
  70. }
  71. public void Insert(TimeshareWeek item)
  72. {
  73. item = GetWeekDetailed(item);
  74. // Set starting Status of A1
  75. StatusRepository repo = new StatusRepository(_dbContext);
  76. item.Status = repo.GetDetailed(s => s.Code == "A1");
  77. if(item.Status != null)
  78. {
  79. //Create initial
  80. item.Status = new Status()
  81. {
  82. Code = "A1",
  83. Description = "Pending verification",
  84. StatusType = StatusType.Timeshare,
  85. ModifiedBy = "KobusB"
  86. };
  87. }
  88. _dbContext.Add(item);
  89. Save();
  90. }
  91. public void Insert(IEnumerable<TimeshareWeek> items)
  92. {
  93. foreach (var item in items)
  94. {
  95. _dbContext.Add(item);
  96. }
  97. Save();
  98. }
  99. public void Remove(TimeshareWeek item)
  100. {
  101. var i = _dbContext.Weeks.Find(item);
  102. _dbContext.Weeks.Remove(i);
  103. Save();
  104. }
  105. public void Remove(IEnumerable<TimeshareWeek> items)
  106. {
  107. foreach (var item in items)
  108. {
  109. var i = _dbContext.Weeks.Find(item);
  110. _dbContext.Weeks.Remove(i);
  111. }
  112. Save();
  113. }
  114. public void RemoveAtId(int item)
  115. {
  116. var i = _dbContext.Weeks.Find(item);
  117. _dbContext.Weeks.Remove(i);
  118. Save();
  119. }
  120. public void Save()
  121. {
  122. _dbContext.SaveChanges();
  123. }
  124. public void Update(TimeshareWeek item)
  125. {
  126. _dbContext.Entry(item).State = EntityState.Modified;
  127. Save();
  128. }
  129. public List<TimeshareWeek> GetBy(WeekFilterDto week)
  130. {
  131. List<TimeshareWeek> item = GetDetailedAll();
  132. if (!string.IsNullOrEmpty(week.RegionCode))
  133. {
  134. item = item.Where(x => x.Region != null && x.Region.Code?.ToLower() == week.RegionCode.ToLower()).ToList();
  135. }
  136. if (!string.IsNullOrEmpty(week.ResortCode))
  137. {
  138. item = item.Where(x => x.ResortCode?.ToLower() == week.ResortCode).ToList();
  139. }
  140. if (week.Date != null)
  141. {
  142. item = item.Where(x =>
  143. x.ArrivalDate >= week.Date.Value.AddDays(-7)
  144. && x.DepartureDate <= week.Date.Value.AddDays(7)).ToList();
  145. }
  146. if (week.MinAmount != null && week.MinAmount != 0)
  147. {
  148. item = item.Where(x => x.SellPrice >= week.MinAmount).ToList();
  149. }
  150. if (week.MaxAmount != null && week.MaxAmount != 0)
  151. {
  152. item.Where(x => x.SellPrice <= week.MaxAmount).ToList();
  153. }
  154. return item;
  155. }
  156. }
  157. }