NamingConversion/Source/NamingConversion/Conversion.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace CPolydorou.ActiveDirectory.NamingConversion
{
    public static class Conversion
    {
        #region Convert From CN
        /// <summary>
        /// Get the NT value using CN
        /// </summary>
        /// <param name="CN"></param>
        /// <returns></returns>
        public static String CNtoNT(String CN)
        {
            Int32 nameTypeCN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_CANONICAL;
            Int32 nameTypeNT4 = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeCN, CN);
            String nt = nameTranslate.Get(nameTypeNT4);
 
            return nt;
        }
 
        /// <summary>
        /// Get the UPN value using CN
        /// </summary>
        /// <param name="CN"></param>
        /// <returns></returns>
        public static String CNtoUPN(String CN)
        {
            Int32 nameTypeCN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_CANONICAL;
            Int32 nameTypeUPN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_USER_PRINCIPAL_NAME;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeCN, CN);
            String upn = nameTranslate.Get(nameTypeUPN);
 
            return upn;
        }
 
        /// <summary>
        /// Get the DN value using CN
        /// </summary>
        /// <param name="CN"></param>
        /// <returns></returns>
        public static String CNtoDN(String CN)
        {
            Int32 nameTypeCN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_CANONICAL;
            Int32 nameTypeDN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_1779;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeCN, CN);
            String dn = nameTranslate.Get(nameTypeDN);
 
            return dn;
        }
        #endregion
 
        #region Convert From DN
        /// <summary>
        /// Get the NT value using DN
        /// </summary>
        /// <param name="DN"></param>
        /// <returns></returns>
        public static String DNtoNT(String DN)
        {
            Int32 nameTypeDN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_1779;
            Int32 nameTypeNT4 = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeDN, DN);
            String nt = nameTranslate.Get(nameTypeNT4);
 
            return nt;
        }
 
        /// <summary>
        /// Get the CN value using DN
        /// </summary>
        /// <param name="DN"></param>
        /// <returns></returns>
        public static String DNtoCN(String DN)
        {
            Int32 nameTypeDN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_1779;
            Int32 nameTypeCN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_CANONICAL;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeDN, DN);
            String cn = nameTranslate.Get(nameTypeCN);
 
            return cn;
        }
 
        /// <summary>
        /// Get the UPN value using DN
        /// </summary>
        /// <param name="DN"></param>
        /// <returns></returns>
        public static String DNtoUPN(String DN)
        {
            Int32 nameTypeDN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_1779;
            Int32 nameTypeUPN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_USER_PRINCIPAL_NAME;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeDN, DN);
            String upn = nameTranslate.Get(nameTypeUPN);
 
            return upn;
        }
        #endregion
 
        #region Convert From NT
        /// <summary>
        /// Get the CN value using NT
        /// </summary>
        /// <param name="NT"></param>
        /// <returns></returns>
        public static String NTtoCN(String NT)
        {
            Int32 nameTypeNT4 = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4;
            Int32 nameTypeCanonicalName = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_CANONICAL;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeNT4, NT);
            String canonicalName = nameTranslate.Get(nameTypeCanonicalName);
 
            return canonicalName;
        }
 
        /// <summary>
        /// Get the UPN value using NT
        /// </summary>
        /// <param name="NT"></param>
        /// <returns></returns>
        public static String NTtoUPN(String NT)
        {
            Int32 nameTypeNT4 = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4;
            Int32 nameTypeUserPrincipalName = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_USER_PRINCIPAL_NAME;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeNT4, NT);
            String userPrincipalName = nameTranslate.Get(nameTypeUserPrincipalName);
 
            return userPrincipalName;
        }
 
        /// <summary>
        /// Get the DN value using NT
        /// </summary>
        /// <param name="NT"></param>
        /// <returns></returns>
        public static String NTtoDN(String NT)
        {
            Int32 nameTypeNT4 = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4;
            Int32 nameTypeDN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_1779;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeNT4, NT);
 
            String distinguishedName = nameTranslate.Get(nameTypeDN);
            return distinguishedName;
        }
        #endregion
 
        #region Convert From UPN
        /// <summary>
        /// Get the CN value using UPN
        /// </summary>
        /// <param name="UPN"></param>
        /// <returns></returns>
        public static String UPNtoCN(String UPN)
        {
            Int32 nameTypeUPNName = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_USER_PRINCIPAL_NAME;
            Int32 nameTypeCanonicalName = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_CANONICAL;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeUPNName, UPN);
            String canonicalName = nameTranslate.Get(nameTypeCanonicalName);
 
            return canonicalName;
        }
 
        /// <summary>
        /// Get the DN value using UPN
        /// </summary>
        /// <param name="UPN"></param>
        /// <returns></returns>
        public static String UPNtoDN(String UPN)
        {
            Int32 nameTypeDistinguishedName = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_1779;
            Int32 nameTypeUserPrincipalName = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_USER_PRINCIPAL_NAME;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeUserPrincipalName, UPN);
            String distinguishedName = nameTranslate.Get(nameTypeDistinguishedName);
 
            return distinguishedName;
        }
 
        /// <summary>
        /// Get the NT value using UPN
        /// </summary>
        /// <param name="UPN"></param>
        /// <returns></returns>
        public static String UPNtoNT(String UPN)
        {
            Int32 nameTypeNT4 = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_NT4;
            Int32 nameTypeUPN = (int)ActiveDs.ADS_NAME_TYPE_ENUM.ADS_NAME_TYPE_USER_PRINCIPAL_NAME;
 
            ActiveDs.NameTranslate nameTranslate = new ActiveDs.NameTranslate();
 
            nameTranslate.Set(nameTypeUPN, UPN);
 
            String nt = nameTranslate.Get(nameTypeNT4);
            return nt;
        }
        #endregion
    }
}