private string _CreateParamSignature(ParamMetadata paramInfo)
 {
     return(string.Format("{0}{1}: {2}{3};", paramInfo.name, paramInfo.isNullable ? "?" : "",
                          paramInfo.dataType == DataType.None
             ? _dotNet2TS.RegisterType(paramInfo.ParameterType)
             : DotNet2TS.GetTSTypeNameFromDataType(paramInfo.dataType),
                          paramInfo.dataType != DataType.None && paramInfo.isArray ? "[]" : ""));
 }
        private string GetFieldDataType(Field fieldInfo)
        {
            var fieldName = fieldInfo.fieldName;
            var fieldType = "any";
            var dataType  = fieldInfo.dataType;

            fieldType = DotNet2TS.GetTSTypeNameFromDataType(dataType);
            return(fieldType);
        }
        private string GetFieldDataType(Field fieldInfo)
        {
            var fieldName = fieldInfo.fieldName;
            var fieldType = "any";
            var dataType  = fieldInfo.dataType;

            if (fieldInfo.fieldType == FieldType.Navigation)
            {
                fieldType = fieldInfo._TypeScriptDataType;
            }
            else if (fieldInfo.fieldType == FieldType.Object)
            {
                fieldType = fieldInfo._TypeScriptDataType;
            }
            else
            {
                fieldType = DotNet2TS.GetTSTypeNameFromDataType(dataType);
            }
            return(fieldType);
        }
 public ComplexTypeBuilder(DotNet2TS dotNet2TS)
 {
     _dotNet2TS    = dotNet2TS;
     _complexTypes = new Dictionary <string, string>();
 }
        public string CreateTypeScript(string comment = null)
        {
            if (_dotNet2TS != null)
            {
                _dotNet2TS.newClientTypeAdded -= _dotnet2TS_newClientTypeAdded;
            }
            _dotNet2TS = new DotNet2TS(_serviceContainer);
            _dotNet2TS.newClientTypeAdded += _dotnet2TS_newClientTypeAdded;
            _sb.Length = 0;
            if (!string.IsNullOrWhiteSpace(comment))
            {
                addComment(_sb, comment);
            }
            WriteStringLine(createHeader());
            WriteLine();

            processMethodArgs();
            var isvcMethods = createISvcMethods();

            //create typed Lists and Dictionaries
            var listTypes = createClientTypes();
            //get interface declarations for all client types
            var sbInterfaceDefs = _dotNet2TS.GetInterfaceDeclarations();

            if (!string.IsNullOrWhiteSpace(sbInterfaceDefs))
            {
                WriteStringLine(@"//******BEGIN INTERFACE REGION******");
                WriteStringLine(sbInterfaceDefs);
                WriteStringLine(@"//******END INTERFACE REGION******");
                WriteLine();
            }
            if (!string.IsNullOrWhiteSpace(isvcMethods))
            {
                WriteStringLine(isvcMethods);
                WriteLine();
            }

            if (!string.IsNullOrWhiteSpace(listTypes))
            {
                WriteStringLine(@"//******BEGIN LISTS REGION******");
                WriteStringLine(listTypes);
                WriteStringLine(@"//******END LISTS REGION******");
                WriteLine();
            }

            //this.WriteStringLine(this.createQueryNames());

            var ctbuilder = new ComplexTypeBuilder(_dotNet2TS);

            _dbSets.ForEach(dbSetInfo =>
            {
                dbSetInfo.fieldInfos.ForEach(fieldInfo =>
                {
                    if (fieldInfo.fieldType == FieldType.Object)
                    {
                        ctbuilder.CreateComplexType(dbSetInfo, fieldInfo, 0);
                    }
                });
            });

            var complexTypes = ctbuilder.GetComplexTypes();

            if (!string.IsNullOrWhiteSpace(complexTypes))
            {
                WriteStringLine(@"//******BEGIN COMPLEX TYPES REGION*****");
                WriteStringLine(complexTypes);
                WriteStringLine(@"//******END COMPLEX TYPES REGION******");
                WriteLine();
            }

            _dbSets.ForEach(dbSetInfo =>
            {
                var res = createEntityType(dbSetInfo);
                //write interface definition for entity
                WriteStringLine(res.Key);
                WriteLine();
                WriteStringLine(createDbSetType(res.Value, dbSetInfo));
                WriteLine();
            });

            WriteStringLine(createIAssocs());
            WriteLine();
            WriteStringLine(createDbContextType());
            WriteLine();
            return(_sb.ToString());
        }