public Receipt MakePayment(PaymentModel paymentModel, ServiceProviderType serviceProviderType, IBill bill)
        {
            IServiceProvider serviceProvider = serviceProviderFactory.GetServiceProvider(serviceProviderType);
            IService         service         = serviceProvider.GetService(bill.ServiceName);
            var payment = paymentDAL.MakePayment(paymentModel);

            if (payment.Value > 0)
            {
                return(service.GenerateReceipt(bill));
            }
            else
            {
                throw new Exception("Payment failure.");
            }
        }