public void Update(Training training)
 {
     using (ISession session = NHibernateHelper.OpenSession())
     using (ITransaction transaction = session.BeginTransaction())
     {
         session.Update(training);
         transaction.Commit();
     }
 }
        public void Can_add_multiple_new_trainings()
        {
            ISession session = _sessionFactory.OpenSession();

            int countBefore = getTrainingTableSize(session);

            ITransaction tx = session.BeginTransaction();
            Training training1 = new Training();
            training1.Date = DateTime.Now;
            training1.ClassType = _classType;
            training1.ClassCost = _classCost;
            training1.Dog = _dog1;
            training1.User = _user1;
            session.Save(training1);

            Training training2 = new Training();
            training2.Date = DateTime.Now;
            training2.ClassType = _classType;
            training2.ClassCost = _classCost;
            training2.Dog = _dog2;
            training2.User = _user2;
            session.Save(training2);

            Training training3 = new Training();
            training3.Date = DateTime.Now;
            training3.ClassType = _classType;
            training3.ClassCost = _classCost;
            training3.Dog = _dog1;
            training3.User = _user1;
            session.Save(training3);

            tx.Commit();

            Assert.AreEqual(countBefore + 3, getTrainingTableSize(session));

            tx = session.BeginTransaction();

            session.Delete(training1);
            session.Delete(training2);
            session.Delete(training3);

            tx.Commit();

            session.Close();
        }
        public void Can_add_new_training()
        {
            DateTime date = DateTime.Now;
            // Set the Milliseconds to 0 since MySQL DATETIME does not support milliseconds.
            date = DateTime.ParseExact(date.ToString(), "M/d/yyyy h:mm:ss tt", null);

            var training = new Training(date, _classType, _classCost, _dog1, _user1);
            ITrainingRepository repository = new TrainingRepository();
            repository.Add(training);

            // use session to try to load the training
            using (ISession session = _sessionFactory.OpenSession())
            {
                var fromDb = session.Get<Training>(training.TrainingId);
                // Test that the training was successfully inserted
                Assert.IsNotNull(fromDb);
                Assert.AreNotSame(training, fromDb);
                Assert.AreEqual(training.Date, fromDb.Date);
                Assert.AreEqual(training.Dog, fromDb.Dog);
                Assert.AreEqual(training.User, fromDb.User);
                Assert.AreEqual(training.ClassType, fromDb.ClassType);
                Assert.AreEqual(training.ClassCost, fromDb.ClassCost);
                Assert.AreEqual(training.PreK9DaycareCost, fromDb.PreK9DaycareCost);
            }

            repository.Remove(training);
        }
        private bool IsInCollection(Training training, ICollection<Training> fromDb)
        {
            bool result = false;

            foreach (var item in fromDb)
            {
                if (training.TrainingId == item.TrainingId)
                {
                    result = true;
                    break;
                }
            }
            return result;
        }
        private void CreateInitialData()
        {
            using (ISession session = _sessionFactory.OpenSession())
            using (ITransaction transaction = session.BeginTransaction())
            {
                // Save the user to populate its UserId.
                session.Save(_user1);
                session.Save(_user2);

                session.Save(_dog1);
                session.Save(_dog2);

                session.Save(_classCost);
                session.Save(_preK9DaycareCost);
                session.Save(_newClassCost);

                session.Save(_classType);

                // Get rid of milliseconds to make comparisons work, since MySQL
                // DateTime does not support milliseconds.
                DateTime date = DateTime.ParseExact(DateTime.Now.ToString(), "M/d/yyyy h:mm:ss tt", null);

                _trainings = new Training [4];
                _trainings[0] = new Training(date, _classType, _classCost, _dog1, _user1);
                _trainings[1] = new Training(date, _classType, _classCost, _dog1, _user2);
                _trainings[2] = new Training(date, _classType, _classCost, _dog2, _user1);
                _trainings[3] = new Training(date, _classType, _classCost, _dog2, _user2);

                foreach (var training in _trainings)
                {
                    session.Save(training);
                }

                transaction.Commit();
            }
        }
        private bool dataGridView1_RowValidating(int index, Training training)
        {
            if (training.Date < payrollStartDate || training.Date > payrollEndDate)
            {
                dataGridView1.Rows[index].ErrorText = "Training Date must be for current payroll period (" + payrollStartDate + " - " + payrollEndDate + ").";
                return false;
            }

            if (training.Dog == null)
            {
                dataGridView1.Rows[index].ErrorText = "Dog's Name must not be empty.";
                return false;
            }
            else if (training.ClassType == null)
            {
                dataGridView1.Rows[index].ErrorText = "Class must not be empty.";
                return false;
            }
            else if (training.ClassCost == null)
            {
                dataGridView1.Rows[index].ErrorText = "Cost of Class must not be empty.";
                return false;
            }

            return true;
        }
        private void dataGridView1_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (dataGridView1.IsCurrentCellDirty)
            {
                if (dirtyObjectsMap.Keys.Contains(e.RowIndex))
                {
                    dirtyObjectsMap.Remove(e.RowIndex);
                }

                Training training = new Training();

                DateTime date = (DateTime)dataGridView1.Rows[e.RowIndex].Cells["DateColumn"].Value;
                training.Date = date;

                string dogId = (string)dataGridView1.Rows[e.RowIndex].Cells["DogNameColumn"].Value;
                DogRepository dogRepository = new DogRepository();
                if (dogId != null)
                {
                    Dog dog = dogRepository.GetById(dogId);
                    training.Dog = dog;
                }

                CostRepository costRepository = new CostRepository();
                CostTypeRepository costTypeRepository = new CostTypeRepository();
                string classTypeId = (string)dataGridView1.Rows[e.RowIndex].Cells["ClassColumn"].Value;
                if (classTypeId != null)
                {
                    CostType costType = costTypeRepository.GetById(classTypeId);
                    training.ClassType = costType;

                    // If Class column value is Pre-K9, then enable Pre-K9 Daycare
                    // Cost column.
                    if (TRAINING_CLASS_PRE_K9.Equals(costType.CostName))
                    {
                        DataGridViewComboBoxCell preK9DaycareComboBoxCell = (DataGridViewComboBoxCell)dataGridView1.Rows[e.RowIndex].Cells["PreK9DaycareCostColumn"];
                        preK9DaycareComboBoxCell.ReadOnly = false;
                    }
                    else
                    {
                        DataGridViewComboBoxCell preK9DaycareComboBoxCell = (DataGridViewComboBoxCell)dataGridView1.Rows[e.RowIndex].Cells["PreK9DaycareCostColumn"];
                        preK9DaycareComboBoxCell.ReadOnly = true;
                    }

                    // Has Class column combobox value changed?
                    if (e.ColumnIndex == 3)
                    {
                        // Yes, Class column value has changed, so update
                        // Class Cost column combobox with appropriate
                        // values for new Class.

                        // Sort the costs.
                        IList<Cost> possibleCosts1 = costType.PossibleCosts;
                        ArrayList.Adapter((IList)possibleCosts1).Sort();

                        DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)(dataGridView1.Rows[e.RowIndex].Cells["CostOfClassColumn"]);

                        // Now that a class type has been selected, we can populate
                        // the cost of class drop down box appropriately.
                        cell.Value = null;
                        cell.DataSource = null;
                        if (cell.Items != null)
                        {
                            cell.Items.Clear();
                        }
                        cell.DataSource = possibleCosts1;
                        cell.DisplayMember = "CostValue";
                        cell.ValueMember = "CostId";
                    }
                }

                string classCostId = (string)dataGridView1.Rows[e.RowIndex].Cells["CostOfClassColumn"].Value;
                if (classCostId != null)
                {
                    Cost cost = costRepository.GetById(classCostId);
                    training.ClassCost = cost;
                }

                string preK9DaycareCostId = (string)dataGridView1.Rows[e.RowIndex].Cells["PreK9DaycareCostColumn"].Value;
                if (preK9DaycareCostId != null)
                {
                    Cost cost = costRepository.GetById(preK9DaycareCostId);
                    training.PreK9DaycareCost = cost;
                }

                training.User = user;

                string trainingId = (string)dataGridView1.Rows[e.RowIndex].Cells["TrainingIdColumn"].Value;

                training.TrainingId = trainingId;

                // Add object to dirty objects map.
                if (!dirtyObjectsMap.Keys.Contains(e.RowIndex))
                {
                    dirtyObjectsMap.Add(e.RowIndex, training);
                }

                // Remove the entry from the delete map, if
                // an entry for the Daycare exists in the
                // delete map already.
                if (deleteObjectsMap.Keys.Contains(e.RowIndex))
                {
                    deleteObjectsMap.Remove(e.RowIndex);
                }

                var isSelected = dataGridView1.Rows[e.RowIndex].Cells["SelectColumn"].Value;

                if (isSelected != null && (bool)isSelected)
                {
                    deleteObjectsMap.Add(e.RowIndex, training);
                }
            }
        }