public override async Task ReadList(ReadAgentRequest request, IServerStreamWriter <AgentModel> responseStream, ServerCallContext context) { if (!string.IsNullOrEmpty(request.Name)) { //Find by number var agents = await _context.Agents.AsNoTracking().Where(a => a.Name.Contains(request.Name)).ToListAsync(); foreach (var agent in agents) { await responseStream.WriteAsync(new AgentModel { Id = agent.AgentId, Name = agent.Name, ContactNumber = agent.ContactNumber }); } } }
public override async Task <AgentModel> ReadSingle(ReadAgentRequest request, ServerCallContext context) { var agent = await _context.Agents.AsNoTracking().FirstOrDefaultAsync(a => a.ContactNumber == request.ContactNumber); if (agent != null) { return(await Task.FromResult(new AgentModel { Id = agent.AgentId, Name = agent.Name, ContactNumber = agent.ContactNumber })); } else { return(await Task.FromResult(new AgentModel())); } }
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(); } }