示例#1
0
        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);
        }
示例#2
0
        public async Task <IActionResult> GetCalculatedVmPrice(int sandboxId, CalculateVmPriceUserInputDto input)
        {
            var createdVm = await _virtualMachineSizeService.CalculateVmPrice(sandboxId, input);

            return(new JsonResult(createdVm));
        }