public static ComponentTemplateDocumentData GetComponentTemplateData(ILocalClient client, string id)
        {
            ComponentTemplateData item = client.Read(id, new ReadOptions()) as ComponentTemplateData;

            if (item == null)
                return null;

            ComponentTemplateDocumentData componentTemplate = new ComponentTemplateDocumentData();
            componentTemplate.Title = item.Title;
            componentTemplate.TemplateType = item.TemplateType;
            componentTemplate.LinkedSchemas = item.RelatedSchemas.Select(x => new SchemaDocumentData {Title = x.Title}).ToList();
            componentTemplate.MetadataSchema = new SchemaDocumentData {Title = item.MetadataSchema.Title};
            componentTemplate.OutputFormat = item.OutputFormat;
            componentTemplate.Priority = item.Priority;
            componentTemplate.Dynamic = item.DynamicTemplate.ToLower() == "dynamic";
            componentTemplate.InlineEditing = item.IsEditable;

            foreach (TbbInfo tbbInfo in Functions.GetTbbList(item.Content))
            {
                TbbDocumentData tbbDocument = TBBHelper.GetTBBData(client, tbbInfo.TcmId);
                componentTemplate.TBBs.Add(tbbDocument);
            }

            return componentTemplate;
        }
        public static TbbDocumentData GetTBBData(ILocalClient client, string id)
        {
            TemplateBuildingBlockData item = client.Read(id, new ReadOptions()) as TemplateBuildingBlockData;

            if (item == null)
                return null;

            TbbDocumentData tbb = new TbbDocumentData();
            tbb.Title = item.Title;
            tbb.TbbType = item.TemplateType;

            return tbb;
        }
        public static PageTemplateDocumentData GetPageTemplateData(ILocalClient client, string id)
        {
            PageTemplateData item = client.Read(id, new ReadOptions()) as PageTemplateData;

            if (item == null)
                return null;

            PageTemplateDocumentData pageTemplate = new PageTemplateDocumentData();
            pageTemplate.Title = item.Title;
            pageTemplate.TemplateType = item.TemplateType;
            pageTemplate.FileExtension = item.FileExtension;

            foreach (TbbInfo tbbInfo in Functions.GetTbbList(item.Content))
            {
                TbbDocumentData tbbDocument = TBBHelper.GetTBBData(client, tbbInfo.TcmId);
                pageTemplate.TBBs.Add(tbbDocument);
            }

            return pageTemplate;
        }
        public static SchemaDocumentData GetSchemaData(ILocalClient client, string id)
        {
            SchemaData item;
            SchemaFieldsData schemaFields;

            try
            {
                item = client.Read(id, new ReadOptions()) as SchemaData;
                schemaFields = client.ReadSchemaFields(id, true, new ReadOptions());
            }
            catch (Exception ex)
            {
                throw ex;
            }

            SchemaDocumentData schema = new SchemaDocumentData();

            schema.Title = item.Title;
            schema.Description = item.Description;
            schema.RootElementName = item.RootElementName;
            schema.NamespaceUri = item.NamespaceUri;
            schema.LocationInfo = item.LocationInfo.Path;
            schema.SchemaType = item.Purpose.Value.ToString();

            schema.Fields = GetFieldsDescription(schemaFields.Fields);
            schema.MetadataFields = GetFieldsDescription(schemaFields.MetadataFields);

            return schema;
        }
        public static bool EnsureValidClient(MappingInfo mapping)
        {
            if (Client == null || Client is SessionAwareCoreServiceClient && ((SessionAwareCoreServiceClient)Client).InnerChannel.State == CommunicationState.Faulted)
            {
                if (ClientBindingType == BindingType.HttpBinding)
                    Client = GetHttpClient(mapping.Host, mapping.Username, mapping.Password);
                else
                    Client = GetTcpClient(mapping.Host, mapping.Username, mapping.Password);

                try
                {
                    var publications = Client.GetSystemWideListXml(new PublicationsFilterData());
                }
                catch (Exception ex)
                {
                    WriteErrorLog("Not able to connect to TCM. Check your credentials and try again", ex.StackTrace);
                    Client = null;
                    return false;
                }
            }
            return true;
        }
 public static void ResetClient()
 {
     Client = null;
 }