Ejemplo n.º 1
0
    /* Return sorted transaction list by date */
    public List <TransactionSummaryData> GetTransactionsSortedByDate()
    {
        List <Transaction>            transactionList            = transactionListContainer.transactionList;
        List <TransactionSummaryData> transactionSummaryDataList = new List <TransactionSummaryData>();

        Dictionary <string, TransactionSummaryData>           transactionSummaryDataDict           = new Dictionary <string, TransactionSummaryData>();
        Dictionary <string, TransactionSummaryFirstSubData>   transactionSummaryFirstSubDataDict   = new Dictionary <string, TransactionSummaryFirstSubData>();
        Dictionary <string, TransactionSummarySecondSubData>  transactionSummarySecondSubDataDict  = new Dictionary <string, TransactionSummarySecondSubData>();
        Dictionary <string, TransactionSummarySubDetailsData> transactionSummarySubDetailsDataDict = new Dictionary <string, TransactionSummarySubDetailsData>();

        TransactionSummaryData           transactionSummaryData;
        TransactionSummaryFirstSubData   transactionSummaryFirstSubData   = null;
        TransactionSummarySecondSubData  transactionSummarySecondSubData  = null;
        TransactionSummarySubDetailsData transactionSummarySubDetailsData = null;
        TransactionSummaryDetailsData    transactionSummaryDetailsData    = null;

        foreach (Transaction transaction in transactionList)
        {
            string date  = transaction.datetime.Substring(0, 11);
            string year  = date.Substring(7, 4);
            string month = date.Substring(3, 3);
            string day   = date.Substring(0, 2);
            string time  = transaction.datetime.Substring(12, 8);
            transactionSummaryDetailsData = null;

            transactionSummaryData = new TransactionSummaryData(year);

            foreach (ItemRowData itemRowData in transaction.itemListData.itemRowDataListContainer.itemRowDataList)
            {
                string owner = itemRowData.productOwner;

                if (transactionSummarySubDetailsDataDict.ContainsKey(year + month + day + owner))
                {
                    transactionSummarySubDetailsData = transactionSummarySubDetailsDataDict[year + month + day + owner];

                    if (transactionSummaryDetailsData == null)
                    {
                        transactionSummaryDetailsData = new TransactionSummaryDetailsData(transaction.GetTransactionID() + "");
                        Transaction tempTransaction = new Transaction(transaction.GetTransactionID());
                        tempTransaction.SetDateTime(transaction.datetime);
                        tempTransaction.SetPaymentMethod(transaction.paymentMethod);
                        tempTransaction.itemListData.itemRowDataListContainer.itemRowDataList.Add(itemRowData);
                        transactionSummaryDetailsData.getTransactionList().Add(tempTransaction);

                        transactionSummarySubDetailsData.getTransactionSummaryDetailsData().Add(transactionSummaryDetailsData);
                    }
                    else
                    {
                        transactionSummaryDetailsData.getTransactionList().First().itemListData.itemRowDataListContainer.itemRowDataList.Add(itemRowData);
                    }

                    transactionSummaryDetailsData.SetTotalPrice(transactionSummaryDetailsData.GetTotalPrice() + itemRowData.itemPrice * itemRowData.quantity);
                    transactionSummaryDetailsData.SetTransactionTime(time);

                    transactionSummarySecondSubData = transactionSummarySecondSubDataDict[year + month + day];
                    transactionSummaryFirstSubData  = transactionSummaryFirstSubDataDict[year + month];
                    transactionSummaryData          = transactionSummaryDataDict[year];

                    transactionSummarySubDetailsData.SetTotalPrice(transactionSummarySubDetailsData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));
                    transactionSummarySecondSubData.SetTotalPrice(transactionSummarySecondSubData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));
                    transactionSummaryFirstSubData.SetTotalPrice(transactionSummaryFirstSubData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));
                    transactionSummaryData.SetTotalPrice(transactionSummaryData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));
                }
                else if (transactionSummarySecondSubDataDict.ContainsKey(year + month + day))
                {
                    Transaction tempTransaction = new Transaction(transaction.GetTransactionID());
                    tempTransaction.SetDateTime(transaction.datetime);
                    tempTransaction.SetPaymentMethod(transaction.paymentMethod);
                    tempTransaction.itemListData.itemRowDataListContainer.itemRowDataList.Add(itemRowData);

                    transactionSummaryDetailsData = new TransactionSummaryDetailsData(transaction.GetTransactionID() + "");
                    transactionSummaryDetailsData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);
                    transactionSummaryDetailsData.SetTransactionTime(time);
                    transactionSummaryDetailsData.getTransactionList().Add(tempTransaction);

                    transactionSummarySubDetailsData = new TransactionSummarySubDetailsData(owner);
                    transactionSummarySubDetailsData.getTransactionSummaryDetailsData().Add(transactionSummaryDetailsData);
                    transactionSummarySubDetailsData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummarySecondSubData = transactionSummarySecondSubDataDict[year + month + day];
                    transactionSummaryFirstSubData  = transactionSummaryFirstSubDataDict[year + month];
                    transactionSummaryData          = transactionSummaryDataDict[year];

                    transactionSummarySecondSubData.GetTransactionSummarySubDetailsData().Add(transactionSummarySubDetailsData);

                    transactionSummarySecondSubData.SetTotalPrice(transactionSummarySecondSubData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));
                    transactionSummaryFirstSubData.SetTotalPrice(transactionSummaryFirstSubData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));
                    transactionSummaryData.SetTotalPrice(transactionSummaryData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));

                    transactionSummarySubDetailsDataDict.Add(year + month + day + owner, transactionSummarySubDetailsData);
                }
                else if (transactionSummaryFirstSubDataDict.ContainsKey(year + month))
                {
                    Transaction tempTransaction = new Transaction(transaction.GetTransactionID());
                    tempTransaction.SetDateTime(transaction.datetime);
                    tempTransaction.SetPaymentMethod(transaction.paymentMethod);
                    tempTransaction.itemListData.itemRowDataListContainer.itemRowDataList.Add(itemRowData);

                    transactionSummaryDetailsData = new TransactionSummaryDetailsData(transaction.GetTransactionID() + "");
                    transactionSummaryDetailsData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);
                    transactionSummaryDetailsData.SetTransactionTime(time);
                    transactionSummaryDetailsData.getTransactionList().Add(tempTransaction);

                    transactionSummarySubDetailsData = new TransactionSummarySubDetailsData(owner);
                    transactionSummarySubDetailsData.getTransactionSummaryDetailsData().Add(transactionSummaryDetailsData);
                    transactionSummarySubDetailsData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummarySecondSubData = new TransactionSummarySecondSubData(day);
                    transactionSummarySecondSubData.GetTransactionSummarySubDetailsData().Add(transactionSummarySubDetailsData);
                    transactionSummarySecondSubData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummaryFirstSubData = transactionSummaryFirstSubDataDict[year + month];
                    transactionSummaryData         = transactionSummaryDataDict[year];

                    transactionSummaryFirstSubData.GetTransactionSummarySecondSubDataList().Add(transactionSummarySecondSubData);
                    transactionSummaryFirstSubData.SetTotalPrice(transactionSummaryFirstSubData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));
                    transactionSummaryData.SetTotalPrice(transactionSummaryData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));

                    transactionSummarySubDetailsDataDict.Add(year + month + day + owner, transactionSummarySubDetailsData);
                    transactionSummarySecondSubDataDict.Add(year + month + day, transactionSummarySecondSubData);
                }
                else if (transactionSummaryDataDict.ContainsKey(year))
                {
                    Transaction tempTransaction = new Transaction(transaction.GetTransactionID());
                    tempTransaction.SetDateTime(transaction.datetime);
                    tempTransaction.SetPaymentMethod(transaction.paymentMethod);
                    tempTransaction.itemListData.itemRowDataListContainer.itemRowDataList.Add(itemRowData);

                    transactionSummaryDetailsData = new TransactionSummaryDetailsData(transaction.GetTransactionID() + "");
                    transactionSummaryDetailsData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);
                    transactionSummaryDetailsData.SetTransactionTime(time);
                    transactionSummaryDetailsData.getTransactionList().Add(tempTransaction);

                    transactionSummarySubDetailsData = new TransactionSummarySubDetailsData(owner);
                    transactionSummarySubDetailsData.getTransactionSummaryDetailsData().Add(transactionSummaryDetailsData);
                    transactionSummarySubDetailsData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummarySecondSubData = new TransactionSummarySecondSubData(day);
                    transactionSummarySecondSubData.GetTransactionSummarySubDetailsData().Add(transactionSummarySubDetailsData);
                    transactionSummarySecondSubData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummaryFirstSubData = new TransactionSummaryFirstSubData(month);
                    transactionSummaryFirstSubData.GetTransactionSummarySecondSubDataList().Add(transactionSummarySecondSubData);
                    transactionSummaryFirstSubData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummaryData = transactionSummaryDataDict[year];
                    transactionSummaryData.GetTransactionSummaryFirstSubDataList().Add(transactionSummaryFirstSubData);
                    transactionSummaryData.SetTotalPrice(transactionSummaryData.GetTotalPrice() + (itemRowData.itemPrice * itemRowData.quantity));

                    transactionSummarySubDetailsDataDict.Add(year + month + day + owner, transactionSummarySubDetailsData);
                    transactionSummarySecondSubDataDict.Add(year + month + day, transactionSummarySecondSubData);
                    transactionSummaryFirstSubDataDict.Add(year + month, transactionSummaryFirstSubData);
                }
                else
                {
                    Transaction tempTransaction = new Transaction(transaction.GetTransactionID());
                    tempTransaction.SetDateTime(transaction.datetime);
                    tempTransaction.SetPaymentMethod(transaction.paymentMethod);
                    tempTransaction.itemListData.itemRowDataListContainer.itemRowDataList.Add(itemRowData);

                    transactionSummaryDetailsData = new TransactionSummaryDetailsData(transaction.GetTransactionID() + "");
                    transactionSummaryDetailsData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);
                    transactionSummaryDetailsData.SetTransactionTime(time);
                    transactionSummaryDetailsData.getTransactionList().Add(tempTransaction);

                    transactionSummarySubDetailsData = new TransactionSummarySubDetailsData(owner);
                    transactionSummarySubDetailsData.getTransactionSummaryDetailsData().Add(transactionSummaryDetailsData);
                    transactionSummarySubDetailsData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummarySecondSubData = new TransactionSummarySecondSubData(day);
                    transactionSummarySecondSubData.GetTransactionSummarySubDetailsData().Add(transactionSummarySubDetailsData);
                    transactionSummarySecondSubData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummaryFirstSubData = new TransactionSummaryFirstSubData(month);
                    transactionSummaryFirstSubData.GetTransactionSummarySecondSubDataList().Add(transactionSummarySecondSubData);
                    transactionSummaryFirstSubData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummaryData = new TransactionSummaryData(year);
                    transactionSummaryData.GetTransactionSummaryFirstSubDataList().Add(transactionSummaryFirstSubData);
                    transactionSummaryData.SetTotalPrice(itemRowData.itemPrice * itemRowData.quantity);

                    transactionSummarySubDetailsDataDict.Add(year + month + day + owner, transactionSummarySubDetailsData);
                    transactionSummarySecondSubDataDict.Add(year + month + day, transactionSummarySecondSubData);
                    transactionSummaryFirstSubDataDict.Add(year + month, transactionSummaryFirstSubData);
                    transactionSummaryDataDict.Add(year, transactionSummaryData);
                }
            }
        }

        transactionSummaryDataList = transactionSummaryDataDict.Values.ToList().OrderByDescending(transactionSummaryData2 => DateTime.ParseExact(transactionSummaryData2.primaryKey, "yyyy", null)).ToList();

        return(transactionSummaryDataList);
    }