/// <summary>
        /// This converts the <see cref="ActionResult{WebApiMessageOnly}"/> created by <see cref="CreateResponse"/> into a GenericServices.IStatusGeneric
        /// </summary>
        /// <param name="actionResult"></param>
        /// <returns>a status which is similar to the original status (errors might not be in the exact same form)</returns>
        public static IStatusGeneric CopyToStatus(this ActionResult <WebApiMessageOnly> actionResult)
        {
            var testStatus = new StatusGenericHandler();
            var objResult  = (actionResult.Result as ObjectResult);

            if (objResult == null)
            {
                throw new NullReferenceException("Could not cast the response to ObjectResult");
            }
            var errorPart = objResult as BadRequestObjectResult;

            if (errorPart != null)
            {
                //It has errors, so copy errors to status
                testStatus.AddValidationResults(ExtractErrors(errorPart));
                return(testStatus);
            }

            var decodedValue = objResult.Value as WebApiMessageOnly;

            if (decodedValue == null)
            {
                throw new NullReferenceException($"Could not cast the response value to WebApiMessageOnly");
            }
            testStatus.Message = decodedValue.Message;
            return(testStatus);
        }
        private static IStatusGeneric ExecuteValidation(this DbContext context)
        {
            var status = new StatusGenericHandler();

            foreach (var entry in
                     context.ChangeTracker.Entries()
                     .Where(e =>
                            (e.State == EntityState.Added) ||
                            (e.State == EntityState.Modified)))
            {
                var entity       = entry.Entity;
                var valProvider  = new ValidationDbContextServiceProvider(context);
                var valContext   = new ValidationContext(entity, valProvider, null);
                var entityErrors = new List <ValidationResult>();
                if (!Validator.TryValidateObject(
                        entity, valContext, entityErrors, true))
                {
                    status.AddValidationResults(entityErrors);
                }
            }

            return(status);
        }