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.

EmailRepository.cs 3.5KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131
  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. foreach(var item in _dbContext.Emails.ToList())
  23. {
  24. foreach(var innerItem in item.GetAllProperties())
  25. {
  26. var vv = innerItem;
  27. }
  28. var v = (string)item["Subject"];
  29. }
  30. return _dbContext.Emails.ToList();
  31. }
  32. public Email GetDetailed(Func<Email, bool> first)
  33. {
  34. var item = _dbContext.Emails.FirstOrDefault(first);
  35. SMTPAccountRepository account = new SMTPAccountRepository(_dbContext);
  36. item = GetDetailedObject(item, account);
  37. return item;
  38. }
  39. private Email GetDetailedObject(Email item, SMTPAccountRepository repo)
  40. {
  41. item.Sender = repo.GetDetailed(x => x.Id == item.SenderId);
  42. return item;
  43. }
  44. public List<Email> GetDetailedAll()
  45. {
  46. var list = GetAll();
  47. SMTPAccountRepository account = new SMTPAccountRepository(_dbContext);
  48. foreach (var item in list)
  49. {
  50. item.Sender = account.GetDetailed(x => x.Id == item.SenderId);
  51. }
  52. return list;
  53. }
  54. public void Insert(Email item)
  55. {
  56. SMTPAccountRepository account = new SMTPAccountRepository(_dbContext);
  57. item = GetDetailedObject(item, account);
  58. item.Id = NewId();
  59. item.SendMail();
  60. _dbContext.Add(item);
  61. Save();
  62. }
  63. public void Insert(IEnumerable<Email> items)
  64. {
  65. int id = NewId();
  66. foreach (var item in items)
  67. {
  68. item.Id = id;
  69. item.SendMail();
  70. _dbContext.Add(item);
  71. id += 1;
  72. }
  73. Save();
  74. }
  75. public void Remove(Email item)
  76. {
  77. var i = _dbContext.Emails.Find(item);
  78. _dbContext.Emails.Remove(i);
  79. Save();
  80. }
  81. public void Remove(IEnumerable<Email> items)
  82. {
  83. foreach (var item in items)
  84. {
  85. Email i = _dbContext.Emails.Find(item);
  86. _dbContext.Emails.Remove(i);
  87. }
  88. Save();
  89. }
  90. public void RemoveAtId(int item)
  91. {
  92. var i = _dbContext.Emails.Find(item);
  93. _dbContext.Emails.Remove(i);
  94. Save();
  95. }
  96. public void Update(Email item)
  97. {
  98. _dbContext.Entry(item).State = EntityState.Modified;
  99. Save();
  100. }
  101. public void Save()
  102. {
  103. _dbContext.SaveChanges();
  104. }
  105. public int NewId()
  106. {
  107. int id = 0;
  108. if (_dbContext.Emails.Count() > 0)
  109. {
  110. id = _dbContext.Emails.Max(x => x.Id);
  111. }
  112. id += 1;
  113. return id;
  114. }
  115. }
  116. }