/// <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);
                        }
                    }
                }
            }
        }
        protected void grdPersonalAgency_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            //Page.Validate("personalAgencyData");
            EmployeePersonalAgencyGateway employeePersonalAgencyGateway = new EmployeePersonalAgencyGateway();

            string personalAgencyName = e.Keys["PersonalAgencyName"].ToString();
            int companyId = Int32.Parse(hdfCompanyId.Value);

            if (!employeePersonalAgencyGateway.IsUsedInEmployee(personalAgencyName, companyId))
            {
                // If the gridview is edition mode
                if (grdPersonalAgency.EditIndex >= 0)
                {
                    grdPersonalAgency.UpdateRow(grdPersonalAgency.EditIndex, true);
                }

                PersonalAgencyInformation model = new PersonalAgencyInformation(personalAgencyInformationTDS);

                // Delete Personnel Agency
                model.Delete(personalAgencyName, companyId);

                // Store dataset
                Session.Remove("personalAgencyInformationDummy");
                Session["personalAgencyInformationTDS"] = personalAgencyInformationTDS;
                Session["personalAgencyInformation"] = personalAgencyInformationTDS.PersonalAgencyInformation;
            }
            else
            {
                Page.Validate("personalAgencyData");
                e.Cancel = true;
            }
        }
        protected void cvPersonalAgencyName_ServerValidate(object source, ServerValidateEventArgs args)
        {
            args.IsValid = true;

            EmployeePersonalAgencyGateway employeePersonalAgencyGateway = new EmployeePersonalAgencyGateway();

            if (employeePersonalAgencyGateway.IsUsedInEmployee(args.Value.Trim(), Int32.Parse(hdfCompanyId.Value)))
            {
                args.IsValid = false;
            }
        }
 /// <summary>
 /// Update PersonalAgencyName (direct to DB)
 /// </summary>
 /// <param name="originalPersonalAgencyName">originalPersonalAgencyName</param>
 /// <param name="originalCompanyId">originalCompanyId</param>
 /// <param name="originalDeleted">originalDeleted</param>        
 /// 
 /// <param name="newPersonalAgencyName">newPersonalAgencyName</param>
 /// <param name="newCompanyId">newCompanyId</param>
 /// <param name="newDeleted">newDeleted</param>        
 public void UpdateDirect(string originalPersonalAgencyName, int originalCompanyId, bool originalDeleted, string newPersonalAgencyName, int newCompanyId, bool newDeleted)
 {
     EmployeePersonalAgencyGateway employeePersonalAgencyGateway = new EmployeePersonalAgencyGateway(null);
     employeePersonalAgencyGateway.Update(originalPersonalAgencyName, originalCompanyId, originalDeleted, newPersonalAgencyName, newCompanyId, newDeleted);
 }
 /// <summary>
 /// Undelete PersonalAgencyName
 /// </summary>
 /// <param name="personalAgencyName">personalAgencyName</param>
 /// <param name="companyId">companyId</param>
 public void UnDeleteDirect(string personalAgencyName, int companyId)
 {
     EmployeePersonalAgencyGateway employeePersonalAgencyGateway = new EmployeePersonalAgencyGateway(null);
     employeePersonalAgencyGateway.UnDelete(personalAgencyName, companyId);
 }
 // ////////////////////////////////////////////////////////////////////////
 // PUBLIC METHODS
 //
 /// <summary>
 /// Insert material
 /// </summary>
 /// <param name="personalAgencyName">personalAgencyName</param>
 /// <param name="companyId">companyId</param>
 /// <param name="deleted">deleted</param>        
 public void InsertDirect(string personalAgencyName, int companyId, bool deleted)
 {
     EmployeePersonalAgencyGateway employeePersonalAgencyGateway = new EmployeePersonalAgencyGateway(null);
     employeePersonalAgencyGateway.Insert(personalAgencyName, companyId, deleted);
 }