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()));
            }
        }
Beispiel #3
0
        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();
            }
        }