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"; }
public FleetManager(Fleet fleet, CustomerResourceManager crm) { _fleet = fleet; _crm = crm; AddVehicle.Submitted += AddVehicleOnSubmitted; FleetSearch.GetComponent <Form>("initial search").Submitted += FleetSearchOnSearch; FleetSearch.GetComponent <Form>("customer list").Submitted += FleetSearchOnSearch; ModifyVehicle.GetComponent <Form>("search").Submitted += ModifyVehicleOnSearch; ModifyVehicle.GetComponent <Form>("modify").Submitted += ModifyVehicleOnSubmit; DeleteVehicle.GetComponent <Form>("select").Submitted += DeleteVehicleOnSearch; DeleteVehicle.GetComponent <Form>("confirm").Submitted += DeleteVehicleOnSubmitted; RentVehicle.Submitted += RentVehicleOnSubmitted; ReturnVehicle.Submitted += ReturnVehicleOnSubmitted; VehicleReport.PreRender += VehicleReportOnFocused; }