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);
        }
Exemplo n.º 3
0
        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);
        }
Exemplo n.º 4
0
        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.");
            }
        }