private async Task Read(bool error = false) { if (error) { Error(); } Console.WriteLine(" Read "); Console.WriteLine("++++++++++++++"); Console.WriteLine(""); Console.WriteLine("Do you want to search by agent (1) name or (2) contact number?"); var updateType = Console.ReadLine(); Console.WriteLine(); if (int.TryParse(updateType, out int type)) { switch (type) { case 1: //Search by name Console.WriteLine("Enter the name to search for:"); var searchName = Console.ReadLine(); var request = new ReadAgentRequest { Name = searchName.Trim() }; var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new AgentManagerService.AgentManagerServiceClient(channel); using (var reply = client.ReadList(request)) { if (reply != null) { while (await reply.ResponseStream.MoveNext()) { var current = reply.ResponseStream.Current; Console.WriteLine($"{current.Name} {current.ContactNumber}"); } } } break; case 2: //Search by contact Console.WriteLine("Enter the contact number to search for:"); var contactNumber = Console.ReadLine(); if (int.TryParse(contactNumber, out int contact)) { var request2 = new ReadAgentRequest { ContactNumber = contact }; var channel2 = GrpcChannel.ForAddress("https://localhost:5001"); var client2 = new AgentManagerService.AgentManagerServiceClient(channel2); var reply = client2.ReadSingle(request2); if (reply != null) { await PrintResults($"{reply.Id} {reply.Name} {reply.ContactNumber}"); } } break; } Console.WriteLine("Press 'Enter' to continue..."); Console.ReadLine(); await LoadMenu(); } }