// I Prefer to leave this class at the top so easy to see what contistutes a valid request object
        private CountryCreate.Request CreateValidRequest(params Action<CountryCreate.Request>[] updates)
        {
            var commandModel = EntityGenerator.Create<CountryCreate.CommandModel>();

            var request = new CountryCreate.Request("UserId", commandModel);
            updates.ToList().ForEach(func => func(request));
            return request;
        }
        public async Task<HttpResponseMessage> AddCountry(CountryCreate.CommandModel commandModel)
        {
            var request = new CountryCreate.Request(SystemPrincipal.Name, commandModel);
            var response = await DomainServices.CallServiceAsync<CountryCreate.Response>(request);

            var keyPairs = response.ValidationDetails.AsKeyValuePairs();
            return Request.CreateResponse(HttpStatusCode.OK, new
            {
                response.Id,
                ErrorMessages = keyPairs,
                BigErrorMessage = keyPairs.Any()
                    ? keyPairs.Select(p => p.Value).Aggregate((l, r) => $"{l}{Environment.NewLine}{r}")
                    : null,
            });
        }