public List<RuleParameter> GetRulesForEvent(int eventId)
{
int ruleSetId;
List<RuleParameter> ruleList = new List<RuleParameter>();
if (context.RuleSets.Where(e => e.EventId == eventId).FirstOrDefault() != null)
{
ruleSetId = context.RuleSets.Where(e => e.EventId == eventId).FirstOrDefault().RuleSetId;
}
else
{
//No custom rules just for this event, get category ruleset.
int eventCategoryId = context.Events.FirstOrDefault(x => x.EventId == eventId).CategoryId;
if (context.RuleSets.Where(e => e.CateogryId == eventCategoryId).FirstOrDefault() != null)
{
ruleSetId = context.RuleSets.Where(e => e.CateogryId == eventCategoryId).FirstOrDefault().RuleSetId;
}
else { return ruleList; }
}
List<RuleSet> ruleSets = context.RuleSets.Where(rs => rs.RuleSetId == ruleSetId).OrderBy(rs => rs.Priority).ToList<RuleSet>();
foreach (RuleSet rs in ruleSets)
{
Rule rule = context.Rules.FirstOrDefault(r => r.RuleId == rs.RuleId);
int param = (rs.RuleParameter != null) ? (int)rs.RuleParameter : 0;
ruleList.Add(new RuleParameter { Rule = rule, Param = param });
}
return ruleList;
}