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; } } }
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; } }
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 })); } }
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 }); } } }
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; } }