API
選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

EmailRepository.cs 3.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  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.Communication;
  7. namespace UnivateProperties_API.Repository.Communication
  8. {
  9. public class EmailRepository : IRepository<Email>
  10. {
  11. private readonly DataContext _dbContext;
  12. public EmailRepository(DataContext dbContext)
  13. {
  14. _dbContext = dbContext;
  15. }
  16. public List<Email> Get(Func<Email, bool> where)
  17. {
  18. return _dbContext.Emails.Where(where).ToList();
  19. }
  20. public List<Email> GetAll()
  21. {
  22. return _dbContext.Emails.ToList();
  23. }
  24. public Email GetDetailed(Func<Email, bool> first)
  25. {
  26. var item = _dbContext.Emails.FirstOrDefault(first);
  27. SMTPAccountRepository account = new SMTPAccountRepository(_dbContext);
  28. item = GetDetailedObject(item, account);
  29. return item;
  30. }
  31. private Email GetDetailedObject(Email item, SMTPAccountRepository repo)
  32. {
  33. item.Sender = repo.GetDetailed(x => x.Id == item.SenderId);
  34. return item;
  35. }
  36. public List<Email> GetDetailedAll()
  37. {
  38. var list = GetAll();
  39. SMTPAccountRepository account = new SMTPAccountRepository(_dbContext);
  40. foreach (var item in list)
  41. {
  42. item.Sender = account.GetDetailed(x => x.Id == item.SenderId);
  43. }
  44. return list;
  45. }
  46. public void Insert(Email item)
  47. {
  48. SMTPAccountRepository account = new SMTPAccountRepository(_dbContext);
  49. item = GetDetailedObject(item, account);
  50. item.Id = NewId();
  51. item.SendMail();
  52. _dbContext.Add(item);
  53. Save();
  54. }
  55. public void Insert(IEnumerable<Email> items)
  56. {
  57. int id = NewId();
  58. foreach (var item in items)
  59. {
  60. item.Id = id;
  61. item.SendMail();
  62. _dbContext.Add(item);
  63. id += 1;
  64. }
  65. Save();
  66. }
  67. public void Remove(Email item)
  68. {
  69. var i = _dbContext.Emails.Find(item);
  70. _dbContext.Emails.Remove(i);
  71. Save();
  72. }
  73. public void Remove(IEnumerable<Email> items)
  74. {
  75. foreach (var item in items)
  76. {
  77. Email i = _dbContext.Emails.Find(item);
  78. _dbContext.Emails.Remove(i);
  79. }
  80. Save();
  81. }
  82. public void RemoveAtId(int item)
  83. {
  84. var i = _dbContext.Emails.Find(item);
  85. _dbContext.Emails.Remove(i);
  86. Save();
  87. }
  88. public void Update(Email item)
  89. {
  90. _dbContext.Entry(item).State = EntityState.Modified;
  91. Save();
  92. }
  93. public void Save()
  94. {
  95. _dbContext.SaveChanges();
  96. }
  97. public int NewId()
  98. {
  99. int id = 0;
  100. if (_dbContext.Emails.Count() > 0)
  101. {
  102. id = _dbContext.Emails.Max(x => x.Id);
  103. }
  104. id += 1;
  105. return id;
  106. }
  107. }
  108. }