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