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 gvRequests_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        EstablishmentBPRequest selectedRequest = pendingRequests[gvRequests.PageSize * gvRequests.PageIndex + e.RowIndex];
        int noTransactions = 0;
        List <EstabEstabTransaction> allEstabTransactions = EstabEstabTransactionDB.getAllTransactions();
        List <EstabUserTransaction>  allUserTransactions  = EstabUserTransactionDB.getAllTransactions();

        foreach (EstabEstabTransaction m in allEstabTransactions)
        {
            if (m.Match.Request.ID == selectedRequest.ID && m.Status == "complete")
            {
                noTransactions = 1;
            }
        }
        foreach (EstabUserTransaction m in allUserTransactions)
        {
            if (m.Match.Request.ID == selectedRequest.ID && m.Status == "complete")
            {
                noTransactions = 2;
            }
        }
        if (noTransactions == 1 || noTransactions == 2)
        {
            lblOutput.Text = "Sorry this request cannot be cancelled!";
        }
        else
        {
            foreach (EstabEstabTransaction m in allEstabTransactions)
            {
                if (m.Match.Request.ID == selectedRequest.ID)
                {
                    m.Status = "cancelled";
                    EstabEstabTransactionDB.updateTransaction(m);
                    m.Match.Status = "declined";
                    EstabEstabMatchDB.updateMatch(m.Match);
                }
            }
            foreach (EstabUserTransaction m in allUserTransactions)
            {
                if (m.Match.Request.ID == selectedRequest.ID)
                {
                    m.Status = "cancelled";
                    EstabUserTransactionDB.updateTransaction(m);
                    m.Match.Status = "declined";
                    EstabUserMatchDB.updateMatch(m.Match);
                }
            }

            selectedRequest.Status = "cancelled";
            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 gvEstabRequests_RowDeleting(object sender, GridViewDeleteEventArgs 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 + e.RowIndex];

        currentMatch.Status = "declined";
        EstabEstabMatchDB.updateMatch(currentMatch);
        Server.Transfer("IncomingRequests.aspx");
    }
    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");
    }