public ActionResult RegisterVote(int id, VoteModel sessionVoteModel = null)
        {
            var cookie = controllerInformationProvider.GetVotingCookie();

            var vote = new RegisterVoteCommand
                        {
                            SessionId = id,
                            CookieId = cookie.Id,
                            TimeRecorded = controllerInformationProvider.UtcNow,
                            IPAddress = controllerInformationProvider.GetIPAddress(),
                            UserAgent = controllerInformationProvider.UserAgent,
                            Referrer = controllerInformationProvider.Referrer,
                            WebSessionId = controllerInformationProvider.SessionId
                        };

            if (controllerInformationProvider.IsLoggedIn())
            {
                vote.UserId = controllerInformationProvider.GetCurrentUser().UserId;
            }

            if (sessionVoteModel != null)
            {
                if (sessionVoteModel.Width != 0 || sessionVoteModel.Height != 0)
                {
                    vote.ScreenResolution = string.Format("{0}x{1}", sessionVoteModel.Width, sessionVoteModel.Height);
                }

                vote.PositionInList = sessionVoteModel.PositionInList;
            }

            messageBus.Send(vote);
            controllerInformationProvider.SaveVotingCookie(cookie);
            return RedirectOrReturnPartialView(id);
        }
        public ActionResult RemoveVote(int id, VoteModel sessionVoteModel = null)
        {
            var cookie = controllerInformationProvider.GetVotingCookie();
            var cookieId = cookie.Id;
            messageBus.Send(new DeleteVoteCommand
                {
                    SessionId = id,
                    CookieId = cookieId
                });

            controllerInformationProvider.SaveVotingCookie(cookie);
            return RedirectOrReturnPartialView(id);
        }