private void refreshDisplayFromDatabase()
 {
     CompanyRepository companyRepository = new CompanyRepository();
     IList<User> users = company.Users;
     this.usernameComboBox.DataSource = users;
     this.usernameComboBox.DisplayMember = "Username";
 }
        private void loginButton_Click(object sender, EventArgs e)
        {
            UserRepository userRepository = new UserRepository();
            User user = userRepository.GetByUsername(loginUserControl.Username());

            CompanyRepository companyRepository = new CompanyRepository();
            Company company = companyRepository.GetByCompanyName(companyName);

            if (user != null && user.WorksForCompanies.Contains(company) && user.Password.Equals(loginUserControl.Password()))
            {
                // Add payroll time range to session.
                PayrollRepository payrollRepository = new PayrollRepository();
                Payroll payroll = payrollRepository.GetByCompany(company);
                DateTime payrollStartDate = getCurrentPayrollStartDate(payroll);
                int numberOfDaysInPayroll = payroll.PayrollNumberOfWeeks * NUMBER_OF_DAYS_IN_A_WEEK;
                // TimeSpan constructor specifies: days, hours, minutes, seconds,
                // and milliseconds. The TimeSpan returned has those values.
                TimeSpan oneMillisecondSpan = new TimeSpan(0, 0, 0, 0, 1);
                DateTime payrollEndDate = payrollStartDate.AddDays(numberOfDaysInPayroll).Subtract(oneMillisecondSpan);

                // Create a new session.
                // Associate user and her or his company with session.
                session = new Session(user, company, payrollStartDate, payrollEndDate);

                // Initialize the dashboard user control since we have successfully logged in.
                dashboardUserControl = new DashboardUserControl(session);

                // Remove the login user control/screen.
                this.Controls.Clear();

                // Add the dashboard user control.
                this.Controls.Add(dashboardUserControl);

                this.toolStrip1 = new System.Windows.Forms.ToolStrip();
                this.toolStrip1.SuspendLayout();
                //
                // toolStrip1
                //
                this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
                    this.logoutToolStripButton,
                    this.welcomeToolStripLabel});
                this.toolStrip1.Location = new System.Drawing.Point(0, 0);
                this.toolStrip1.Name = "toolStrip1";
                this.toolStrip1.Size = new System.Drawing.Size(649, 25);
                this.toolStrip1.TabIndex = 0;
                this.toolStrip1.Text = "Payroll Tracker Tool Strip";

                welcomeToolStripLabel.Text = "Welcome " + user.FirstName + "!";
                this.Controls.Add(this.toolStrip1);
                this.toolStrip1.ResumeLayout(false);
                this.toolStrip1.PerformLayout();

                this.logoutToolStripButton.Click +=new EventHandler(logoutToolStripButton_Click);
            }
            else
            {
                MessageBox.Show("Incorrect username and password combination");
            }
        }
        public void Can_add_new_company()
        {
            var company = new Company("test new company name");
            ICompanyRepository repository = new CompanyRepository();
            repository.Add(company);

            // use session to try to load the company
            using (ISession session = _sessionFactory.OpenSession())
            {
                var fromDb = session.Get<Company>(company.CompanyId);
                // Test that the company was successfully inserted
                Assert.IsNotNull(fromDb);
                Assert.AreNotSame(company, fromDb);
                Assert.AreEqual(company.Name, fromDb.Name);
            }

            repository.Remove(company);
        }
        private void DeleteInitialData()
        {
            IPayrollRepository repository = new PayrollRepository();
            foreach (var payroll in _payrolls)
            {
                Payroll fromDb = repository.GetById(payroll.PayrollId);
                if (fromDb != null)
                {
                    repository.Remove(payroll);
                }
            }

            ICompanyRepository companyRepository = new CompanyRepository();
            companyRepository.Remove(_company1);
            companyRepository.Remove(_company2);
        }
        public void Can_remove_existing_company()
        {
            var company = _companys[0];
            ICompanyRepository repository = new CompanyRepository();
            repository.Remove(company);

            using (ISession session = _sessionFactory.OpenSession())
            {
                var fromDb = session.Get<Company>(company.CompanyId);
                Assert.IsNull(fromDb);
            }
        }
 public void Can_get_existing_company_by_id()
 {
     ICompanyRepository repository = new CompanyRepository();
     var fromDb = repository.GetById(_companys[1].CompanyId);
     Assert.IsNotNull(fromDb);
     Assert.AreNotSame(_companys[1], fromDb);
     Assert.AreEqual(_companys[1].Name, fromDb.Name);
 }
 private void DeleteInitialData()
 {
     ICompanyRepository repository = new CompanyRepository();
     foreach (var company in _companys)
     {
         Company fromDb = repository.GetById(company.CompanyId);
         if (fromDb != null)
         {
             repository.Remove(company);
         }
     }
 }
        public void Can_update_existing_company()
        {
            var company = _companys[1];
            company.Name = "test company name update";
            ICompanyRepository repository = new CompanyRepository();
            repository.Update(company);

            // use session to try to load the company
            using (ISession session = _sessionFactory.OpenSession())
            {
                var fromDb = session.Get<Company>(company.CompanyId);
                Assert.AreEqual(company.Name, fromDb.Name);
            }
        }
        public void DatabaseSetupInsertions_script()
        {
            CompanyRepository companyRepository = new CompanyRepository();
            Company universityOfDoglando = new Company("University of Doglando");
            Company groomGrubAndBellyRub = new Company("Groom, Grub & Belly Rub");
            companyRepository.Add(universityOfDoglando);
            companyRepository.Add(groomGrubAndBellyRub);

            PayrollRepository payrollRepository = new PayrollRepository();
            Payroll universityOfDoglandoPayroll = new Payroll();
            universityOfDoglandoPayroll.Company = universityOfDoglando;
            universityOfDoglandoPayroll.PayrollNumberOfWeeks = 2;
            universityOfDoglandoPayroll.PayrollStartDate = new DateTime(2010, 11, 6);
            Payroll groomGrubAndBellyRubPayroll = new Payroll();
            groomGrubAndBellyRubPayroll.Company = groomGrubAndBellyRub;
            groomGrubAndBellyRubPayroll.PayrollNumberOfWeeks = 2;
            groomGrubAndBellyRubPayroll.PayrollStartDate = new DateTime(2010, 11, 6);
            payrollRepository.Add(universityOfDoglandoPayroll);
            payrollRepository.Add(groomGrubAndBellyRubPayroll);

            RoleRepository roleRepository = new RoleRepository();
            Role training = new Role("Training");
            Role pickupDropoff = new Role("Pickup/Dropoff");
            Role boarding = new Role("Boarding");
            Role grooming = new Role("Grooming");
            Role timeCard = new Role("Time Card");
            Role administrator = new Role("Administrator");
            Role addDog = new Role("Add Dog");
            roleRepository.Add(training);
            roleRepository.Add(pickupDropoff);
            roleRepository.Add(boarding);
            roleRepository.Add(grooming);
            roleRepository.Add(timeCard);
            roleRepository.Add(administrator);
            roleRepository.Add(addDog);

            UserRepository userRepository = new UserRepository();
            User teena = new User("teena", "teena123", "Teena", "Patel", DateTime.Now);
            User nim = new User("nim", "nim123", "Nim", "Patel", DateTime.Now);
            User jessica = new User("jessica", "jessica123", "Jessica", "Barajas", DateTime.Now);
            teena.AssignedRoles.Add(training);
            teena.AssignedRoles.Add(pickupDropoff);
            teena.AssignedRoles.Add(boarding);
            teena.AssignedRoles.Add(grooming);
            teena.AssignedRoles.Add(timeCard);
            teena.AssignedRoles.Add(administrator);
            teena.AssignedRoles.Add(addDog);
            teena.WorksForCompanies.Add(universityOfDoglando);
            teena.WorksForCompanies.Add(groomGrubAndBellyRub);
            nim.AssignedRoles.Add(training);
            nim.AssignedRoles.Add(pickupDropoff);
            nim.AssignedRoles.Add(boarding);
            nim.AssignedRoles.Add(grooming);
            nim.AssignedRoles.Add(timeCard);
            nim.AssignedRoles.Add(administrator);
            nim.AssignedRoles.Add(addDog);
            nim.WorksForCompanies.Add(universityOfDoglando);
            nim.WorksForCompanies.Add(groomGrubAndBellyRub);
            jessica.AssignedRoles.Add(training);
            jessica.AssignedRoles.Add(pickupDropoff);
            jessica.AssignedRoles.Add(boarding);
            jessica.AssignedRoles.Add(timeCard);
            jessica.AssignedRoles.Add(addDog);
            jessica.WorksForCompanies.Add(universityOfDoglando);
            userRepository.Add(teena);
            userRepository.Add(nim);
            userRepository.Add(jessica);

            CostTypeRepository costTypeRepository = new CostTypeRepository();
            CostType costType1 = new CostType("Boarding - Rate");
            CostType costType2 = new CostType("Boarding - Sunday Daycare");
            CostType costType3 = new CostType("Daycare");
            CostType costType4 = new CostType("PickupDropoff - Pickup");
            CostType costType5 = new CostType("PickupDropoff - Dropoff");
            CostType costType6 = new CostType("Training - Class - Pre K9");
            CostType costType7 = new CostType("Training - Class - AA");
            CostType costType8 = new CostType("Training - Class - BS");
            CostType costType9 = new CostType("Training - Class - K9 Nose Work");
            CostType costType10 = new CostType("Training - Class - Agility 1");
            CostType costType11 = new CostType("Training - Class - Agility 2");
            CostType costType12 = new CostType("Training - Pre-K9 Daycare");

            //Boarding costs.

            CostRepository costRepository = new CostRepository();
            Cost cost1 = new Cost(7);
            Cost cost2 = new Cost(10);
            costRepository.Add(cost1);
            costRepository.Add(cost2);

            List<Cost> possibleCosts1 = new List<Cost>();
            possibleCosts1.Add(cost1);
            possibleCosts1.Add(cost2);

            costType1.PossibleCosts = possibleCosts1;
            costTypeRepository.Add(costType1);

            Cost cost3 = new Cost(15);
            costRepository.Add(cost3);

            List<Cost> possibleCosts2 = new List<Cost>();
            possibleCosts2.Add(cost2);
            possibleCosts2.Add(cost3);

            costType2.PossibleCosts = possibleCosts2;
            costTypeRepository.Add(costType2);

            // Daycare costs.
            Cost cost4 = new Cost(20);
            Cost cost5 = new Cost(22);
            Cost cost6 = new Cost(25);
            Cost cost7 = new Cost(28);
            Cost cost8 = new Cost(30);
            Cost cost9 = new Cost(40);
            costRepository.Add(cost4);
            costRepository.Add(cost5);
            costRepository.Add(cost6);
            costRepository.Add(cost7);
            costRepository.Add(cost8);
            costRepository.Add(cost9);

            List<Cost> possibleCosts3 = new List<Cost>();
            possibleCosts3.Add(cost4);
            possibleCosts3.Add(cost5);
            possibleCosts3.Add(cost6);
            possibleCosts3.Add(cost7);
            possibleCosts3.Add(cost8);
            possibleCosts3.Add(cost9);

            costType3.PossibleCosts = possibleCosts3;
            costTypeRepository.Add(costType3);

            //Pickup dropoff costs.

            Cost cost10 = new Cost(3);
            Cost cost11 = new Cost(5);
            costRepository.Add(cost10);
            costRepository.Add(cost11);

            List<Cost> possibleCosts4 = new List<Cost>();
            possibleCosts4.Add(cost10);
            possibleCosts4.Add(cost11);

            costType4.PossibleCosts = possibleCosts4;
            costTypeRepository.Add(costType4);

            costType5.PossibleCosts = possibleCosts4;
            costTypeRepository.Add(costType5);

            //Training costs

            Cost cost12 = new Cost(60);
            Cost cost13 = new Cost(80);
            Cost cost14 = new Cost(100);
            Cost cost15 = new Cost(120);
            Cost cost16 = new Cost(160);
            costRepository.Add(cost12);
            costRepository.Add(cost13);
            costRepository.Add(cost14);
            costRepository.Add(cost15);
            costRepository.Add(cost16);

            List<Cost> possibleCosts6 = new List<Cost>();
            possibleCosts6.Add(cost12);
            possibleCosts6.Add(cost13);
            possibleCosts6.Add(cost14);
            possibleCosts6.Add(cost15);
            possibleCosts6.Add(cost16);

            List<Cost> possibleCosts7 = new List<Cost>();
            possibleCosts7.Add(cost12);
            possibleCosts7.Add(cost13);

            costType6.PossibleCosts = possibleCosts7;
            costTypeRepository.Add(costType6);

            costType7.PossibleCosts = possibleCosts6;
            costTypeRepository.Add(costType7);

            costType8.PossibleCosts = possibleCosts6;
            costTypeRepository.Add(costType8);

            costType9.PossibleCosts = possibleCosts6;
            costTypeRepository.Add(costType9);

            costType10.PossibleCosts = possibleCosts6;
            costTypeRepository.Add(costType10);

            costType11.PossibleCosts = possibleCosts6;
            costTypeRepository.Add(costType11);

            // - Pre K9 Daycare Costss
            List<Cost> possibleCosts8 = new List<Cost>();
            possibleCosts8.Add(cost11); // $5
            possibleCosts8.Add(cost2);  // $10

            costType12.PossibleCosts = possibleCosts8;
            costTypeRepository.Add(costType12);

            // Training Class Types

            // Add Grooming Types
            GroomingTypeRepository groomingTypeRepository = new GroomingTypeRepository();
            GroomingType groomingType1 = new GroomingType("Bath");
            GroomingType groomingType2 = new GroomingType("Nose and Ears");
            GroomingType groomingType3 = new GroomingType("Mini Groom");
            GroomingType groomingType4 = new GroomingType("Full Groom");
            groomingTypeRepository.Add(groomingType1);
            groomingTypeRepository.Add(groomingType2);
            groomingTypeRepository.Add(groomingType3);
            groomingTypeRepository.Add(groomingType4);
        }