public async Task <IActionResult> PostNotificationToken([FromBody] NotificationTokenRequestDTO notificationToken)
        {
            var claimSID = User.FindFirst(JwtRegisteredClaimNames.Sid)?.Value;

            if (claimSID == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.杖中沒有發現指定使用者ID);
                return(BadRequest(apiResult));
            }
            UserID = Convert.ToInt32(claimSID);
            var fooUser = await _context.LobUsers.Include(x => x.Department).FirstOrDefaultAsync(x => x.Id == UserID);

            if (fooUser == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的該使用者資料);
                return(NotFound(apiResult));
            }

            NotificationToken NotificationToken = new NotificationToken()
            {
                OSType           = (OSType)Enum.Parse(typeof(OSType), notificationToken.OSType.ToString()),
                RegistrationTime = notificationToken.RegistrationTime,
                Token            = notificationToken.Token,
                User             = fooUser,
            };

            _context.NotificationTokens.Add(NotificationToken);
            await _context.SaveChangesAsync();

            NotificationTokenResponseDTO NotificationTokenResponseDTO = new NotificationTokenResponseDTO()
            {
                OSType           = notificationToken.OSType,
                RegistrationTime = notificationToken.RegistrationTime,
                Token            = notificationToken.Token,
                User             = new UserDTO()
                {
                    Id = fooUser.Id
                },
            };

            apiResult = APIResultFactory.Build(true, StatusCodes.Status200OK,
                                               ErrorMessageEnum.None, payload: NotificationTokenResponseDTO);
            return(Ok(apiResult));
        }
        public async Task <IActionResult> GetSuggestions()
        {
            var claimSID = User.FindFirst(JwtRegisteredClaimNames.Sid)?.Value;

            if (claimSID == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status400BadRequest,
                                                   ErrorMessageEnum.杖中沒有發現指定使用者ID);
                return(BadRequest(apiResult));
            }
            UserID = Convert.ToInt32(claimSID);
            var fooUser = await _context.LobUsers.Include(x => x.Department).FirstOrDefaultAsync(x => x.Id == UserID);

            if (fooUser == null)
            {
                apiResult = APIResultFactory.Build(false, StatusCodes.Status404NotFound,
                                                   ErrorMessageEnum.沒有發現指定的該使用者資料);
                return(NotFound(apiResult));
            }

            List <NotificationTokenResponseDTO> NotificationTokenResponseDTOs = new List <NotificationTokenResponseDTO>();
            var fooList = await _context.NotificationTokens.Include(x => x.User)
                          .Where(x => x.User.Id == fooUser.Id).OrderByDescending(x => x.RegistrationTime).Take(100).ToListAsync();

            foreach (var item in fooList)
            {
                NotificationTokenResponseDTO fooObject = new NotificationTokenResponseDTO()
                {
                    Id   = item.Id,
                    User = new UserDTO()
                    {
                        Id = item.User.Id
                    },
                    Invalid          = item.Invalid,
                    OSType           = (OSTypeDTO)Enum.Parse(typeof(OSTypeDTO), item.OSType.ToString()),
                    RegistrationTime = item.RegistrationTime,
                    Token            = item.Token,
                };
                NotificationTokenResponseDTOs.Add(fooObject);
            }
            apiResult = APIResultFactory.Build(true, StatusCodes.Status200OK,
                                               ErrorMessageEnum.None, payload: NotificationTokenResponseDTOs);
            return(Ok(apiResult));
        }