/// <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); }
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); }