private VoteInfo ParsePayload(HttpRequest Request) { var vi = new VoteInfo(); vi.DoorID = Request.Params["DoorID"]; vi.EventCode = Request.Params["EventCode"]; vi.Payload.Headers = Request.Headers; vi.Payload.IP = Request.UserHostAddress; return vi; }
private void AddVote(VoteInfo Vote) { var id = CalculateVoterID(Vote); if(!string.IsNullOrEmpty(id)) { if (null == _conn) InitConnection(); using (var cmd = new SqlCommand("MERGE INTO Votes AS A " + "USING (SELECT @DoorID AS DoorID, @VoterID AS VoterID) B ON (A.DoorID = B.DoorID) AND (A.VoterID = B.VoterID)" + "WHEN NOT MATCHED THEN " + "INSERT (DoorID, VoterID) VALUES(@DoorID, @VoterID);")) { cmd.Parameters.Add(new SqlParameter("@DoorID", Vote.DoorID)); cmd.Parameters.Add(new SqlParameter("@VoterID", id)); if (_conn.State != System.Data.ConnectionState.Open) _conn.Open(); cmd.Connection = _conn; cmd.ExecuteNonQuery(); } } }
public bool PostVote(VoteInfo Vote) { AddVote(Vote); return true; }
private string CalculateVoterID(VoteInfo Vote) { if (!string.IsNullOrEmpty(Vote.VoterID)) return HashValue(Vote.VoterID, _hashSalt); StringBuilder sb = new StringBuilder(); sb.AppendLine(Vote.Payload.IP); foreach (var h in Vote.Payload.Headers.AllKeys) sb.AppendFormat("{0}:{1}\r\n", h, Vote.Payload.Headers[h]); foreach (var c in Vote.Payload.Cookies) sb.AppendFormat("{0}:{1}\r\n", c.Key, c.Value); if (sb.Length > 0) return HashValue(sb.ToString(), _hashSalt); return string.Empty; }
public bool PostVote(VoteInfo Vote) { _votes.Add(Vote); return true; }