コード例 #1
0
        private void IterateThroughVehicles(TourClientViewModel tourClientModel, TransportPricing vehiclePayment, ref decimal runningCostItems)
        {
            foreach (var vh in tourClientModel.Vehicles)
            {
                switch (vh.VehicleType)
                {
                case Models.VehicleType.Taxi:
                    runningCostItems += vh.AcutualNumberOfPassengersAllocated * vehiclePayment.TaxiPricing;
                    break;

                case Models.VehicleType.TourBus:
                    runningCostItems += vh.AcutualNumberOfPassengersAllocated * vehiclePayment.TourBusPricing;
                    break;

                case Models.VehicleType.MiniBus:
                    runningCostItems += vh.AcutualNumberOfPassengersAllocated * vehiclePayment.MiniBusPricing;
                    break;

                case Models.VehicleType.PickUpTrack:
                    runningCostItems += vh.AcutualNumberOfPassengersAllocated * vehiclePayment.PickupTruckPricing;
                    break;

                case Models.VehicleType.FourWheelDriveCar:
                    runningCostItems += vh.AcutualNumberOfPassengersAllocated * vehiclePayment.FourByFourPricing;
                    break;
                }
            }
        }
コード例 #2
0
        private void CalculateRunningItemCostMeal(Domain.Models.ItemType itemType, TourClientViewModel tourClient, ItemViewModel it, MealPricing unitPaymentMeal, ref decimal runningCostOfItems, ref decimal actualItemCost)
        {
            switch (itemType)
            {
            case Domain.Models.ItemType.Meal:
                actualItemCost      = unitPaymentMeal.Price * it.Quantity;
                runningCostOfItems += actualItemCost;
                break;

            default:
                actualItemCost = 0.00M;
                break;
            }
        }
コード例 #3
0
        public IActionResult BookTour([FromBody] TourClientViewModel tourClientModel)
        {
            try
            {
                _serviceEndPoint = new ServicesEndPoint.GeneralSevices.ServicesEndPoint(_simbaToursUnitOfWork, _emailService);
                var tourClient = AutoMapper.Mapper.Map <TourClientViewModel, TourClient>(tourClientModel);

                List <Item>             mealItems    = new List <Item>();
                List <Item>             laguageItems = new List <Item>();
                List <VehicleViewModel> vehicles     = new List <VehicleViewModel>();

                var     unitPayment      = _serviceEndPoint.GetLaguagePricing()[0];
                var     unitPaymentMeal  = _serviceEndPoint.GetMealPricing()[0];
                var     vehiclePayment   = _serviceEndPoint.GetTransportPricing()[0];
                decimal runningCostItems = 0.00M;

                IterateThroughMeals(mealItems, ref runningCostItems, unitPaymentMeal, tourClientModel, tourClient);
                IterateThroughLaguageAssortments(laguageItems, mealItems, ref runningCostItems, unitPaymentMeal, unitPayment, tourClientModel, tourClient);
                IterateThroughVehicles(tourClientModel, vehiclePayment, ref runningCostItems);

                tourClient.GrossTotalCosts += runningCostItems;
                _serviceEndPoint            = new ServicesEndPoint.GeneralSevices.ServicesEndPoint(_simbaToursUnitOfWork, _emailService);
                tourClient.DateCreated      = DateTime.Now;
                tourClient.DateUpdated      = DateTime.Now;

                tourClient.HasFullyPaid = false;

                var isBooked = _serviceEndPoint.BookSafariPackage(tourClient, mealItems.ToArray(), laguageItems.ToArray());
                if (isBooked)
                {
                    var tourClientFullView = _serviceEndPoint.GetTourClientById(tourClient.TourClientId);
                    var payPalRedirectUrl  = ValidatePayment(tourClientFullView, tourClient.CurrentPayment);
                    payPalRedirectUrl += "&clientId=" + tourClient.TourClientId;
                    return(Json(new { Result = isBooked, PayPalRedirectUrl = payPalRedirectUrl, }));
                    //return Redirect(payPalRedirectUrl);
                }
                else
                {
                    return(Json(new { Result = false, Message = "Failed To Book Tour. Please contact the administrators of the site!" }));
                }
            }
            catch (Exception e)
            {
                return(Json(new { Result = false, Message = e.Message, StackTrace = e.StackTrace }));
            }
        }
コード例 #4
0
        private void IterateThroughMeals(IList <Item> mealItems, ref decimal runningCostItems, MealPricing unitPaymentMeal, TourClientViewModel tourClientModel, TourClient tourClient)
        {
            foreach (var it in tourClientModel.CombinedMeals.MealItems)
            {
                var actualItemCost = 0.00M;

                var itemType = (Domain.Models.ItemType)Enum.Parse <Domain.Models.ItemType>(it.ItemType.ToString());
                if (it.Quantity > 0)
                {
                    CalculateRunningItemCostMeal(itemType, tourClientModel, it, unitPaymentMeal, ref runningCostItems, ref actualItemCost);
                    mealItems.Add(new Item {
                        mealPricing = unitPaymentMeal, mealPricingId = unitPaymentMeal.MealPricingId, ItemCost = actualItemCost, ItemId = it.ItemId,
                        ItemType    = (Domain.Models.ItemType)Enum.Parse <Domain.Models.ItemType>(it.ItemType.ToString()),
                        Meal        = new Meal {
                            MealId = 0, TourClient = tourClient, TourClientId = tourClient.TourClientId
                        }, Quantity = it.Quantity
                    });
                }
            }
        }
コード例 #5
0
        private void CalculateRunningItemCostLaguage(Domain.Models.ItemType itemType, TourClientViewModel tourClient, ItemViewModel it, LaguagePricing unitPayment, ref decimal runningCostOfItems, ref decimal actualItemCost)
        {
            switch (itemType)
            {
            case Domain.Models.ItemType.Laguage:
                actualItemCost      = unitPayment.UnitLaguagePrice * it.Quantity;
                runningCostOfItems += actualItemCost;
                break;

            case Domain.Models.ItemType.Meal:
                actualItemCost      = unitPayment.unitMealPrice * it.Quantity - tourClient.NumberOfIndividuals;
                runningCostOfItems += actualItemCost;
                break;

            case Domain.Models.ItemType.MedicalTreatment:
                actualItemCost      = unitPayment.UnitMedicalPrice * it.Quantity;
                runningCostOfItems += actualItemCost;
                break;

            case Domain.Models.ItemType.TravelDocuments:
                actualItemCost      = unitPayment.UnitTravelDocumentPrice * it.Quantity;
                runningCostOfItems += actualItemCost;
                break;

            default:
                actualItemCost = 0.00M;
                break;
            }
        }