コード例 #1
0
        public async Task <BillAM> CalculateBill(BillInfoAM billInfo, BasketAM basket)
        {
            var domainPrice = await PricelistService.GetDomainPrice(billInfo.PriceId);

            if (domainPrice == null)
            {
                throw new EntityNotFoundException($"PriceId:{billInfo.PriceId} doesn't exist", "Price");
            }

            var result = new BillAM
            {
                Info = billInfo
            };

            if (basket.KmValue > 0)
            {
                var billItem = await CalculateBillItem(BillItem.KmBillKey, basket.KmValue, domainPrice.PerKm, billInfo.DegreeOfDifficulty);

                result.Items.Add(billItem);
            }

            if (basket.LoadingValue > 0)
            {
                var billItem = await CalculateBillItem(BillItem.LoadingBillKey, basket.LoadingValue, domainPrice.Loading, billInfo.DegreeOfDifficulty);

                result.Items.Add(billItem);
            }

            if (basket.LockedSteeringValue > 0)
            {
                var billItem = await CalculateBillItem(BillItem.LockedSteeringKey, basket.LockedSteeringValue, domainPrice.LockedSteering, billInfo.DegreeOfDifficulty);

                result.Items.Add(billItem);
            }

            if (basket.LockedWheelsValue > 0)
            {
                var billItem = await CalculateBillItem(BillItem.LockedWheelsKey, basket.LockedWheelsValue, domainPrice.LockedWheel, billInfo.DegreeOfDifficulty);

                result.Items.Add(billItem);
            }

            if (basket.OverturnedValue > 0)
            {
                var billItem = await CalculateBillItem(BillItem.OverturnedKey, basket.OverturnedValue, domainPrice.Overturned, billInfo.DegreeOfDifficulty);

                result.Items.Add(billItem);
            }

            if (basket.DitchValue > 0)
            {
                var billItem = await CalculateBillItem(BillItem.DitchKey, basket.DitchValue, domainPrice.Ditch, billInfo.DegreeOfDifficulty);

                result.Items.Add(billItem);
            }

            result.TotalCost = result.Items.Select(i => i.Cost).Sum();

            return(result);
        }
コード例 #2
0
        public async Task <BillInfoAM> GetBillInfo(Coordinate coordinate, int catalogItemId)
        {
            var domainCity = await CityService.GetDomainCityByCoordinate(coordinate);

            var domainPrice = await PricelistService.GetDomainPrice(domainCity.PricelistId, catalogItemId);

            return(new BillInfoAM
            {
                PriceId = domainPrice.Id,
                CommissionPercentage = domainPrice.CommissionPercentage
            });
        }