コード例 #1
0
        public static List <CustomerBalanceHistory> GenerateCustomerHistories <T>(T t, KoloAndroidEntities db, out string error)
        {
            List <CustomerBalanceHistory> customerBalanceHistories = new List <CustomerBalanceHistory>();

            error = "";
            if (t.GetType() == typeof(TransfertP2p))
            {
                var temp = t as TransfertP2p;

                if (temp.Sender == null)
                {
                    temp.Sender = db.Customers.FirstOrDefault(c => c.IdCustomer == temp.IdSendingCustomer);
                }
                if (temp.Receiver == null)
                {
                    temp.Receiver = db.Customers.FirstOrDefault(c => c.IdCustomer == temp.IdReceiverCustomer);
                }
                CustomerBalanceHistory senderBalanceHistory   = CreateCustomerHistory(temp.Sender, KoloConstants.Operation.Category.SENDA2A, KoloConstants.Operation.BalanceUpdateDirection.REMOVE, temp.Amount, out error);
                CustomerBalanceHistory recieverBalanceHistory = CreateCustomerHistory(temp.Sender, KoloConstants.Operation.Category.RECVA2A, KoloConstants.Operation.BalanceUpdateDirection.ADD, temp.Amount, out error);
                customerBalanceHistories.Add(recieverBalanceHistory);
                customerBalanceHistories.Add(senderBalanceHistory);
            }
            else if (t.GetType() == typeof(EneoBillPayment))
            {
                var temp = t as EneoBillPayment;
                if (temp.Customer == null)
                {
                    temp.Customer = db.Customers.FirstOrDefault(c => c.IdCustomer == temp.IdCustomer);
                }

                CustomerBalanceHistory eneoBalanceHistory = CreateCustomerHistory(temp.Customer, KoloConstants.Operation.Category.PAYENEOBILL, KoloConstants.Operation.BalanceUpdateDirection.REMOVE, temp.BillAmount, out error);
                customerBalanceHistories.Add(eneoBalanceHistory);
            }
            else if (t.GetType() == typeof(TopUp))
            {
                var temp = t as TopUp;
                if (temp.Customer == null)
                {
                    temp.Customer = db.Customers.FirstOrDefault(c => c.IdCustomer == temp.IdCustomer);
                }

                CustomerBalanceHistory topUpBalanceHistory = CreateCustomerHistory(temp.Customer, KoloConstants.Operation.Category.ORANGE, KoloConstants.Operation.BalanceUpdateDirection.REMOVE, Int32.Parse(temp.Amount), out error);
                customerBalanceHistories.Add(topUpBalanceHistory);
            }
            else if (t.GetType() == typeof(TransferGravity))
            {
                var temp = t as TransferGravity;
                if (temp.Customer == null)
                {
                    temp.Customer = db.Customers.FirstOrDefault(c => c.IdCustomer == temp.KoloSenderId);
                }

                CustomerBalanceHistory madBalanceHistory = CreateCustomerHistory(temp.Customer, KoloConstants.Operation.Category.SENDMAD, KoloConstants.Operation.BalanceUpdateDirection.REMOVE, temp.Amount, out error);
                customerBalanceHistories.Add(madBalanceHistory);
            }


            return(customerBalanceHistories);
        }
コード例 #2
0
        private static CustomerBalanceHistory CreateCustomerHistory(Customer customer, KoloConstants.Operation.Category category, KoloConstants.Operation.BalanceUpdateDirection balanceDirection, int amount, out string error)
        {
            CustomerBalanceHistory cBH = new CustomerBalanceHistory();

            error                 = "";
            cBH.Amount            = amount;
            cBH.IdCustomerAccount = customer.IdCustomer;
            cBH.OperationTypeCode = category.ToString();
            cBH.OldBalance        = customer.Balance;
            if (balanceDirection == KoloConstants.Operation.BalanceUpdateDirection.REMOVE)
            {
                cBH.NewBalance    = customer.Balance - amount;
                customer.Balance -= amount;
            }
            if (balanceDirection == KoloConstants.Operation.BalanceUpdateDirection.ADD)
            {
                cBH.NewBalance    = customer.Balance + amount;
                customer.Balance += amount;
            }
            cBH.HistoryDate = DateTime.Now;
            return(cBH);
        }