Example #1
0
        public int SaveExpenseReport(ExpenseReport expenseReport)
        {
            ExpenseReport dbExpenseReport;

            if (expenseReport.ExpenseReportId == 0)
            {
                dbExpenseReport = new ExpenseReport()
                {
                    ExpenseReportId = ExpenseReports.Count + 1
                }
            }
            ;
            else
            {
                dbExpenseReport = ExpenseReports.Single(item => item.ExpenseReportId == expenseReport.ExpenseReportId);
            }
            dbExpenseReport.Amount           = expenseReport.Amount;
            dbExpenseReport.Approver         = expenseReport.Approver;
            dbExpenseReport.CostCenter       = expenseReport.CostCenter;
            dbExpenseReport.DateResolved     = expenseReport.DateResolved;
            dbExpenseReport.DateSaved        = expenseReport.DateSaved;
            dbExpenseReport.DateSubmitted    = expenseReport.DateSubmitted;
            dbExpenseReport.EmployeeId       = expenseReport.EmployeeId;
            dbExpenseReport.Notes            = expenseReport.Notes;
            dbExpenseReport.OwedToCreditCard = expenseReport.OwedToCreditCard;
            dbExpenseReport.OwedToEmployee   = expenseReport.OwedToEmployee;
            dbExpenseReport.Purpose          = expenseReport.Purpose;
            dbExpenseReport.Status           = expenseReport.Status;
            if (expenseReport.ExpenseReportId == 0)
            {
                ExpenseReports.Add(dbExpenseReport);
            }
            return(dbExpenseReport.ExpenseReportId);
        }
Example #2
0
        public void DeleteExpenseReport(int expenseReportId)
        {
            ExpenseReport dbExpenseReport;

            dbExpenseReport = ExpenseReports.Single(item => item.ExpenseReportId == expenseReportId);
            ExpenseReports.Remove(dbExpenseReport);
        }
Example #3
0
 void AddSavedReports(string managerAlias, Employee employee)
 {
     for (int month = 0; month < 6; ++month)
     {
         int pendingReportsCount = 3 - month / 2;
         for (int reportIndex = 0; reportIndex < pendingReportsCount; ++reportIndex)
         {
             string        purpose       = random.Next(2) == 1 ? "Visit to Tailspin Toys" : "Visit to Blue Yonder Airlines";
             ExpenseReport expenseReport = new ExpenseReport()
             {
                 ExpenseReportId  = ExpenseReports.Count + 1,
                 EmployeeId       = employee.EmployeeId,
                 Amount           = 450 + random.Next(640 - 450),
                 Approver         = managerAlias,
                 CostCenter       = 50992,
                 DateSaved        = DateTime.Today.AddDays(-month * 30 - random.Next(30)),
                 Notes            = (managerAlias == "user") ? "Kim Akers" : purpose,
                 OwedToCreditCard = 450M,
                 OwedToEmployee   = 0M,
                 Purpose          = purpose,
                 Status           = (int)ExpenseReportStatus.Saved,
             };
             ExpenseReports.Add(expenseReport);
             AddCharges(month, expenseReport, employee);
         }
     }
 }
        void UpdateFilteredExpenseReports()
        {
            FilteredExpenseReports = ExpenseReports.Where(x => x.DisplayDate >= SelectionStartDate && x.DisplayDate <= SelectionEndDate).ToArray();
            IEnumerable <ChargeViewModel> charges = GetAllCharges(FilteredExpenseReports);

            FilteredExpenseCharges = charges.GroupBy(c => c.CategoryName).Select(g => new Tuple <string, decimal>(g.Key, g.Select(k => k.BilledAmount).Sum())).ToArray();
        }
 protected void Load(IEnumerable <ExpenseReport> expenseReports)
 {
     this.ExpenseReports.Clear();
     foreach (ExpenseReport expenseReport in expenseReports)
     {
         this.ExpenseReports.Add(new ExpenseReportViewModel(this, expenseReport));
     }
     if (ExpenseReports.Any())
     {
         DateTime minDate = ExpenseReports.Min(x => x.DisplayDate);
         StartDate = new DateTime(minDate.Year, minDate.Month, 1);
         DateTime maxDate = ExpenseReports.Max(x => x.DisplayDate);
         EndDate = new DateTime(maxDate.Year, maxDate.Month, 1).AddMonths(1);
     }
     else
     {
         StartDate = DateTime.Now.AddYears(-1);
         EndDate   = DateTime.Now.AddMonths(1);
     }
     SelectionStartDate = StartDate;
     SelectionEndDate   = EndDate;
 }
Example #6
0
 public void ResetData()
 {
     Employees.Clear();
     ExpenseReports.Clear();
     Charges.Clear();
 }
Example #7
0
        public void Load(Stream stream)
        {
            using (BinaryReader bw = new BinaryReader(stream)) {
                int count = bw.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    Employee employee = new Employee();
                    employee.Alias      = bw.ReadString();
                    employee.EmployeeId = bw.ReadInt32();
                    employee.Manager    = bw.ReadString();
                    employee.Name       = bw.ReadString();
                    Employees.Add(employee);
                }

                count = bw.ReadInt32();
                for (int i = 0; i < count; i++)
                {
                    ExpenseReport er = new ExpenseReport();
                    er.Amount     = bw.ReadInt64();
                    er.Approver   = bw.ReadString();
                    er.CostCenter = bw.ReadInt32();
                    long tickCount = bw.ReadInt64();
                    if (tickCount != 0)
                    {
                        er.DateResolved = new DateTime(tickCount);
                    }
                    tickCount = bw.ReadInt64();
                    if (tickCount != 0)
                    {
                        er.DateSaved = new DateTime(tickCount);
                    }
                    tickCount = bw.ReadInt64();
                    if (tickCount != 0)
                    {
                        er.DateSubmitted = new DateTime(tickCount);
                    }
                    er.EmployeeId       = bw.ReadInt32();
                    er.ExpenseReportId  = bw.ReadInt32();
                    er.Notes            = bw.ReadString();
                    er.OwedToCreditCard = bw.ReadInt64();
                    er.OwedToEmployee   = bw.ReadInt64();
                    er.Purpose          = bw.ReadString();
                    er.Status           = (ExpenseReportStatus)bw.ReadInt32();
                    ExpenseReports.Add(er);
                }
                count = bw.ReadInt32();

                for (int i = 0; i < count; i++)
                {
                    Charge charge = new Charge();
                    charge.AccountNumber = bw.ReadInt32();
                    charge.BilledAmount  = bw.ReadInt64();
                    charge.Category      = (CategoryType)bw.ReadInt32();
                    charge.ChargeId      = bw.ReadInt32();
                    charge.Description   = bw.ReadString();
                    charge.EmployeeId    = bw.ReadInt32();
                    charge.ExpenseDate   = new DateTime(bw.ReadInt64());
                    int value = bw.ReadInt32();
                    if (value != 0)
                    {
                        charge.ExpenseReportId = value;
                    }
                    charge.ExpenseType       = (ChargeType)bw.ReadInt32();
                    charge.Location          = bw.ReadString();
                    charge.Merchant          = bw.ReadString();
                    charge.Notes             = bw.ReadString();
                    charge.ReceiptRequired   = bw.ReadBoolean();
                    charge.TransactionAmount = bw.ReadInt64();
                    Charges.Add(charge);
                }
            }
        }
Example #8
0
 public List <ExpenseReport> GetExpenseReportsForApproval(string employeeAlias)
 {
     return(ExpenseReports.Where(item => ((item.Approver == employeeAlias) && (item.Status == ExpenseReportStatus.Pending))).ToList());
 }
Example #9
0
        public List <ExpenseReport> GetExpenseReportsByStatus(int employeeId, ExpenseReportStatus status)
        {
            var filteredReports = ExpenseReports.Where(item => ((item.EmployeeId == employeeId) && (item.Status == status)));

            return(filteredReports.ToList());
        }
Example #10
0
 public List <ExpenseReport> GetExpenseReports(int employeeId)
 {
     return(ExpenseReports.Where(item => item.EmployeeId == employeeId).ToList());
 }
Example #11
0
 public ExpenseReport GetExpenseReport(int expenseReportId)
 {
     return(ExpenseReports.FirstOrDefault(item => item.ExpenseReportId == expenseReportId));
 }
Example #12
0
        void AddApprovedReports(string managerAlias, Employee employee)
        {
            DateTime today             = DateTime.Today;
            DateTime currentMonthStart = new DateTime(today.Year, today.Month, 1);

            for (DateTime monthStart = currentMonthStart.AddMonths(-2); monthStart > today.AddYears(-3); monthStart = monthStart.AddMonths(-1))
            {
                int           daysInMonth   = (int)(monthStart.AddMonths(1) - monthStart).TotalDays;
                int           b1            = 250 + random.Next(100);
                int           b2            = 100 + random.Next(20);
                int           b3            = 100 + random.Next(10);
                int           b4            = 310 + random.Next(90);
                ExpenseReport expenseReport = new ExpenseReport()
                {
                    ExpenseReportId  = ExpenseReports.Count + 1,
                    EmployeeId       = employee.EmployeeId,
                    Amount           = b1 + b2 + b3 + b4,
                    Approver         = managerAlias,
                    CostCenter       = 50992,
                    DateSubmitted    = monthStart.AddDays((today.Day - 5 + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    DateResolved     = monthStart.AddDays((today.Day + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    Notes            = "Visit to Tailspin Toys",
                    OwedToCreditCard = 850M,
                    OwedToEmployee   = 0M,
                    Purpose          = "Customer visit",
                    Status           = ExpenseReportStatus.Approved
                };
                ExpenseReports.Add(expenseReport);
                Charges.Add(new Charge()
                {
                    ChargeId          = Charges.Count + 1,
                    AccountNumber     = 723000,
                    BilledAmount      = b1,
                    Category          = (int)CategoryType.AirFare,
                    Description       = "Airfare to Chicago",
                    EmployeeId        = employee.EmployeeId,
                    ExpenseReportId   = expenseReport.ExpenseReportId,
                    ExpenseDate       = monthStart.AddDays((today.Day - 15 + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    ExpenseType       = ChargeType.Business,
                    Location          = "Chicago, IL",
                    Merchant          = "Blue Yonder Airlines",
                    Notes             = string.Empty,
                    ReceiptRequired   = true,
                    TransactionAmount = 350M,
                });
                Charges.Add(new Charge()
                {
                    ChargeId          = Charges.Count + 1,
                    AccountNumber     = 723000,
                    BilledAmount      = b2,
                    Category          = CategoryType.OtherTravelAndLodging,
                    Description       = "Cab from airport",
                    EmployeeId        = employee.EmployeeId,
                    ExpenseReportId   = expenseReport.ExpenseReportId,
                    ExpenseDate       = monthStart.AddDays((today.Day - 5 + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    ExpenseType       = ChargeType.Business,
                    Location          = "Chicago, IL",
                    Merchant          = "Contoso Taxi",
                    Notes             = string.Empty,
                    ReceiptRequired   = false,
                    TransactionAmount = 50M,
                });
                Charges.Add(new Charge()
                {
                    ChargeId          = Charges.Count + 1,
                    AccountNumber     = 723000,
                    BilledAmount      = b3,
                    Category          = CategoryType.TEMeals,
                    Description       = "Cab to airport",
                    EmployeeId        = employee.EmployeeId,
                    ExpenseReportId   = expenseReport.ExpenseReportId,
                    ExpenseDate       = monthStart.AddDays((today.Day - 3 + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    ExpenseType       = ChargeType.Business,
                    Location          = "Chicago, IL",
                    Merchant          = "Contoso Taxi",
                    Notes             = string.Empty,
                    ReceiptRequired   = false,
                    TransactionAmount = 50M,
                });
                Charges.Add(new Charge()
                {
                    ChargeId          = Charges.Count + 1,
                    AccountNumber     = 723000,
                    BilledAmount      = b4,
                    Category          = CategoryType.Hotel,
                    Description       = "2 nights hotel",
                    EmployeeId        = employee.EmployeeId,
                    ExpenseReportId   = expenseReport.ExpenseReportId,
                    ExpenseDate       = monthStart.AddDays((today.Day - 3 + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    ExpenseType       = ChargeType.Business,
                    Location          = "Chicago, IL",
                    Merchant          = "Northwind Inn",
                    Notes             = string.Empty,
                    ReceiptRequired   = true,
                    TransactionAmount = 400M,
                });
                int c1 = 330 + random.Next(120);
                int c2 = 120 + random.Next(10);
                expenseReport = new ExpenseReport()
                {
                    ExpenseReportId  = ExpenseReports.Count + 1,
                    Amount           = c1,
                    Approver         = managerAlias,
                    CostCenter       = 50992,
                    DateSubmitted    = monthStart.AddDays((today.Day - 5 + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    DateResolved     = monthStart.AddDays((today.Day + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    Notes            = "",
                    OwedToCreditCard = 0,
                    OwedToEmployee   = 50M,
                    Purpose          = "Last month's cell phone",
                    Status           = ExpenseReportStatus.Approved,
                };
                ExpenseReports.Add(expenseReport);
                Charges.Add(new Charge()
                {
                    ChargeId          = Charges.Count + 1,
                    AccountNumber     = 742000,
                    BilledAmount      = b3,
                    Category          = CategoryType.Entertainment,
                    Description       = "Cell phone bill",
                    EmployeeId        = employee.EmployeeId,
                    ExpenseReportId   = expenseReport.ExpenseReportId,
                    ExpenseDate       = monthStart.AddDays((today.Day - 10 + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    ExpenseType       = ChargeType.Personal,
                    Location          = "Seattle, WA",
                    Merchant          = "The Phone Company",
                    Notes             = string.Empty,
                    ReceiptRequired   = true,
                    TransactionAmount = 50M,
                });
                Charges.Add(new Charge()
                {
                    ChargeId          = Charges.Count + 1,
                    AccountNumber     = 742000,
                    BilledAmount      = c2,
                    Category          = CategoryType.Mileage,
                    Description       = "Cell phone bill",
                    EmployeeId        = employee.EmployeeId,
                    ExpenseReportId   = expenseReport.ExpenseReportId,
                    ExpenseDate       = monthStart.AddDays((today.Day - 10 + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    ExpenseType       = ChargeType.Personal,
                    Location          = "Seattle, WA",
                    Merchant          = "The Phone Company",
                    Notes             = string.Empty,
                    ReceiptRequired   = true,
                    TransactionAmount = 50M,
                });
                Charges.Add(new Charge()
                {
                    ChargeId          = Charges.Count + 1,
                    AccountNumber     = 742000,
                    BilledAmount      = b4,
                    Category          = CategoryType.Hotel,
                    Description       = "Cell phone bill",
                    EmployeeId        = employee.EmployeeId,
                    ExpenseReportId   = expenseReport.ExpenseReportId,
                    ExpenseDate       = monthStart.AddDays((today.Day - 10 + daysInMonth - 1) % (daysInMonth - 1) + 1),
                    ExpenseType       = ChargeType.Personal,
                    Location          = "Seattle, WA",
                    Merchant          = "The Phone Company",
                    Notes             = string.Empty,
                    ReceiptRequired   = true,
                    TransactionAmount = 50M,
                });
            }
        }