private void FleetSearchOnSearch(object sender, Form.SubmittedEventArgs e) { var options = _fleet.Vehicles.Select(v => new[] { new Tuple <string, Vehicle>(v.Registration.ToString(), v), new Tuple <string, Vehicle>(v.Grade.ToString(), v), new Tuple <string, Vehicle>(v.Make, v), new Tuple <string, Vehicle>(v.Model, v), new Tuple <string, Vehicle>(v.Year.ToString(), v), new Tuple <string, Vehicle>(v.SeatCount.ToString(), v), new Tuple <string, Vehicle>(v.Transmission.ToString(), v), new Tuple <string, Vehicle>(v.Fuel.ToString(), v), new Tuple <string, Vehicle>(v.HasGps ? "GPS" : "No GPS", v), new Tuple <string, Vehicle>(v.HasSunRoof ? "Sun roof" : "No sun roof", v), new Tuple <string, Vehicle>(v.Colour, v), new Tuple <string, Vehicle>($"{v.SeatCount} seats", v), }).SelectMany(it => it).ToArray(); if (e.Data.Get <string>("Search").IsEmpty()) { e.Result = "Enter a search term"; return; } var parser = new MrrcParser(e.Data.Get <string>("Search").ToUpperInvariant()); var result = parser.Parse(parser.Tokenise()); if (result is FailedParseResult <Expression> failure) { e.Result = failure.Message; return; } var success = (SuccessfulParseResult <Expression>)result; var matches = success.Result.Matches(options); var individualMatches = matches.Item1 .Select(it => it.Item2) .Distinct() .Where(it => !matches.Item2.Contains(it)) .ToArray(); if (individualMatches.Length == 0) { e.Result = "No results where found"; return; } var fleetList = FleetSearch.GetComponent <Form>("customer list"); fleetList.Set("Search", e.Data.Get <string>("Search")); fleetList.GetComponent <Select>("Results") .SetNewMembers(individualMatches.Select(m => m.ToString()).ToArray()); FleetSearch.ActiveComponent = "customer list"; }
private void CustomerSearchOnSearch(object sender, Form.SubmittedEventArgs e) { var options = _crm.Customers.Select(c => new[] { new Tuple <string, Customer>(c.Id.ToString(), c), new Tuple <string, Customer>(c.Title.ToString(), c), new Tuple <string, Customer>(c.GivenNames, c), new Tuple <string, Customer>(c.Surname, c), new Tuple <string, Customer>(c.Gender.ToString(), c) }).SelectMany(it => it).ToArray(); if (e.Data.Get <string>("Search").IsEmpty()) { e.Result = "Enter a search term"; return; } var parser = new MrrcParser(e.Data.Get <string>("Search").ToUpperInvariant()); var result = parser.Parse(parser.Tokenise()); if (result is FailedParseResult <Expression> failure) { e.Result = failure.Message; return; } var success = (SuccessfulParseResult <Expression>)result; var matches = success.Result.Matches(options); var individualMatches = matches.Item1 .Select(it => it.Item2) .Distinct() .Where(it => !matches.Item2.Contains(it)) .ToArray(); if (individualMatches.Length == 0) { e.Result = "No results where found"; return; } var customerList = CustomerSearch.GetComponent <Form>("customer list"); customerList.Set("Search", e.Data.Get <string>("Search")); customerList.GetComponent <Select>("Results") .SetNewMembers(individualMatches.Select(m => m.ToString()).ToArray()); CustomerSearch.ActiveComponent = "customer list"; }