示例#1
0
 public static bool HasCredentials(string username)
 {
     using (var db = new ezFixUpDataContext())
     {
         return db.TwitterCredentials.Any(tc => tc.u_username == username);
     }
 }
示例#2
0
        public static void PublishTweet(string username, string tweet)
        {
            using (var db = new ezFixUpDataContext())
            {
                var credentials = db.TwitterCredentials.FirstOrDefault(tc => tc.u_username == username);
                if (credentials == null) return;

                // encode the username/password
                string user =
                    Convert.ToBase64String(
                        System.Text.Encoding.UTF8.GetBytes(credentials.tc_username + ":" + credentials.tc_password));
                // determine what we want to upload as a status
                byte[] bytes = System.Text.Encoding.ASCII.GetBytes("status=" + tweet);
                // connect with the update page
                var request = (HttpWebRequest) WebRequest.Create("https://twitter.com/statuses/update.xml");
                // set the method to POST
                request.Method = "POST";
                // thanks to argodev for this recent change!
                request.ServicePoint.Expect100Continue = false;
                // set the authorisation levels
                request.Headers.Add("Authorization", "Basic " + user);
                request.ContentType = "application/x-www-form-urlencoded";
                // set the length of the content
                request.ContentLength = bytes.Length;
                // set up the stream
                Stream reqStream = request.GetRequestStream();
                // write to the stream
                reqStream.Write(bytes, 0, bytes.Length);
                // close the stream
                reqStream.Close();
            }
        }
示例#3
0
        //public static int FetchPollsCount()
        //{
        //    using (var db = new ezFixUpDataContext())
        //    {
        //        return (from p in db.Polls
        //                select p).Count();
        //    }
        //}

        public static Poll FetchRandom(bool? answered, string username)
        {
            using (var db = new ezFixUpDataContext())
            {
                var ids = (from p in db.Polls
                           where answered == null || 
                           (answered == true && DateTime.Now.Date <= p.p_showresultsuntil.Date &&
                           ((from pa in db.PollAnswers where pa.u_username == username select pa.p_id).Contains(p.p_id) ||
                            DateTime.Now.Date > p.p_enddate)
                           ) ||
                           (answered == false && DateTime.Now.Date <= p.p_enddate &&
                           !(from pa in db.PollAnswers where pa.u_username == username select pa.p_id).Contains(p.p_id))
                           select p.p_id).ToArray();

                if (ids.Length > 0)
                {
                    var randomID = ids[new Random().Next(ids.Length)];

                    return (from p in db.Polls
                            where p.p_id == randomID
                            select new Poll
                                       {
                                           ID = p.p_id,
                                           Title = p.p_title,
                                           StartDate = p.p_startdate,
                                           EndDate = p.p_enddate,
                                           ShowResultsUntil = p.p_showresultsuntil
                                       }).Single();
                }

                return null;
            }
        }
示例#4
0
        /// <summary>
        /// Saves this instance.
        /// </summary>
        public void Save()
        {
            using (var db = new ezFixUpDataContext())
            {
                var photoNote = new Model.PhotoNote
                                    {
                                        pn_id = Id,
                                        p_id = PhotoId,
                                        u_username = Username,
                                        pn_notes = Notes,
                                        pn_timestamp = Timestamp,
                                        pn_x = X,
                                        pn_y = Y,
                                        pn_width = Width,
                                        pn_height = Height
                                    };
                if (Id == 0)
                    db.PhotoNotes.InsertOnSubmit(photoNote);
                else
                {
                    db.PhotoNotes.Attach(photoNote, true);
                }

                db.SubmitChanges();

                if (Id == 0)
                    Id = photoNote.pn_id;
            }
        }
示例#5
0
 public static void RemoveCredentials(string username)
 {
     using (var db = new ezFixUpDataContext())
     {
         var credentials = db.TwitterCredentials.FirstOrDefault(tc => tc.u_username == username);
         if (credentials != null)
         {
             db.TwitterCredentials.DeleteOnSubmit(credentials);
             db.SubmitChanges();
         }
     }
 }
示例#6
0
 public static PollChoice Fetch(int choiceID)
 {
     using (var db = new ezFixUpDataContext())
     {
         return (from pc in db.PollChoices
                 where pc.pc_id == choiceID
                 select new PollChoice
                 {
                     ID = pc.pc_id,
                     PollID = pc.p_id,
                     Answer = pc.pc_answer
                 }).FirstOrDefault();
     }
 }
示例#7
0
 public static PollChoice[] FetchByPollID(int pollID)
 {
     using (var db = new ezFixUpDataContext())
     {
         return (from pc in db.PollChoices
                 where pc.p_id == pollID
                 select new PollChoice
                 {
                     ID = pc.pc_id,
                     PollID = pc.p_id,
                     Answer = pc.pc_answer
                 }).ToArray();
     }
 }
示例#8
0
        public static Dictionary<string, double> FetchTopUsers(User.eGender gender, int minAge, int maxAge,
            TimeSpan period, int count)
        {
            DateTime fromBirthdate = DateTime.Now.Subtract(TimeSpan.FromDays((maxAge + 1) * 365.25));
            DateTime toBirthdate = DateTime.Now.Subtract(TimeSpan.FromDays(minAge * 365.25));

            string cacheKey = String.Format("Votes_FetchTopUsers_{0}_{1}_{2}_{3}_{4}", gender, minAge, 
                maxAge, period, count);
            if (HttpContext.Current != null && HttpContext.Current.Cache[cacheKey] != null)
            {
                return (Dictionary<string, double>) HttpContext.Current.Cache[cacheKey];
            }

            var userRatings = new Dictionary<string, double>();
            var fromDate = DateTime.Now.Subtract(period);
            var averageRating = FetchAverageRating(period, gender, minAge, maxAge);
            var averageNumberOfVotes = FetchAverageNumberOfVotes(period, gender, minAge, maxAge);
            using (var db = new ezFixUpDataContext())
            {
                foreach (var rating in (from v in db.Votes
                         join u in db.Users on v.v_tousername equals u.u_username
                         where v.v_timestamp >= fromDate && u.u_gender == (int) gender
                            && u.u_birthdate >= fromBirthdate && u.u_birthdate <= toBirthdate
                         group v by v.v_tousername
                         into uv
                             select new
                                        {
                                            Username = uv.Key,
                                            Rating = ((averageNumberOfVotes*averageRating) +
                                                      (uv.Count()*uv.Average(v => v.v_score)))
                                                     /(averageNumberOfVotes + uv.Count())
                                        }).OrderByDescending(
                    uv => uv.Rating).Take(count))
                {
                    userRatings.Add(rating.Username, rating.Rating);
                }
            }

            if (HttpContext.Current != null)
            {
                HttpContext.Current.Cache.Insert(cacheKey, userRatings, null, DateTime.Now.AddMinutes(30),
                                                 Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable,
                                                 null);
            }

            return userRatings;
        }
示例#9
0
        public static void SaveCredentials(string username, string twitterUsername, string twitterPassword)
        {
            using (var db = new ezFixUpDataContext())
            {
                var credentials = db.TwitterCredentials.FirstOrDefault(tc => tc.u_username == username);
                if (credentials == null)
                {
                    credentials = new TwitterCredential {u_username = username};
                    db.TwitterCredentials.InsertOnSubmit(credentials);
                }

                credentials.tc_username = twitterUsername;
                credentials.tc_password = twitterPassword;

                db.SubmitChanges();
            }
        }
示例#10
0
        public void Save()
        {
            using (var db = new ezFixUpDataContext())
            {
                var pollChoice = new Model.PollChoice
                {
                    p_id = PollID,
                    pc_id = ID,
                    pc_answer = Answer
                };
                if (ID == 0)
                    db.PollChoices.InsertOnSubmit(pollChoice);
                else
                {
                    db.PollChoices.Attach(pollChoice, true);
                }

                db.SubmitChanges();

                if (ID == 0)
                    ID = pollChoice.pc_id;
            }
        }
示例#11
0
 /// <summary>
 /// Loads the specified id.
 /// </summary>
 /// <param name="id">The id.</param>
 /// <param name="photoId">The photo id.</param>
 /// <param name="username">The username.</param>
 /// <returns></returns>
 public static PhotoNote[] Load(int? id, int? photoId, string username)
 {
     using (var db = new ezFixUpDataContext())
     {
         var photoNotes = from pn in db.PhotoNotes
                          where (!id.HasValue || pn.pn_id == id)
                                && (!photoId.HasValue || pn.p_id == photoId)
                                && (username == null || pn.u_username == username)
                          select new PhotoNote
                                     {
                                         Id = pn.pn_id,
                                         PhotoId = pn.p_id,
                                         Username = pn.u_username,
                                         Notes = pn.pn_notes,
                                         Timestamp = pn.pn_timestamp,
                                         X = pn.pn_x,
                                         Y = pn.pn_y,
                                         Width = pn.pn_width,
                                         Height = pn.pn_height
                                     };
         return photoNotes.ToArray();
     }
 }
示例#12
0
 public static bool IsAnswered(int pollID, string username)
 {
     using (var db = new ezFixUpDataContext())
     {
         return (from pa in db.PollAnswers
                 where pa.p_id == pollID && pa.u_username == username
                 select pa).Count() > 0;
     }
 }
示例#13
0
        public static double FetchAverageNumberOfVotes(TimeSpan period, User.eGender gender, 
            int minAge, int maxAge)
        {
            string cacheKey = String.Format("Votes_FetchAverageNumberOfVotes_{0}_{1}_{2}_{3}", period, 
                gender, minAge, maxAge);
            if (HttpContext.Current != null && HttpContext.Current.Cache[cacheKey] != null)
            {
                return (double)HttpContext.Current.Cache[cacheKey];
            }

            double average;
            var fromDate = DateTime.Now.Subtract(period);
            DateTime fromBirthdate = DateTime.Now.Subtract(TimeSpan.FromDays((maxAge + 1) * 365.25));
            DateTime toBirthdate = DateTime.Now.Subtract(TimeSpan.FromDays(minAge * 365.25));
            using (var db = new ezFixUpDataContext())
            {
                average = (from v in db.Votes
                           join u in db.Users on v.v_tousername equals u.u_username
                           where v.v_timestamp >= fromDate && u.u_gender == (int)gender
                              && u.u_birthdate >= fromBirthdate && u.u_birthdate <= toBirthdate
                           group v by v.v_tousername
                           into uv
                               select (double?) uv.Count()).Average() ?? 0;
                           
            }

            if (HttpContext.Current != null)
            {
                HttpContext.Current.Cache.Insert(cacheKey, average, null, DateTime.Now.AddHours(1),
                                                 Cache.NoSlidingExpiration, CacheItemPriority.NotRemovable,
                                                 null);
            }

            return average;
        }
示例#14
0
 public static void Delete(int id)
 {
     using (var db = new ezFixUpDataContext())
     {
         var pollAnswers = db.PollAnswers.Where(pa => pa.p_id == id);
         var pollChoices = db.PollChoices.Where(pc => pc.p_id == id);
         var poll = db.Polls.FirstOrDefault(p => p.p_id == id);
         if (poll != null)
         {
             db.PollAnswers.DeleteAllOnSubmit(pollAnswers);
             db.PollChoices.DeleteAllOnSubmit(pollChoices);
             db.Polls.DeleteOnSubmit(poll);
             db.SubmitChanges();
         }
     }
 }
示例#15
0
        private static Event[] Fetch(int? id, eType? type, string fromUsername,
                                     int? fromGroup, DateTime? date, ulong? bitMask,
                                     int? numberOfEvents, eSortColumn sortColumn)
        {
            date = date.HasValue ? date.Value.Date : (DateTime?)null;

            using (var db = new ezFixUpDataContext())
            {
                var events = from e in db.Events
                             where (!id.HasValue || e.e_id == id)
                                   && (!type.HasValue || e.e_type == (long?)type)
                                   && (fromUsername == null || e.e_fromusername == fromUsername)
                                   && (!fromGroup.HasValue || e.e_fromgroup == fromGroup)
                                   && (!date.HasValue || e.e_date.Date == date)
                                   && (!bitMask.HasValue || (e.e_type & (long?)bitMask) > 0)
                             select new Event
                             {
                                 id = e.e_id,
                                 fromUsername = e.e_fromusername,
                                 type = (eType)e.e_type,
                                 fromGroup = e.e_fromgroup,
                                 detailsXML = e.e_details,
                                 date = e.e_date
                             };

                if (sortColumn == eSortColumn.Date)
                    events = events.OrderByDescending(e => e.date);

                if (numberOfEvents.HasValue)
                    events = events.Take(numberOfEvents.Value);

                return events.ToArray();
            }
        }
示例#16
0
 public static Poll Fetch(int id)
 {
     using (var db = new ezFixUpDataContext())
     {
         return (from p in db.Polls
                 where p.p_id == id
                 select new Poll
                            {
                                ID = p.p_id,
                                Title = p.p_title,
                                StartDate = p.p_startdate,
                                EndDate = p.p_enddate,
                                ShowResultsUntil = p.p_showresultsuntil
                            }).FirstOrDefault();
     }            
 }
示例#17
0
        public void Save()
        {
            using (var db = new ezFixUpDataContext())
            {
                var poll = new Model.Poll
                                    {
                                        p_id = ID,
                                        p_title = Title,
                                        p_startdate = StartDate,
                                        p_enddate = EndDate,
                                        p_showresultsuntil = ShowResultsUntil
                                    };
                if (ID == 0)
                    db.Polls.InsertOnSubmit(poll);
                else
                {
                    db.Polls.Attach(poll, true);
                }

                db.SubmitChanges();

                if (ID == 0)
                    ID = poll.p_id;
            }            
        }
示例#18
0
        /// <summary>
        /// Fetches number of votes for each answer
        /// </summary>
        /// <param name="pollID">the poll id</param>
        /// <returns>The key is the poll choice ID and the value is the number of votes</returns>
        public static Dictionary<int, int> FetchResults(int pollID)
        {
            var votesForEachChoice = new Dictionary<int, int>();

            using (var db = new ezFixUpDataContext())
            {
                var choiceIDs = (from c in db.PollChoices
                                 where c.p_id == pollID
                                 select c.pc_id).ToArray();

                foreach (var id in choiceIDs)
                {
                    votesForEachChoice.Add(id, 0);                    
                }

                var answers = (from pa in db.PollAnswers
                               where pa.p_id == pollID
                               select pa).ToArray();

                foreach (var answer in answers)
                {
                    if (votesForEachChoice.ContainsKey(answer.pc_id))
                    {
                        votesForEachChoice[answer.pc_id]++;
                    }
                }
            }

            return votesForEachChoice;
        }
示例#19
0
        private static void EventsCleanup(object data)
        {
            if (mailerLock)
            {
                return;
            }

            try
            {
                mailerLock = true;

                Global.Logger.LogStatus("EventsCleanup", "Events Cleanup starting " + DateTime.Now.ToShortTimeString());
                DateTime date = DateTime.Now.Subtract(TimeSpan.FromDays(90));
                var roundedDate = new DateTime(date.Year, date.Month, date.Day, date.Hour, date.Minute, date.Second);
                using (var db = new ezFixUpDataContext())
                {
                    db.EventsCleanup(roundedDate);
                }
                Global.Logger.LogStatus("EventsCleanup", "Events Cleanup ended " + DateTime.Now.ToShortTimeString());
            }
            catch (Exception err)
            {
                Global.Logger.LogError("EventsCleanup", err);
            }
            finally
            {
                mailerLock = false;
            }
        }
示例#20
0
 private static Relationship[] Fetch(string fromUsername, string toUsername, eRelationshipStatus? type, bool? accepted)
 {
     using (var db = new ezFixUpDataContext())
     {
         var relationships = (from r in db.Relationships
                             where (fromUsername == null || r.u_username == fromUsername)
                                     && (toUsername == null || r.r_username == toUsername)
                                     && (!type.HasValue || (eRelationshipStatus?) r.r_type == type)
                                     && (!accepted.HasValue || r.r_accepted == accepted)
                             select new Relationship
                                        {
                                            id = r.r_id,
                                            fromUsername = r.u_username,
                                            toUsername = r.r_username,
                                            accepted = r.r_accepted,
                                            timestamp = r.r_timestamp,
                                            type = (eRelationshipStatus) r.r_type,
                                            pendingType = (eRelationshipStatus) r.r_pendingtype
                                        });
         return relationships.ToArray();
     }
 }
示例#21
0
        public static void AddAnswer(int pollID, string username, int choiceID)
        {
            using (var db = new ezFixUpDataContext())
            {
                var pollAnswer = new Model.PollAnswer
                {
                    p_id = pollID,
                    pc_id = choiceID,
                    u_username = username
                };

                db.PollAnswers.InsertOnSubmit(pollAnswer);

                db.SubmitChanges();
            }                
        }
示例#22
0
        public void Save()
        {
            if (detailsXML != null && detailsXML.Length > 4000)
            {
                Global.Logger.LogWarning(String.Format("Event {0} was not saved because it is more than 4000 chars", id));
                return;
            }

            if (fromUsername != null)
            {
                User user = null;
                try
                {
                    user = User.Load(fromUsername);
                }
                catch (NotFoundException) { return; }

                switch (type)
                {
                    case eType.FriendBirthday:
                    case eType.FriendUpdatedProfile:
                    case eType.FriendAttendingEvent:
                    case eType.NewGroupPhoto:
                    case eType.FriendEntersContest:
                    case eType.FriendJoinedGroup:
                    case eType.FriendLeftGroup:
                    case eType.NewPhotoComment:
                    case eType.NewFriendPhoto:
                    case eType.NewFriendVideoUpload:
                    case eType.NewFriendBlogPost:
                    case eType.NewFriendGroup:
                    case eType.NewFriendFriend:
                    case eType.NewGroupTopic:
                    //                case eType.NewGroupEvent:
                    //                    if (!IsEventsSettingEnabled(type, user)) return;
                    //                    break;
                    case eType.NewProfileComment:
                    case eType.FriendUpdatedStatus:
                    case eType.TaggedOnPhoto:
                    case eType.NewFriendAudioUpload:
                    case eType.NewFriendYouTubeUpload:
                    case eType.RemovedFriendFriend:
                    case eType.NewFriendRelationship:
                    case eType.RemovedFriendRelationship:
                        if (!IsEventsSettingEnabled(type, user)) return;
                        break;
                }

                using (var db = new ezFixUpDataContext())
                {
                    var result = db.SaveEvent(id, (int?)type, fromUsername, fromGroup,
                        detailsXML, date);

                    if (id == null)
                        id = result.First().Id;
                }
            }
        }
示例#23
0
 public static void Delete(int id)
 {
     using (var db = new ezFixUpDataContext())
     {
         var comments = db.EventComments.Where(c => c.e_id == id);
         db.EventComments.DeleteAllOnSubmit(comments);
         Model.Event ev = db.Events.Single(e => e.e_id == id);
         db.Events.DeleteOnSubmit(ev);
         db.SubmitChanges();
     }
 }
示例#24
0
        public void Save()
        {
            using (var db = new ezFixUpDataContext())
            {
                var relationship = new Model.Relationship()
                                        {
                                            r_id = id,
                                            u_username = fromUsername,
                                            r_username = toUsername,
                                            r_type = (int) type,
                                            r_pendingtype = pendingType.HasValue ? (int?) pendingType : null,
                                            r_accepted = accepted,
                                            r_timestamp = timestamp

                                        };
                if (id == 0)
                {
                    db.Relationships.InsertOnSubmit(relationship);
                }
                else
                {
                    db.Relationships.Attach(relationship, true);
                }

                db.SubmitChanges();

                if (id == 0) id = relationship.r_id;
            }
        }
示例#25
0
 public static Event[] Fetch(string fromUsername)
 {
     using (var db = new ezFixUpDataContext())
     {
         var events = from e in db.Events
                      where e.e_fromusername == fromUsername
                      select new Event
                                 {
                                     id = e.e_id,
                                     fromUsername = e.e_fromusername,
                                     type = (eType)e.e_type,
                                     fromGroup = e.e_fromgroup,
                                     detailsXML = e.e_details,
                                     date = e.e_date
                                 };
         return events.OrderByDescending(e => e.date).ToArray();
     }
 }
示例#26
0
 public static Poll[] Fetch()
 {
     using (var db = new ezFixUpDataContext())
     {
         return (from p in db.Polls
                 select new Poll
                 {
                     ID = p.p_id,
                     Title = p.p_title,
                     StartDate = p.p_startdate,
                     EndDate = p.p_enddate,
                     ShowResultsUntil = p.p_showresultsuntil
                 }).ToArray();
     }
 }
示例#27
0
 private static void Delete(int? id, string fromUsername, string toUsername, bool? accepted)
 {
     using (var db = new ezFixUpDataContext())
     {
         var relationship =
             db.Relationships.Where(
                 r =>
                 (!id.HasValue || r.r_id == id)
                     && (fromUsername == null || r.u_username == fromUsername)
                     && (toUsername == null || r.r_username == toUsername)
                     && (!accepted.HasValue || r.r_accepted == accepted)).ToArray();
         db.Relationships.DeleteAllOnSubmit(relationship);
         db.SubmitChanges();
     }
 }
示例#28
0
        public static void Delete(int? id, string fromUsername, int? fromGroup, eType? type,
                                  DateTime? date)
        {
            using (var db = new ezFixUpDataContext())
            {
                var events = from e in db.Events
                             where (!id.HasValue || e.e_id == id)
                                   && (!type.HasValue || e.e_type == (long?)type)
                                   && (fromUsername == null || e.e_fromusername == fromUsername)
                                   && (!fromGroup.HasValue || e.e_fromgroup == fromGroup)
                                   && (!date.HasValue || e.e_date.Date == date)
                             select e;
                foreach (var ev in events)
                {
                    db.EventComments.DeleteAllOnSubmit(ev.EventComments);
                }

                db.Events.DeleteAllOnSubmit(events);
                db.SubmitChanges();
            }
        }
示例#29
0
 /// <summary>
 /// Deletes this instance.
 /// </summary>
 public void Delete()
 {
     using (var db = new ezFixUpDataContext())
     {
         var photoNote = db.PhotoNotes.Single(n => n.pn_id == Id);
         db.PhotoNotes.DeleteOnSubmit(photoNote);
         db.SubmitChanges();
     }
 }
示例#30
0
 public static string[] FetchRequests(string toUsername)
 {
     using (var db = new ezFixUpDataContext())
     {
         var result = from r in db.Relationships
                      where (r.r_username == toUsername && (!r.r_accepted || r.r_pendingtype != null))
                      select r.u_username;
         return result.ToArray();
     }
 }