// corerect one
        public bool AllocateFunds2(AllocateWrapper fundsForAllocationBox)
        {


            EntitySummaryContract updatedEntityStatus = new EntitySummaryContract();
            var queryBudgetStatus = (from budgetStatusSingle in orgMaintEntitiesContext.BudgetStatus select budgetStatusSingle).FirstOrDefault();
            if (queryBudgetStatus == null)
            {
                BudgetStatu budgStatu = new BudgetStatu();
                budgStatu.BudgetAvailable = 0;
                budgStatu.BudgetAllocated = 0;
                budgStatu.DateUpdated = DateTime.Now;
                var queryentity = (from entityRequired in orgMaintEntitiesContext.EntityFinanceSummaries select entityRequired.BudgetRequired).Sum();
                budgStatu.BudgetRequired = (decimal)queryentity;
                orgMaintEntitiesContext.BudgetStatus.Add(budgStatu);

            }
            else
            {
                decimal totalFundAllocated = 0M;
                var queryentities = (from entityRequired in orgMaintEntitiesContext.EntityFinanceSummaries
                                     where entityRequired.BudgetRequired > 0
                                     orderby entityRequired.Priority, entityRequired.BudgetRequired descending
                                     select entityRequired);
                int entitiesAllocated = 0;
                queryentities.ToList().ForEach(rec =>
                {
                    if (queryBudgetStatus.BudgetAvailable > 0)
                    {
                        decimal fundAllocated = rec.BudgetRequired;
                        if (fundAllocated >= queryBudgetStatus.BudgetAvailable)
                        {
                            fundAllocated = queryBudgetStatus.BudgetAvailable;
                            //     queryBudgetStatus.BudgetAvailable = 0;
                        }
                        totalFundAllocated += fundAllocated;

                        rec.BudgetRequired -= fundAllocated;
                        rec.BudgetAllocated += fundAllocated;
                        queryBudgetStatus.BudgetAvailable -= fundAllocated;
                        queryBudgetStatus.BudgetAllocated += fundAllocated;
                        queryBudgetStatus.BudgetRequired -= fundAllocated;
                        entitiesAllocated++;
                        BudgetHistory newBudgetHistoryRecord = new BudgetHistory
                        {
                            Amount = totalFundAllocated,
                            DebitCredit = "Debit",
                            Date = (DateTime)DateTime.Now,
                            Principal = rec.EntityName,
                            Comments = string.Format("Priority {0},index {0}", rec.Priority, entitiesAllocated)
                        };
                        orgMaintEntitiesContext.BudgetHistories.Add(newBudgetHistoryRecord);
                    }
                });
                //if (totalFundAllocated > 0)
                //{
                //    BudgetHistory newBudgetHistoryRecord = new BudgetHistory
                //    {
                //        Amount = totalFundAllocated,
                //        DebitCredit = "Debit",
                //        Date = (DateTime)DateTime.Now,
                //        Comments = string.Format("Number Allocated={0}")
                //    };
                //    orgMaintEntitiesContext.BudgetHistories.Add(newBudgetHistoryRecord);
                //}
                orgMaintEntitiesContext.SaveChanges();
            }
            updateEntityStatus();
            return true;
        }
 public bool AllocateFunds3()
 {
     BudgetHistory newBudgetHistoryRecordTest = new BudgetHistory
     {
         Amount = 100,
         DebitCredit = "Debit",
         Date = (DateTime)DateTime.Now,
         Comments = string.Format("Number Allocated=1")
     };
     orgMaintEntitiesContext.BudgetHistories.Add(newBudgetHistoryRecordTest);
     orgMaintEntitiesContext.SaveChanges();
     return true;
 }
        public bool AddContributor(Contributor contributor)
        {
            List<ContributorContract> updatedContributorList = new List<ContributorContract>();
            Contributor newContributorRecord = new Contributor
            {
                ContributorID = contributor.ContributorID,
                OriginalCurrencyAmount = contributor.OriginalCurrencyAmount,
                ContributorName = contributor.ContributorName,
                Currency = contributor.Currency,
                DateReceived = DateTime.Now,// contributor.DateReceived,
                DateDeposited = DateTime.Now,//contributor.DateDeposited,
                Comments = contributor.Comments
            };
            // do we do the conversion here or on the UI? 
            // later on in the UI, because it is easier to update.. we can add a field for conversion 
            switch (contributor.Currency.ToUpper())
            {
                case "INR":
                    newContributorRecord.ConvertedAmount = contributor.OriginalCurrencyAmount;
                    break;
                case "USD":
                    newContributorRecord.ConvertedAmount = contributor.OriginalCurrencyAmount * 60;
                    break;
                case "EUR":
                    newContributorRecord.ConvertedAmount = contributor.OriginalCurrencyAmount * 75;
                    break;
                default:
                    newContributorRecord.ConvertedAmount = contributor.OriginalCurrencyAmount * 20;
                    break;
            }
            orgMaintEntitiesContext.Contributors.Add(newContributorRecord);
            orgMaintEntitiesContext.SaveChanges();

            BudgetHistory newBudgetHistoryRecord = new BudgetHistory
            {
                Amount = newContributorRecord.ConvertedAmount,
                DebitCredit = "Credit",
                Date = (DateTime)(newContributorRecord.DateDeposited == null ? DateTime.Now : newContributorRecord.DateDeposited),
                Comments = newContributorRecord.Comments,
                Principal = newContributorRecord.ContributorName
            };
            orgMaintEntitiesContext.BudgetHistories.Add(newBudgetHistoryRecord);
            orgMaintEntitiesContext.SaveChanges();

            var query = (from budgetStatusSingle in orgMaintEntitiesContext.BudgetStatus select budgetStatusSingle).FirstOrDefault();
            if (query == null)
            {
                BudgetStatu budgStatu = new BudgetStatu();
                budgStatu.BudgetAvailable = newContributorRecord.ConvertedAmount;
                budgStatu.BudgetAllocated = 0;
                budgStatu.BudgetRequired = 00;
                budgStatu.DateUpdated = DateTime.Now;
                orgMaintEntitiesContext.BudgetStatus.Add(budgStatu);

            }
            else
            {
                query.BudgetAvailable += newContributorRecord.ConvertedAmount;
                query.DateUpdated = (DateTime)(DateTime)(newContributorRecord.DateDeposited == null ? DateTime.Now : newContributorRecord.DateDeposited);
            }
            orgMaintEntitiesContext.SaveChanges();
            updateEntityStatus();
            return true;
        }