// Helper methods private async Task <GetByIdResponse <GlobalSettings> > GetImpl(GetByIdArguments args) { M.GlobalSettings mSettings = await _db.GlobalSettings.FirstOrDefaultAsync(); if (mSettings == null) { // This should never happen throw new BadRequestException("Settings have not been initialized"); } var settings = _mapper.Map <GlobalSettings>(mSettings); var result = new GetByIdResponse <GlobalSettings> { CollectionName = "Settings", Entity = settings, }; if (!string.IsNullOrWhiteSpace(args.Expand)) { Expand(args.Expand, settings, result); } return(result); }
public async Task <ActionResult <SaveGlobalSettingsResponse> > Save([FromBody] GlobalSettingsForSave settingsForSave, [FromQuery] SaveArguments args) { // Authorized access (Criteria are not supported here) // TODO Authorize //var updatePermissions = await ControllerUtilities.GetPermissions(_db.AbstractPermissions, PermissionLevel.Update, "settings"); //if (!updatePermissions.Any()) //{ // return StatusCode(403); //} try { // Trim all string fields just in case settingsForSave.TrimStringProperties(); // Validate ValidateAndPreprocessSettings(settingsForSave); if (!ModelState.IsValid) { return(UnprocessableEntity(ModelState)); } // Persist M.GlobalSettings mSettings = await _db.GlobalSettings.FirstOrDefaultAsync(); if (mSettings == null) { // This should never happen return(BadRequest("Global settings have not been initialized")); } _mapper.Map(settingsForSave, mSettings); mSettings.SettingsVersion = Guid.NewGuid(); // prompts clients to refresh await _db.SaveChangesAsync(); // IF requested, return the updated entity if (args.ReturnEntities ?? false) { // IF requested, return the same response you would get from a GET var res = await GetImpl(new GetByIdArguments { Expand = args.Expand }); var result = new SaveGlobalSettingsResponse { CollectionName = res.CollectionName, Entity = res.Entity, RelatedEntities = res.RelatedEntities, SettingsForClient = GetForClientImpl() }; return(result); } else { return(Ok()); } } catch (Exception ex) { _logger.LogError($"Error: {ex.Message} {ex.StackTrace}"); return(BadRequest(ex.Message)); } }