public async Task <double> CalculateVmPrice(int sandboxId, CalculateVmPriceUserInputDto input, CancellationToken cancellationToken = default) { var sandboxRegion = await _sandboxModelService.GetRegionByIdAsync(sandboxId, Common.Constants.UserOperation.Study_Crud_Sandbox); var priceOfVm = await _db.RegionVmSize.Where(x => x.Region.Key == sandboxRegion && x.VmSizeKey == input.Size).AsNoTracking().SingleOrDefaultAsync(); var diskPriceSummarized = 0.0; foreach (var disk in input.DataDisks) { var priceOfDisk = await _db.RegionDiskSize.Where(x => x.Region.Key == sandboxRegion && x.VmDiskKey == disk).AsNoTracking().SingleOrDefaultAsync(); diskPriceSummarized += priceOfDisk != null ? priceOfDisk.Price : 0; } return(priceOfVm.Price + diskPriceSummarized); }
public async Task <IActionResult> GetCalculatedVmPrice(int sandboxId, CalculateVmPriceUserInputDto input) { var createdVm = await _virtualMachineSizeService.CalculateVmPrice(sandboxId, input); return(new JsonResult(createdVm)); }