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.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  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.SendMail();
  59. _dbContext.Add(item);
  60. Save();
  61. }
  62. public void Insert(IEnumerable<Email> items)
  63. {
  64. foreach (var item in items)
  65. {
  66. item.SendMail();
  67. _dbContext.Add(item);
  68. }
  69. Save();
  70. }
  71. public void Remove(Email item)
  72. {
  73. var i = _dbContext.Emails.Find(item);
  74. _dbContext.Emails.Remove(i);
  75. Save();
  76. }
  77. public void Remove(IEnumerable<Email> items)
  78. {
  79. foreach (var item in items)
  80. {
  81. Email i = _dbContext.Emails.Find(item);
  82. _dbContext.Emails.Remove(i);
  83. }
  84. Save();
  85. }
  86. public void RemoveAtId(int item)
  87. {
  88. var i = _dbContext.Emails.Find(item);
  89. _dbContext.Emails.Remove(i);
  90. Save();
  91. }
  92. public void Update(Email item)
  93. {
  94. _dbContext.Entry(item).State = EntityState.Modified;
  95. Save();
  96. }
  97. public void Save()
  98. {
  99. _dbContext.SaveChanges();
  100. }
  101. }
  102. }