public bool SendDraft(Controller controller, int draftId = -1)
        {
            string loggedUserName = UserSession.GetLoggedUserName();
            SMS    smsData        = null;

            DraftUser draftUser = db.DraftUser.SingleOrDefault(x => x.DraftId == draftId &&
                                                               x.UserName == loggedUserName);

            smsData = new SMS
            {
                Content           = draftUser.Draft.Content,
                DestinationNumber = draftUser.Draft.DestinationNumber,
                ScheduleTime      = draftUser.Draft.ScheduleTime,
                Scheduled         = draftUser.Draft.Scheduled,
            };

            smsData.TimeStamp = DateTime.Now;

            if (smsData.DestinationNumber == null)
            {
                return(false);
            }


            db.Drafts.Remove(draftUser.Draft);
            db.DraftUser.Remove(draftUser);

            return(Send(controller, smsData));
        }
Beispiel #2
0
        public static DraftUser AuthenticateRequest(HttpRequestBase request, int?userId = null)
        {
            DraftUser toRet = null;

            if (request.Cookies["DraftUser"] == null || String.IsNullOrWhiteSpace(request.Cookies["DraftUser"].Value))
            {
                throw new DraftAuthenticationException("No session");
            }

            try
            {
                String base64Encoded  = DraftAuthentication.UnescapeToken(request.Cookies["DraftUser"].Value);
                byte[] bytes          = Convert.FromBase64String(base64Encoded);
                byte[] decryptedBytes = MachineKey.Unprotect(bytes);
                String final          = Encoding.Unicode.GetString(decryptedBytes);
                toRet = new JavaScriptSerializer().Deserialize <DraftUser>(final);
            }
            catch (Exception ex)
            {
                throw new DraftAuthenticationException("Authentication Failed", ex);
            }

            if (toRet.Expires < DateTime.UtcNow)
            {
                throw new DraftAuthenticationException(toRet.Username, toRet.Expires, "Authentication Expired");
            }

            if (userId.HasValue && toRet.ID != userId.Value)
            {
                throw new DraftAuthenticationException("Unauthorized User");
            }

            return(toRet);
        }
        public bool SaveDraft(Controller controller, SMS smsInput)
        {
            Draft draft = new Draft
            {
                Content           = smsInput.Content,
                DestinationNumber = smsInput.DestinationNumber,
                Scheduled         = smsInput.Scheduled
            };

            if (draft.Scheduled)
            {
                draft.ScheduleTime = smsInput.ScheduleTime;
            }
            else
            {
                draft.ScheduleTime = DateTime.Now;
            }

            db.Drafts.Add(draft);
            db.SaveChanges();

            DraftUser draftUser = new DraftUser
            {
                UserName = UserSession.GetLoggedUserName(),
                DraftId  = draft.DraftId
            };

            db.DraftUser.Add(draftUser);
            db.SaveChanges();

            return(true);
        }
Beispiel #4
0
        public List <DraftPickStatusObj> Post(DraftPickStatusObj next)
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request);

            if (!next.Player.HasValue)
            {
                throw new HttpStatusException(HttpStatusCode.NotFound, "The player you entered is invalid or does not exists");
            }
            else
            {
                PickResult result = dataSource.SubmitPick(user.ID, next.Player.Value);
                if (result != PickResult.Success)
                {
                    switch (result)
                    {
                    case PickResult.AlreadyPicked:
                        throw new HttpStatusException(HttpStatusCode.MethodNotAllowed, "That player has already been chosen");

                    case PickResult.InvalidPlayer:
                        throw new HttpStatusException(HttpStatusCode.NotFound, "The player you entered is invalid or does not exist");

                    case PickResult.NotTurn:
                        throw new HttpStatusException(HttpStatusCode.Forbidden, "It's not your turn to pick");

                    case PickResult.InvalidPosition:
                        throw new HttpStatusException(HttpStatusCode.Forbidden, "Players at that position cannot be drafted");

                    case PickResult.PositionMax:
                        throw new HttpStatusException(HttpStatusCode.Forbidden, "Position Max - You cannot draft any more players at that position");
                    }
                }
            }

            return(GetDraftPicks());
        }
        public ActionResult Index(LoginUser loginUser)
        {
            try
            {
                DraftUser user = DraftAuthentication.AuthenticateCredentials(loginUser.Username, loginUser.Password, HttpContext.Response);
                return(RedirectToAction("Index", "Home"));
            }
            catch (DraftAuthenticationException exc)
            {
                LoginUser retry = new LoginUser()
                {
                    Username = loginUser.Username
                };

                if (!String.IsNullOrWhiteSpace(exc.Username))
                {
                    retry.LoginMessage = exc.Username + " " + exc.Message + " " + exc.Expired.ToLongDateString() + " @ " + exc.Expired.ToLongTimeString();
                }
                else
                {
                    retry.LoginMessage = exc.Message;
                }
                retry.ErrorMessage = exc.Message;
                return(View(retry));
            }
        }
        public DraftUser GetUser(String username, String password)
        {
            DraftUser toRet = null;

            var query = from t in db.Usernames
                        where t.Username1 == username &&
                        t.User.Password == password
                        select t;

            if (query.Count() > 0)
            {
                Username currUsername = query.First();

                var orderQuery = from t in db.DraftOrders
                                 where t.SeasonID == Settings.DraftSeasonID &&
                                 t.UserID == currUsername.UserID
                                 select t;

                int order = -1;
                if (orderQuery.Count() > 0)
                {
                    order = orderQuery.First().Order;
                }

                toRet = new DraftUser(query.First(), order);
            }

            return(toRet);
        }
        public List <DraftMoveObj> Get()
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request, 1);

            List <DraftMoveObj> onClock = dataSource.FindOnTheClock();

            return(onClock);
        }
Beispiel #8
0
        public UserStatusObj Get()
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request);

            UserStatusObj toRet = dataSource.GetStatus(user.ID);

            return(toRet);
        }
        public List <ChatObj> Get()
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request);

            List <ChatObj> chatData = this.dataSource.GetChatData();

            return(chatData);
        }
        public DraftStatusObj Get()
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request, 1);

            DraftStatusObj status = this.dataSource.GetDraftStatusObj();

            return(status);
        }
Beispiel #11
0
        public UserStatusObj Post(UserStatusObj next)
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request);

            UserStatusObj toRet = this.dataSource.UpdateStatus(next);

            return(toRet);
        }
 public ActionResult Index()
 {
     try
     {
         DraftUser user = DraftAuthentication.AuthenticateRequest(HttpContext.Request);
         return(RedirectToAction("Index", "Home"));
     }
     catch (DraftAuthenticationException)
     {
         return(View(new LoginUser()));
     }
 }
        public DraftMoveObj Put(OnClockUpdateObj update)
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request, 1);

            DraftMoveObj toRet = dataSource.UpdateLastOnTheClock(update);

            if (toRet == null)
            {
                throw new HttpStatusException(HttpStatusCode.NotFound, "Unable to find pick to update");
            }

            return(toRet);
        }
Beispiel #14
0
        private List <DraftPickStatusObj> GetDraftPicks()
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request);

            List <DraftPickStatusObj> toRet = new List <DraftPickStatusObj>();

            List <DraftMoveObj> onTheClock = new List <DraftMoveObj>();
            Dictionary <QuickPick, DraftMoveObj> draftData = dataSource.QueryDraftData(out onTheClock);
            DraftPickStatusObj onClockPick        = null;
            DraftMoveObj       lastOnClockMoveObj = null;

            for (QuickPick index = new QuickPick(); index.Round <= BallersDraftObj.Settings.RoundsPerDraft; index.Round++)
            {
                for (index.Pick = 1; index.Pick <= BallersDraftObj.Settings.TeamsPerDraft; index.Pick++)
                {
                    DraftMoveObj nextMove = draftData[index];
                    toRet.Add(new DraftPickStatusObj(BallersDraftObj.Settings.TeamsPerDraft)
                    {
                        Round  = nextMove.Round,
                        Pick   = nextMove.Pick,
                        Team   = nextMove.UserID,
                        Player = nextMove.PlayerID,
                        Type   = nextMove.TypeInt
                    });
                }
            }
            foreach (DraftMoveObj currMove in onTheClock)
            {
                lastOnClockMoveObj = currMove;
                onClockPick        = new DraftPickStatusObj(BallersDraftObj.Settings.TeamsPerDraft)
                {
                    Round = currMove.Round,
                    Pick  = currMove.Pick,
                    Team  = currMove.UserID,
                    Type  = currMove.TypeInt
                };
                toRet[onClockPick.TotalPick - 1] = onClockPick;
            }

            if (lastOnClockMoveObj != null)
            {
                TimeSpan timeLeft = TimeSpan.FromSeconds(BallersDraftObj.Settings.SecondsPerPick) - (DateTime.Now - lastOnClockMoveObj.Time);
                if (timeLeft < TimeSpan.FromTicks(0))
                {
                    timeLeft = TimeSpan.FromTicks(0);
                }
                onClockPick.TimeLeft = (int)timeLeft.TotalSeconds;
            }

            return(toRet);
        }
Beispiel #15
0
        public ActionResult Index()
        {
            DraftViewModel model = null;

            try {
                DraftUser user = DraftAuthentication.AuthenticateRequest(HttpContext.Request);
                model = new DraftViewModel(user);
            } catch (DraftAuthenticationException)
            {
                return(RedirectToAction("Index", "Login"));
            }

            return(View(model));
        }
        public bool UpdateDraft(Controller controller, int draftId, Draft draft)
        {
            string loggedUserName = UserSession.GetLoggedUserName();

            DraftUser draftUser = (
                from userDraft in db.DraftUser
                where userDraft.UserName == loggedUserName && userDraft.DraftId == draftId
                select userDraft
                ).ToList().First();

            draftUser.Draft = draft;

            db.SaveChanges();

            return(true);
        }
        public bool SaveDraft(Controller controller, SMS smsInput)
        {
            Draft draft = ConvertToDraft(smsInput);

            db.Drafts.Add(draft);
            db.SaveChanges();

            DraftUser draftUser = new DraftUser
            {
                UserName = UserSession.GetLoggedUserName(),
                DraftId  = draft.DraftId
            };

            db.DraftUser.Add(draftUser);
            db.SaveChanges();

            return(true);
        }
Beispiel #18
0
        public List <ChatObj> Post(ChatObj next)
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request);

            String text = next.Text;

            if (!String.IsNullOrWhiteSpace(text))
            {
                this.dataSource.SubmitChat(new ChatObj()
                {
                    Text   = text.Trim(),
                    UserID = user.ID,
                    Date   = DateTime.Now
                });
            }

            List <ChatObj> chatData = this.dataSource.GetChatData();

            return(chatData);
        }
Beispiel #19
0
        public static DraftUser AuthenticateCredentials(String username, String password, HttpResponseBase response)
        {
            if (String.IsNullOrWhiteSpace(username) || String.IsNullOrWhiteSpace(password))
            {
                throw new DraftAuthenticationException("Invalid credentials");
            }
            DraftUser user = DraftObj.GetUser(username, password);

            if (user == null)
            {
                throw new DraftAuthenticationException("Invalid username or password");
            }

            if (response != null)
            {
                String rawString      = new JavaScriptSerializer().Serialize(user);
                byte[] rawBytes       = Encoding.Unicode.GetBytes(rawString);
                byte[] encryptedBytes = MachineKey.Protect(rawBytes);
                response.Cookies["DraftUser"].Value   = DraftAuthentication.EscapeToken(Convert.ToBase64String(encryptedBytes));
                response.Cookies["DraftUser"].Expires = DateTime.Now.AddDays(1);
            }

            return(user);
        }
Beispiel #20
0
 public AdminViewModel(DraftUser user)
 {
     _UserData = user;
 }
        public DraftStatusObj Post(DraftStatusObj newStatus)
        {
            DraftUser user = DraftAuthentication.AuthenticateRequest(Request, 1);

            return(this.dataSource.SetNextDraftStatusObj(newStatus));
        }
Beispiel #22
0
 public AdminViewModel(DraftUser user)
 {
     _UserData = user;
 }