/// <summary>
        /// Save all personalAgencyName to database (direct)
        /// </summary>
        /// <param name="companyId">companyId</param>        
        public void Save(int companyId)
        {
            PersonalAgencyInformationTDS personalAgencyInformationChanges = (PersonalAgencyInformationTDS)Data.GetChanges();

            if (personalAgencyInformationChanges != null)
            {
                if (personalAgencyInformationChanges.PersonalAgencyInformation.Rows.Count > 0)
                {
                    PersonalAgencyInformationGateway sizeInformationGateway = new PersonalAgencyInformationGateway(personalAgencyInformationChanges);

                    foreach (PersonalAgencyInformationTDS.PersonalAgencyInformationRow row in (PersonalAgencyInformationTDS.PersonalAgencyInformationDataTable)personalAgencyInformationChanges.PersonalAgencyInformation)
                    {
                        // Insert new personal agency
                        if ((!row.Deleted) && (!row.InDatabase))
                        {
                            EmployeePersonalAgencyGateway employeePersonalAgencyGateway = new EmployeePersonalAgencyGateway();
                            EmployeePersonalAgency employeePersonalAgency = new EmployeePersonalAgency(null);

                            if (!employeePersonalAgencyGateway.ExistPersonalAgency(row.PersonalAgencyName, row.COMPANY_ID))
                            {
                                employeePersonalAgency.InsertDirect(row.PersonalAgencyName, row.COMPANY_ID, row.Deleted);
                            }
                            else
                            {
                                employeePersonalAgency.UnDeleteDirect(row.PersonalAgencyName, row.COMPANY_ID);
                            }
                        }

                        // Update personal agency
                        if ((!row.Deleted) && (row.InDatabase))
                        {
                            string originalPersonalAgencyName = row.NewPersonalAgencyName;
                            string newPersonalAgencyName = row.PersonalAgencyName;
                            int originalCompanyId = companyId;

                            EmployeePersonalAgencyGateway employeePersonalAgencyGateway = new EmployeePersonalAgencyGateway();
                            EmployeePersonalAgency employeePersonalAgency = new EmployeePersonalAgency(null);

                            if (!employeePersonalAgencyGateway.ExistPersonalAgency(row.PersonalAgencyName, row.COMPANY_ID))
                            {
                                employeePersonalAgency.InsertDirect(newPersonalAgencyName, originalCompanyId, false);
                            }
                            else
                            {
                                employeePersonalAgency.UnDeleteDirect(newPersonalAgencyName, originalCompanyId);
                            }

                            if (employeePersonalAgencyGateway.IsUsedInEmployee(originalPersonalAgencyName, companyId))
                            {
                                EmployeeGateway employeeGateway = new EmployeeGateway(null);
                                employeeGateway.UpdatePersonalAgencyName(originalPersonalAgencyName, newPersonalAgencyName);
                            }

                            employeePersonalAgency.DeleteDirect(originalPersonalAgencyName, companyId);
                        }

                        // Delete personal agency
                        if ((row.Deleted) && (row.InDatabase))
                        {
                            EmployeePersonalAgency employeePersonalAgency = new EmployeePersonalAgency(null);
                            employeePersonalAgency.DeleteDirect(row.PersonalAgencyName, row.COMPANY_ID);
                        }
                    }
                }
            }
        }