/// <summary> /// Updates a customMeterDimension. /// </summary> /// <param name="id">The id of the customMeterDimension to update.</param> /// <param name="customMeterDimension">The updated customMeterDimension.</param> /// <returns>The updated customMeterDimension.</returns> public async Task <CustomMeterDimension> UpdateAsync(long id, CustomMeterDimension customMeterDimension) { if (customMeterDimension is null) { throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(typeof(CustomMeterDimension).Name), UserErrorCode.PayloadNotProvided); } _logger.LogInformation(LoggingUtils.ComposeUpdateResourceMessage( typeof(CustomMeterDimension).Name, customMeterDimension.Id.ToString(), planName: customMeterDimension.Plan.PlanName, payload: JsonSerializer.Serialize(customMeterDimension))); // Get the customMeterDimension that matches the id provided var customMeterDimensionDb = await GetAsync(id); // update the FK to customMeter in case the meterName has been changed customMeterDimensionDb.MeterId = (await _customMeterService.GetAsync(customMeterDimension.MeterName)).Id; // Copy over the changes customMeterDimensionDb.Copy(customMeterDimension); // Update customMeterDimensionDb values and save changes in db _context.CustomMeterDimensions.Update(customMeterDimensionDb); await _context._SaveChangesAsync(); _logger.LogInformation(LoggingUtils.ComposeResourceUpdatedMessage( typeof(CustomMeterDimension).Name, customMeterDimension.Id.ToString(), planName: customMeterDimension.Plan.PlanName)); return(customMeterDimensionDb); }
public async Task <ActionResult> CreateOrUpdateAsync(string offerName, string planName, string meterName, [FromBody] CustomMeterDimension customMeterDimension) { AADAuthHelper.VerifyUserAccess(this.HttpContext, _logger, true); if (customMeterDimension == null) { throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(nameof(customMeterDimension)), UserErrorCode.PayloadNotProvided); } if (!planName.Equals(customMeterDimension.PlanName)) { throw new LunaBadRequestUserException(LoggingUtils.ComposeNameMismatchErrorMessage(nameof(offerName)), UserErrorCode.NameMismatch); } if (!meterName.Equals(customMeterDimension.MeterName)) { throw new LunaBadRequestUserException(LoggingUtils.ComposeNameMismatchErrorMessage(nameof(meterName)), UserErrorCode.NameMismatch); } if (await _customMeterDimensionService.ExistsAsync(offerName, planName, meterName)) { await _customMeterDimensionService.UpdateAsync(offerName, planName, meterName, customMeterDimension); return(Ok(customMeterDimension)); } else { await _customMeterDimensionService.CreateAsync(offerName, planName, meterName, customMeterDimension); return(CreatedAtRoute(nameof(GetAsync) + nameof(CustomMeterDimension), new { offerName = offerName, planName = planName, meterName = meterName }, customMeterDimension));; } }
public async Task <ActionResult> UpdateAsync(long id, [FromBody] CustomMeterDimension customMeterDimension) { await _customMeterDimensionService.UpdateAsync(id, customMeterDimension); return(NoContent()); }
/// <summary> /// Creates a customMeterDimension within a plan within an offer. /// </summary> /// <param name="offerName">The name of the offer.</param> /// <param name="planUniqueName">The name of the plan.</param> /// <param name="customMeterDimension">The customMeterDimension object to create.</param> /// <returns>The created customMeterDimension.</returns> public async Task <CustomMeterDimension> CreateAsync(string offerName, string planUniqueName, CustomMeterDimension customMeterDimension) { if (customMeterDimension is null) { throw new LunaBadRequestUserException(LoggingUtils.ComposePayloadNotProvidedErrorMessage(typeof(CustomMeterDimension).Name), UserErrorCode.PayloadNotProvided); } _logger.LogInformation(LoggingUtils.ComposeCreateResourceMessage( typeof(CustomMeterDimension).Name, customMeterDimension.Id.ToString(), offerName: offerName, planName: planUniqueName, payload: JsonSerializer.Serialize(customMeterDimension))); // Get the plan associated with the offerName and planUniqueName provided var plan = await _planService.GetAsync(offerName, planUniqueName); // Set the FK to plan customMeterDimension.PlanId = plan.Id; // Set the FK to customMeter customMeterDimension.MeterId = (await _customMeterService.GetAsync(customMeterDimension.MeterName)).Id; // Reset the PK (should not be modified in request) customMeterDimension.Id = 0; // Add customMeterDimension to db _context.CustomMeterDimensions.Add(customMeterDimension); await _context._SaveChangesAsync(); _logger.LogInformation(LoggingUtils.ComposeResourceCreatedMessage( typeof(ArmTemplateParameter).Name, customMeterDimension.Id.ToString(), offerName: offerName, planName: planUniqueName)); return(customMeterDimension); }
public async Task <ActionResult> CreateAsync(string offerName, string planName, [FromBody] CustomMeterDimension customMeterDimension) { await _customMeterDimensionService.CreateAsync(offerName, planName, customMeterDimension); return(CreatedAtAction(nameof(GetAsync), new { id = customMeterDimension.Id }, customMeterDimension)); }