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 new static AskMenu ReadXml(XElement ele) { var m = new AskMenu(); m.Label = ele.Element("Label")?.Value; m.list = new List<MenuItem>(); foreach(var ee in ele.Elements("MenuItem")) m.list.Add(MenuItem.ReadXml(ee)); return m; // todo: check duplicates }
public static Ask ReadXml(XElement ele) { var ask = ele.Name.ToString(); switch (ask) { case "AskCheckboxes": return(AskCheckboxes.ReadXml(ele)); case "AskDropdown": return(AskDropdown.ReadXml(ele)); case "AskExtraQuestions": return(AskExtraQuestions.ReadXml(ele)); case "AskGradeOptions": return(AskGradeOptions.ReadXml(ele)); case "AskHeader": return(AskHeader.ReadXml(ele)); case "AskInstruction": return(AskInstruction.ReadXml(ele)); case "AskMenu": return(AskMenu.ReadXml(ele)); case "AskRequest": return(AskRequest.ReadXml(ele)); case "AskSize": return(AskSize.ReadXml(ele)); case "AskSuggestedFee": return(AskSuggestedFee.ReadXml(ele)); case "AskText": return(AskText.ReadXml(ele)); case "AskTickets": return(AskTickets.ReadXml(ele)); case "AskYesNoQuestions": return(AskYesNoQuestions.ReadXml(ele)); case "AskDocuments": return(AskDocuments.ReadXml(ele)); default: return(new Ask(ask)); } }
public new static AskMenu ReadXml(XElement ele) { var m = new AskMenu(); m.Label = ele.Element("Label")?.Value; m.list = new List <MenuItem>(); foreach (var ee in ele.Elements("MenuItem")) { m.list.Add(MenuItem.ReadXml(ee)); } return(m); // todo: check duplicates }
public AskMenu ParseAskMenu() { var mi = new AskMenu(); mi.Label = GetString("Menu"); mi.list = new List<AskMenu.MenuItem>(); if (curr.indent == 0) return mi; var startindent = curr.indent; while (curr.indent == startindent) { var m = new AskMenu.MenuItem(); if (curr.kw != Parser.RegKeywords.None) throw GetException("unexpected line in MenuItem"); m.Description = GetLine(); m.SmallGroup = m.Description; if (curr.indent <= startindent) { mi.list.Add(m); continue; } var ind = curr.indent; while (curr.indent == ind) { switch (curr.kw) { case Parser.RegKeywords.SmallGroup: m.SmallGroup = GetString(m.Description); break; case Parser.RegKeywords.Fee: m.Fee = GetDecimal(); break; case Parser.RegKeywords.Limit: m.Limit = GetNullInt(); break; case Parser.RegKeywords.Time: m.MeetingTime = GetDateTime(); break; default: throw GetException("unexpected line in MenuItem"); } } 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 GetException($"Duplicate SmallGroup in MenuItems: {string.Join(",", q)}"); return mi; }
public void Output(StringBuilder sb, AskMenu ask) { if (ask.list.Count == 0) return; AddValueNoCk(0, sb, "MenuItems", ask.Label); foreach (var i in ask.list) { AddValueCk(1, sb, i.Description); AddValueCk(2, sb, "SmallGroup", i.SmallGroup); AddValueCk(2, sb, "Fee", i.Fee); AddValueCk(2, sb, "Limit", i.Limit); AddValueCk(2, sb, "Time", i.MeetingTime.ToString2("s")); } sb.AppendLine(); }
public new static AskMenu ReadXml(XElement ele) { var m = new AskMenu { Label = ele.Element("Label")?.Value, list = new List <MenuItem>(), }; foreach (var ee in ele.Elements("MenuItem")) { if (ee.Element("Description")?.Value != null) { m.list.Add(MenuItem.ReadXml(ee)); } } return(m); // todo: check duplicates }
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; }
private AskSize asksize; // To support old Registration Documents void ParseSection(Parser parser) { switch (parser.curr.kw) { case Parser.RegKeywords.AskParents: case Parser.RegKeywords.AnswersNotRequired: case Parser.RegKeywords.AskSMS: 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.SpecialScript: SpecialScript = parser.GetString(); 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.Text: AskItems.Add(AskText.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.NoReqBirthYear: NoReqBirthYear = 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.AddAsProspect: AddAsProspect = 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.ConfirmationTrackingCode: ParseTrackingCode(parser); break; case Parser.RegKeywords.Reminder: ParseReminder(parser); break; case Parser.RegKeywords.SupportEmail: ParseSupport(parser); break; case Parser.RegKeywords.SenderEmail: ParseSender(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.ShellBs: ShellBs = parser.GetString(); break; case Parser.RegKeywords.Fee: Fee = parser.GetDecimal(); break; // BEGIN support for old Registration Documents case Parser.RegKeywords.GiveOrgMembAccess: parser.GetBool(); break; case Parser.RegKeywords.UseBootstrap: parser.GetBool(); break; 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.AllowSaveProgress: AllowSaveProgress = 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; } }