using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; using System.Linq; using UnivateProperties_API.Context; using UnivateProperties_API.Model.Communication; namespace UnivateProperties_API.Repository.Communication { public class EmailRepository : IRepository { private readonly DataContext _dbContext; public EmailRepository(DataContext dbContext) { _dbContext = dbContext; } public List Get(Func where) { return _dbContext.Emails.Where(where).ToList(); } public List GetAll() { foreach(var item in _dbContext.Emails.ToList()) { foreach(var innerItem in item.GetAllProperties()) { var vv = innerItem; } var v = (string)item["Subject"]; } return _dbContext.Emails.ToList(); } public Email GetDetailed(Func first) { var item = _dbContext.Emails.FirstOrDefault(first); SMTPAccountRepository account = new SMTPAccountRepository(_dbContext); item = GetDetailedObject(item, account); return item; } private Email GetDetailedObject(Email item, SMTPAccountRepository repo) { item.Sender = repo.GetDetailed(x => x.Id == item.SenderId); return item; } public List GetDetailedAll() { var list = GetAll(); SMTPAccountRepository account = new SMTPAccountRepository(_dbContext); foreach (var item in list) { item.Sender = account.GetDetailed(x => x.Id == item.SenderId); } return list; } public void Insert(Email item) { SMTPAccountRepository account = new SMTPAccountRepository(_dbContext); item = GetDetailedObject(item, account); item.SendMail(); _dbContext.Add(item); Save(); } public void Insert(IEnumerable items) { foreach (var item in items) { item.SendMail(); _dbContext.Add(item); } Save(); } public void Remove(Email item) { var i = _dbContext.Emails.Find(item); _dbContext.Emails.Remove(i); Save(); } public void Remove(IEnumerable items) { foreach (var item in items) { Email i = _dbContext.Emails.Find(item); _dbContext.Emails.Remove(i); } Save(); } public void RemoveAtId(int item) { var i = _dbContext.Emails.Find(item); _dbContext.Emails.Remove(i); Save(); } public void Update(Email item) { _dbContext.Entry(item).State = EntityState.Modified; Save(); } public void Save() { _dbContext.SaveChanges(); } } }