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

WeekRepository.cs 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. using Microsoft.EntityFrameworkCore;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using UnivateProperties_API.Context;
  6. using UnivateProperties_API.Model.Timeshare;
  7. using UnivateProperties_API.Repository.Region;
  8. using UnivateProperties_API.Repository.Users;
  9. namespace UnivateProperties_API.Repository.Timeshare
  10. {
  11. public class WeekRepository : IRepository<TimeshareWeek>
  12. {
  13. private readonly DataContext _dbContext;
  14. public WeekRepository(DataContext dbContext)
  15. {
  16. _dbContext = dbContext;
  17. }
  18. public List<TimeshareWeek> Get(Func<TimeshareWeek, bool> where)
  19. {
  20. return _dbContext.Weeks.Where(where).ToList();
  21. }
  22. public List<TimeshareWeek> GetAll()
  23. {
  24. return _dbContext.Weeks.ToList();
  25. }
  26. private TimeshareWeek GetWeekDetailed(TimeshareWeek week)
  27. {
  28. // Get Agent
  29. if(week.AgentId != 0 && week.Agent == null)
  30. {
  31. AgentRepository agentRepo = new AgentRepository(_dbContext);
  32. week.Agent = agentRepo.GetDetailed(x => x.Id == week.AgentId);
  33. }
  34. // Get Agency
  35. if(week.AgencyId != 0 && week.Agency == null)
  36. {
  37. AgencyRepository agencyRepo = new AgencyRepository(_dbContext);
  38. week.Agency = agencyRepo.GetDetailed(x => x.Id == week.AgencyId);
  39. }
  40. // Get Region
  41. if(week.RegionId != 0 && week.Region == null)
  42. {
  43. ProvinceRepository provinceRepo = new ProvinceRepository(_dbContext);
  44. week.Region = provinceRepo.GetDetailed(x => x.Id == week.RegionId);
  45. }
  46. // Get Status
  47. if(week.StatusId != 0 && week.Status == null)
  48. {
  49. StatusRepository statusRepo = new StatusRepository(_dbContext);
  50. week.Status = statusRepo.GetDetailed(x => x.Id == week.StatusId);
  51. }
  52. return week;
  53. }
  54. public TimeshareWeek GetDetailed(Func<TimeshareWeek, bool> first)
  55. {
  56. var item = _dbContext.Weeks.FirstOrDefault(first);
  57. item = GetWeekDetailed(item);
  58. return item;
  59. }
  60. public List<TimeshareWeek> GetDetailedAll()
  61. {
  62. var list = GetAll();
  63. List<TimeshareWeek> weeklist = new List<TimeshareWeek>();
  64. foreach(var item in list)
  65. {
  66. weeklist.Add(GetWeekDetailed(item));
  67. }
  68. return weeklist;
  69. }
  70. public void Insert(TimeshareWeek item)
  71. {
  72. item = GetWeekDetailed(item);
  73. // Set starting Status of A1
  74. StatusRepository repo = new StatusRepository(_dbContext);
  75. item.Status = repo.GetDetailed(s => s.Code == "A1");
  76. item.StatusId = item.Status.Id;
  77. _dbContext.Add(item);
  78. Save();
  79. }
  80. public void Insert(IEnumerable<TimeshareWeek> items)
  81. {
  82. foreach (var item in items)
  83. {
  84. _dbContext.Add(item);
  85. }
  86. Save();
  87. }
  88. public void Remove(TimeshareWeek item)
  89. {
  90. var i = _dbContext.Weeks.Find(item);
  91. _dbContext.Weeks.Remove(i);
  92. Save();
  93. }
  94. public void Remove(IEnumerable<TimeshareWeek> items)
  95. {
  96. foreach (var item in items)
  97. {
  98. var i = _dbContext.Weeks.Find(item);
  99. _dbContext.Weeks.Remove(i);
  100. }
  101. Save();
  102. }
  103. public void RemoveAtId(int item)
  104. {
  105. var i = _dbContext.Weeks.Find(item);
  106. _dbContext.Weeks.Remove(i);
  107. Save();
  108. }
  109. public void Save()
  110. {
  111. _dbContext.SaveChanges();
  112. }
  113. public void Update(TimeshareWeek item)
  114. {
  115. _dbContext.Entry(item).State = EntityState.Modified;
  116. Save();
  117. }
  118. }
  119. }