Exemplo n.º 1
0
        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;
        }
Exemplo n.º 2
0
 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);
        }
Exemplo n.º 5
0
        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;
        }