public static AskTickets Parse(Parser parser) { var r = new AskTickets(); parser.GetBool(); r.Label = parser.GetLabel("No. of Items"); return r; }
public static AskInstruction Parse(Parser parser) { var r = new AskInstruction(); parser.GetBool(); r.Label = parser.GetLabel("Instruction"); return r; }
public static AskRequest Parse(Parser parser) { var r = new AskRequest(); parser.GetBool(); r.Label = parser.GetLabel("Request"); return r; }
public static AskHeader Parse(Parser parser) { var r = new AskHeader(); parser.GetBool(); r.Label = parser.GetLabel("Header"); return r; }
public static AskCheckboxes Parse(Parser parser) { var cb = new AskCheckboxes(); cb.Label = parser.GetString("CheckBoxes"); cb.Min = parser.GetInt(Parser.RegKeywords.Minimum); cb.Max = parser.GetInt(Parser.RegKeywords.Maximum); cb.Cols = parser.GetInt(Parser.RegKeywords.Columns) ?? 1; cb.list = new List<CheckboxItem>(); if (parser.curr.indent == 0) return cb; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var m = CheckboxItem.Parse(parser, startindent); cb.list.Add(m); } var q = (from i in cb.list where i.SmallGroup != "nocheckbox" where i.SmallGroup != "comment" group i by i.SmallGroup into g where g.Count() > 1 select g.Key).ToList(); if (q.Any()) throw parser.GetException("Duplicate SmallGroup in Checkboxes: {0}".Fmt(string.Join(",", q))); return cb; }
public static AskSuggestedFee Parse(Parser parser) { var r = new AskSuggestedFee(); parser.GetBool(); r.Label = parser.GetLabel("Suggested Amount"); return r; }
public static OrgFees Parse(Parser parser) { var ff = new OrgFees(); parser.lineno++; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var f = OrgFee.Parse(parser, startindent); ff.list.Add(f); } return ff; }
public static AskExtraQuestions Parse(Parser parser) { var eq = new AskExtraQuestions(); parser.lineno++; if (parser.curr.indent == 0) return eq; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var q = ExtraQuestion.Parse(parser, startindent); eq.list.Add(q); } return eq; }
public static AskYesNoQuestions Parse(Parser parser) { var ynq = new AskYesNoQuestions(); parser.lineno++; if (parser.curr.indent == 0) return ynq; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var q = YesNoQuestion.Parse(parser, startindent); ynq.list.Add(q); } return ynq; }
public static AskGradeOptions Parse(Parser parser) { var go = new AskGradeOptions(); go.Label = parser.GetString("AskGradeOptions"); if (parser.curr.indent == 0) throw parser.GetException("expected indented Options"); var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var option = GradeOption.Parse(parser, startindent); if(go.list.All(gg => gg.Code != option.Code)) go.list.Add(option); } return go; }
public static TimeSlots Parse(Parser parser) { var ts = new TimeSlots(); ts.TimeSlotLockDays = parser.GetNullInt(); ts.list = new List<TimeSlot>(); if (parser.curr.indent == 0) return ts; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var s = TimeSlot.Parse(parser, startindent); ts.list.Add(s); } return ts; }
public static AskMenu Parse(Parser parser) { var mi = new AskMenu(); mi.Label = parser.GetString("Menu"); mi.list = new List<MenuItem>(); if (parser.curr.indent == 0) return mi; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var m = MenuItem.Parse(parser, startindent); mi.list.Add(m); } var q = (from i in mi.list group i by i.SmallGroup into g where g.Count() > 1 select g.Key).ToList(); if (q.Any()) throw parser.GetException("Duplicate SmallGroup in MenuItems: {0}".Fmt(string.Join(",", q))); return mi; }
public static AskDropdown Parse(Parser parser) { var dd = new AskDropdown(); dd.Label = parser.GetString("Dropdown"); dd.list = new List<DropdownItem>(); if (parser.curr.indent == 0) return dd; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var m = DropdownItem.Parse(parser, startindent); dd.list.Add(m); } var q = (from i in dd.list group i by i.SmallGroup into g where g.Count() > 1 select g.Key).ToList(); if (q.Any()) throw parser.GetException("Duplicate SmallGroup in Dropdown: {0}".Fmt(string.Join(",", q))); return dd; }
public Settings(string s, CMSDataContext Db, int OrgId) : this() { this.Db = Db; this.OrgId = OrgId; org = Db.LoadOrganizationById(OrgId); var parser = new Parser(s); while (parser.NextSection()) ParseSection(parser); SetUniqueIds("AskDropdown"); SetUniqueIds("AskExtraQuestions"); SetUniqueIds("AskCheckboxes"); SetUniqueIds("AskMenu"); var sglist = new List<string>(); AskItems.ForEach(a => sglist.AddRange(a.SmallGroups())); var q = sglist.GroupBy(mi => mi).Where(g => g.Count() > 1).Select(g => g.Key).ToList(); if (q.Any()) throw parser.GetException("Duplicate SmallGroup: " + string.Join(",", q)); parser.data = null; }
public static AskSize Parse(Parser parser) { var r = new AskSize(); parser.lineno++; r.Label = parser.GetLabel("Size"); if (parser.curr.kw == Parser.RegKeywords.Fee) r.Fee = parser.GetDecimal(); if (parser.curr.kw == Parser.RegKeywords.AllowLastYear) r.AllowLastYear = parser.GetBool(); r.list = new List<Size>(); if (parser.curr.indent == 0) return r; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var m = Size.Parse(parser, startindent); r.list.Add(m); } var q = r.list.GroupBy(mi => mi.SmallGroup).Where(g => g.Count() > 1).Select(g => g.Key).ToList(); if (q.Any()) throw parser.GetException("Duplicate SmallGroup in Sizes: " + string.Join(",", q)); return r; }
public static List<Size> ParseShirtSizes(Parser parser) { parser.lineno++; var list = new List<Size>(); if (parser.curr.indent == 0) return list; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var shirtsize = new Size(); if (parser.curr.kw != Parser.RegKeywords.None) throw parser.GetException("unexpected line"); shirtsize.Description = parser.GetLine(); shirtsize.SmallGroup = shirtsize.Description; if (parser.curr.indent > startindent) { if (parser.curr.kw != Parser.RegKeywords.SmallGroup) throw parser.GetException("expected SmallGroup keyword"); shirtsize.SmallGroup = parser.GetString(shirtsize.SmallGroup); } list.Add(shirtsize); } return list; }
public static OrgFee Parse(Parser parser, int startindent) { if (parser.curr.kw != Parser.RegKeywords.None) throw parser.GetException("expected orgid only"); var oid = parser.GetInt(); if (oid == 0) { parser.lineno--; throw parser.GetException("invalid orgid"); } var f = new OrgFee { OrgId = oid }; if (parser.curr.indent > startindent) { if (parser.curr.kw != Parser.RegKeywords.Fee) throw parser.GetException("expected fee"); f.Fee = parser.GetDecimal(); } return f; }
public static YesNoQuestion Parse(Parser parser, int startindent) { var q = new YesNoQuestion(); if (parser.curr.kw != Parser.RegKeywords.None) throw parser.GetException("unexpected line"); q.Question = parser.GetLine(); if (parser.curr.indent <= startindent) throw parser.GetException("Expected SmallGroup indented"); if (parser.curr.kw != Parser.RegKeywords.SmallGroup) throw parser.GetException("Expected SmallGroup keyword"); if (!parser.curr.value.HasValue()) throw parser.GetException("Expected SmallGroup value"); q.SmallGroup = parser.GetString(); return q; }
public static Size Parse(Parser parser, int startindent) { var i = new Size(); if (parser.curr.kw != Parser.RegKeywords.None) throw parser.GetException("unexpected line in Size"); i.Description = parser.GetLine(); i.SmallGroup = i.Description; if (parser.curr.indent <= startindent) return i; var ind = parser.curr.indent; while (parser.curr.indent == ind) { if (parser.curr.kw != Parser.RegKeywords.SmallGroup) throw parser.GetException("unexpected line in Size"); i.SmallGroup = parser.GetString(i.Description); } return i; }
public static GradeOption Parse(Parser parser, int startindent) { if (parser.curr.kw != Parser.RegKeywords.None) throw parser.GetException("expected description only"); var option = new GradeOption(); option.Description = parser.GetLine(); if (parser.curr.indent <= startindent) throw parser.GetException("expected greater indent"); if (parser.curr.kw != Parser.RegKeywords.Code) throw parser.GetException("expected Code"); var code = parser.GetNullInt(); if (!code.HasValue) { parser.lineno--; throw parser.GetException("expected integer code"); } option.Code = code.Value; return option; }
private void ParseReminder(Parser parser) { parser.lineno++; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { switch (parser.curr.kw) { case Parser.RegKeywords.Html: parser.lineno++; break; case Parser.RegKeywords.ReminderSubject: ReminderSubject = parser.GetString(); break; case Parser.RegKeywords.ReminderBody: ReminderBody = parser.GetString(); break; default: throw parser.GetException("unexpected line in Reminder"); } } }
private void ParseAgeGroups(Parser parser) { parser.lineno++; if (parser.curr.indent == 0) return; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { var agegroup = new AgeGroup(); if (parser.curr.kw != Parser.RegKeywords.None) throw parser.GetException("unexpected line"); agegroup.SmallGroup = parser.GetLine(); var m = parser.agerange.Match(agegroup.SmallGroup); if (!m.Success) { parser.lineno--; throw parser.GetException("expected age range like 0-12"); } agegroup.StartAge = m.Groups["start"].Value.ToInt(); agegroup.EndAge = m.Groups["end"].Value.ToInt(); if (parser.curr.indent <= startindent) throw parser.GetException("expected either indented SmallGroup or Fee"); var ind = parser.curr.indent; while (parser.curr.indent == ind) { switch (parser.curr.kw) { case Parser.RegKeywords.SmallGroup: agegroup.SmallGroup = parser.GetString(agegroup.SmallGroup); break; case Parser.RegKeywords.Fee: agegroup.Fee = parser.GetDecimal(); break; default: throw parser.GetException("unexpected line"); } } AgeGroups.Add(agegroup); } }
public static Ask ParseAsk(Parser parser) { var r = new Ask(parser.curr.kw.ToString()); parser.GetBool(); return r; }
private void ParseTerms(Parser parser) { Terms = parser.GetString(); if (Terms.HasValue() || parser.curr.indent == 0) return; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { switch (parser.curr.kw) { case Parser.RegKeywords.Html: parser.lineno++; break; case Parser.RegKeywords.Body: Terms = parser.GetString(); break; default: throw parser.GetException("unexpected line"); } } }
void ParseSection(Parser parser) { switch (parser.curr.kw) { case Parser.RegKeywords.AskParents: case Parser.RegKeywords.AskDoctor: case Parser.RegKeywords.AskInsurance: case Parser.RegKeywords.AskEmContact: case Parser.RegKeywords.AskAllergies: case Parser.RegKeywords.AskChurch: case Parser.RegKeywords.AskTylenolEtc: case Parser.RegKeywords.AskCoaching: AskItems.Add(Ask.ParseAsk(parser)); break; case Parser.RegKeywords.AskSuggestedFee: AskItems.Add(AskSuggestedFee.Parse(parser)); break; case Parser.RegKeywords.AskTickets: AskItems.Add(AskTickets.Parse(parser)); break; case Parser.RegKeywords.AskRequest: AskItems.Add(AskRequest.Parse(parser)); break; case Parser.RegKeywords.AskHeader: AskItems.Add(AskHeader.Parse(parser)); break; case Parser.RegKeywords.AskInstruction: AskItems.Add(AskInstruction.Parse(parser)); break; case Parser.RegKeywords.Dropdown: case Parser.RegKeywords.AskOptions: case Parser.RegKeywords.ExtraOptions: case Parser.RegKeywords.Dropdown1: case Parser.RegKeywords.Dropdown2: case Parser.RegKeywords.Dropdown3: AskItems.Add(AskDropdown.Parse(parser)); break; case Parser.RegKeywords.MenuItems: AskItems.Add(AskMenu.Parse(parser)); break; case Parser.RegKeywords.ExtraQuestions: AskItems.Add(AskExtraQuestions.Parse(parser)); break; case Parser.RegKeywords.Checkboxes: case Parser.RegKeywords.Checkboxes2: AskItems.Add(AskCheckboxes.Parse(parser)); break; case Parser.RegKeywords.YesNoQuestions: AskItems.Add(AskYesNoQuestions.Parse(parser)); break; case Parser.RegKeywords.AskGradeOptions: case Parser.RegKeywords.GradeOptions: AskItems.Add(AskGradeOptions.Parse(parser)); break; case Parser.RegKeywords.AskSize: AskItems.Add(AskSize.Parse(parser)); break; case Parser.RegKeywords.MemberOnly: MemberOnly = parser.GetBool(); break; case Parser.RegKeywords.AskMedical: parser.GetBool(); break; case Parser.RegKeywords.AskDonation: AskDonation = parser.GetBool(); break; case Parser.RegKeywords.NotReqDOB: NotReqDOB = parser.GetBool(); break; case Parser.RegKeywords.NotReqAddr: NotReqAddr = parser.GetBool(); break; case Parser.RegKeywords.NotReqPhone: NotReqPhone = parser.GetBool(); break; case Parser.RegKeywords.NotReqGender: NotReqGender = parser.GetBool(); break; case Parser.RegKeywords.NotReqMarital: NotReqMarital = parser.GetBool(); break; case Parser.RegKeywords.NotReqZip: NotReqZip = parser.GetBool(); break; case Parser.RegKeywords.DonationFundId: DonationFundId = parser.GetNullInt(); break; case Parser.RegKeywords.AccountingCode: AccountingCode = parser.GetString(); break; case Parser.RegKeywords.DonationLabel: DonationLabel = parser.GetString(); break; case Parser.RegKeywords.ExtraValueFeeName: ExtraValueFeeName = parser.GetString(); break; case Parser.RegKeywords.GroupToJoin: GroupToJoin = parser.GetString(); break; case Parser.RegKeywords.GiveOrgMembAccess: GiveOrgMembAccess = parser.GetBool(); break; case Parser.RegKeywords.LinkGroupsFromOrgs: LinkGroupsFromOrgs = (from i in parser.curr.value.Split(',') where i.ToInt() > 0 select i.ToInt()).ToList(); parser.lineno++; break; case Parser.RegKeywords.ValidateOrgs: ValidateOrgs = parser.curr.value; parser.lineno++; break; case Parser.RegKeywords.Terms: ParseTerms(parser); break; case Parser.RegKeywords.Instructions: ParseInstructions(parser); break; case Parser.RegKeywords.Confirmation: ParseConfirmation(parser); break; case Parser.RegKeywords.Reminder: ParseReminder(parser); break; case Parser.RegKeywords.AgeGroups: ParseAgeGroups(parser); break; case Parser.RegKeywords.OrgMemberFees: case Parser.RegKeywords.OrgFees: OrgFees = OrgFees.Parse(parser); break; case Parser.RegKeywords.VoteTags: ParseVoteTags(parser); break; case Parser.RegKeywords.Title: Title = parser.GetString(); break; case Parser.RegKeywords.Shell: Shell = parser.GetString(); break; case Parser.RegKeywords.Fee: Fee = parser.GetDecimal(); break; // BEGIN support for old Registration Documents case Parser.RegKeywords.AskGrade: parser.GetBool(); parser.GetLabel("Grade"); break; case Parser.RegKeywords.AskShirtSize: parser.GetBool(); asksize = new AskSize(); AskItems.Add(asksize); break; case Parser.RegKeywords.ShirtSizes: asksize.list = AskSize.ParseShirtSizes(parser); break; case Parser.RegKeywords.AllowLastYearShirt: asksize.AllowLastYear = parser.GetBool(); break; case Parser.RegKeywords.ShirtFee: if (asksize == null) { asksize = new AskSize(); AskItems.Add(asksize); } asksize.Fee = parser.GetDecimal(); break; // END support for old Registration Documents case Parser.RegKeywords.Deposit: Deposit = parser.GetDecimal(); break; case Parser.RegKeywords.ExtraFee: ExtraFee = parser.GetDecimal(); break; case Parser.RegKeywords.MaximumFee: MaximumFee = parser.GetDecimal(); break; case Parser.RegKeywords.AllowOnlyOne: AllowOnlyOne = parser.GetBool(); break; case Parser.RegKeywords.OtherFeesAdded: case Parser.RegKeywords.OtherFeesAddedToOrgFee: OtherFeesAddedToOrgFee = parser.GetBool(); break; case Parser.RegKeywords.IncludeOtherFeesWithDeposit: IncludeOtherFeesWithDeposit = parser.GetBool(); break; case Parser.RegKeywords.ApplyMaxToOtherFees: ApplyMaxToOtherFees = parser.GetBool(); break; case Parser.RegKeywords.AllowReRegister: AllowReRegister = parser.GetBool(); break; case Parser.RegKeywords.TargetExtraValues: TargetExtraValues = parser.GetBool(); break; case Parser.RegKeywords.TimeSlotLockDays: TimeSlotLockDays = parser.GetNullInt(); break; case Parser.RegKeywords.TimeSlots: TimeSlots = TimeSlots.Parse(parser); if (TimeSlotLockDays.HasValue) TimeSlots.TimeSlotLockDays = TimeSlotLockDays; break; } }
public static TimeSlot Parse(Parser parser, int startindent) { var timeslot = new TimeSlot(); if (parser.curr.kw != Parser.RegKeywords.None) throw parser.GetException("unexpected line in TimeSlots"); timeslot.Description = parser.GetLine(); if (parser.curr.indent <= startindent) return timeslot; var ind = parser.curr.indent; while (parser.curr.indent == ind) { switch (parser.curr.kw) { case Parser.RegKeywords.Time: timeslot.Time = parser.GetTime(); break; case Parser.RegKeywords.DayOfWeek: timeslot.DayOfWeek = parser.GetInt(); break; case Parser.RegKeywords.Limit: timeslot.Limit = parser.GetInt(); break; default: throw parser.GetException("unexpected line in TimeSlot"); } } return timeslot; }
public static ExtraQuestion Parse(Parser parser, int startindent) { if (parser.curr.kw != Parser.RegKeywords.None) throw parser.GetException("unexpected line"); return new ExtraQuestion { Question = parser.GetLine() }; }
private void ParseInstructions(Parser parser) { parser.lineno++; if (parser.curr.indent == 0) return; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { switch (parser.curr.kw) { case Parser.RegKeywords.Html: parser.lineno++; break; case Parser.RegKeywords.Select: InstructionSelect = parser.GetString(); break; case Parser.RegKeywords.Find: InstructionFind = parser.GetString(); break; case Parser.RegKeywords.Options: InstructionOptions = parser.GetString(); break; case Parser.RegKeywords.Special: InstructionSpecial = parser.GetString(); break; case Parser.RegKeywords.Login: InstructionLogin = parser.GetString(); break; case Parser.RegKeywords.Submit: InstructionSubmit = parser.GetString(); break; case Parser.RegKeywords.Sorry: InstructionSorry = parser.GetString(); break; case Parser.RegKeywords.Body: InstructionAll = parser.GetString(); break; default: throw parser.GetException("unexpected line"); } } }
private void ParseVoteTags(Parser parser) { parser.lineno++; if (parser.curr.indent == 0) return; var startindent = parser.curr.indent; while (parser.curr.indent == startindent) { if (parser.curr.kw != Parser.RegKeywords.Display) throw parser.GetException("unexpected line"); parser.GetString(); if (parser.curr.indent <= startindent) throw parser.GetException("expected indented Message,Confirm, or SmallGroup"); var ind = parser.curr.indent; while (parser.curr.indent == ind) { switch (parser.curr.kw) { case Parser.RegKeywords.Message: parser.GetString(); break; case Parser.RegKeywords.Confirm: parser.GetBool(); break; case Parser.RegKeywords.SmallGroup: parser.GetString(); break; default: throw parser.GetException("unexpected line"); } } } }
public static DropdownItem Parse(Parser parser, int startindent) { var i = new DropdownItem(); if (parser.curr.kw != Parser.RegKeywords.None) throw parser.GetException("unexpected line in Dropdown"); i.Description = parser.GetLine(); i.SmallGroup = i.Description; if (parser.curr.indent <= startindent) return i; var ind = parser.curr.indent; while (parser.curr.indent == ind) { switch (parser.curr.kw) { case Parser.RegKeywords.SmallGroup: i.SmallGroup = parser.GetString(i.Description); break; case Parser.RegKeywords.Fee: i.Fee = parser.GetDecimal(); break; case Parser.RegKeywords.Limit: i.Limit = parser.GetNullInt(); break; case Parser.RegKeywords.Time: i.MeetingTime = parser.GetDateTime(); break; default: throw parser.GetException("unexpected line in DropdownItem"); } } return i; }