public HourlyPricingCost CalculateHourlyPricingCost(HourlyPricing pricing, int NoOfHours, int NoOfVisitsPerWeek, int ContractDurationInWeeks, int empCount, Promotion promotion)
        {
            var hourPrice = decimal.Parse(pricing.HourePrice);
            var discount  = Math.Round(GetDiscount(pricing.hourlypricingId, NoOfHours, ContractDurationInWeeks * NoOfVisitsPerWeek), 2, MidpointRounding.AwayFromZero);

            return(CalculateHourlyPricingCost(hourPrice, discount, NoOfHours, NoOfVisitsPerWeek, ContractDurationInWeeks, empCount, promotion));
        }
        private HourlyPricing CastToClientHourlyPricing(HourlyPricing pricing, int NoOfVisits, int NoOfHours, int ContractDurationInWeeks, int empCount, bool isAvailable, List <string> AvailableDays, Promotion promotion)
        {
            using (var promotionMgr = new PromotionManager())
            {
                pricing.IsAvailable   = isAvailable;
                pricing.NoOfMonths    = ContractDurationInWeeks.ToString();
                pricing.VisitCount    = NoOfVisits.ToString();
                pricing.Hours         = NoOfHours.ToString();
                pricing.Shift         = pricing.DayShift.ToString();
                pricing.AvailableDays = AvailableDays;

                var hourlyPricingCost = CalculateHourlyPricingCost(pricing, NoOfHours, NoOfVisits, ContractDurationInWeeks, empCount, promotion);

                pricing.Discount                     = hourlyPricingCost.Discount.ToString().Replace(".00", "");
                pricing.TotalbeforeDiscount          = (hourlyPricingCost.TotalPriceBeforeDiscount).ToString().Replace(".00", "");
                pricing.MonthelyPrice                = (hourlyPricingCost.MonthelyPrice).ToString().Replace(".00", "");
                pricing.TotalPrice                   = hourlyPricingCost.TotalPriceAfterDiscount.ToString().Replace(".00", "");
                pricing.TotalPromotionDiscountAmount = hourlyPricingCost.TotalPromotionDiscountAmount.ToString().Replace(".00", "");
                pricing.TotalPriceAfterPromotion     = hourlyPricingCost.TotalPriceAfterPromotion.ToString().Replace(".00", "");

                pricing.VatRate           = hourlyPricingCost.VatRate.ToString().Replace(".00", "");
                pricing.VatAmount         = hourlyPricingCost.VatAmount.ToString().Replace(".00", "");
                pricing.TotalPriceWithVat = hourlyPricingCost.TotalPriceWithVat.ToString().Replace(".00", "");
                pricing.TotalPrice        = hourlyPricingCost.TotalPriceAfterDiscount.ToString().Replace(".00", "");



                var totalVisits = ContractDurationInWeeks * NoOfVisits;
                pricing.PromotionExtraVisits = (promotion.FreeVisitsFactor ?? 0) == 0 ? 0 : (int)Math.Truncate((decimal)totalVisits / promotion.FreeVisitsFactor.Value);
                pricing.PromotionName        = promotion.Name;

                return(pricing);
            }
        }