/// <summary>
        /// Finds filtered child requirements
        /// </summary>
        /// <param name="req">Parent requirement</param>
        /// <param name="reqType">Filter type of requirement</param>
        /// <returns>List of requirements</returns>
        public TDAPIOLELib.List GetChildRequirements(TDAPIOLELib.Req req, TDAPIOLELib.TDAPI_PREDEFINED_REQ_TYPES reqType)
        {
            TDAPIOLELib.ReqFactory reqFactory = tDConnection.ReqFactory;
            TDAPIOLELib.TDFilter   tDFilter   = reqFactory.Filter;

            tDFilter["RQ_TYPE_ID"] = reqType.ToString();

            return(reqFactory.GetFilteredChildrenList(req.ID, tDFilter));
        }
        /// <summary>
        /// Creates a requirement Folder
        /// </summary>
        /// <param name="folderName">Requirement folder name</param>
        /// <param name="folderPath">Requirement folder path</param>
        /// <returns>TDAPIOLELib.Req Object</returns>
        public TDAPIOLELib.Req CreateFolder(String folderName, String folderPath)
        {
            TDAPIOLELib.Req        req        = GetReqByPath(folderPath);
            TDAPIOLELib.ReqFactory reqFactory = tDConnection.ReqFactory;

            TDAPIOLELib.Req newReq = reqFactory.AddItem(System.DBNull.Value);

            newReq.ParentId      = req.ID;
            newReq["RQ_TYPE_ID"] = TDAPIOLELib.TDAPI_PREDEFINED_REQ_TYPES.REQ_TYPE_FOLDER;

            newReq.Name = folderName;

            newReq.Post();

            return(newReq);
        }
        /// <summary>
        /// Creates a new requirement
        /// </summary>
        /// <param name="requirementDetails">dictionary object with requirement database field names and values</param>
        /// <param name="folderPath"></param>
        /// <param name="reqType"></param>
        /// <returns></returns>
        public TDAPIOLELib.Req Create(Dictionary <String, String> requirementDetails, String folderPath, TDAPIOLELib.TDAPI_PREDEFINED_REQ_TYPES reqType = TDAPIOLELib.TDAPI_PREDEFINED_REQ_TYPES.REQ_TYPE_UNDEFINED)
        {
            TDAPIOLELib.Req        req        = GetReqByPath(folderPath);
            TDAPIOLELib.ReqFactory reqFactory = tDConnection.ReqFactory;

            TDAPIOLELib.Req newReq = reqFactory.AddItem(System.DBNull.Value);

            newReq.ParentId      = req.ID;
            newReq["RQ_TYPE_ID"] = reqType;

            foreach (KeyValuePair <String, String> kvp in requirementDetails)
            {
                newReq[kvp.Key] = kvp.Value;
            }

            newReq.Post();

            return(newReq);
        }
        /// <summary>
        /// Get TDAPIOLELib.Req object from path
        /// </summary>
        /// <param name="folderPath">Requirement folder path</param>
        /// <returns>TDAPIOLELib.Req Object</returns>
        public TDAPIOLELib.Req GetReqByPath(String folderPath)
        {
            TDAPIOLELib.ReqFactory reqFactory = tDConnection.ReqFactory;
            TDAPIOLELib.Req        parentReq  = reqFactory[0];
            TDAPIOLELib.List       reqList;

            foreach (String Req in folderPath.Split('\\'))
            {
                if (Req.ToUpper() != "REQUIREMENTS")
                {
                    reqList = reqFactory.Find(parentReq.ID, "RQ_REQ_NAME", Req, Convert.ToInt16(TDAPIOLELib.TDAPI_REQMODE.TDREQMODE_FIND_EXACT));

                    parentReq = null;
                    String FirstItemOfList = reqList[1] as String;

                    parentReq = reqFactory[FirstItemOfList.Split(',')[0]];
                }
            }

            return(parentReq);
        }
 /// <summary>
 /// Gets parent requirement
 /// </summary>
 /// <param name="req">TDAPIOLELib.Req Object</param>
 /// <returns>Parent requirement TDAPIOLELib.Req Object</returns>
 public TDAPIOLELib.Req GetParentRequirement(TDAPIOLELib.Req req)
 {
     TDAPIOLELib.ReqFactory reqFactory = tDConnection.ReqFactory;
     return(reqFactory[req.ID]);
 }
 /// <summary>
 /// Delete a requirement
 /// </summary>
 /// <param name="req">Requirement to be deleted</param>
 /// <returns>True if successfull</returns>
 public Boolean Delete(TDAPIOLELib.Req req)
 {
     TDAPIOLELib.ReqFactory reqFactory = tDConnection.ReqFactory;
     reqFactory.RemoveItem(req.ID);
     return(true);
 }
 /// <summary>
 /// Finds child requirements
 /// </summary>
 /// <param name="req">parent requirement</param>
 /// <returns>List of child requirements</returns>
 public TDAPIOLELib.List GetChildRequirements(TDAPIOLELib.Req req)
 {
     TDAPIOLELib.ReqFactory reqFactory = tDConnection.ReqFactory;
     return(reqFactory.GetChildrenList(req.ID));
 }