/// <summary>
        /// get posts query handler
        /// </summary>
        /// <param name="request">request query</param>
        /// <param name="cancellationToken">thread cancellation notif</param>
        /// <returns>paging collection of posts</returns>
        public async Task <PagedResponse <IEnumerable <GetPostDto> > > Handle(GetAllPostsQuery request, CancellationToken cancellationToken)
        {
            GetAllPostsParameter validParams = _mapper.Map <GetAllPostsParameter>(request);
            IReadOnlyList <Post> posts       = await _postRepository
                                               .GetPagedReponseAsync(validParams.PageNumber, validParams.PageSize);

            var postViewModel = _mapper.Map <IEnumerable <GetPostDto> >(posts);

            // Raising Event ...
            //await _mediator.Publish(new PostRequestedEvent(DateTime.Now, validParams.IP), cancellationToken);

            return(new PagedResponse <IEnumerable <GetPostDto> >(postViewModel, validParams.PageNumber, validParams.PageSize));
        }
        public async Task <ActionResult <PagedResponse <IEnumerable <GetPostDto> > > > Index([FromQuery] GetAllPostsParameter filter = null)
        {
            _logger.LogInformation($"BLog MicroService Built-in Controller, {nameof(Index)} action executed!");

            return(Ok(await Mediator.Send(new GetAllPostsQuery()
            {
                PageSize = filter.PageSize <= 0 ? 10 : filter.PageSize,
                PageNumber = filter.PageNumber <= 0 ? 1 : filter.PageNumber
            })));
        }