Beispiel #1
0
        public async Task <UserPreferenceV1Result> CreateUserPreference([FromBody] UpsertUserPreferenceRequest request, [FromQuery] bool allowUpdate = false)
        {
            var methodName = $"{nameof(CreateUserPreference)}";

            Logger.LogInformation($"{methodName} request: {0}", JsonConvert.SerializeObject(request));

            request.TargetUserUID = ValidateUserUid(request.TargetUserUID);

            UserPreferenceV1Result result = null;
            var existing = await PreferenceRepo.GetUserPreference(request.TargetUserUID.Value, request.PreferenceKeyName);

            if (existing == null)
            {
                result = await WithServiceExceptionTryExecuteAsync(() =>
                                                                   RequestExecutorContainerFactory
                                                                   .Build <CreateUserPreferenceExecutor>(LoggerFactory, ServiceExceptionHandler, PreferenceRepo)
                                                                   .ProcessAsync(AutoMapperUtility.Automapper.Map <CreateUserPreferenceEvent>(request))
                                                                   ) as UserPreferenceV1Result;
            }
            else if (allowUpdate)
            {
                result = await WithServiceExceptionTryExecuteAsync(() =>
                                                                   RequestExecutorContainerFactory
                                                                   .Build <UpdateUserPreferenceExecutor>(LoggerFactory, ServiceExceptionHandler, PreferenceRepo)
                                                                   .ProcessAsync(AutoMapperUtility.Automapper.Map <UpdateUserPreferenceEvent>(request))
                                                                   ) as UserPreferenceV1Result;
            }
            else
            {
                ServiceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, 13);
            }

            Logger.LogResult(methodName, JsonConvert.SerializeObject(request), result);
            return(result);
        }
Beispiel #2
0
        public async Task ValidateCreate_ExistingNoUpdate()
        {
            const string keyName          = "some key";
            var          userUid          = Guid.NewGuid();
            var          prefKeyUid       = Guid.NewGuid();
            var          userPrefDatabase = new UserPrefKeyDataModel
            {
                KeyName          = keyName,
                PreferenceKeyUID = prefKeyUid.ToString(),
                PreferenceJson   = "some json",
                SchemaVersion    = "1.0"
            };

            mockPrefRepo.Setup(p => p.GetUserPreference(userUid, keyName))
            .ReturnsAsync(userPrefDatabase);

            var request = new UpsertUserPreferenceRequest
            {
                PreferenceJson    = "some new json",
                PreferenceKeyUID  = prefKeyUid,
                PreferenceKeyName = userPrefDatabase.KeyName,
                SchemaVersion     = userPrefDatabase.SchemaVersion,
                TargetUserUID     = userUid
            };
            var controller = CreatePreferencesController(userUid.ToString(), false);
            var ex         = await Assert.ThrowsAsync <ServiceException>(async() => await controller.CreateUserPreference(request)) as ServiceException;

            Assert.Equal(HttpStatusCode.BadRequest, ex.Code);
            var result = ex.GetResult;

            Assert.Equal(2013, result.Code);
            Assert.Equal("User preference already exists. ", result.Message);
        }
Beispiel #3
0
        /// <summary>
        /// Use the request to construct the expected result
        /// </summary>
        private UserPreferenceV1Result ConstructExpectedResult(UpsertUserPreferenceRequest request)
        {
            var expectedUserPref = new UserPreferenceV1Result();

            expectedUserPref.PreferenceKeyName = request.PreferenceKeyName;
            expectedUserPref.PreferenceKeyUID  = request.PreferenceKeyUID.Value;
            expectedUserPref.SchemaVersion     = request.SchemaVersion;
            expectedUserPref.PreferenceJson    = request.PreferenceJson;
            return(expectedUserPref);
        }
Beispiel #4
0
        public async Task <UserPreferenceV1Result> UpdateUserPreference([FromBody] UpsertUserPreferenceRequest request)
        {
            var methodName = $"{nameof(UpdateUserPreference)}";

            Logger.LogInformation($"{methodName} request: {0}", JsonConvert.SerializeObject(request));

            request.TargetUserUID = ValidateUserUid(request.TargetUserUID);

            var result = await WithServiceExceptionTryExecuteAsync(() =>
                                                                   RequestExecutorContainerFactory
                                                                   .Build <UpdateUserPreferenceExecutor>(LoggerFactory, ServiceExceptionHandler, PreferenceRepo)
                                                                   .ProcessAsync(AutoMapperUtility.Automapper.Map <UpdateUserPreferenceEvent>(request))
                                                                   ) as UserPreferenceV1Result;

            Logger.LogResult(methodName, JsonConvert.SerializeObject(request), result);
            return(result);
        }
Beispiel #5
0
        public void MapUserPrefRequestToUpdateUserPrefEvent()
        {
            var request = new UpsertUserPreferenceRequest
            {
                TargetUserUID     = Guid.NewGuid(),
                PreferenceKeyUID  = Guid.NewGuid(),
                PreferenceKeyName = "some preference key",
                PreferenceJson    = "some json string here",
                SchemaVersion     = "1.0"
            };

            var result = AutoMapperUtility.Automapper.Map <UpdateUserPreferenceEvent>(request);

            Assert.Equal(request.TargetUserUID, result.UserUID);
            Assert.Equal(request.PreferenceKeyUID, result.PreferenceKeyUID);
            Assert.Equal(request.PreferenceKeyName, result.PreferenceKeyName);
            Assert.Equal(request.PreferenceJson, result.PreferenceJson);
            Assert.Equal(request.SchemaVersion, result.SchemaVersion);
        }
Beispiel #6
0
        /// <summary>
        /// Create an instance of the master data events. Convert to JSON.
        /// </summary>
        /// <param name="eventObject">event to be published</param>
        /// <returns>json string with event serialized</returns>
        private string BuildEventIntoObject(dynamic eventObject)
        {
            var    jsonString = string.Empty;
            string eventType  = eventObject.EventType;

            switch (eventType)
            {
            case "CreateUserPreferenceRequest":
            case "UpdateUserPreferenceRequest":
                var request = new UpsertUserPreferenceRequest();
                if (HasProperty(eventObject, "TargetUserUID"))
                {
                    request.TargetUserUID = Guid.Parse(eventObject.TargetUserUID);
                }
                if (HasProperty(eventObject, "SchemaVersion"))
                {
                    request.SchemaVersion = eventObject.SchemaVersion;
                }
                if (HasProperty(eventObject, "PreferenceJson"))
                {
                    request.PreferenceJson = eventObject.PreferenceJson;
                }
                if (HasProperty(eventObject, "PreferenceKeyName"))
                {
                    request.PreferenceKeyName = eventObject.PreferenceKeyName;
                }
                if (HasProperty(eventObject, "PreferenceKeyUID"))
                {
                    request.PreferenceKeyUID = Guid.Parse(eventObject.PreferenceKeyUID);
                }
                jsonString = JsonConvert.SerializeObject(request, JsonSettings);
                break;

            case "CreatePreferenceKeyEvent":
                var createPrefKeyEvent = new CreatePreferenceKeyEvent
                {
                    PreferenceKeyName = eventObject.PreferenceKeyName,
                    PreferenceKeyUID  = Guid.Parse(eventObject.PreferenceKeyUID)
                };
                jsonString = JsonConvert.SerializeObject(createPrefKeyEvent, JsonSettings);
                break;

            case "UpdatePreferenceKeyEvent":
                var updatePrefKeyEvent = new UpdatePreferenceKeyEvent
                {
                    PreferenceKeyName = eventObject.PreferenceKeyName,
                    PreferenceKeyUID  = Guid.Parse(eventObject.PreferenceKeyUID)
                };
                jsonString = JsonConvert.SerializeObject(updatePrefKeyEvent, JsonSettings);
                break;

            case "DeletePreferenceKeyEvent":
                var deletePrefKeyEvent = new DeletePreferenceKeyEvent
                {
                    PreferenceKeyUID = Guid.Parse(eventObject.PreferenceKeyUID)
                };
                jsonString = JsonConvert.SerializeObject(deletePrefKeyEvent, JsonSettings);
                break;
            }
            return(jsonString);
        }