示例#1
0
        protected IQueryable <Publisher> AddFilters(MailPusherDBContext context, string searchCriteria, PublisherStatus publisherStatuses, bool isPotentiallyCancelled, List <string> countries, List <int> categories, int minEmailAmount)
        {
            var query = context.Publishers.Select(x => x);

            if (publisherStatuses != 0)
            {
                query = query.Where(x => (x.Status & publisherStatuses) > 0);
            }
            if (!string.IsNullOrEmpty(searchCriteria))
            {
                query = query.Where(x => x.Name.Contains(searchCriteria));
            }
            if (isPotentiallyCancelled)
            {
                var date = DateTime.UtcNow.AddDays(-30);
                query = query.Where(x => x.LastReceivedEmail < date);
            }
            if (countries != null && countries.Count > 0)
            {
                query = query.Where(x => countries.Contains(x.Language));
            }
            if (categories != null && categories.Count > 0)
            {
                query = query.Where(x => categories.Contains(x.NACEID));
            }
            if (minEmailAmount > 0)
            {
                query = query.Where(x => context.Emails.Where(y => y.PublisherID == x.ID).Count() >= minEmailAmount);
            }
            return(query);
        }
示例#2
0
        public Publisher Update(Publisher publisher)
        {
            Publisher result = new Publisher();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                Publisher dbPublisher = context.Publishers.FirstOrDefault(x => x.ID == publisher.ID);
                if (dbPublisher != null)
                {
                    dbPublisher.Domain = publisher.Domain;
                    if (publisher.Status != dbPublisher.Status)
                    {
                        dbPublisher.StatusChanged = DateTime.UtcNow;
                    }
                    dbPublisher.Status   = publisher.Status;
                    dbPublisher.Language = publisher.Language;
                    dbPublisher.NACEID   = publisher.NACEID;
                    dbPublisher.Name     = publisher.Name;

                    dbPublisher.Updater = publisher.Updater;
                }

                context.Entry(dbPublisher).State = EntityState.Modified;
                context.SaveChanges();

                result = context.Publishers.Include(x => x.NACE).FirstOrDefault(x => x.ID == publisher.ID);;
            }
            return(result);
        }
示例#3
0
文件: NACERepo.cs 项目: nielsat/emma
        public List <NACE> GetPublisherNaces()
        {
            List <NACE> result = new List <NACE>();

            using (var context = new MailPusherDBContext())
            {
                var query = (from nace in context.NACEs
                             join publisher in context.Publishers
                             on nace.ID equals publisher.NACEID
                             group nace by new { nace.ID, nace.Description }
                             into gr
                             select new
                {
                    ID = gr.Key.ID,
                    Description = gr.Key.Description
                }).OrderBy(x => x.Description);
                foreach (var item in query)
                {
                    result.Add(new NACE()
                    {
                        ID          = item.ID,
                        Description = item.Description
                    });
                }
            }
            return(result);
        }
示例#4
0
        public Publisher GetPublisherByCountryAndStatus(string countryCode, PublisherStatus status, Direction direction, int publisherId)
        {
            Publisher result = new Publisher();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                var query = context.Publishers.Include(x => x.NACE);
                if (direction == Direction.Next)
                {
                    query = query.Where(x => x.ID > publisherId);
                }

                if (direction == Direction.Previous)
                {
                    query = query.Where(x => x.ID < publisherId);
                }

                if (!string.IsNullOrEmpty(countryCode))
                {
                    query = query.Where(x => x.Language == countryCode);
                }

                result = query.FirstOrDefault(x => x.Status == status);
            }
            return(result);
        }
示例#5
0
        public Publisher GetFirstPublisherByStatus(PublisherStatus status)
        {
            Publisher result = new Publisher();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                result = context.Publishers.Include(x => x.NACE).FirstOrDefault(x => x.Status == status);
            }
            return(result);
        }
示例#6
0
        public Publisher GetPublisher(int publisherId)
        {
            Publisher result = new Publisher();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                result = context.Publishers.Include(x => x.NACE).FirstOrDefault(x => x.ID == publisherId);
            }
            return(result);
        }
示例#7
0
        public int GetTotalRecords()
        {
            int result = 0;

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                result = context.Publishers.Count();
            }
            return(result);
        }
示例#8
0
        public List <Publisher> GetPuglishers(List <int> publisherIds)
        {
            List <Publisher> result = new List <Publisher>();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                result = context.Publishers.Where(x => publisherIds.Contains(x.ID)).ToList();
            }
            return(result);
        }
示例#9
0
        public UserSettings GetUserSettings(string userId)
        {
            UserSettings result = new UserSettings();

            using (var context = new MailPusherDBContext())
            {
                result = context.UserSettings.FirstOrDefault(x => x.UserId == userId);
            }
            return(result);
        }
示例#10
0
文件: EmailRepo.cs 项目: nielsat/emma
        public Email GetPrevEmailByPublisherCountryAndStatus(string countryCode, PublisherStatus status, int publisherId)
        {
            Email result = new Email();

            using (var context = new MailPusherDBContext())
            {
                result = GenerateQueryForEmailByPublisherCountryAndStatus(context, countryCode, status, publisherId, Direction.Previous).FirstOrDefault();
            }
            return(result);
        }
示例#11
0
文件: EmailRepo.cs 项目: nielsat/emma
        public EmailRawData GetEmailBody(int emailId)
        {
            EmailRawData result = new EmailRawData();

            using (var context = new MailPusherDBContext())
            {
                result = context.EmailsRawData.FirstOrDefault(x => x.EmailID == emailId);
            }
            return(result);
        }
示例#12
0
文件: EmailRepo.cs 项目: nielsat/emma
        public Email Get(int emailID)
        {
            Email result = new Email();

            using (var context = new MailPusherDBContext())
            {
                result = context.Emails.FirstOrDefault(x => x.ID == emailID);
            }
            return(result);
        }
示例#13
0
文件: NACERepo.cs 项目: nielsat/emma
        public List <NACE> GetAllRecords()
        {
            List <NACE> result = new List <NACE>();

            using (var context = new MailPusherDBContext())
            {
                result = context.NACEs.ToList();
            }
            return(result);
        }
示例#14
0
        public int GetTotalFilteredRecords(string searchCriteria, PublisherStatus publisherStatuses, bool isPotentiallyCancelled, List <string> countries, List <int> categories, int minEmailAmount)
        {
            int result = 0;

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                result = AddFilters(context, searchCriteria, publisherStatuses, isPotentiallyCancelled, countries, categories, minEmailAmount).Count();
            }
            return(result);
        }
示例#15
0
文件: EmailRepo.cs 项目: nielsat/emma
        public Email GetFirstPublisherEmail(PublisherStatus status, int publisherID)
        {
            Email result = new Email();

            using (var context = new MailPusherDBContext())
            {
                result = context.Emails.OrderBy(x => x.ID).FirstOrDefault(x => x.PublisherID == publisherID);
            }
            return(result);
        }
示例#16
0
文件: EmailRepo.cs 项目: nielsat/emma
        public Email GetEmailByPublisherCountryAndStatus(string countryCode, PublisherStatus status)
        {
            Email result = new Email();

            using (var context = new MailPusherDBContext())
            {
                result = GenerateQueryForEmailByPublisherCountryAndStatus(context, countryCode, status, null, 0).FirstOrDefault();
            }
            return(result);
        }
示例#17
0
文件: EmailRepo.cs 项目: nielsat/emma
        public int GetTotalFilteredRecords(string searchText, int publisherID, DateTime?from, DateTime?to)
        {
            int result = 0;

            using (var context = new MailPusherDBContext())
            {
                var query = AddFilters(context, searchText, publisherID, from, to);
                result = query.Count();
            }
            return(result);
        }
示例#18
0
        public Publisher UpdateLastReceivedEmailDate(int publisherID)
        {
            Publisher result = new Publisher();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                result = context.Publishers.FirstOrDefault(x => x.ID == publisherID);
                result.LastReceivedEmail    = DateTime.UtcNow;
                context.Entry(result).State = EntityState.Modified;
                context.SaveChanges();
            }
            return(result);
        }
示例#19
0
        public Publisher Create(Publisher publisher)
        {
            publisher.Created = DateTime.UtcNow;
            publisher.Updated = DateTime.UtcNow;
            Publisher result = new Publisher();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                result = context.Publishers.Add(publisher);
                context.SaveChanges();
            }
            return(result);
        }
示例#20
0
        public List <Publisher> GetPuglishers(int start, int length, string searchCriteria, PublisherStatus publisherStatuses, bool isPotentiallyCancelled, List <string> countries, List <int> categories, int minEmailAmount)
        {
            List <Publisher> result = new List <Publisher>();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                var query = AddFilters(context, searchCriteria, publisherStatuses, isPotentiallyCancelled, countries, categories, minEmailAmount);

                var tmpResult = query.Include(x => x.NACE).OrderBy(x => x.ID).Skip(start).Take(length);
                result = tmpResult.ToList();
            }
            return(result);
        }
示例#21
0
 public bool Delete(int publisherID)
 {
     using (MailPusherDBContext context = new MailPusherDBContext())
     {
         Publisher dbPublisher = new Publisher()
         {
             ID = publisherID
         };
         context.Publishers.Attach(dbPublisher);
         context.Publishers.Remove(dbPublisher);
         context.SaveChanges();
     }
     return(true);
 }
示例#22
0
文件: EmailRepo.cs 项目: nielsat/emma
        public Email GetFirstPublisherEmail(PublisherStatus status)
        {
            Email result = new Email();

            using (var context = new MailPusherDBContext())
            {
                var publisher = context.Publishers.FirstOrDefault(x => x.Status == status);
                if (publisher != null)
                {
                    result = context.Emails.OrderBy(x => x.ID).FirstOrDefault(x => x.PublisherID == publisher.ID);
                }
            }
            return(result);
        }
示例#23
0
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            GlobalConfiguration.Configure(WebApiConfig.Register);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);

            DataTables.AspNet.Mvc5.Configuration.RegisterDataTables();

            Scheduler.MainScheduler.Start();
            log4net.Config.XmlConfigurator.Configure(new FileInfo(Server.MapPath("~/Web.config")));
            MailPusherDBContext.Create();
        }
示例#24
0
文件: EmailRepo.cs 项目: nielsat/emma
        public List <Email> GetPublisherEmails(int start, int length, string searchCriteria, int publisherID, DateTime?from, DateTime?to, List <Common.Models.SortColumn> sorting)
        {
            List <Email> result = new List <Email>();

            using (var context = new MailPusherDBContext())
            {
                var query = AddFilters(context, searchCriteria, publisherID, from, to, sorting);
                if (sorting == null || sorting.Count == 0)
                {
                    query = query.OrderByDescending(x => x.ReceivedGMT);
                }
                result = query.Skip(start).Take(length).ToList();
            }
            return(result);
        }
示例#25
0
        public List <TimeChartPoint> GetConfirmedSubscriptionsByDate()
        {
            List <TimeChartPoint> result = new List <TimeChartPoint>();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                var query = context.Publishers.Where(x => x.StatusChanged.HasValue && x.Status == PublisherStatus.Confirmed).OrderBy(x => x.StatusChanged).GroupBy(x => DbFunctions.TruncateTime(x.StatusChanged.Value)).Select(group => new TimeChartPoint()
                {
                    Date  = group.Key.Value,
                    Value = group.Count()
                });
                result = query.ToList();
            }
            return(result);
        }
示例#26
0
        public List <PublisherStats> GetStats(List <int> publisherIds)
        {
            List <PublisherStats> result = new List <PublisherStats>();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                var resultQuery = context.Emails.Where(x => publisherIds.Contains(x.PublisherID)).GroupBy(x => x.PublisherID).Select(group => new PublisherStats()
                {
                    PublisherId    = group.Key,
                    ReceivedEmails = group.Count()
                });
                result.AddRange(resultQuery);
            }
            return(result);
        }
示例#27
0
        public UserSettings Create(string userId, string language)
        {
            UserSettings result = new UserSettings()
            {
                Language = language,
                UserId   = userId
            };

            using (var context = new MailPusherDBContext())
            {
                result = context.UserSettings.Add(result);
                context.SaveChanges();
            }
            return(result);
        }
示例#28
0
文件: EmailRepo.cs 项目: nielsat/emma
        public int GetTotalRecords(int publisherID)
        {
            int result = 0;

            using (var context = new MailPusherDBContext())
            {
                var query = context.Emails.AsQueryable();
                if (publisherID > 0)
                {
                    query = query.Where(x => x.PublisherID == publisherID);
                }
                result = context.Emails.Count();
            }
            return(result);
        }
示例#29
0
        public Publisher GetFirstPublisherByCountryAndStatus(string countryCode, PublisherStatus status)
        {
            Publisher result = new Publisher();

            using (MailPusherDBContext context = new MailPusherDBContext())
            {
                var query = context.Publishers.Include(x => x.NACE);
                if (!string.IsNullOrEmpty(countryCode))
                {
                    query = query.Where(x => x.Language == countryCode);
                }
                result = query.FirstOrDefault(x => x.Status == status);
            }
            return(result);
        }
示例#30
0
        public UserSettings Update(string userId, string language)
        {
            UserSettings result = new UserSettings();

            using (var context = new MailPusherDBContext())
            {
                result = context.UserSettings.FirstOrDefault(x => x.UserId == userId);
                if (result.Language != language)
                {
                    result.Language             = language;
                    context.Entry(result).State = EntityState.Modified;
                    context.SaveChanges();
                }
            }
            return(result);
        }