public EmailFilter AddEmailFilter(string mbname, [FromBody] EmailFilterDto filterToAdd) { var filter = Mapper.Map<EmailFilter>(filterToAdd); ImapMailBoxConfiguration conf; if (filter.MoveToFolder == null) { filter.MoveToFolder = ""; } if (filter.ForwardToAddress == null) { filter.ForwardToAddress = ""; } using (var ctx = new MailModelContainer()) { conf = ctx.ImapMailBoxConfigurations.FirstOrDefault(x => x.MailBoxName.Equals(mbname)); if (conf == null) return null; conf.EmailFilters.Add(filter); ctx.SaveChanges(); } Task.Factory.StartNew(() => InboxWatcher.ConfigureMailBox(conf)); return filter; }
public EmailFilter DeleteEmailFilter(string mbname, int id) { using (var ctx = new MailModelContainer()) { var selection = ctx.EmailFilters.FirstOrDefault(x => x.Id == id); ctx.EmailFilters.Remove(selection); ctx.SaveChanges(); return selection; } }
public HttpResponseMessage Delete(int id) { using (var ctx = new MailModelContainer()) { var itemToDelete = ctx.NotificationConfigurations.Single(x => x.Id == id); ctx.NotificationConfigurations.Remove(itemToDelete); ctx.SaveChanges(); } return new HttpResponseMessage(HttpStatusCode.OK); }
public HttpResponseMessage DeleteMailBox(int id) { using (var ctx = new MailModelContainer()) { var selection = ctx.ImapMailBoxConfigurations.First(x => x.Id == id); InboxWatcher.MailBoxes.Remove(selection.Id); ctx.ImapMailBoxConfigurations.Attach(selection); ctx.ImapMailBoxConfigurations.Remove(selection); ctx.SaveChanges(); } return new HttpResponseMessage(HttpStatusCode.OK); }
public EmailFilter ChangeEmailFilter(string mbname, [FromBody] EmailFilterDto filterToAdd, int id) { var filter = Mapper.Map<EmailFilter>(filterToAdd); using (var ctx = new MailModelContainer()) { var selection = ctx.EmailFilters.First(x => x.Id == id); selection.FilterName = filter.FilterName; selection.ForwardThis = filter.ForwardThis; selection.ForwardToAddress = filter.ForwardToAddress; selection.MoveToFolder = filter.MoveToFolder; selection.SentFromContains = filter.SentFromContains; selection.SubjectContains = filter.SubjectContains; ctx.SaveChanges(); return selection; } }
public NotificationConfiguration UpdateNotificationConfiguration(Dictionary<string, object> data) { var notificationAction = GetNotificationInstance(data); var id = int.Parse(data.First(x => x.Key.Equals("Id")).Value.ToString()); using (var ctx = new MailModelContainer()) { var selection = ctx.NotificationConfigurations.Find(id); selection.ConfigurationXml = notificationAction.Serialize(); selection.ImapMailBoxConfigurationId = int.Parse(data.First(x => x.Key.Equals("MailBoxId")).Value.ToString()); ctx.Entry(selection).State = EntityState.Modified; ctx.SaveChanges(); return selection; } }
public NotificationConfiguration PostNotification(Dictionary<string, object> data) { var notificationAction = GetNotificationInstance(data); var not = new NotificationConfiguration() { ConfigurationXml = notificationAction.Serialize(), NotificationType = notificationAction.GetType().FullName, ImapMailBoxConfigurationId = int.Parse(data.First(x => x.Key.Equals("MailBoxId")).Value.ToString()), }; //add a new record using (var ctx = new MailModelContainer()) { ctx.NotificationConfigurations.Add(not); ctx.SaveChanges(); var config = ctx.ImapMailBoxConfigurations.FirstOrDefault(x => x.Id == not.ImapMailBoxConfigurationId); Task.Factory.StartNew(() => InboxWatcher.ConfigureMailBox(config)); } return not; }
public IClientConfiguration Post(ClientConfigurationDto conf) { IClientConfiguration result; using (var ctx = new MailModelContainer()) { result = ctx.ImapMailBoxConfigurations.Add(conf.GetMailBoxConfiguration()); ctx.SaveChanges(); } Task.Factory.StartNew(async () => { await InboxWatcher.ConfigureMailBox(result); }); return new ClientConfigurationDto(result); }
public IClientConfiguration Put(ClientConfigurationDto conf) { IClientConfiguration selection; using (var ctx = new MailModelContainer()) { selection = ctx.ImapMailBoxConfigurations.Find(conf.Id); ctx.Entry(selection).CurrentValues.SetValues(conf); ctx.SaveChanges(); } InboxWatcher.MailBoxes.Remove(conf.Id); Task.Factory.StartNew(async () => { await InboxWatcher.ConfigureMailBox(conf); }); return selection; }