public bool UpdatePendingTransactionAndItem(BusinessObject.ExpenseTransaction transaction, BusinessObject.TransactionItem updatedTransactionItem)
        {
            try
            {
                //Re-Map Object to Entity Object

                using (var db = new ExpenseManagerDBEntities())
                {
                    var myEntityObj = TransactionItemMapper.Map <BusinessObject.TransactionItem, TransactionItem>(updatedTransactionItem);
                    if (myEntityObj == null)
                    {
                        return(false);
                    }

                    db.TransactionItems.Attach(myEntityObj);
                    db.ObjectStateManager.ChangeObjectState(myEntityObj, EntityState.Modified);
                    db.SaveChanges();

                    var totalPrice = db.TransactionItems.Where(x => x.ExpenseTransactionId == transaction.ExpenseTransactionId).ToList().Sum(m => m.RequestedQuantity * m.RequestedUnitPrice);
                    transaction.TotalTransactionAmount = totalPrice;
                    var transactionEntityToUpdate = ExpenseTransactionMapper.Map <BusinessObject.ExpenseTransaction, ExpenseTransaction>(transaction);
                    db.ExpenseTransactions.Attach(transactionEntityToUpdate);
                    db.ObjectStateManager.ChangeObjectState(transactionEntityToUpdate, EntityState.Modified);
                    db.SaveChanges();
                }
                return(true);
            }
            catch (Exception ex)
            {
                ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message);
                return(false);
            }
        }
        public bool UpdateTransactionAndItems(BusinessObject.ExpenseTransaction transaction, List <BusinessObject.TransactionItem> updatedTransactionItemList)
        {
            try
            {
                //Re-Map Object to Entity Object

                double approvedTotalPrice = 0;
                using (var db = new ExpenseManagerDBEntities())
                {
                    foreach (var item in updatedTransactionItemList)
                    {
                        var myEntityObj = TransactionItemMapper.Map <BusinessObject.TransactionItem, TransactionItem>(item);
                        if (myEntityObj == null)
                        {
                            continue;
                        }

                        myEntityObj.Status = 1;

                        if (myEntityObj.ApprovedQuantity < 1)
                        {
                            myEntityObj.ApprovedQuantity = myEntityObj.RequestedQuantity;
                        }

                        if (myEntityObj.ApprovedUnitPrice < 1)
                        {
                            myEntityObj.ApprovedUnitPrice = myEntityObj.RequestedUnitPrice;
                        }

                        myEntityObj.ApprovedTotalPrice = myEntityObj.ApprovedQuantity * myEntityObj.ApprovedUnitPrice;
                        approvedTotalPrice            += myEntityObj.ApprovedTotalPrice;
                        db.TransactionItems.Attach(myEntityObj);
                        db.ObjectStateManager.ChangeObjectState(myEntityObj, EntityState.Modified);
                        db.SaveChanges();
                    }

                    var transactionEntityToUpdate = ExpenseTransactionMapper.Map <BusinessObject.ExpenseTransaction, ExpenseTransaction>(transaction);
                    transactionEntityToUpdate.TotalApprovedAmount = approvedTotalPrice;
                    db.ExpenseTransactions.Attach(transactionEntityToUpdate);
                    db.ObjectStateManager.ChangeObjectState(transactionEntityToUpdate, EntityState.Modified);
                    db.SaveChanges();
                }
                return(true);
            }
            catch (Exception ex)
            {
                ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message);
                return(false);
            }
        }
        public int AddTransactionItems(List <BusinessObject.TransactionItem> transactionItems, BusinessObject.ExpenseTransaction expenseTransaction)
        {
            try
            {
                //Re-Map Object to Entity Object
                double totalPrice = 0;
                if (!transactionItems.Any())
                {
                    return(-1);
                }
                using (var db = new ExpenseManagerDBEntities())
                {
                    if (transactionItems.Any(transactionItem => db.ExpenseTransactions.Count(m =>
                                                                                             m.TransactionDate == expenseTransaction.TransactionDate && m.Status == 0 && m.BeneficiaryId == expenseTransaction.BeneficiaryId && m.TransactionItems.Count(x => x.ExpensenseItemId == transactionItem.ExpensenseItemId) > 0) > 0))
                    {
                        return(-3);
                    }
                    var transactionEntityObj = ExpenseTransactionMapper.Map <BusinessObject.ExpenseTransaction, ExpenseTransaction>(expenseTransaction);
                    if (transactionEntityObj == null)
                    {
                        return(-2);
                    }
                    db.AddToExpenseTransactions(transactionEntityObj);
                    db.SaveChanges();
                    expenseTransaction.ExpenseTransactionId = transactionEntityObj.ExpenseTransactionId;
                    if (expenseTransaction.ExpenseTransactionId < 1)
                    {
                        return(-4);
                    }
                    foreach (var transactionItem in transactionItems)
                    {
                        transactionItem.ApprovedQuantity   = 0;
                        transactionItem.ApprovedTotalPrice = 0;
                        transactionItem.ApprovedUnitPrice  = 0;
                        totalPrice += (transactionItem.RequestedQuantity * transactionItem.RequestedUnitPrice);
                        transactionItem.ExpenseTransactionId = expenseTransaction.ExpenseTransactionId;
                        var myEntityObj = TransactionItemMapper.Map <BusinessObject.TransactionItem, TransactionItem>(transactionItem);
                        if (myEntityObj == null)
                        {
                            return(-5);
                        }
                        db.AddToTransactionItems(myEntityObj);
                        db.SaveChanges();
                        transactionItem.TransactionItemId = myEntityObj.TransactionItemId;
                    }

                    var transactionEntityToUpdate = db.ExpenseTransactions.SingleOrDefault(m => m.ExpenseTransactionId == expenseTransaction.ExpenseTransactionId);

                    if (transactionEntityToUpdate == null)
                    {
                        return(-6);
                    }
                    transactionEntityToUpdate.TotalTransactionAmount = totalPrice;
                    db.ObjectStateManager.ChangeObjectState(transactionEntityToUpdate, EntityState.Modified);
                    db.SaveChanges();
                }

                return(1);
            }
            catch (Exception ex)
            {
                ErrorManager.LogApplicationError(ex.StackTrace, ex.Source, ex.Message);
                return(0);
            }
        }