private int GetOrSetEmployeeRecord(Wave_X1_MainEntities dbContext, string employeeName, string address) { var names = employeeName.Split(new char[] { ' ' }); string firstName = names[0]; string lastName = names[1]; var emp = dbContext.Employees.Where(x => x.FirstName == firstName && x.LastName == lastName).FirstOrDefault(); if (emp == null) { DataAccess.Employee newEmployee = new DataAccess.Employee { FirstName = firstName, LastName = lastName, Address = address, CreatedDate = DateTime.Now }; dbContext.Employees.Add(newEmployee); dbContext.SaveChanges(); return(newEmployee.EmployeeId); } else { return(emp.EmployeeId); } }
private int GetOrSetExpenseCategory(Wave_X1_MainEntities dbContext, string expenseCategory) { var cat = dbContext.ExpenseCategories.Where(x => x.CategoryName == expenseCategory).FirstOrDefault(); if (cat == null) { DataAccess.ExpenseCategory category = new DataAccess.ExpenseCategory { CategoryName = expenseCategory }; dbContext.ExpenseCategories.Add(category); dbContext.SaveChanges(); return(category.CategoryId); } else { return(cat.CategoryId); } }
private int GetOrSetTaxState(Wave_X1_MainEntities dbContext, string taxName) { string[] states = taxName.Split(new char[] { ' ' }); string stateCode = states[0]; var taxState = dbContext.TaxStates.Where(x => x.StateCode == stateCode).FirstOrDefault(); if (taxState == null) { DataAccess.TaxState ts = new TaxState { StateName = LookUpStateNameFromStateCode(stateCode), StateCode = stateCode }; dbContext.TaxStates.Add(ts); dbContext.SaveChanges(); return(ts.StateId); } else { return(taxState.StateId); } }
private Dictionary <int, decimal> MigrateData(List <Expense> expenses) { Dictionary <int, decimal> totalExpenseByMonth = new Dictionary <int, decimal>(); if (expenses != null && expenses.Count > 0) { List <DataAccess.Expense> dbExpenses = new List <DataAccess.Expense>(); try { using (var dbContext = new Wave_X1_MainEntities()) { foreach (var expense in expenses) { int employeeId = GetOrSetEmployeeRecord(dbContext, expense.EmployeeName, expense.EmployeeAddress); int expenseCategoryId = GetOrSetExpenseCategory(dbContext, expense.Category); int taxId = GetOrSetTaxState(dbContext, expense.TaxName); DataAccess.Expense dbExpense = new DataAccess.Expense { EmployeeId = employeeId, ExpenseCategoryId = expenseCategoryId, TaxStateId = taxId, ExpenseDescription = expense.ExpenseDescription, PreTaxAmount = expense.PretaxAmount, TaxAmount = expense.TaxAmount, }; DateTime dt; bool isDateTime = DateTime.TryParse(expense.Date, out dt); if (isDateTime) { dbExpense.SubmissionDate = dt; } else { string sqlMinDt = SqlDateTime.MinValue.ToString(); dbExpense.SubmissionDate = Convert.ToDateTime(sqlMinDt); } if (totalExpenseByMonth.ContainsKey(dt.Month)) { totalExpenseByMonth[dt.Month] = totalExpenseByMonth[dt.Month] + expense.TotalExpenseAmount; } else { totalExpenseByMonth[dt.Month] = expense.TotalExpenseAmount; } dbExpenses.Add(dbExpense); lock (lockObject) { completed = completed + 1; } System.Console.WriteLine("Processing Completed:" + completed); UpdateMigrationProgress(total, completed); } dbContext.Expenses.AddRange(dbExpenses); dbContext.SaveChanges(); } } catch (Exception ex) { } } return(totalExpenseByMonth); }