public static List <EstabEstabTransaction> getAllTransactions()
    {
        List <EstabEstabTransaction> transactions = new List <EstabEstabTransaction>();

        try
        {
            SqlCommand command = new SqlCommand("Select * from BplTransactionEstabToEstab");
            command.Connection = connection;
            connection.Open();
            SqlDataReader reader = command.ExecuteReader();
            while (reader.Read())
            {
                EstabEstabTransaction t = new EstabEstabTransaction();
                t.ID     = reader["bplEstabTrasactionID"].ToString();
                t.Match  = EstabEstabMatchDB.getMatchByID(reader["bpMatchEstabID"].ToString());
                t.Units  = Convert.ToInt32(reader["unitsPossible"]);
                t.Status = reader["status"].ToString();
                transactions.Add(t);
            }
            reader.Close();
        }
        finally
        {
            connection.Close();
        }
        return(transactions);
    }
    protected void gvEstabMatches_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        EstablishmentBPRequest       selectedRequest      = pendingRequests[gvRequests.PageSize * gvRequests.PageIndex + gvRequests.SelectedIndex];
        List <EstabEstabTransaction> allEstabTransactions = EstabEstabTransactionDB.getAllTransactions();

        foreach (EstabEstabTransaction m in allEstabTransactions)
        {
            if (m.Match.Request.ID == selectedRequest.ID && m.Status == "accepted")
            {
                estabTransactions.Add(m);
            }
        }

        EstabEstabTransaction selectedTransaction = estabTransactions[e.RowIndex];

        selectedTransaction.Status = "cancelled";
        EstabEstabTransactionDB.updateTransaction(selectedTransaction);


        selectedTransaction.Match.Status = "declined";
        EstabEstabMatchDB.updateMatch(selectedTransaction.Match);

        selectedRequest.MatchedUnits = selectedRequest.MatchedUnits - selectedTransaction.Units;
        EstablishmentBPRequestDB.updateEstablishmentRequest(selectedRequest);
        Server.Transfer("PendingRequests.aspx");
    }
    protected void btnEstabSubmit_Click(object sender, EventArgs e)
    {
        Establishment          currentEstab     = (Establishment)Session["establishment"];
        List <EstabEstabMatch> allEstabRequests = EstabEstabMatchDB.getAllMatches();
        List <EstabEstabMatch> estabRequests    = new List <EstabEstabMatch>();

        foreach (EstabEstabMatch m in allEstabRequests)
        {
            if (m.Match.ID == currentEstab.ID && m.Status == "pending" && m.Request.MatchedUnits < m.Request.Units)
            {
                estabRequests.Add(m);
            }
        }
        EstabEstabMatch        currentMatch   = estabRequests[gvEstabRequests.PageSize * gvEstabRequests.PageIndex + gvEstabRequests.SelectedIndex];
        EstablishmentBPRequest r              = currentMatch.Request;
        EstabEstabTransaction  newTransaction = new EstabEstabTransaction();

        if (Convert.ToInt32(tbxEstabUnits.Text) > 0 || Convert.ToInt32(tbxUserUnits.Text) > 0)
        {
            int donateUnits = Convert.ToInt32(tbxEstabUnits.Text);
            if (donateUnits > (currentMatch.Request.Units - currentMatch.Request.MatchedUnits))
            {
                lblEstabOutput.Text = "Please enter a valid amount";
            }
            else
            {
                currentMatch.Status = "accepted";
                EstabEstabMatchDB.updateMatch(currentMatch);
                newTransaction.Match  = currentMatch;
                newTransaction.Units  = donateUnits;
                newTransaction.Status = "accepted";
                EstabEstabTransactionDB.insertTransaction(newTransaction);
                r.MatchedUnits = r.MatchedUnits + donateUnits;
                EstablishmentBPRequestDB.updateEstablishmentRequest(r);
                lblOutput.Text         = "Donation successfully accepted!";
                pnlAcceptEstab.Visible = false;
                tbxEstabUnits.Text     = "";
                Server.Transfer("IncomingRequests.aspx");
            }
        }
        else
        {
            lblOutput.Text = "The Unit cannot be less than 0 or less";
            return;
        }
    }
    protected void gvEstabMatches_SelectedIndexChanged(object sender, EventArgs e)
    {
        EstablishmentBPRequest selectedRequest = pendingRequests[gvRequests.PageSize * gvRequests.PageIndex + gvRequests.SelectedIndex];

        List <EstabEstabTransaction> allEstabTransactions = EstabEstabTransactionDB.getAllTransactions();

        foreach (EstabEstabTransaction m in allEstabTransactions)
        {
            if (m.Match.Request.ID == selectedRequest.ID && m.Status == "accepted")
            {
                estabTransactions.Add(m);
            }
        }
        EstabEstabTransaction selectedTransaction = estabTransactions[gvEstabMatches.SelectedIndex];

        selectedTransaction.Status = "complete";
        EstabEstabTransactionDB.updateTransaction(selectedTransaction);

        EstabEstabMatch currentMatch = selectedTransaction.Match;

        currentMatch.Status = "complete";
        EstabEstabMatchDB.updateMatch(currentMatch);



        if (selectedRequest.MatchedUnits == selectedRequest.Units)
        {
            selectedRequest.Status = "complete";
            EstablishmentBPRequestDB.updateEstablishmentRequest(selectedRequest);
            foreach (EstabEstabTransaction et in allEstabTransactions)
            {
                if (et.Match.Request.ID == selectedRequest.ID)
                {
                    et.Status = "complete";
                    EstabEstabTransactionDB.updateTransaction(et);
                    et.Match.Status = "complete";
                    EstabEstabMatchDB.updateMatch(et.Match);
                }
            }
        }
        Server.Transfer("PendingRequests.aspx");
    }
    public static int updateTransaction(EstabEstabTransaction t)
    {
        int num = -1;

        try
        {
            SqlCommand command = new SqlCommand("update bplTransactionEstabToEstab set status=@status where bplEstabTrasactionID=@id");
            command.Parameters.AddWithValue("@status", t.Status);
            command.Parameters.AddWithValue("@id", t.ID);
            command.Connection = connection;
            connection.Open();
            if (command.ExecuteNonQuery() > 0)
            {
                num = 1;
            }
        }
        finally
        {
            connection.Close();
        }
        return(num);
    }
    public static int insertTransaction(EstabEstabTransaction t)
    {
        int num = -1;

        try
        {
            SqlCommand command = new SqlCommand("insert into bplTransactionEstabToEstab values(@bpMatchEstabID, @unitsPossible, @status)");
            command.Parameters.AddWithValue("@bpMatchEstabID", t.Match.ID);
            command.Parameters.AddWithValue("@unitsPossible", t.Units);
            command.Parameters.AddWithValue("@status", t.Status);
            command.Connection = connection;
            connection.Open();
            if (command.ExecuteNonQuery() > 0)
            {
                num = 1;
            }
        }
        finally
        {
            connection.Close();
        }
        return(num);
    }
    protected void lbtnContact_Click1(object sender, EventArgs e)
    {
        LinkButton                   lbtn                 = (LinkButton)sender;
        GridViewRow                  gvr                  = (GridViewRow)lbtn.NamingContainer;
        int                          i                    = Convert.ToInt32(gvr.RowIndex);
        EstablishmentBPRequest       selectedRequest      = pendingRequests[gvRequests.PageSize * gvRequests.PageIndex + gvRequests.SelectedIndex];
        List <EstabEstabTransaction> allEstabTransactions = EstabEstabTransactionDB.getAllTransactions();

        foreach (EstabEstabTransaction m in allEstabTransactions)
        {
            if (m.Match.Request.ID == selectedRequest.ID && m.Status == "accepted")
            {
                estabTransactions.Add(m);
            }
        }
        EstabEstabTransaction selectedTransaction = estabTransactions[i];
        Establishment         contactEstab        = selectedTransaction.Match.Match;

        Session["ldID"]  = null;
        Session["rwEst"] = null;
        Session["echat"] = contactEstab.ID;
        Server.Transfer("IndividualChatE.aspx");
    }