Esempio n. 1
0
    public void Bind()
    {
        if (RatingId.HasValue && User.LoggedInUser != null)
        {
            var userRating = UserRating;
            if (userRating == null)
            {
                userRating = new UserRating {
                    UserId   = User.LoggedInUser.UserId,
                    RatingId = Rating.RatingId,
                    Value    = 0
                };
                db.UserRatings.InsertOnSubmit(userRating);
                db.SubmitChanges();
            }

            rating.CurrentRating = userRating.Value;

            if (userRating.Value == 0)
            {
                descMessage.InnerText = "Rate it!";
            }
            else
            {
                descMessage.InnerText = String.Format("Current Vote {0}", userRating.Value);
            }
            Visible = true;
        }
        else
        {
            Visible = false;
        }
    }
Esempio n. 2
0
    protected void newTeamForm_ItemUpdating(object sender, FormViewUpdateEventArgs e)
    {
        e.NewValues["Scope"]  = newTeamForm.FindControl <DropDownList>("scope").SelectedIndex;
        e.NewValues["Status"] = newTeamForm.FindControl <DropDownList>("privacy").SelectedIndex;

        FileUpload avatar = newTeamForm.FindControl <FileUpload>("avatarupload");

        if (avatar.HasFile)
        {
            string extension   = Path.GetExtension(avatar.FileName);
            var    avatarImage = System.Drawing.Image.FromStream(avatar.FileContent);
            var    imageData   = avatarImage.Resize(96, 96).ToByteArray(extension);

            //change default pic
            if (Team.PictureId != Picture.TeamDefaultPicture)
            {
                //delete old picture
                var current = db.Pictures.SingleOrDefault(p => p.PictureId == Team.PictureId);
                current.Data = imageData;

                db.SubmitChanges();
            }
            else
            {
                e.NewValues["PictureId"] = Picture.CreateFrom(Team.Name + "'s Avatar", imageData);
            }
        }
    }
Esempio n. 3
0
        static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
        {
            try {
                FudgeDataContext db = new FudgeDataContext();
                var runs            = db.Runs.Where(r => r.Status != RunStatus.Done && r.Status != RunStatus.CompilationError);

                foreach (Run run in runs)
                {
                    run.Status = RunStatus.InternalError;
                }

                db.SubmitChanges();
            }
            catch (Exception) {
                EventLog.WriteEntry("Fudge Framework", "Database exception in unhandled exception handler", EventLogEntryType.Error, 1, 1);
            }

            EventLog.WriteEntry("Fudge Framework", e.ExceptionObject.ToString(), EventLogEntryType.Error, 1, 1);

            ProcessStartInfo restarter = new ProcessStartInfo(Assembly.GetExecutingAssembly().GetName().Name + ".exe");

            restarter.Domain   = "MILK";
            restarter.UserName = "******";

            restarter.Password = new SecureString();
            restarter.Password.Append("fxcompiler");

            restarter.UseShellExecute = false;
            restarter.CreateNoWindow  = false;
            restarter.ErrorDialog     = true;

            EventLog.WriteEntry("Fudge Framework", "Attempting to restart " + restarter.FileName, EventLogEntryType.Information, 2, 0);

            Process.Start(restarter);
        }
Esempio n. 4
0
    protected void TagProblem(object sender, EventArgs e)
    {
        if (TagIds.Count == 0)
        {
            errorTagging.Show();
        }
        else
        {
            foreach (var tagId in TagIds)
            {
                if (!CurrentProblem.ProblemTags.Any(p => p.UserId == FudgeUser.UserId && p.TagId == tagId))
                {
                    db.ProblemTags.InsertOnSubmit(new ProblemTag {
                        ProblemId = CurrentProblem.ProblemId,
                        TagId     = tagId,
                        UserId    = FudgeUser.UserId
                    });
                }
            }

            db.SubmitChanges();
            TagIds.Clear();
            tagProblemPanel.Visible = false;
            errorTagging.Hide();
            tagTip.Show();
        }
    }
Esempio n. 5
0
    protected void Posts_ItemInserting(object sender, FormViewInsertEventArgs e)
    {
        var textBox = insertPost.FindControl <TextBox>("postBody");

        e.Cancel = String.IsNullOrEmpty(textBox.Text) || Fudge.Framework.Database.User.LoggedInUser == null;

        if (!e.Cancel)
        {
            //add rating for this post
            var rating = new Rating {
                Sum   = 0,
                Count = 0
            };
            db.Ratings.InsertOnSubmit(rating);
            db.SubmitChanges();

            e.Values["RatingId"]  = rating.RatingId;
            e.Values["TopicId"]   = Topic.TopicId;
            e.Values["Timestamp"] = DateTime.Now.ToUniversalTime();
            e.Values["Visible"]   = true;
            e.Values["Title"]     = Topic.Title;
            e.Values["UserId"]    = Fudge.Framework.Database.User.LoggedInUser.UserId;
        }
        else
        {
            var error = insertPost.FindControl <HtmlGenericControl>("insertError");
            error.Visible = true;
        }
    }
Esempio n. 6
0
        /// <summary>
        /// Creates the relation => (FriendId, UserId)
        /// </summary>
        /// <param name="friendId"></param>
        public static void AddFriend(this User user, int friendId)
        {
            FudgeDataContext db = new FudgeDataContext();

            if (user.IsRejected(friendId))
            {
                var friendRelation = db.Friends.SingleOrDefault(f => f.UserId == friendId &&
                                                                f.FriendId == user.UserId);

                db.Friends.DeleteOnSubmit(friendRelation);
            }

            //add a new friend relation
            db.Friends.InsertOnSubmit(new Friend {
                UserId   = user.UserId,
                FriendId = friendId,
                Status   = FriendStatus.Pending
            });

            var friend = User.GetUserById(friendId);

            //send friend request email
            Email.AddFriendEmail.Send(friend, "Fudge Friend Request", Util.BaseUrl, user.FullName);

            db.SubmitChanges();
        }
Esempio n. 7
0
    protected void SignUp_Click(object sender, EventArgs e)
    {
        //only let users register if contest has not started
        if (!Contest.IsRunning)
        {
            db.ContestUsers.InsertOnSubmit(new ContestUser {
                ContestId = Contest.ContestId,
                UserId    = FudgeUser.UserId
            });

            db.SubmitChanges();

            //show tooltip
            contestTip.Text = "Successfully registered for the contest";
            contestTip.Show();

            contestView.DataBind();
            contestUsers.DataBind();
        }
        else
        {
            //otherwise tell the user they are too late
            contestTip.RenderAsError = true;
            contestTip.Text          = "Sorry the contest is running!";
            contestTip.Show();
        }
    }
Esempio n. 8
0
        public void UpdatePoints()
        {
            FudgeDataContext db = new FudgeDataContext();

            foreach (Run run in Runs)
            {
                run.UpdatePoints();
            }

            var contestUsers = db.ContestUsers.Where(cu => cu.ContestId == ContestId);

            foreach (ContestUser contestUser in contestUsers)
            {
                contestUser.Points = db.Runs.Where(r => r.ContestId == ContestId && r.UserId == contestUser.UserId).Sum(r => r.Points) ?? 0;
            }

            var rankedContestUsers = GetRankingsList(contestUsers, c => c.Points ?? 0);

            foreach (RankTuple <ContestUser> rankedContestUser in rankedContestUsers)
            {
                rankedContestUser.Item.Rank = rankedContestUser.Rank;
            }

            db.SubmitChanges();
        }
Esempio n. 9
0
        public static void Notify(Notification notification)
        {
            FudgeDataContext db = new FudgeDataContext();

            db.Notifications.InsertOnSubmit(notification);
            db.SubmitChanges();
        }
Esempio n. 10
0
        public static void Update(DateTime timestamp, bool updateStandings)
        {
            FudgeDataContext db = new FudgeDataContext(@"Data Source=163.118.202.41,81;Initial Catalog=fudge;Persist Security Info=True;User ID=webuser;Password=webpassword");

            double runAvgPopularity  = GetAveragePopularity(db.Runs);
            double postAvgPopularity = GetAveragePopularity(db.Posts);

            foreach (User user in db.Users)
            {
                double userPoints = 0.0;

                userPoints += GetPoints(user.GoodRuns, runAvgPopularity);
                userPoints += GetPoints(user.Posts.Where(p => p.Rating.Count > 0), postAvgPopularity);
                userPoints += user.ReferralCount;

                user.Points = (int)Math.Round(userPoints);

                if (updateStandings)
                {
                    db.Standings.InsertOnSubmit(new Standing {
                        User = user, Points = user.Points, Timestamp = timestamp
                    });
                }
            }

            UpdateGlobalRanks(db);
            UpdateSchoolRanks(db);
            UpdateRegionRanks(db);

            db.SubmitChanges();
        }
Esempio n. 11
0
    protected void newPost_ItemInserting(object sender, FormViewInsertEventArgs e)
    {
        Page.Validate();
        e.Cancel = !Page.IsValid;
        if (!e.Cancel)
        {
            //create a new topic
            var newTopic = new Topic {
                ForumId   = Int32.Parse(Request.QueryString["id"]),
                Visible   = true,
                UserId    = Fudge.Framework.Database.User.LoggedInUser.UserId,
                Timestamp = DateTime.Now.ToUniversalTime(),
                Status    = 0,
                Title     = e.Values["Title"].ToString()
            };

            var newRating = new Rating {
                Sum   = 0,
                Count = 0
            };

            //insert rating and topic for this post
            db.Ratings.InsertOnSubmit(newRating);
            db.Topics.InsertOnSubmit(newTopic);
            db.SubmitChanges();

            //assign values to new post
            e.Values["RatingId"]  = newRating.RatingId;
            e.Values["TopicId"]   = newTopic.TopicId;
            e.Values["Timestamp"] = DateTime.Now.ToUniversalTime();
            e.Values["Visible"]   = true;
            e.Values["UserId"]    = newTopic.UserId;
        }
    }
Esempio n. 12
0
        public static void UnSubscribeFrom(this User user, int topicId)
        {
            FudgeDataContext db = new FudgeDataContext();
            var subscription    = db.TopicSubscriptions.SingleOrDefault(s => s.UserId == user.UserId &&
                                                                        s.TopicId == topicId);

            db.TopicSubscriptions.DeleteOnSubmit(subscription);
            db.SubmitChanges();
        }
Esempio n. 13
0
        public void Initialize()
        {
            Console.WriteLine("[contest] Looking for a Judge module...");

            foreach (IModule module in Host.Modules)
            {
                Judge = module as JudgeModule;

                if (Judge != null)
                {
                    break;
                }
            }

            if (Judge == null)
            {
                Console.WriteLine("[contest] There is no Judge module loaded. Contest module will unload.");
                Dispose();
            }
            else
            {
                Console.WriteLine("[contest] Contest module will use {0} as Judge.", Judge.Name);

                while (true)
                {
                    DataContext = new FudgeDataContext();

                    // Get all contests that have ended and are waiting for deferred judging
                    var contests = DataContext.Contests.Where(c => (c.Scoring & ContestScoring.DeferredJudging) == ContestScoring.DeferredJudging &&
                                                              c.EndTime < DateTime.UtcNow &&
                                                              c.Status != ContestStatus.Closed);
                    foreach (Contest contest in contests)
                    {
                        Console.WriteLine("[contest] Judging contest {0}", contest.ContestId);

                        foreach (ContestProblem problem in contest.ContestProblems)
                        {
                            var runs = problem.Problem.Runs.Where(p => p.ContestId == contest.ContestId);

                            Console.WriteLine("[contest] Judging contest problem {0}", problem.Problem.Name);

                            foreach (Run run in runs)
                            {
                                Thread judge = new Thread(Judge.Run);
                                judge.Start(run.RunId);
                            }
                        }

                        contest.Status = ContestStatus.Closed;
                        DataContext.SubmitChanges();
                    }

                    Thread.Sleep(30000);
                }
            }
        }
Esempio n. 14
0
    public static void ChangeUserStatus(this Team team, int userId, TeamUserStatus status)
    {
        FudgeDataContext db = new FudgeDataContext();

        var teamUser = FindTeamUser(db, userId, team.TeamId);

        teamUser.Status = status;

        db.SubmitChanges();
    }
Esempio n. 15
0
        public bool deletePost(string appKey, string postid, string username, string password, bool publish)
        {
            Topic topic = GetBlogPost(username, password, postid);

            //we can't delete posts with comments
            if (topic.Posts.Count > 1)
            {
                return(false);
            }

            //delete all posts for this topic
            db.Posts.DeleteAllOnSubmit(db.Posts.Where(p => p.TopicId == topic.TopicId));
            //delete the topic itself
            db.Topics.DeleteOnSubmit(topic);

            db.SubmitChanges();

            return(true);
        }
Esempio n. 16
0
        public static void SubscribeForReplies(this User user, int topicId)
        {
            FudgeDataContext db = new FudgeDataContext();

            db.TopicSubscriptions.InsertOnSubmit(new TopicSubscription {
                TopicId = topicId,
                UserId  = user.UserId
            });
            db.SubmitChanges();
        }
Esempio n. 17
0
        public static void RejectFriend(this User user, int friendId)
        {
            FudgeDataContext db = new FudgeDataContext();

            //reject the user
            var friendRelation = db.Friends.Single(f => f.UserId == friendId && f.FriendId == user.UserId);

            friendRelation.Status = FriendStatus.Rejected;

            db.SubmitChanges();
        }
Esempio n. 18
0
 protected void preference_SelectedIndexChanged(object sender, EventArgs e)
 {
     if (preference.SelectedIndex == 0)
     {
         User.OptionFlag |= (int)Option;
     }
     else
     {
         User.OptionFlag &= ~(int)Option;
     }
     db.SubmitChanges();
 }
Esempio n. 19
0
        //creates a new rating and returns the id
        public static int NewRating()
        {
            FudgeDataContext db = new FudgeDataContext();
            var rating          = new Rating {
                Sum   = 0,
                Count = 0
            };

            db.Ratings.InsertOnSubmit(rating);
            db.SubmitChanges();
            return(rating.RatingId);
        }
Esempio n. 20
0
        public static int CreateFrom(string title, byte[] image)
        {
            FudgeDataContext db     = new FudgeDataContext();
            Picture          newPic = new Picture {
                Data  = new Binary(image),
                Title = title,
            };

            db.Pictures.InsertOnSubmit(newPic);
            db.SubmitChanges();
            return(newPic.PictureId);
        }
Esempio n. 21
0
        /// <summary>
        /// Deletes users from each other friend links i.e (Friend,User) and (User,Friend)
        /// </summary>
        /// <param name="friendId"></param>
        public static void RemoveFriend(this User user, int friendId)
        {
            FudgeDataContext db = new FudgeDataContext();

            var userToFriend = db.Friends.Single(f => f.UserId == user.UserId && f.FriendId == friendId);
            var friendToUser = db.Friends.Single(f => f.UserId == friendId && f.FriendId == user.UserId);

            db.Friends.DeleteOnSubmit(userToFriend);
            db.Friends.DeleteOnSubmit(friendToUser);

            db.SubmitChanges();
        }
Esempio n. 22
0
        public static void RequestJoinTeam(this User user, int teamId)
        {
            FudgeDataContext db = new FudgeDataContext();

            db.TeamUsers.InsertOnSubmit(new TeamUser {
                Status = TeamUserStatus.Requested,
                TeamId = teamId,
                UserId = user.UserId,
                Title  = null
            });
            db.SubmitChanges();
        }
Esempio n. 23
0
        public static void Update(DateTime timestamp, bool updateStandings)
        {
            FudgeDataContext db = new FudgeDataContext();

            double runAvgPopularity  = GetAveragePopularity(db.Runs);
            double postAvgPopularity = GetAveragePopularity(db.Posts);

            foreach (User user in db.Users)
            {
                double userPoints = 0.0;

                userPoints += GetPoints(user.GoodRuns, runAvgPopularity);
                userPoints += GetPoints(user.Posts.Where(p => p.Rating.Count > 0), postAvgPopularity);
                userPoints += user.ReferralCount;

                user.Points = (int)Math.Round(userPoints);
            }

            try {
                foreach (Entity entity in db.Entities)
                {
                    var users = db.Users.Where(u => u.Affiliation.EntityId == entity.EntityId);
                    entity.Points = users.Any() ? users.Sum(s => s.Points) : 0;
                }

                UpdateGlobalRanks(db);
                UpdateEntityRanks(db);

                if (updateStandings)
                {
                    Console.WriteLine("[standings] updating standings table");

                    foreach (User user in db.Users)
                    {
                        db.Standings.InsertOnSubmit(new Standing {
                            User      = user,
                            Points    = user.Points,
                            Timestamp = timestamp,
                            Rank      = user.GlobalRank
                        });
                    }
                }
            }
            catch (Exception ex) {
                Console.WriteLine(ex.Message);
                Console.WriteLine(ex.StackTrace);
            }

            db.SubmitChanges();
        }
Esempio n. 24
0
        public static void LeaveTeam(this User user, int teamId)
        {
            FudgeDataContext db = new FudgeDataContext();
            var tu = (from u in db.TeamUsers
                      where u.UserId == user.UserId &&
                      u.TeamId == teamId
                      select u).FirstOrDefault();

            db.TeamUsers.DeleteOnSubmit(tu);
            db.SubmitChanges();

            //unsubscribe from this team
            user.UnSubscribeFrom(Team.GetTeamById(teamId).TopicId);
        }
Esempio n. 25
0
    protected void OnLinqDataSource1Inserted(object sender, LinqDataSourceStatusEventArgs e)
    {
        userFormView.Visible = false;
        notActivated.Visible = false;
        var registeredUser = e.Result as User;

        //update the topic id for this user
        var user = db.Users.SingleOrDefault(u => u.UserId == registeredUser.UserId);

        //set default flags
        user.OptionFlag |= (int)Fudge.Framework.Database.User.UserOptions.AutomaticallySubscribeToMyTopics;
        user.OptionFlag |= (int)Fudge.Framework.Database.User.UserOptions.AutomaticallySubscribeToTopicsIReplyTo;

        user.TopicId = Topic.CreateStackTopic(registeredUser.UserId, "Stack for UserId " + registeredUser.UserId);
        db.SubmitChanges();

        if (Util.SendActivationEmail(registeredUser))
        {
            //add activation cookie
            var cookie = new HttpCookie("activation_cookie");
            cookie.Expires = DateTime.Now.AddDays(3);
            Response.Cookies.Add(cookie);

            if (Referrer != null)
            {
                Referrer.ReferralCount++;
                Referrer.AddFriend(registeredUser.UserId);
                db.SubmitChanges();
            }
            regSuccess.Visible = true;
        }
        else
        {
            regFailed.Visible = true;
        }
    }
Esempio n. 26
0
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            var user = db.Users.SingleOrDefault(u => u.ActivationCode == Request.QueryString["code"]);
            if (Request.Cookies["activation_cookie"] != null)
            {
                var cookie = Response.Cookies.Get("activation_cookie");
                //make the cookie expire
                cookie.Expires = DateTime.Now.AddDays(-1);
            }

            Title += ".ActivateUser(" + user.FullName + ")";

            //set this account as activated
            user.Status = UserStatus.Activated;
            //remove the activation code
            user.ActivationCode = null;
            //update the database
            db.SubmitChanges();

            //first user to from a school
            if (user.School.Users.Count == 1)
            {
                db.NewsFeeds.InsertOnSubmit(new NewsFeed {
                    Text      = String.Format("<strong>{0} is the first user to join from {1}!</strong>", Html.LinkToProfile(user.UserId), Html.LinkToSchoolProfile(user.School.SchoolId)),
                    Link      = "http://fudge.fit.edu/Users/Profile/" + user.UserId,
                    Timestamp = DateTime.UtcNow,
                    Type      = NewsFeedType.FirstUserFromSchool
                });
                db.SubmitChanges();
            }

            Email.NewUserEmail.SendToAdmin("New user joined Fudge!", user.FullName, user.School.Name);
        }
    }
Esempio n. 27
0
        public static int CreateStackTopic(int userId, string title)
        {
            FudgeDataContext db = new FudgeDataContext();
            var topic           = new Topic {
                ForumId   = Forum.WallPostId,
                Status    = 0,
                UserId    = userId,
                Visible   = false,
                Title     = title,
                Timestamp = DateTime.UtcNow
            };

            db.Topics.InsertOnSubmit(topic);
            db.SubmitChanges();
            return(topic.TopicId);
        }
Esempio n. 28
0
    public static void InviteMember(this Team team, int userId)
    {
        FudgeDataContext db = new FudgeDataContext();

        db.TeamUsers.InsertOnSubmit(new TeamUser {
            Status = TeamUserStatus.Invited,
            TeamId = team.TeamId,
            UserId = userId
        });

        Notification.Notify(Notification.InviteToTeam(userId, team.TeamId));
        db.SubmitChanges();

        Email.NotifyTeamInvite.Send(User.GetUserById(userId), "Join " + team.Name + "!",
                                    User.LoggedInUser.FirstName, team.Name, team.TeamId);
    }
Esempio n. 29
0
    protected void closeMessage_Click(object sender, EventArgs e)
    {
        //hide the control
        Hide();

        if (_close != null)
        {
            _close(this, EventArgs.Empty);
        }

        if (TipType.HasValue)
        {
            User.TooltipFlag &= ~(int)TipType;
            db.SubmitChanges();
        }
    }
Esempio n. 30
0
        /// <summary>
        /// Approves relation (Friend, User) and adds (User, Friend)
        /// </summary>
        /// <param name="friendId"></param>
        public static void ApproveFriend(this User user, int friendId)
        {
            FudgeDataContext db = new FudgeDataContext();

            //approve (FriendId, UserId)
            var friendRelation = db.Friends.Single(f => f.UserId == friendId && f.FriendId == user.UserId);

            friendRelation.Status = FriendStatus.Accepted;

            //add (UserId, FriendId) relation
            db.Friends.InsertOnSubmit(new Friend {
                FriendId = friendId,
                UserId   = user.UserId,
                Status   = FriendStatus.Accepted
            });

            db.SubmitChanges();
        }