public void DeleteAndInsert(DateTime runDate, Employee employee) { using (var context = new NorthwindEntities()) using (var scope = new TransactionScope()) { EmployeeBonus bonusToDelete = (from bonus in context.EmployeeBonus where bonus.Date == runDate && bonus.EmployeeName == employee.Name select bonus).FirstOrDefault(); if (bonusToDelete != null) { context.DeleteObject(bonusToDelete); } var newBonus = new EmployeeBonus { EmployeeName = employee.Name, Date = runDate, Bonus = employee.Bonus }; context.EmployeeBonus.AddObject(newBonus); context.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); scope.Complete(); } }
public void TestSellOfShare() { var shares = new List <EmployeeShare>(); shares.Add(new EmployeeShare() { GrantPrice = .45M, NumberOfUnits = 1000, VestDate = DateTime.Now.AddDays(-10) }); var bonus = new EmployeeBonus(); bonus.BonusDate = DateTime.Now.AddDays(10); bonus.Multiplier = 1.5M; var shareSell = new EmployeeSale(); shareSell.Quantity = 500; shareSell.SaleDate = DateTime.Now; shareSell.MarketSellPrice = 1.00M; var bonuslist = new List <EmployeeBonus>(); bonuslist.Add(bonus); var result = shareSell.CalculateSale(shares, bonuslist); Assert.IsTrue(result == 275); }
public void TestEmployeeShareWithMultiplier() { var marketPrice = new MarketPrice(); marketPrice.Price = 6.00M; marketPrice.MarketPriceDate = DateTime.Now; var employeeShare = new EmployeeShare(); var employeeBonus = new EmployeeBonus(); employeeBonus.BonusDate = DateTime.Now; employeeBonus.Multiplier = 2.00M; employeeBonus.EmployeeId = "123"; employeeShare.EmployeeId = "123"; employeeShare.GrantPrice = 5.00M; employeeShare.VestDate = DateTime.Now.AddDays(-1); employeeShare.NumberOfUnits = 1000; Assert.IsTrue(employeeShare.CalculateGains(marketPrice, employeeBonus, 0) == 2000.00M); }
public BaseRecord GetRecord(string type, CsvReader csvReader) { switch (type) { case "VEST": var newShareRecord = new EmployeeShare { Action = csvReader.GetField <string>(0), EmployeeId = csvReader.GetField <string>(1), VestDate = ParseExactDate(csvReader.GetField <string>(2)), NumberOfUnits = csvReader.GetField <int>(3), GrantPrice = csvReader.GetField <decimal>(4) }; return(newShareRecord); case "PERF": var employeeBonus = new EmployeeBonus { Action = csvReader.GetField <string>(0), EmployeeId = csvReader.GetField <string>(1), BonusDate = ParseExactDate(csvReader.GetField <string>(2)), Multiplier = csvReader.GetField <decimal>(3) }; return(employeeBonus); case "SALE": var employeeSale = new EmployeeSale { Action = csvReader.GetField <string>(0), EmployeeId = csvReader.GetField <string>(1), SaleDate = ParseExactDate(csvReader.GetField <string>(2)), Quantity = csvReader.GetField <int>(3), MarketSellPrice = csvReader.GetField <decimal>(4) }; return(employeeSale); default: throw new InvalidInputException("Row type not supported."); } }