protected override string GenerateCodeInternal() { return($@"export enum {_enumType.Name} {{{CodeStr.Foreach( System.Enum.GetValues(_enumType).Cast<object>(), enumValue => $@" {System.Enum.GetName(_enumType, enumValue)} = {Convert.ChangeType(enumValue, System.Enum.GetUnderlyingType(_enumType)).ToString()},") .TrimEnd(',')} }} "); }
protected override string GenerateCodeInternal() { var properties = GetProperties(_dtoType).ToArray(); return($@"{Imports(properties.Select(x => x.PropertyType).ToArray())} export interface {_dtoType.Name} {{{CodeStr.Foreach(ConvertProperties(properties), prop => $@" {prop.Name}: {prop.TypescriptType};")} }} "); }
protected override string GenerateCodeInternal() { var def = _httpRequestHandlerDefinition; var queryStringParameters = def.Parameters.Where(x => x.BindingType == BindingType.FromQuery).ToArray(); var routeParameters = def.Parameters.Where(x => x.BindingType == BindingType.FromRoute).ToArray(); var bodyParameters = def.Parameters.Where(x => x.BindingType == BindingType.FromBody).ToArray(); var requestProperties = GetProperties(def.Definition.RequestType); var responseProperties = GetProperties(def.Definition.ResponseType); var allProperties = requestProperties.Concat(responseProperties); var typescriptProperties = ConvertProperties(def.Parameters.Select(t => t.PropertyInfo)).ToArray(); return($@"import {{ HttpRequest, IRequestDispatcher }} from '../common'; {Imports(allProperties.Select(x => x.PropertyType).ToArray())} export class {def.Definition.RequestType.Name} {{{CodeStr.Foreach(typescriptProperties, prop => $@" public {prop.Name}: {prop.TypescriptType};")} constructor(init?: {{{CodeStr.Foreach(typescriptProperties, prop => $@"{prop.Name}?: {prop.TypescriptType}, ").TrimEnd(' ', ',')}}}) {{ if(init) {{ {CodeStr.Foreach(typescriptProperties, prop => $@" this.{prop.Name} = init.{prop.Name};")} }} }} private __request = () => <HttpRequest<{def.Definition.ResponseType.Name}>>{{ method: '{def.HttpMethod.ToString().ToLower()}', route: '{def.Route}'{CodeStr.Foreach(routeParameters, prop => $".replace('{{{prop.PropertyName}}}', this.{CamelCase(prop.PropertyInfo.Name)}{CodeStr.If(prop.PropertyInfo.PropertyType != typeof(string), ".toString()")})")}{ CodeStr.If((def.HttpMethod == HttpMethod.Patch || def.HttpMethod == HttpMethod.Delete || def.HttpMethod == HttpMethod.Post || def.HttpMethod == HttpMethod.Put) && bodyParameters.Any(), $@", body: {{{CodeStr.Foreach(bodyParameters, prop => $@" {CamelCase(prop.PropertyInfo.Name)}: this.{CamelCase(prop.PropertyInfo.Name)},").TrimEnd(',')} }}")}, queryString: {{{CodeStr.Foreach(queryStringParameters, prop => $@" {CamelCase(prop.PropertyInfo.Name)}: this.{CamelCase(prop.PropertyInfo.Name)}{CodeStr.If(prop.PropertyInfo.PropertyType != typeof(string), ".toString()")},").TrimEnd(',')} }} }}; public execute = (dispatcher: IRequestDispatcher) => dispatcher.execute(this.__request()); }} export interface {def.Definition.ResponseType.Name} {{{CodeStr.Foreach(ConvertProperties(responseProperties), prop => $@" {prop.Name}: {prop.TypescriptType};")} }} "); }
/// <summary> /// Get value from beginning position to current position /// </summary> /// <returns>String value</returns> public string GetStartToCurrent() { return(CodeStr.Substring(Start, (Position - Start))); }