/// <summary>
        /// Save
        /// </summary>                
        /// <param name="employeeId">employeeId</param>
        public void Save(int employeeId)
        {
            EmployeesAddTDS employeeAddTypeHistoryChanges = (EmployeesAddTDS)Data.GetChanges();

            if (employeeAddTypeHistoryChanges != null)
            {
                if (employeeAddTypeHistoryChanges.EmployeeAddTypeHistory.Rows.Count > 0)
                {
                    EmployeeAddTypeHistoryGateway employeeAddTypeHistoryGateway = new EmployeeAddTypeHistoryGateway(employeeAddTypeHistoryChanges);

                    foreach (EmployeesAddTDS.EmployeeAddTypeHistoryRow row in (EmployeesAddTDS.EmployeeAddTypeHistoryDataTable)employeeAddTypeHistoryChanges.EmployeeAddTypeHistory)
                    {
                        // Insert new subcontractor hours
                        if ((!row.Deleted) && (!row.InDatabase))
                        {
                            EmployeeTypeHistory employeeTypeHistory = new EmployeeTypeHistory(null);
                            employeeTypeHistory.InsertDirect(employeeId, row.RefID, row.Date, row.Type, row.Deleted, row.COMPANY_ID);
                        }
                    }
                }
            }
        }
        /// <summary>
        /// Save all to database (direct)
        /// </summary>
        /// <param name="companyId">companyId</param>
        public void Save(int employeeId, int companyId)
        {
            // Delete previous types
            EmployeeTypeHistory employeeTypeHistoryForDelete = new EmployeeTypeHistory(null);
            employeeTypeHistoryForDelete.DeleteAllDirect(employeeId, companyId);

            // Insert new types
            EmployeeInformationTDS typeHistoryInformationChanges = (EmployeeInformationTDS)Data.GetChanges();

            if (typeHistoryInformationChanges.TypeHistoryInformation.Rows.Count > 0)
            {
                EmployeeInformationTypeHistoryInformationGateway employeeInformationTypeHistoryInformationGateway = new  EmployeeInformationTypeHistoryInformationGateway(typeHistoryInformationChanges);

                foreach (EmployeeInformationTDS.TypeHistoryInformationRow row in (EmployeeInformationTDS.TypeHistoryInformationDataTable)typeHistoryInformationChanges.TypeHistoryInformation)
                {
                    // Insert new typeHistorys
                    if ((!row.Deleted) && (!row.InDatabase))
                    {
                        EmployeeTypeHistory employeeTypeHistory = new EmployeeTypeHistory(null);
                        employeeTypeHistory.InsertDirect(row.EmployeeID, row.RefID, row.Date, row.Type, row.Deleted, row.COMPANY_ID);
                    }

                    // Deleted typeHistorys
                    if ((row.Deleted) && (row.InDatabase))
                    {
                        EmployeeTypeHistory employeeTypeHistory = new EmployeeTypeHistory(null);
                        employeeTypeHistory.DeleteDirect(row.EmployeeID, row.RefID, row.COMPANY_ID);
                    }
                }
            }
        }
        private void UpdateDatabase()
        {
            // Get ids
            int currentEmployeeId = Int32.Parse(hdfCurrentEmployeeId.Value);
            int companyId = Int32.Parse(hdfCompanyId.Value);

            // Delete
            DB.Open();
            DB.BeginTransaction();
            try
            {
                EmployeeTypeHistory employeeTypeHistory = new EmployeeTypeHistory(employeeInformationTDS);
                employeeTypeHistory.DeleteAllDirect(currentEmployeeId, companyId);

                Employee employee = new Employee(employeeTDS);
                employee.DeleteDirect(currentEmployeeId);

                DB.CommitTransaction();
            }
            catch (Exception ex)
            {
                DB.RollbackTransaction();

                string url = string.Format("./../../error_page.aspx?error={0}", ex.Message.Replace('\n', ' '));
                Response.Redirect(url);
            }
        }