public static AjaxCallResult ExpensifyRecordsetCommit(string masterGuid)
        {
            AuthenticationData authData = GetAuthenticationDataAndCulture();

            // Commit all expenses in the recordset

            try
            {
                List <ExpensifyRecord> recordList = (List <ExpensifyRecord>)GuidCache.Get("ExpensifyData-" + masterGuid);
                string expensifyRaw = (string)GuidCache.Get("ExpensifyRaw-" + masterGuid);

                ExpenseClaimGroup expenseClaimGroup = ExpenseClaimGroup.Create(authData.CurrentOrganization,
                                                                               authData.CurrentUser, ExpenseClaimGroupType.Expensify, expensifyRaw);

                foreach (ExpensifyRecord record in recordList)
                {
                    FinancialAccount budget = FinancialAccount.FromIdentity(record.BudgetId);

                    ExpenseClaim claim = ExpenseClaim.Create(authData.CurrentUser, authData.CurrentOrganization, budget,
                                                             record.Timestamp, record.CategoryCustom + " / " + record.Description, record.AmountCents,
                                                             record.VatCents,
                                                             expenseClaimGroup);

                    record.Documents.SetForeignObjectForAll(claim);

                    // TODO: Log
                }

                if (recordList.Count > 1)
                {
                    return(new AjaxCallResult
                    {
                        Success = true,
                        DisplayMessage =
                            String.Format(Resources.Pages.Financial.FileExpenseClaim_Expensify_SuccessSeveral,
                                          recordList.Count)
                    });
                }

                return(new AjaxCallResult
                {
                    Success = true,
                    DisplayMessage = Resources.Pages.Financial.FileExpenseClaim_Expensify_SuccessOne
                });
            }
            catch (Exception exc)
            {
                return(new AjaxCallResult
                {
                    Success = false,
                    DisplayMessage = exc.ToString()
                });
            }
        }
示例#2
0
        public Task <IList <ExpenseClaimGroup> > GetMostRecentExpenseClaimsByStatus()
        {
            return(Task.Factory.StartNew <IList <ExpenseClaimGroup> >(() =>
            {
                var list = new List <ExpenseClaimGroup>();

                var group1 = new ExpenseClaimGroup("Open");
                group1.Items.Add(new ExpenseClaimBase("A", "John Smith", "00002", 10, DateTime.Today, "Open"));
                group1.Items.Add(new ExpenseClaimBase("B", "John Smith", "00003", 20, DateTime.Today.AddDays(-1), "Open"));
                list.Add(group1);

                var group2 = new ExpenseClaimGroup("Approved");
                group2.Items.Add(new ExpenseClaimBase("C", "John Smith", "00001", 45322.67M, DateTime.Today.AddMonths(-1), "Approved"));
                list.Add(group2);

                return list;
            }));
        }
        private void AddExpenseClaimToGroup(string groupTitle, ExpenseClaim claim)
        {
            // Check if group exists, if so add item to it
            foreach (var group in _groups)
            {
                if (group.GroupTitle == groupTitle)
                {
                    group.Items.Insert(0, claim);
                    return;
                }
            }

            // Group does not exist, create it.
            var newGroup = new ExpenseClaimGroup(groupTitle);

            newGroup.Items.Add(claim);
            _groups.Add(newGroup);
        }
        public async Task <IList <ExpenseClaimGroup> > GetMostRecentExpenseClaimsByStatus()
        {
            //TODO: Find a way to avoid having to fetch all claims, and then filtering out for the top 12 by group
            var list = await GetExpenseClaimsForStatus(String.Empty);

            var groups = new List <ExpenseClaimGroup>();

            foreach (var groupTitle in list.OrderBy(s => s.Status).Select(s => s.Status).Distinct())
            {
                var group = new ExpenseClaimGroup(groupTitle);
                foreach (var item in list.Where(i => i.Status == groupTitle).OrderByDescending(i => i.Date).ThenByDescending(i => i.RefNbr).Take(12))
                {
                    group.Items.Add(item);
                }
                groups.Add(group);
            }

            return(groups);
        }