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() }); } }
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); }