Example #1
0
        /// <summary>
        /// Processes the UpsertProjectSettings request
        /// </summary>
        protected override async Task <ContractExecutionResult> ProcessAsyncEx <T>(T item)
        {
            ContractExecutionResult result = null;

            var request = CastRequestObjectTo <ProjectSettingsRequest>(item, errorCode: 68);

            await ValidateProjectWithCustomer(customerUid, request?.projectUid);

            if (request.ProjectSettingsType == ProjectSettingsType.Targets || request.ProjectSettingsType == ProjectSettingsType.Colors)
            {
                await RaptorValidateProjectSettings(request);
            }

            var upsertProjectSettingsEvent = new UpdateProjectSettingsEvent()
            {
                ProjectUID          = new Guid(request.projectUid),
                UserID              = userId,
                ProjectSettingsType = request.ProjectSettingsType,
                Settings            = request.Settings,
                ActionUTC           = DateTime.UtcNow
            };

            if (await projectRepo.StoreEvent(upsertProjectSettingsEvent).ConfigureAwait(false) < 1)
            {
                serviceExceptionHandler.ThrowServiceException(HttpStatusCode.BadRequest, 52);
            }

            try
            {
                var projectSettings = await projectRepo.GetProjectSettings(request.projectUid, userId, request.ProjectSettingsType).ConfigureAwait(false);

                switch (request.ProjectSettingsType)
                {
                case ProjectSettingsType.Targets:
                case ProjectSettingsType.Colors:
                    result = projectSettings == null ?
                             new ProjectSettingsResult(request.projectUid, null, request.ProjectSettingsType) :
                             new ProjectSettingsResult(request.projectUid, JsonConvert.DeserializeObject <JObject>(projectSettings.Settings), projectSettings.ProjectSettingsType);
                    break;

                case ProjectSettingsType.ImportedFiles:
                    var tempObj     = JsonConvert.DeserializeObject <JArray>(projectSettings.Settings);
                    var tempJObject = new JObject {
                        ["importedFiles"] = tempObj
                    };
                    result = new ProjectSettingsResult(request.projectUid, tempJObject, projectSettings.ProjectSettingsType);
                    break;

                default:
                    serviceExceptionHandler.ThrowServiceException(HttpStatusCode.InternalServerError, 77);
                    break;
                }
            }
            catch (Exception e)
            {
                serviceExceptionHandler.ThrowServiceException(HttpStatusCode.InternalServerError, 69, e.Message);
            }
            return(result);
        }
Example #2
0
        public void ProjectSettingsResultShouldNotSerializeType()
        {
            var settings = @"{firstValue: 10, lastValue: 20}";

            var result = new ProjectSettingsResult(_projectUid.ToString(), JsonConvert.DeserializeObject <JObject>(settings), ProjectSettingsType.Targets);
            var json   = JsonConvert.SerializeObject(result);

            Assert.DoesNotContain("ProjectSettingsType", json);
        }