public void checkConnectionId()
        {
            IPayment objPayment = new Payment();
            double connNo = 9897033110;
            string id = "123456";
            bool b=true;
            objPayment.Connection_Id = connNo;
            objPayment.Customer_Id=id;
            IPaymentDB objPay = PaymentDBFactory.CreatePaymentDB();
            bool objp = objPay.isValidConnectionId(id,connNo);

            Assert.AreEqual(b, objp);
        } //test pass
         public void CheckGetConnectionNo2()
         {

             IPayment objPayment = new Payment();
             double connNo = 9897033110;
             string id = "C1234567";
             bool b = true;
             objPayment.Connection_Id = connNo;
             objPayment.Customer_Id = id;
             IPaymentDB objPay = PaymentDBFactory.CreatePaymentDB();
             List<double> objp = objPay.GetConnectionNo(id);
             bool count = objp.Contains(98970331104);
             Assert.AreEqual(b, count);

         }
        ///////////////////////////////////////////////////////////////////////////////////////////////
        //
        // Function Name  : <Button1_Click>
        // Summary  : <To make payment by perticular customer id and connection number>
        // Input Parameters : <payment details/payment object>
        // Output Parameters :<True/False>
        // Return Value  : <Return alert message>
        //
        ///////////////////////////////////////////////////////////////////////////////////////////////
        protected void Button1_Click(object sender, EventArgs e)
        {
           
            string customerid = custid.Text;
            double connectionno = Convert.ToDouble(DropDownList1.SelectedValue);
            double billamount;
            if (billamt.Text == "")
            {
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scr2", "<script type='text/javascript'>alert('Please enter bill amount'); </script>", false);
        
            }
            else
            {
                billamount = Convert.ToDouble(billamt.Text);
            }
            double payamount = Convert.ToDouble(payamt.Text);
            string paymentmode = RadioButtonList1.SelectedValue;
            string bankname = DropDownList2.SelectedValue;
           
            string cardtype = "";
            string nameoncard = "";
            double cardnumber = 0;
            DateTime expirydate = DateTime.Parse("01/01/2001");
            double cvvnumber = 0;
            if (paymentmode.Equals("Credit Card") || paymentmode.Equals("Debit Card"))
            {
                bankname = DropDownList2.SelectedValue;
                cardtype = RadioButtonList2.SelectedValue;
                nameoncard = namecard.Text;
                cardnumber = Convert.ToDouble(cardnum.Text);
                string[] exp = expdate.Text.Split('/');
                string expdate1 = exp[0] + "/" + 01 + "/" + exp[1];
                expirydate = DateTime.Parse(expdate1);
                cvvnumber = Convert.ToInt32(cvvnum.Text);
            }
            //check for already payment
            IPaymentManager paymentmanager = PaymentManagerFactory.CreatePaymentManager();
            bool checkpayment=paymentmanager.CheckPayment(customerid,connectionno);

            if (checkpayment)
            {
                ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scr2", "<script type='text/javascript'>alert('The payment is already done for'" + connectionno + "  Connection number'); </script>", false);
                //return to make payment    
                custid.Text = Session["userid"].ToString();
                custid.Enabled = false;
                billamt.Text = "";
                billamt.Enabled = false;
                fillDropdown();
                DropDownList1.Items.Insert(0, new ListItem("Please select number", "0"));
                DropDownList1.SelectedIndex = 0;
                DropDownList2.Visible = false;
                Lblinr.Visible = false;
                Lblinr1.Visible = false;
                Lblbillamt.Visible = false;
                Lblpayamt.Visible = false;
                Lblpaymode.Visible = false;
                billamt.Visible = false;
                payamt.Visible = false;
                RadioButtonList1.Visible = false;
                RadioButtonList2.Visible = false;
                namecard.Visible = false;
                cardnum.Visible = false;
                expdate.Visible = false;
                cvvnum.Visible = false;
                Lblbnkname.Visible = false;
                Lblcardtype.Visible = false;
                Lblnamecard.Visible = false;
                Lblcardnum.Visible = false;
                Lblexpdate.Visible = false;
                Lblcvvnum.Visible = false;
                RequiredFieldValidator6.Visible = false;

            }
            else
            {

                //extract billid and amount
                IBill bill = BillFactory.CreateBill();
                bill = paymentmanager.ValidBillDetails(customerid, connectionno);

                //make payment
                DateTime today = System.DateTime.Now;
                IPayment objPayment = new Payment();
                objPayment.Customer_Id = customerid;
                objPayment.Connection_Id = connectionno;
                objPayment.Bill_Id = Convert.ToDouble(bill.BillId);
                objPayment.Payable_Amount = payamount;
                objPayment.Date = today;
                objPayment.Mode_Of_Payment = paymentmode;
                objPayment.Bank_Name = bankname;
                objPayment.Card_Number = cardnumber;
                objPayment.Name_On_Card = nameoncard;
                objPayment.Card_Type = cardtype;
                objPayment.Expire_Date = expirydate;
                objPayment.Cvv_Number = cvvnumber;

                IPaymentDB pay = PaymentDBFactory.CreatePaymentDB();
                bool paymentmake = pay.MakePayment(objPayment);
                
                if (paymentmake)
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scr4", "<script type='text/javascript'>alert('Thank you. The payment is done for " + connectionno + "  Connection number'); </script>", false);
                   
                    //return to make payment    
                    custid.Text = Session["userid"].ToString();
                    custid.Enabled = false;
                   
                    fillDropdown();
                    DropDownList1.Items.Insert(0, new ListItem("Please select number", "0"));
                    DropDownList1.SelectedIndex = 0;
                    billamt.Text = "";
                    billamt.Enabled = false;
                    billamt.Text = "";
                    payamt.Text = "";
                    Lblbillamt.Visible = false;
                    Lblpayamt.Visible = false;
                    Lblpaymode.Visible = false;
                    Lblinr.Visible = false;
                    Lblinr1.Visible = false;
                    billamt.Visible = false;
                    payamt.Visible = false;
                    RadioButtonList1.Visible = false;
                    RadioButtonList1.SelectedValue = null;
                    DropDownList2.Visible = false;
                    RadioButtonList2.Visible = false;
                    namecard.Visible = false;
                    cardnum.Visible = false;
                    expdate.Visible = false;
                    cvvnum.Visible = false;
                    Lblbnkname.Visible = false;
                    Lblcardtype.Visible = false;
                    Lblnamecard.Visible = false;
                    Lblcardnum.Visible = false;
                    Lblexpdate.Visible = false;
                    Lblcvvnum.Visible = false;
                    RequiredFieldValidator6.Visible = false;

                }
                else
                {
                    ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "scr5", "<script type='text/javascript'>alert('Payment process is failed'); </script>", false);

                }

            }
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////
        //
        // Function Name  : <CreatePayment>
        // Summary  : <To create the object of payment >
        // Input Parameters : <null>
        // Output Parameters :<object of payment>
        // Return Value  : <Return object of payment>
        //
        ///////////////////////////////////////////////////////////////////////////////////////////////

        public static IPayment CreatePayment()
        {
            IPayment paymentobj = new Payment();
            return paymentobj;
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////
        //
        // Function Name  : <CreatePayment>
        // Summary  : <To create the object of payment >
        // Input Parameters : <null>
        // Output Parameters :<object of payment>
        // Return Value  : <Return object of payment>
        //
        ///////////////////////////////////////////////////////////////////////////////////////////////

        public static IPayment CreatePayment(int payment_id, string customer_id, string customer_name, double connection_id, double bill_id, double bill_amount, double payable_amount, double advance_amount, double arrears, string mode_of_payment, DateTime date, string bank_name, string card_type, double card_number, DateTime expire_date, double cvv_number, string name_on_card)
        {
            IPayment paymentobj = new Payment(payment_id, customer_id, customer_name, connection_id, bill_id, bill_amount, payable_amount, advance_amount, arrears, mode_of_payment, date, bank_name, card_type, card_number, expire_date, cvv_number, name_on_card);
            return paymentobj;
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////
        //
        // Function Name  : <CreatePayment>
        // Summary  : <To create the object of payment >
        // Input Parameters : <null>
        // Output Parameters :<object of payment>
        // Return Value  : <Return object of payment>
        //
        ///////////////////////////////////////////////////////////////////////////////////////////////

        public static IPayment CreatePayment(string customer_id, double connection_id, double bill_id,double payable_amount, DateTime date, string mode_of_payment, string bank_name, double card_number, string name_on_card, string card_type, DateTime expire_date, double cvv_number)
        {
            IPayment paymentobj = new Payment(customer_id, connection_id, bill_id,payable_amount, date, mode_of_payment,bank_name,card_number, name_on_card, card_type, expire_date, cvv_number);
             return paymentobj;
        }
        ///////////////////////////////////////////////////////////////////////////////////////////////
        //
        // Function Name  : <CreatePayment>
        // Summary  : <To create the object of payment >
        // Input Parameters : <null>
        // Output Parameters :<object of payment>
        // Return Value  : <Return object of payment>
        //
        ///////////////////////////////////////////////////////////////////////////////////////////////

        public static IPayment CreatePayment(int payment_id, string customer_id, string customer_name, double connection_id, int bill_id, double bill_amount, double payable_amount, double advance_amount, double arrears, DateTime date2)
        {
            IPayment paymentobj = new Payment(payment_id, customer_id, customer_name, connection_id, bill_id, bill_amount, payable_amount, advance_amount, arrears, date2);
            return paymentobj;
        }
       public void CheckMakePayment1()
       {

           DateTime dt =System.DateTime.Now;
           IPayment objPayment = new Payment();
           objPayment.Customer_Id = "123456";
           objPayment.Connection_Id = 9897022110;
           objPayment.Bill_Id = 1;
           objPayment.Payable_Amount = 234;
           objPayment.Date = dt;
           objPayment.Mode_Of_Payment = "Credit Card";
           objPayment.Bank_Name = "SBI";
           objPayment.Card_Number = 0;
           objPayment.Name_On_Card = "";
           objPayment.Card_Type = "";
           objPayment.Expire_Date =DateTime.Parse("01/01/2001");
           objPayment.Cvv_Number = 0;
            bool b = true;
            //IPaymentManager payment = PaymentManagerFactory.CreatePaymentManager();
             IPaymentDB objp1 = PaymentDBFactory.CreatePaymentDB();
           bool objp = objp1.MakePayment(objPayment);

           Assert.AreEqual(b, objp);
       }
         public void CheckPayment2()
         {
             IPayment objPayment = new Payment();
             double connNo = 9897033113;
             string id = "C123456";
             bool b = true;
             objPayment.Connection_Id = connNo;
             objPayment.Customer_Id = id;
             IPaymentDB objPay = PaymentDBFactory.CreatePaymentDB();
             bool objp = objPay.CheckPayment(id, connNo);

             Assert.AreEqual(b, objp);
         }
        public void CheckBillDetails2()
         {
             IPayment objPayment = new Payment();
             double connNo = 989703311012;
             string id = "C1234567";
             long bill_id = 1;

             objPayment.Connection_Id = connNo;
             objPayment.Customer_Id = id;
             IPaymentDB objPay = PaymentDBFactory.CreatePaymentDB();
             IBill objp = objPay.GetBillDetails(id, connNo);

             Assert.AreEqual(bill_id, objp.BillId);
         }
 public void CheckCustId2()
      {
          IPayment objPayment = new Payment();
          string id = "g1234567";
          bool b = true;
          objPayment.Customer_Id = id;
          IPaymentDB objPay = PaymentDBFactory.CreatePaymentDB();
          bool objp = objPay.IsValidCustomerId(id);
           Assert.AreEqual(b, objp);
      }