public async Task <ApiResponse <LikeResponseDto> > LikePost(LikeDto likeRequest)
        {
            // Do a check on the Request Ip Address and User-Agent to ensure a like action is not
            // Initiated twice from the same user on the same device to avoid spam
            // Also do a check on the RequestUsername supplied from the client, to ensure a particular user
            // Does not Like twice (just incase request is sent from same user with the a different device)

            ApiResponse <LikeResponseDto> result = new ApiResponse <LikeResponseDto>();
            var resultMessage = "";



            Likes like = _mapper.Map <Likes>(likeRequest);


            try
            {
                var isLikedFromClient = await LikedExistFromClient(likeRequest.RequestIpAddress,
                                                                   likeRequest.RequestUserAgent, likeRequest.ClientReferenceId, likeRequest.PostId, likeRequest.RequestUsername);


                if (isLikedFromClient)
                {
                    resultMessage = $"Post with Id: {likeRequest.PostId} has be been Liked from {resultMessage} Ip Address:: {likeRequest.RequestIpAddress} by Username:: {likeRequest.RequestUsername} (Action is permitted only once) ";

                    _logger.LogInformation(resultMessage);

                    throw new AppException(resultMessage);
                }

                like.CreatedOn = DateTime.Now;
                await _likeRepository.AddAsync(like);

                await _unitOfWork.CompleteAsync();


                resultMessage  = "Successfully liked post";
                result.Status  = Helpers.ApiReponseStatusCodes.Created;
                result.Message = resultMessage;

                result.Data = new LikeResponseDto
                {
                    RequestIpAddress  = like.RequestIpAddress,
                    RequestUserAgent  = like.RequestUserAgent,
                    PostId            = like.PostId,
                    ClientReferenceId = like.ClientReferenceId,
                    RequestUsername   = like.RequestUsername
                };


                return(result);
            }
            catch (Exception ex)
            {
                _logger.Log(LogLevel.Error, ex.StackTrace);
                _logger.Log(LogLevel.Error, ex.Message);

                throw new AppException(ex.Message);
            }
        }