try {
    $form = $_POST['form'];
    $CategoryUid = $form['CATEGORY_UID'];
    $CategoryParent = $form['CATEGORY_PARENT'];
    $CategoryName = $form['CATEGORY_NAME'];
    $CategoryIcon = $form['CATEGORY_ICON'];
    require_once "classes/model/ProcessCategory.php";
    //if exists the row in the database propel will update it, otherwise will insert.
    $tr = ProcessCategoryPeer::retrieveByPK($CategoryUid);
    $processCategory = new ProcessCategory();
    $aProcessCategory = $processCategory->loadByCategoryName($CategoryName);
    if (!is_array($aProcessCategory)) {
        if (!(is_object($tr) && get_class($tr) == 'ProcessCategory')) {
            $tr = new ProcessCategory();
        }
        $tr->setCategoryUid($CategoryUid);
        $tr->setCategoryParent($CategoryParent);
        $tr->setCategoryName($CategoryName);
        $tr->setCategoryIcon($CategoryIcon);
        if ($tr->validate()) {
            // we save it, since we get no validation errors, or do whatever else you like.
            $res = $tr->save();
        } else {
            // Something went wrong. We can now get the validationFailures and handle them.
            $msg = '';
            $validationFailuresArray = $tr->getValidationFailures();
            foreach ($validationFailuresArray as $objValidationFailure) {
                $msg .= $objValidationFailure->getMessage() . "<br/>";
            }
            //return array ( 'codError' => -100, 'rowsAffected' => 0, 'message' => $msg );
        }
                echo '{success: true}';
            } catch (Exception $ex) {
                echo '{success: false, error: ' . $ex->getMessage() . '}';
            }
            break;
        case 'canDeleteCategory':
            require_once 'classes/model/Process.php';
            $proc = new Process();
            $aProcess = $proc->getAllProcessesByCategory();
            $catUID = $_REQUEST['CAT_UID'];
            $response = isset($aProcess[$catUID]) ? 'false' : 'true';
            echo $response;
            break;
        case 'deleteCategory':
            try {
                require_once 'classes/model/ProcessCategory.php';
                $catUID = $_REQUEST['cat_uid'];
                $cat = new ProcessCategory();
                $cat->setCategoryUid($catUID);
                $catName = $cat->loadByCategoryId($catUID);
                $cat->delete();
                G::auditLog("DeleteCategory", "Category Name: " . $catName . " Category ID: (" . $catUID . ") ");
                echo '{success: true}';
            } catch (Exception $ex) {
                echo '{success: false, error: ' . $ex->getMessage() . '}';
            }
            break;
        default:
            echo 'default';
    }
}
 /**
  * Delete Category
  *
  * @param string $categoryUid Unique id of Category
  *
  * return void
  */
 public function delete($categoryUid)
 {
     try {
         //Verify data
         $this->throwExceptionIfNotExistsCategory($categoryUid, $this->arrayFieldNameForException["categoryUid"]);
         $process = new \Process();
         $arrayTotalProcessesByCategory = $process->getAllProcessesByCategory();
         if (isset($arrayTotalProcessesByCategory[$categoryUid]) && (int) $arrayTotalProcessesByCategory[$categoryUid] > 0) {
             throw new \Exception(\G::LoadTranslation("ID_MSG_CANNOT_DELETE_CATEGORY"));
         }
         //Delete
         $category = new \ProcessCategory();
         $category->setCategoryUid($categoryUid);
         $category->delete();
     } catch (\Exception $e) {
         throw $e;
     }
 }