using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace prjWebCsControleAspNet
{
    public partial class webPizza : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (IsPostBack == false) //executer seulement une fois (la 1ere)
            {
                panPrix.Visible = false;
                panCommande.Visible = false;
                lblAdresse.Visible = false;
                txtAdresse.Visible = false;
                panPrix.Visible = false;

                //Appel des fonctions de remplissage
                RemplirListePizzas();
                RemplirListeTailles();
                RemplirListeGarnitures();
                RemplirCroutes();
            }

        }

        private void RemplirCroutes()
        {
            ListItem elm = new ListItem();
            rdBtnLstCroute.Items.Add(new ListItem("Normale(0$)", "0"));
            rdBtnLstCroute.Items.Add(new ListItem("Mince(1$)", "1"));
            rdBtnLstCroute.Items.Add(new ListItem("Epaisse(2$)", "2"));

            rdBtnLstCroute.Items[0].Selected = true;
        } 

        private void RemplirListeGarnitures()
        {
            chkLstGarnitures.Items.Add(new ListItem("Champignons(1$)", "1"));
            chkLstGarnitures.Items.Add(new ListItem("Bacon Jambon(2$)", "2"));
            chkLstGarnitures.Items.Add(new ListItem("Extra Fromage(2,5$)", "2,5"));
            chkLstGarnitures.Items.Add(new ListItem("Peperoni(1,75$)", "1,75"));

        }

        private void RemplirListeTailles()
        {
            lstTailles.Items.Clear();

            lstTailles.Items.Add(new ListItem("Petite", "1"));
            lstTailles.Items.Add(new ListItem("Moyenne", "1,5"));
            lstTailles.Items.Add(new ListItem("Grande", "2"));

            lstTailles.SelectedIndex = 0;
        }

        private void RemplirListePizzas()
        {
            ListItem elm = new ListItem();
            elm.Selected = true;
            elm.Text = "Choisir une pizza";
            elm.Value = "";
            cboPizzas.Items.Add(elm);

            elm = new ListItem();
            elm.Text = "Italienne";
            elm.Value = "10";
            cboPizzas.Items.Add(elm);

            elm = new ListItem("Mexicaine", "11");
            cboPizzas.Items.Add(elm);

            cboPizzas.Items.Add(new ListItem("Vegetarienne", "14"));

            cboPizzas.Items.Add(new ListItem("Halal", "3"));
        }



        protected void chkLivraison_CheckedChanged(object sender, EventArgs e)
        {
            if (chkLivraison.Checked == true)
            {
                lblAdresse.Visible = true;
                txtAdresse.Visible = true;

                txtAdresse.Focus();
            }
            else
            {
                lblAdresse.Visible = false;
                txtAdresse.Visible = false;
            }


            if (cboPizzas.SelectedIndex != 0)
            {
                panPrix.Visible = true;
                CalculerPrix();
                panCommande.Visible = false;
            }
            else
            {
                panPrix.Visible = false;
            }
        }

        protected void cboPizzas_SelectedIndexChanged(object sender, EventArgs e)
        {

        }

        protected void cboPizzas_SelectedIndexChanged1(object sender, EventArgs e)
        {
            if (cboPizzas.SelectedIndex != 0)
            {
                panPrix.Visible = true;
                CalculerPrix();
                panCommande.Visible = false;
            }
            else
            {
                panPrix.Visible = false;
            }
        }
        private void CalculerPrix()
        {
            decimal prixbase, sousTotal, taille, taxe, total, liv = 0, garnis = 0, croute = 0;

            prixbase = Convert.ToDecimal(cboPizzas.SelectedItem.Value);
            taille = Convert.ToDecimal(lstTailles.SelectedItem.Value);
            liv = chkLivraison.Checked ? 5 : 0;
            //Recalculer le prix de base en fonction de la taille
            prixbase = prixbase * taille;

            //calculer le prix des gsrnitures selectionnees
            foreach (ListItem elmt in chkLstGarnitures.Items)
            {
                if (elmt.Selected == true)
                {
                    garnis = garnis + Convert.ToDecimal(elmt.Value);
                }
            }

            // recuperer le prix de la croute

            if (rdBtnLstCroute.SelectedItem != null)
            {
                croute = Convert.ToDecimal(rdBtnLstCroute.SelectedItem.Value);
            }


            sousTotal = prixbase + liv + garnis + croute;
            taxe = sousTotal * 0.15m;
            total = sousTotal + taxe;

            lblPrix.Text = "Prix de base: " + prixbase + "$<br/>";
            //lblPrix.Text += "Taille: " + lstTailles.SelectedItem.Text + "<br/>";
            lblPrix.Text += "Livraison: " + liv + "$<br/>";
            lblPrix.Text += "Garnitures: " + garnis + "$<br/>";
            lblPrix.Text += "Croûte: " + croute + "$<br/>";

            lblPrix.Text += "<hr/>";
            lblPrix.Text += "Sous-total: " + sousTotal.ToString("0.00") + "$<br/>";
            lblPrix.Text += "Taxe (15%): " + taxe.ToString("0.00") + "$<br/>";
            lblPrix.Text += "<hr/>";
            lblPrix.Text += "Total: " + total.ToString("0.00") + "$";


        }

        protected void lstTailles_SelectedIndexChanged(object sender, EventArgs e)
        {

            if (cboPizzas.SelectedIndex != 0)
            {
                panPrix.Visible = true;
                CalculerPrix();
                panCommande.Visible = false;
            }
            else
            {
                panPrix.Visible = false;
            }
        }

        protected void chkLstGarnitures_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboPizzas.SelectedIndex != 0)
            {
                panPrix.Visible = true;
                CalculerPrix();
                panCommande.Visible = false;
            }
            else
            {
                panPrix.Visible = false;
            }
        }

        protected void rdBtnLstCroute_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cboPizzas.SelectedIndex != 0)
            {
                panPrix.Visible = true;
                CalculerPrix();
                panCommande.Visible = false;
            }
            else
            {
                panPrix.Visible = false;
            }
        }

        protected void btnCommander_Click(object sender, EventArgs e)
        {
            panCommande.Visible = true;

            string info = "M. ou Mme. " + txtNom.Text + " au tel (" + txtTelephone.Text +
                ") <br />" + "Votre commande d'une " + lstTailles.SelectedItem.Text + " pizza " +
                cboPizzas.SelectedItem.Text + " sur une croute " + rdBtnLstCroute.SelectedItem.Text +
                "<br />";
            // verifier livraison
            if (chkLivraison.Checked)
            { info += "A livree au " + txtAdresse.Text + "<br />"; }
            else
            { info += "A ramasser au comptoir <br />"; }

            // verifier et afficher les garnitures
            if (chkLstGarnitures.SelectedIndex == -1)
            {
                info += "Sans garnitures  <br />";
            }
            else
            {
                info += "Avec les garnitures  <br /> <ul>";
                // boucle pour afficher les elements de la liste
                foreach (ListItem elmt in chkLstGarnitures.Items)
                {
                    if (elmt.Selected == true)
                    {
                        info += "<li>" + elmt.Text + "</li>";
                    }
                }
                info += "</ul>  a ete confirmee.<br />Merci de faire affaire avec LPH.";
            }

            lblCommande.Text = info;

        }
    }
}