public async Task <IActionResponse <PagedResult <Models.Country> > > Handle(CountryListQuery request, CancellationToken cancellationToken)
        {
            var response = new ActionResponse <PagedResult <Models.Country> > {
                Success = true, Data = new PagedResult <Models.Country>()
            };
            var queryResult = await Task.Run(() => _countryService.FetchList(request));

            response.MergeResponse(queryResult);
            Bus.RaiseOnResponse(response, $"Error During Country Query");
            if (response.Success)
            {
                response.Data = queryResult.Data;
            }
            return(response);
        }
        public async Task <IActionResponse <Models.Country> > Handle(UpdateCountryCommand request, CancellationToken cancellationToken)
        {
            var response = new ActionResponse <Models.Country> {
                Success = true
            };

            if (!request.IsValid())
            {
                NotifyValidationErrors(request);
                response.Success = false;
                request.ValidationResult.Errors.ToList().ForEach(e => response.ErrorMessages.Add(e.ErrorMessage));
                return(response);
            }

            var existingCountry = _countryService.FetchSingle(request.Id);

            if (existingCountry.Data == null || existingCountry.Data.Id < 1)
            {
                var errorMessage = $"Country {request.EnglishName} ({request.Alpha3Code}) does not exist.";
                await Bus.RaiseEvent(new DomainNotification(EventType.Error,
                                                            "Country Does Not Exist",
                                                            errorMessage));

                response.Success = false;
                response.ErrorMessages.Add(errorMessage);
                return(response);
            }

            var updateResponse = _countryService.Persist(new Models.Country(request));

            response.MergeResponse(updateResponse);
            Bus.RaiseOnResponse(response, $"Error Updating Country {request.EnglishName} ({request.Alpha3Code})");
            if (response.Success && Commit())
            {
                response.Data = updateResponse.Data;
                await Bus.RaiseEvent(new CountryUpdatedEvent(response.Data));
            }
            return(response);
        }