mercredi 9 septembre 2015

Broken C# else if returning error page

I am trying to work with if else statements for different things. I need one that pulls the value of a dropdown list to determine what the calculation will be, another that pulls the value of a check box and assigns a calculation, another for input validation for if the number exceeds 32, and the last to give me a value determined by the amount (up to 32) entered into the textbox. I think i've gotten the checkbox statement corrected (guideFee), and the input validation and the one that goes with it seem to be correct already, but I am having trouble assigning the constant decimal values to the dropdown list values and I don't understand why. I have the basetourRate = Convert.ToDecimal(riverTour) and the if statement that follows, but when I run the program I get an error page. I have pasted the whole code. If anyone could help me out i'd greatly appreciate it, thank you!

{
    protected void Page_Load(object sender, EventArgs e)
    {

    }

    protected void butCalculate_Click(object sender, EventArgs e )
    {
        //1. Declare Variables
        decimal totalBaseTourFee;
        decimal totalGuideFee;
        decimal totalWeekendSurcharge;
        decimal subtotal;
        decimal salesTaxCharge;
        decimal totalCharge;
        decimal baseTourRate;         
        decimal guideFee = 0m;
        bool isGuidedTour;
        int numberOfRafters;
        int numberOfRaftsNeeded; 
        string riverTour;
        string timeOfWeek;
        string displayTotalBaseTourFee;
        string displayNumberOfRaftsNeeded;
        string displayTotalGuideFee;
        string displayTotalWeekendSurcharge;
        string displaySubtotal;
        string displaySalesTaxCharge;
        string displayTotalCharge;

        const decimal FRENCH_BROAD = 40m;
        const decimal NANTAHALA = 30m;
        const decimal TUCK = 20m;
        const decimal WEEKEND_SURCHARGE = 10M;
        const decimal GUIDE_FEE = 35M;
        const decimal SALES_TAX_RATE = .07M;

        //2. Get Values
        numberOfRafters = Convert.ToInt32(txtNumberOfRafters.Text);
        riverTour = ddlTour.SelectedValue;
        isGuidedTour = chkGuided.Checked;
        timeOfWeek = rblDay.SelectedValue;

        Trace.Warn("numberOfRafters = " + numberOfRafters);
        Trace.Warn(("isGuidedTour = " + isGuidedTour));
        Trace.Warn("riverTour = " + riverTour);
        Trace.Warn("timeOfWeek = " + timeOfWeek);

        //Input Validation

        if (numberOfRafters > 32)
        {
            Console.WriteLine("Sorry, we can't handle this large of a group!");
            return;
        }
        //3. Do Calculations
        baseTourRate = Convert.ToDecimal(riverTour);

        if (riverTour == "FB")
        {
            baseTourRate = FRENCH_BROAD; 
        }
        else if (riverTour == "NH")
        {
            baseTourRate = NANTAHALA;
        }
        else if (riverTour == "TK")
        {
            baseTourRate = TUCK;
        }



        if (isGuidedTour == true)
        {
             guideFee = GUIDE_FEE;
        }
        else if (!isGuidedTour == false)
        {
            guideFee = 0;
        }

        totalBaseTourFee = numberOfRafters * baseTourRate;
        numberOfRaftsNeeded = numberOfRafters;

        if (numberOfRafters <= 8)
        {
            numberOfRaftsNeeded = 1;
        }
        else if (numberOfRafters <= 16)
        {
            numberOfRaftsNeeded = 3;
        }
        else if (numberOfRafters <= 24)
        {
            numberOfRaftsNeeded = 3;
        }
        else if (numberOfRafters <=32)
        {
            numberOfRaftsNeeded = 4;
        }

        totalGuideFee = numberOfRaftsNeeded * guideFee;
        totalWeekendSurcharge = numberOfRafters * WEEKEND_SURCHARGE;
        subtotal = totalBaseTourFee + totalGuideFee + totalWeekendSurcharge;
        salesTaxCharge = subtotal * SALES_TAX_RATE;
        totalCharge = subtotal + salesTaxCharge;

        //4. Display Results
        displayTotalBaseTourFee = totalBaseTourFee.ToString("C") + "<br>";
        displayNumberOfRaftsNeeded = numberOfRaftsNeeded.ToString("C") + "<br>";
        displayTotalGuideFee = totalGuideFee.ToString("C") + "<br>";
        displayTotalWeekendSurcharge = totalWeekendSurcharge.ToString("C") + "<br>";
        displaySubtotal = subtotal.ToString("C") + "<br>";
        displaySalesTaxCharge = salesTaxCharge.ToString("C") + "<br>";
        displayTotalCharge = totalCharge.ToString("C") + "<br>";

        lblTotalBaseTourFee.Text = displayTotalBaseTourFee;
        lblNumberOfRafts.Text = displayNumberOfRaftsNeeded;
        lblTotalGuideFee.Text = displayTotalGuideFee;
        lblTotalWeekendSurcharge.Text = displayTotalWeekendSurcharge;
        lblSubtotal.Text = displaySubtotal;
        lblSalesTaxCharge.Text = displaySalesTaxCharge;
        lblTotalCharge.Text = displayTotalCharge;
    }

    protected void butClear_Click(object sender, EventArgs e)
    {
        //Clear TextBox and Label
        txtNumberOfRafters.Text = "";
        lblTotalBaseTourFee.Text = "";
        lblNumberOfRafts.Text = "";
        lblTotalGuideFee.Text = "";
        lblTotalWeekendSurcharge.Text = "";
        lblSubtotal.Text = "";
        lblSalesTaxCharge.Text = "";
        lblTotalCharge.Text = "";

        ddlTour.SelectedIndex = -1;
        rblDay.SelectedIndex = -1;

        chkGuided.Checked = false;

        //Set focus back to name textbox
        txtNumberOfRafters.Focus();
    }
}

Aucun commentaire:

Enregistrer un commentaire