public List <User> FindUsers(Dictionary <UserSearchParam, object> data, SearchMatching matching) { Contract.Requires(this.ActionPermitted(SystemAction.FindUser)); this.TestPermission(SystemAction.FindUser, "You don't have permission to search for users"); return(_dao.FindUsers(data, matching)); }
private List<VoterCard> PriFindVoterCards(Dictionary<VoterCardSearchParam, object> searchData, SearchMatching matching) { Contract.Requires(Transacting(), "Must be in transaction"); Contract.Requires(searchData != null); Contract.Ensures(Contract.Result<List<VoterCard>>() != null); var searchParams = new Dictionary<string, string>() { {"person_id",null}, {"valid",null}, {"id_key",null} }; foreach (var kv in searchData) { switch (kv.Key) { case VoterCardSearchParam.CitizenId: searchParams["person_id"] = kv.Value.ToString(); break; case VoterCardSearchParam.Valid: Debug.Assert(kv.Value is bool, "Valid should be a boolean value"); searchParams["valid"] = (bool)kv.Value ? "1" : "0"; break; case VoterCardSearchParam.IdKey: searchParams["id_key"] = kv.Value.ToString(); break; } } MySqlCommand findVoterCards = PrepareSearchQuery("voter_card", searchParams, matching); List<int> resultIds = new List<int>(); Query(findVoterCards, (rdr) => { while (rdr.Read()) { resultIds.Add(rdr.GetInt32("id")); } }); var result = new List<VoterCard>(); foreach (int id in resultIds) { result.Add(PriLoadVoterCard(id)); } return result; }
public List <Citizen> FindCitizens(Dictionary <CitizenSearchParam, object> data, SearchMatching matching = SearchMatching.Similair) { Contract.Requires(this.ActionPermitted(SystemAction.FindCitizen)); this.TestPermission(SystemAction.FindCitizen, "you don't have permission to search for citizens"); return(_dao.FindCitizens(data, matching)); }
private List<Citizen> PriFindCitizens(Dictionary<CitizenSearchParam, object> searchData, SearchMatching matching) { Contract.Requires(Transacting(), "Must be within transaction"); Contract.Requires(searchData != null); Contract.Ensures(Contract.Result<List<Citizen>>() != null); var searchParams = new Dictionary<string, string>() { {"address",null}, {"cpr",null}, {"eligible_to_vote",null}, {"has_voted",null}, {"voting_venue_id",null}, {"name",null} }; foreach (var kv in searchData) { switch (kv.Key) { case CitizenSearchParam.Address: searchParams["address"] = kv.Value.ToString(); break; case CitizenSearchParam.Cpr: searchParams["cpr"] = kv.Value.ToString(); break; case CitizenSearchParam.EligibleToVote: Debug.Assert(kv.Value is bool, "Eligible to vote should be a boolean value"); searchParams["eligible_to_vote"] = (bool)kv.Value ? "1" : "0"; break; case CitizenSearchParam.HasVoted: Debug.Assert(kv.Value is bool, "Has voted should be a boolean value"); searchParams["has_voted"] = (bool)kv.Value ? "1" : "0"; break; case CitizenSearchParam.Name: searchParams["name"] = kv.Value.ToString(); break; case CitizenSearchParam.VotingPlace: Debug.Assert(kv.Value is VotingVenue); searchParams["voting_venue_id"] = ((VotingVenue)kv.Value).DbId.ToString(); break; } } MySqlCommand findCitizens = PrepareSearchQuery("person", searchParams, matching); List<int> resultIds = new List<int>(); Query(findCitizens, (rdr) => { while (rdr.Read()) { string cpr = ""; DoIfNotDbNull(rdr, "cpr", lbl => { cpr = rdr.GetString(lbl); }); if (Citizen.ValidCpr(cpr)) { resultIds.Add(rdr.GetInt32("id")); } } }); List<Citizen> result = new List<Citizen>(); foreach (int id in resultIds) { result.Add(PriLoadCitizen(id)); } return result; }
private List<User> PriFindUsers(Dictionary<UserSearchParam, object> data, SearchMatching matching) { //WAIT throw new NotImplementedException(); }
/// <summary> /// May i have a search query with this data mapping? /// </summary> /// <param name="tableName">The table to search in</param> /// <param name="data">The data mapping to use KEY:column name VALUE:search value</param> /// <param name="matching">The search matching type to use</param> /// <returns></returns> private MySqlCommand PrepareSearchQuery(string tableName, Dictionary<string, string> data, SearchMatching matching) { Contract.Requires(tableName != null); Contract.Requires(data != null); var queryBuilder = new StringBuilder("SELECT * FROM " + tableName + " WHERE "); var first = true; var wildcards = false; foreach (var kv in data) { if (string.IsNullOrWhiteSpace(kv.Value)) continue; if (!first) queryBuilder.Append(" AND "); queryBuilder.Append(kv.Key); switch (matching) { case SearchMatching.Similair: queryBuilder.Append(" LIKE "); wildcards = true; break; case SearchMatching.Exact: queryBuilder.Append(" = "); break; } queryBuilder.Append("@"); queryBuilder.Append(kv.Key); first = false; } queryBuilder.Append(";"); var cmd = this.Prepare(queryBuilder.ToString()); foreach (var kv in data) { if (!string.IsNullOrWhiteSpace(kv.Value)) { string value = kv.Value; if (wildcards) value = "%" + value + "%"; cmd.Parameters.AddWithValue("@" + kv.Key, value); } } return cmd; }
public List<VoterCard> FindVoterCards(Dictionary<VoterCardSearchParam, object> data, SearchMatching matching = SearchMatching.Similair) { Contract.Requires(data != null); Contract.Ensures(Contract.Result<List<VoterCard>>() != null); return (List<VoterCard>)LoadWithTransaction(() => PriFindVoterCards(data, matching)); }
public List<User> FindUsers(Dictionary<UserSearchParam, object> data, SearchMatching matching = SearchMatching.Similair) { Contract.Requires(data != null); Contract.Ensures(Contract.Result<List<Citizen>>() != null); return (List<User>)LoadWithTransaction(() => PriFindUsers(data, matching)); }
public List<User> FindUsers(Dictionary<UserSearchParam, object> data, SearchMatching matching) { Contract.Requires(this.ActionPermitted(SystemAction.FindUser)); this.TestPermission(SystemAction.FindUser, "You don't have permission to search for users"); return _dao.FindUsers(data, matching); }
public List<Citizen> FindCitizens(Dictionary<CitizenSearchParam, object> data, SearchMatching matching = SearchMatching.Similair) { Contract.Requires(this.ActionPermitted(SystemAction.FindCitizen)); this.TestPermission(SystemAction.FindCitizen, "you don't have permission to search for citizens"); return _dao.FindCitizens(data, matching); }