/// <summary> /// Tar en sökfras och söker efter parkerade fordon. Fordonen läggstill i en resultat lista som sedan skrivs ut. /// </summary> /// <param name="sq"></param> static void ShowSearchResult(string sq) { int OriginalLeft = Console.CursorLeft; //Spara markörens int OriginalTop = Console.CursorTop; //position int l = gh.GetParkingspots().Length; //Antal parkeringar int left = Console.WindowWidth - 40; //Variabel för att sedan flytta markören 40 karaktärer från högra kanten int top = 5; //Variabel för att flytta markören till rad 5 //Rensa resultatlistan inför ny sökning searchResult.Clear(); int vehicleAmount = 0; //Kollar om sökfrasen inte är tom if (sq.Length > 0) { if (sq == "Car") { //Sök och lägg till fordon som vars namn börjar med sökfrasen IEnumerable <Vehicle> vQC = gh.GetParkedVehicles().Where(q => q.type == "Car"); foreach (Vehicle v in vQC) { vehicleAmount += 1; if (!searchResult.Contains(v)) { searchResult.Add(v); } } } else if (sq == "Bike") { //Sök och lägg till fordon som vars namn börjar med sökfrasen IEnumerable <Vehicle> vQB = gh.GetParkedVehicles().Where(q => q.type == "Bike"); foreach (Vehicle v in vQB) { vehicleAmount += 1; if (!searchResult.Contains(v)) { searchResult.Add(v); } } } else if (sq == "Quad") { //Sök och lägg till fordon som vars namn börjar med sökfrasen IEnumerable <Vehicle> vQQ = gh.GetParkedVehicles().Where(q => q.type == "Quad"); foreach (Vehicle v in vQQ) { vehicleAmount += 1; if (!searchResult.Contains(v)) { searchResult.Add(v); } } } else if (sq == "Lawnmower") { //Sök och lägg till fordon som vars namn börjar med sökfrasen IEnumerable <Vehicle> vQL = gh.GetParkedVehicles().Where(q => q.type == "Lawnmower"); foreach (Vehicle v in vQL) { vehicleAmount += 1; if (!searchResult.Contains(v)) { searchResult.Add(v); } } } else { //Sök och lägg till fordon som vars namn börjar med sökfrasen IEnumerable <Vehicle> vQ = gh.GetParkedVehicles().Where(q => q.Name.StartsWith(sq)).Select(q => q).OrderBy(q => q.type); foreach (Vehicle v in vQ) { if (!searchResult.Contains(v)) { searchResult.Add(v); } } //Sök och lägg till fordon som vars namn innehåller sökfrasen IEnumerable <Vehicle> vQ2 = gh.GetParkedVehicles().Where(q => q.Name.ToLower().Contains(sq.ToLower())).Select(q => q).OrderBy(q => q.type); foreach (Vehicle v in vQ2) { if (!searchResult.Contains(v)) { searchResult.Add(v); } } } } //Skriv ut tomma rader för att ta bort tidigare text for (int q = 0; q < 30; q++) { Console.SetCursorPosition(left, top + q); Console.WriteLine(" "); } //Förhindrar att antal sökresultat blir mer än fyra int limit = searchResult.Count(); if (limit > 4) { limit = 4; } //Flytta markören och skriv tomma rader Console.SetCursorPosition(left, top - 2); Console.WriteLine(" "); Console.SetCursorPosition(left, top - 1); Console.WriteLine(" "); Console.SetCursorPosition(left, top - 2); //Om sökfrasen innehåller karaktärer skrivs Search och sökfrasen ut if (sq.Length > 0 && vehicleAmount == 0) { Console.WriteLine("Search: " + sq); } else if (sq.Length > 0 && vehicleAmount != 0) { Console.WriteLine("Search: " + sq + " Amount: " + vehicleAmount); } //Loopa och skriv ut alla eller 4 resultat for (int i = 0; i < limit; i += 1) { //Är resultatet en parkering? if (searchResult[i] != null) { //Spara fordonet i lokal variabel Vehicle v = searchResult[i]; //Spara fordonets parking som sträng för att kunna byta ut talet till en text var spot = v.spot.ToString(); //Om fordonets parkering är 0 innebär det att vi kör fordonet. Dvs fordonet är "In use" if (v.spot == 0) { spot = "In use"; } Console.SetCursorPosition(left, top - 1); //Skriv ut rad mellan resultaten for (int z = 0; z < 30; z++) { Console.Write("-"); } //Skriv ut resultat Console.SetCursorPosition(left, top); Console.WriteLine("{0, -18}{1}", "Parkingspot:", spot); Console.SetCursorPosition(left, top + 1); Console.WriteLine("{0, -18}{1}", "Name of Vehicle:", v.Name); Console.SetCursorPosition(left, top + 2); Console.WriteLine("{0, -18}{1}", "Vehicle:", v.type); Console.SetCursorPosition(left, top + 3); Console.WriteLine("{0, -18}{1}", "Color:", v.Color); Console.SetCursorPosition(left, top + 4); Console.WriteLine("{0, -18}{1}", "Value:", v.Value); Console.SetCursorPosition(left, top + 5); Console.WriteLine("{0, -18}{1}", "Nr of wheels:", v.NrOfWheels); Console.SetCursorPosition(left, top); //Om vi har utrymme för fler resultat flyttar vi markören längre ned if (top < Console.BufferHeight - 8) { top += 8; } } } //Flytta markören till sin orginalposition Console.SetCursorPosition(OriginalLeft, OriginalTop); }