コード例 #1
0
        private static void Main(string[] args)
        {
            var requestService = GetServiceProvider()
                                 .GetRequiredService <IRequestService>();

            var url     = ConsoleInput("url");     // "https://localhost:5003/api";
            var segment = ConsoleInput("segment"); // "passage";
            var doorReaderSerialNumber = ConsoleInput("door reader serial number");

            while (true)
            {
                Console.WriteLine();

                var request = new PassageRequest
                {
                    CardUniqueNumber       = ConsoleInput("card unique number"),
                    DoorReaderSerialNumber = doorReaderSerialNumber,
                };

                var message = requestService
                              .SendAsync(
                    request,
                    url,
                    new string[] { segment })
                              .GetAwaiter()
                              .GetResult();

                Console.WriteLine(message);

                if (!Question())
                {
                    return;
                }
            }
        }
コード例 #2
0
        public async Task <IActionResult> PostAsync([FromBody] PassageRequest request)
        {
            var currentCardDto = (await _cardManager
                                  .GetAllAsync(uniqueNumbers: new string[] { request.CardUniqueNumber }))
                                 .FirstOrDefault();

            if (currentCardDto is null)
            {
                return(NotFound());
            }

            var currentDoorReaderDto = (await _doorReaderManager
                                        .GetAllAsync(
                                            serialNumbers: new string[] { request.DoorReaderSerialNumber },
                                            includes: new string[] { nameof(DoorReader.Door) }))
                                       .FirstOrDefault();

            if (currentDoorReaderDto is null)
            {
                return(NotFound());
            }

            var doorActionStatus = DoorActionStatusType.Success;

            if (currentCardDto.Status == CardStatusType.Locked)
            {
                doorActionStatus = DoorActionStatusType.Error;
            }

            if (currentDoorReaderDto.Door.Status != DoorStatusType.Active)
            {
                doorActionStatus = DoorActionStatusType.Error;
            }

            if (currentCardDto.Level < currentDoorReaderDto.Door.Level)
            {
                doorActionStatus = DoorActionStatusType.Denied;
            }

            var doorActionDto = new DoorActionDto
            {
                CardId       = currentCardDto.Id,
                DoorReaderId = currentDoorReaderDto.Id,
                Status       = doorActionStatus,
                TimeStamp    = DateTime.Now,
            };

            await _doorActionManager.AddAsync(doorActionDto);

            await _commitManager.SaveAsync();

            return(doorActionStatus != DoorActionStatusType.Success
                ? BadRequest()
                : Ok());
        }
コード例 #3
0
        public async Task <string> SendAsync(
            PassageRequest request,
            string url,
            params string[] segments)
        {
            var message = MessageResource.Success;

            try
            {
                await url.AppendPathSegments(segments)
                .PostJsonAsync(request);
            }
            catch (FlurlHttpException ex)
            {
                message = ex.Message;
            }

            return(message);
        }