static private bool GetFunctionArgs(EFunction eFunction, ref StringBuilder argsStringBuilder, out List <EArg> allArgsList, out List <EArg> segmentsList, out List <EArg> mandatoryList, out List <EArg> optionalList, out List <EArg> formArgList, out EArg bodyArg) { segmentsList = null; mandatoryList = null; optionalList = null; formArgList = null; allArgsList = new List <EArg>(); bodyArg = null; try { //orderby then to linq nao funciona para mesmo campo bodyArg = Helper.GetBodyArg(eFunction.argsList); segmentsList = Helper.GetSegmentsArgs(eFunction.argsList); mandatoryList = Helper.GetMandatoryArgs(eFunction.argsList); optionalList = Helper.GetOptionalArgs(eFunction.argsList); formArgList = Helper.GetFormArgs(eFunction.argsList); if (bodyArg != null) { allArgsList.Add(bodyArg); } if (segmentsList.Any()) { allArgsList.AddRange(segmentsList); } if (mandatoryList.Any()) { allArgsList.AddRange(mandatoryList); } if (optionalList.Any()) { allArgsList.AddRange(optionalList); } if (formArgList.Any()) { allArgsList.AddRange(formArgList); } for (int i = 0; i < allArgsList.Count; i++) { EArg eArg = allArgsList.ElementAt(i); argsStringBuilder.Append(eArg.typeName); argsStringBuilder.Append(" "); argsStringBuilder.Append(eArg.name); if (!string.IsNullOrEmpty(eArg.defaultValue)) { eArg.defaultValue = eArg.defaultValue.Replace("\'", "\""); //if(eArg.defaultValue=="''")argsStringBuilder.Append("=\"\""); argsStringBuilder.Append("=" + eArg.defaultValue); } if (i < (allArgsList.Count - 1)) { argsStringBuilder.Append(", "); } } return(true); } catch (Exception e) { Logger.LogError(e); } return(false); }
private void OnItemPropertyChanged(object sender, PropertyChangedEventArgs e) { var vm = sender.As <T>(); if (e.PropertyName == nameof(vm.IsSelected)) { if (vm.IsSelected) { _itemPicked?.Invoke(sender, EArg <T> .NewArg(vm)); } else { _itemUnpicked?.Invoke(sender, EArg <T> .NewArg(vm)); } } }
/// <summary> /// Добавить модель /// </summary> /// <param name="model">Модель</param> /// <returns>Была ли доабвлена модель</returns> public override bool Add(ModelT model) { if (OnCanAdd != null) { var arg = new EArg() { CanUse = true }; OnCanAdd(model, arg); if (!arg.CanUse) { return(false); } } var checkValue = _getCheckValue(model); if (_comparer.Compare(checkValue, _target) == 0) { if (_dictionary.ContainsKey(model.ID)) { _dictionary[model.ID] = model; } else { _dictionary.Add(model.ID, model); } OnAddAction(model); return(true); } else { return(false); } }
static private string GetFunctionBody(EFunctionFile eFile, EFunction eFunction, string operation, List <EArg> segmentsList, List <EArg> mandatoryList, List <EArg> optionalList, List <EArg> formArgList, EArg bodyArg) { try { StringBuilder bodyTxt = new StringBuilder(); string operationName = ""; switch (eFunction.functionType) { case FunctionType.GET: operationName = "HttpMethod.Get"; break; case FunctionType.PUT: operationName = "HttpMethod.Put"; break; case FunctionType.POST: operationName = "HttpMethod.Post"; break; case FunctionType.DELETE: operationName = "HttpMethod.Delete"; break; } bodyTxt.Append("\n\t\t\tGlobals.loading = true;"); bodyTxt.Append("\n\t\t\tHttpRequestMessage req = new HttpRequestMessage(" + operationName + ", $\"api/v" + eFunction.version + "/S" + eFile.frontendClassName + "/" + eFunction.functionName); if (segmentsList.Count == 0 && optionalList.Count == 0) { bodyTxt.Append("\");"); } foreach (EArg eArgSegment in segmentsList) { bodyTxt.Append("/{" + eArgSegment.name + "}"); } if (optionalList.Any()) { bodyTxt.Append("?"); } for (int i = 0; i < optionalList.Count; i++) { var eArgOptional = optionalList.ElementAt(i); bodyTxt.Append(eArgOptional.name + "={" + eArgOptional.name + "}"); if (i < (optionalList.Count - 1)) { bodyTxt.Append("&"); } } if (segmentsList.Any() || optionalList.Any()) { bodyTxt.Append("\");"); } bodyTxt.Append("\n"); bodyTxt.Append("\t\t\treq.Headers.Add(\"Authorization\", $\"bearer {Globals.jwtToken}\");\n"); if (bodyArg != null) { bodyTxt.Append("\t\t\treq.Content = new StringContent(JsonConvert.SerializeObject(" + bodyArg.name + "), Encoding.UTF8, \"application/json\");\n"); } bodyTxt.Append("\t\t\tvar response = await httpClient.SendAsync(req);\n"); bodyTxt.Append("\t\t\tGlobals.loading = false;\n"); bodyTxt.Append("\t\t\tif (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)throw new UnauthorizedAccessException();\n"); bodyTxt.Append("\t\t\tresponse.EnsureSuccessStatusCode();\n"); if (eFunction.frontendReturnTypeName != "void") { bodyTxt.Append("\t\t\tstring responseBody = await response.Content.ReadAsStringAsync();\n"); switch (eFunction.frontendReturnTypeName) { case "string": bodyTxt.Append("\t\t\treturn responseBody;\n"); break; case "Int64": bodyTxt.Append("\t\t\treturn Int64.Parse(responseBody);\n"); break; case "bool": bodyTxt.Append("\t\t\treturn bool.Parse(responseBody);\n"); break; case "Decimal": case "decimal": bodyTxt.Append("\t\t\treturn decimal.Parse(responseBody);\n"); break; default: bodyTxt.Append("\t\t\t" + eFunction.frontendReturnTypeName + " result = JsonConvert.DeserializeObject<" + eFunction.frontendReturnTypeName + ">(responseBody);\n"); bodyTxt.Append("\t\t\treturn result;\n"); break; } } bodyTxt.Append("\t\t}"); // // // // // // // bodyTxt.Append("\n\t\tfinal response = await http." + operation + "(Defines.RestBaseURL + '/v" + eFunction.version.ToString() + "/" + eFile.csharpFileName + "/" + eFunction.functionName); // if (segmentsList.Count == 0) bodyTxt.Append("'"); // foreach (EArg eArgSegment in segmentsList) { // bodyTxt.Append("/${" + eArgSegment.name + "}"); // } // if (segmentsList.Count > 0) bodyTxt.Append("'"); // bodyTxt.Append(",\n\t\t\t\theaders: {\"Content-Type\": \"application/json\", \"Authorization\": \"Bearer \"+Defines.JwtToken},"); // if (bodyArg != null) { // switch (bodyArg.typeName) { // //cshartptype // case "string": // bodyTxt.Append("\n\t\t\t\tbody: json.encode(" + bodyArg.name + "));\n\n"); // break; // default: // bodyTxt.Append("\n\t\t\t\tbody: json.encode(" + bodyArg.name + ".toJson()));\n\n"); // break; // } // } else bodyTxt.Append(");\n\n"); // // bodyTxt.Append("\t\tif (response.statusCode != 200) print('(" + eFile.frontendClassName + ")" + eFunction.functionName + " error. Status code: ${response.statusCode}');\n"); // if (eFunction.frontendReturnTypeName != "void") { // bodyTxt.Append("\t\treturn "); // if (eFunction.frontendReturnTypeName == "int") bodyTxt.Append(eFunction.frontendReturnTypeName + ".parse(response.body);\n"); // else if (eFunction.frontendReturnTypeName == "bool") bodyTxt.Append("BoolHelper.convertStringToBool(response.body);\n"); // else if (eFunction.frontendReturnTypeName.Contains("List<")) { // string nameWithoutList = StringHelper.RemoveString(eFunction.returnTypeName, "List<"); // nameWithoutList = StringHelper.RemoveString(nameWithoutList, ">"); // bodyTxt.Append("(json.decode(response.body) as List).map((e) => new " + nameWithoutList + ".fromJson(e)).toList();\n"); // } else if (eFunction.frontendReturnTypeName == "String") bodyTxt.Append("json.decode(response.body);\n"); // else bodyTxt.Append(eFunction.frontendReturnTypeName + ".fromJson(json.decode(response.body));\n"); // } return(bodyTxt.ToString()); } catch (Exception e) { Logger.LogError(e); } return(""); }
static private bool GetArgument(string file, int lineNumber, string txt, ref EFunction eFunction) { try { EArg eArg = new EArg(); if (txt.Trim().Length == 0) { return(true); //no arguments } var regex = new Regex("(\\w+)\\s+(\\w+\\[?\\]?)\\s+(\\w+)\\s*=?\\s*(.+)?", RegexOptions.IgnoreCase, TimeSpan.FromMilliseconds(1000)); Match match = regex.Match(txt); if (!match.Success) { Logger.LogError("unable to identify argument in file " + file + " at line number " + lineNumber.ToString() + ": " + txt); return(false); } string argType = match.Groups[1].Value.ToLower().Trim(); eArg.typeName = match.Groups[2].Value.Trim(); eArg.name = match.Groups[3].Value.Trim(); if (match.Groups[4].Success) { eArg.defaultValue = match.Groups[4].Value.Trim(); } if (argType.Contains("mandatory")) { eArg.argType = ArgType.MandatoryParameter; eFunction.argsList.Add(eArg); } else if (argType.Contains("optional")) { eArg.argType = ArgType.OptionalParameter; eFunction.argsList.Add(eArg); } else if (argType.Contains("segment")) { eArg.argType = ArgType.Segment; eFunction.argsList.Add(eArg); } else if (argType.Contains("form")) { eArg.argType = ArgType.FormData; eFunction.argsList.Add(eArg); if (eFunction.functionType == FunctionType.GET || eFunction.functionType == FunctionType.DELETE) { Logger.LogError("Get/Delete function can not have form in file " + file + " at line number " + lineNumber.ToString() + ": " + txt); return(false); } } else if (argType.Contains("body")) { eArg.argType = ArgType.Body; eFunction.argsList.Add(eArg); if (eFunction.functionType == FunctionType.GET || eFunction.functionType == FunctionType.DELETE) { Logger.LogError("Get/Delete function can not have body in file " + file + " at line number " + lineNumber.ToString() + ": " + txt); return(false); } } else { Logger.LogError("unable to idenfity argument type in file " + file + " at line number " + lineNumber.ToString() + ": " + txt); return(false); } return(true); } catch (Exception e) { Logger.LogError(e); } return(false); }
static private EFunction AnalyseTypeSyncFunction(string file, string txt, int lineNumber) { try { //Logger.LogInfo("analysing typesync function:" + txt); var regex = new Regex("\".*\"", RegexOptions.Singleline, TimeSpan.FromMilliseconds(1000)); Match match = regex.Match(txt); if (!match.Success) { Logger.LogError("unable to analyse function in file " + file + " at line number " + lineNumber.ToString() + ": " + txt); return(null); } string content = match.Captures[0].Value; content = content.Replace("\"", String.Empty); EFunction eFunction = new EFunction(); if (txt.Contains("RestInPeaceGet")) { eFunction.functionType = FunctionType.GET; } else if (txt.Contains("RestInPeacePut")) { eFunction.functionType = FunctionType.PUT; } else if (txt.Contains("RestInPeacePost")) { eFunction.functionType = FunctionType.POST; } else if (txt.Contains("RestInPeaceDelete")) { eFunction.functionType = FunctionType.DELETE; } eFunction.argsList = new List <EArg>(); eFunction.version = GetVersion(file, lineNumber, txt); if (eFunction.version < 1) { Logger.LogError("unable to detect function version in file " + file + " at line number " + lineNumber.ToString() + ": " + txt); return(null); } if (!GetFunctionNameAndReturnType(file, lineNumber, content, ref eFunction)) { Logger.LogError("unable to get function name in file " + file + " at line number " + lineNumber.ToString() + ": " + txt); return(null); } if (!GetFunctionArguments(file, lineNumber, content, ref eFunction)) { Logger.LogError("unable to get function arguments in file " + file + " at line number " + lineNumber.ToString() + ": " + txt); return(null); } StringBuilder args = new StringBuilder(); for (int i = 0; i < eFunction.argsList.Count; i++) { EArg eArg = eFunction.argsList.ElementAt(i); if (eArg.argType == ArgType.Body) { args.Append("body "); } else if (eArg.argType == ArgType.OptionalParameter) { args.Append("optional "); } else if (eArg.argType == ArgType.MandatoryParameter) { args.Append("mandatory "); } else if (eArg.argType == ArgType.Segment) { args.Append("segment "); } args.Append(eArg.typeName); args.Append(" "); args.Append(eArg.name); if (i < (eFunction.argsList.Count - 1)) { args.Append(", "); } } Logger.LogInfoIfDebugLevel(DebugLevels.Functions | DebugLevels.All, "\t\t" + eFunction.functionName); return(eFunction); } catch (Exception e) { Logger.LogError(e); } return(null); }
static private string GetFunctionBody(EFunctionFile eFile, EFunction eFunction, string operation, List <EArg> segmentsList, List <EArg> mandatoryList, List <EArg> optionalList, List <EArg> formArgList, EArg bodyArg) { try { List <EArg> parametersList = mandatoryList; parametersList.AddRange(optionalList); StringBuilder bodyTxt = new StringBuilder(); bodyTxt.Append("\t\tif(progressBar)progressBar.visible=true;\n"); bodyTxt.Append("\t\tlet rest=base.createRestObj();\n"); bodyTxt.Append("\t\trest.clear();\n"); bodyTxt.Append("\t\trest.setBaseUrl(base.baseURL);\n"); var cSharpClassName = "S" + eFile.frontendClassName.Remove(0, 1); bodyTxt.Append("\t\trest.setRoute('/v" + eFunction.version.ToString() + "/" + cSharpClassName + "/" + eFunction.functionName + "');\n"); bodyTxt.Append("\t\trest.setToken(base.token);\n"); foreach (EArg eArgSegment in segmentsList) { bodyTxt.Append("\t\trest.appendUrlSegment(" + eArgSegment.name + ");\n"); } foreach (EArg eArgParameter in parametersList) { bodyTxt.Append("\t\trest.appendParameter('" + eArgParameter.name + "'," + eArgParameter.name + ");\n"); } if (bodyArg != null) { bodyTxt.Append("\t\trest.setBody(JSON.stringify(" + bodyArg.name + "));\n"); } bodyTxt.Append("\t\treturn rest." + Helper.GetRESTOperationForQML(eFile, eFunction, true) + "(progressBar);\n"); bodyTxt.Append("\t}"); return(bodyTxt.ToString()); } catch (Exception e) { Logger.LogError(e); } return(""); }
static private string GetFunctionBody(EFunctionFile eFile, EFunction eFunction, string operation, List <EArg> segmentsList, List <EArg> mandatoryList, List <EArg> optionalList, List <EArg> formArgList, EArg bodyArg) { try { StringBuilder bodyTxt = new StringBuilder(); bodyTxt.Append("\t\t\ttry{\n"); if (eFunction.returnTypeName != "void") { bodyTxt.Append("\t\t\t\t" + eFunction.returnTypeName + " result = await (Defines.RestBaseURL+\"/v" + eFunction.version.ToString() + "/S" + eFile.frontendClassName + "/" + eFunction.functionName + "\")\n"); } else { bodyTxt.Append("\t\t\t\t await (Defines.RestBaseURL+\"/v" + eFunction.version.ToString() + "/" + eFile.csharpFileName + "/" + eFunction.functionName + "\")\n"); } foreach (EArg eArgSegment in segmentsList) { bodyTxt.Append("\t\t\t\t\t.AppendPathSegment(" + eArgSegment.name + ")\n"); } foreach (EArg mandatoryArg in mandatoryList) { bodyTxt.Append("\t\t\t\t\t.SetQueryParam(\"" + mandatoryArg.name + "\", " + mandatoryArg.name + ")\n"); } foreach (EArg optionalArg in optionalList) { bodyTxt.Append("\t\t\t\t\t.SetQueryParam(\"" + optionalArg.name + "\", " + optionalArg.name + ")\n"); } bodyTxt.Append("\t\t\t\t\t.WithHeader(\"Authorization\",\"Bearer \"+Defines.Token)\n"); if (eFunction.functionType == FunctionType.GET || eFunction.functionType == FunctionType.DELETE) { if (eFunction.returnTypeName != "void") { bodyTxt.Append("\t\t\t\t\t.GetJsonAsync<" + eFunction.returnTypeName + ">();\n"); } else { bodyTxt.Append("\t\t\t\t\t.GetAsync();\n"); } } else if (eFunction.functionType == FunctionType.POST) { if (bodyArg != null) { bodyTxt.Append("\t\t\t\t\t.PostJsonAsync(JsonConvert.SerializeObject(" + bodyArg.name + "))\n"); } else { bodyTxt.Append("\t\t\t\t\t.PostAsync(null)\n"); } if (eFunction.returnTypeName != "void") { bodyTxt.Append("\t\t\t\t\t.ReceiveJson<" + eFunction.returnTypeName + ">();\n"); } } else if (eFunction.functionType == FunctionType.PUT) { if (bodyArg != null) { bodyTxt.Append("\t\t\t\t\t.PutJsonAsync(JsonConvert.SerializeObject(" + bodyArg.name + "))\n"); } else { bodyTxt.Append("\t\t\t\t\t.PutAsync(null)\n"); } if (eFunction.returnTypeName != "void") { bodyTxt.Append("\t\t\t\t\t.ReceiveJson<" + eFunction.returnTypeName + ">();\n"); } } if (eFunction.returnTypeName != "void") { bodyTxt.Append("\t\t\t\treturn result;\n"); } bodyTxt.Append("\t\t\t}catch(Exception ex){\n"); bodyTxt.Append("\t\t\t\tLogger.LogError(ex);\n"); bodyTxt.Append("\t\t\t}\n"); if (eFunction.returnTypeName != "void") { if (eFunction.returnTypeName == "bool") { bodyTxt.Append("\t\t\treturn false;\n"); } else if (eFunction.returnTypeName == "int" || eFunction.returnTypeName == "Int64" || eFunction.returnTypeName == "Int32" || eFunction.returnTypeName == "double" || eFunction.returnTypeName == "float") { bodyTxt.Append("\t\t\treturn -1;\n"); } else if (eFunction.returnTypeName == "TimeSpan") { bodyTxt.Append("\t\t\treturn new TimeSpan();\n"); } else { bodyTxt.Append("\t\t\treturn null;\n"); } } bodyTxt.Append("\t\t}\n"); return(bodyTxt.ToString()); } catch (Exception e) { Logger.LogError(e); } return(""); }
static private bool GetFunctionArgs(EFunction eFunction, ref StringBuilder argsStringBuilder, out List <EArg> allArgsList, out List <EArg> segmentsList, out List <EArg> mandatoryList, out List <EArg> optionalList, out List <EArg> formArgList, out EArg bodyArg) { segmentsList = null; mandatoryList = null; optionalList = null; formArgList = null; allArgsList = new List <EArg>(); bodyArg = null; try { //orderby then to linq nao funciona para mesmo campo bodyArg = Helper.GetBodyArg(eFunction.argsList); segmentsList = Helper.GetSegmentsArgs(eFunction.argsList); mandatoryList = Helper.GetMandatoryArgs(eFunction.argsList); optionalList = Helper.GetOptionalArgs(eFunction.argsList); formArgList = Helper.GetFormArgs(eFunction.argsList); if (bodyArg != null) { allArgsList.Add(bodyArg); } if (segmentsList.Any()) { allArgsList.AddRange(segmentsList); } if (mandatoryList.Any()) { allArgsList.AddRange(mandatoryList); } if (optionalList.Any()) { allArgsList.AddRange(optionalList); } if (formArgList.Any()) { allArgsList.AddRange(formArgList); } for (int i = 0; i < allArgsList.Count; i++) { EArg eArg = allArgsList.ElementAt(i); argsStringBuilder.Append(eArg.name); argsStringBuilder.Append(":"); argsStringBuilder.Append(AngularWatcher.ConvertToAngularTypeName(eArg.typeName)); if (!string.IsNullOrEmpty(eArg.defaultValue)) { argsStringBuilder.Append("=" + eArg.defaultValue); } if (i < (allArgsList.Count - 1)) { argsStringBuilder.Append(", "); } } if (argsStringBuilder.Length > 0) { argsStringBuilder.Append(", timeoutSeconds:number=20000"); } else { argsStringBuilder.Append("timeoutSeconds:number=20000"); } return(true); } catch (Exception e) { Logger.LogError(e); } return(false); }
static private string GetFunctionBody(EFunctionFile eFile, EFunction eFunction, string operation, List <EArg> segmentsList, List <EArg> mandatoryList, List <EArg> optionalList, List <EArg> formArgList, EArg bodyArg) { try { StringBuilder bodyTxt = new StringBuilder(); if (formArgList.Any()) { bodyTxt.Append("\t\tlet formData = new FormData();\n"); foreach (EArg formArg in formArgList) { if (formArg.typeName == "any") { bodyTxt.Append("\t\tformData.append('" + formArg.name + "', " + formArg.name + ");\n"); } else { bodyTxt.Append("\t\tformData.append('" + formArg.name + "', " + formArg.name + ".toString());\n"); } } bodyTxt.Append("\t\tconst response = await this.authHttp." + operation + "(Defines.RestBaseURL + '/v" + eFunction.version.ToString() + "/S" + eFile.frontendClassName + "/" + eFunction.functionName + "'"); if (string.IsNullOrEmpty(AngularFunctionWriter.restInPeaceVersion)) { bodyTxt.Append(", formData).timeout(timeoutSeconds*1000).toPromise().catch(Helper.handleError);\n"); } else { bodyTxt.Append(", formData).toPromise().catch(Helper.handleError);\n"); } bodyTxt.Append("\t\treturn response;\n"); bodyTxt.Append("\t}"); return(bodyTxt.ToString()); } if (mandatoryList.Count > 0 || optionalList.Count > 0) { bodyTxt.Append("\t\tlet params: HttpParams = new HttpParams();\n"); foreach (EArg mandatoryArg in mandatoryList) { bodyTxt.Append("\t\tparams= params.set('" + mandatoryArg.name + "', " + mandatoryArg.name + ".toString());\n"); } foreach (EArg optionalArg in optionalList) { bodyTxt.Append("\t\tif(" + optionalArg.name + "!=null) params= params.set('" + optionalArg.name + "', " + optionalArg.name + ".toString());\n"); } } bodyTxt.Append("\t\tconst response = await this.authHttp." + operation + "(Defines.RestBaseURL + '/v" + eFunction.version.ToString() + "/S" + eFile.frontendClassName + "/" + eFunction.functionName + "'"); foreach (EArg eArgSegment in segmentsList) { bodyTxt.Append("+'/'+" + eArgSegment.name); } if (bodyArg != null) { if (string.IsNullOrEmpty(AngularFunctionWriter.restInPeaceVersion)) { bodyTxt.Append(", JSON.stringify(" + bodyArg.name + ")"); } else { bodyTxt.Append(", JSON.stringify(" + bodyArg.name + "), Defines.httpOptions"); } } else { if ((!string.IsNullOrEmpty(AngularFunctionWriter.restInPeaceVersion)) && (eFunction.functionType == FunctionType.POST || eFunction.functionType == FunctionType.PUT)) { bodyTxt.Append(", Defines.httpOptions"); } } if (string.IsNullOrEmpty(AngularFunctionWriter.restInPeaceVersion)) { if (eFunction.functionType == FunctionType.PUT || eFunction.functionType == FunctionType.POST) { bodyTxt.Append(", { headers: Defines.Headers }"); } } if (mandatoryList.Count > 0 || optionalList.Count > 0) { bodyTxt.Append(", {params: params}"); } if (string.IsNullOrEmpty(AngularFunctionWriter.restInPeaceVersion)) { bodyTxt.Append(").timeout(timeoutSeconds*1000).toPromise().catch(Helper.handleError);\n"); } else { bodyTxt.Append(").toPromise().catch(Helper.handleError);\n"); } if (string.IsNullOrEmpty(AngularFunctionWriter.restInPeaceVersion)) { bodyTxt.Append("\t\treturn response.json();\n"); } else { bodyTxt.Append("\t\treturn response;\n"); } bodyTxt.Append("\t}"); return(bodyTxt.ToString()); } catch (Exception e) { Logger.LogError(e); } return(""); }
static private string GetFunctionBody(EFunctionFile eFile, EFunction eFunction, string operation, List <EArg> segmentsList, List <EArg> mandatoryList, List <EArg> optionalList, List <EArg> formArgList, EArg bodyArg) { try { List <EArg> parametersList = mandatoryList; parametersList.AddRange(optionalList); StringBuilder bodyTxt = new StringBuilder(); bodyTxt.Append("\tif(progressBar)progressBar.visible=true;\n"); bodyTxt.Append("\tvar rest=base.createRestObj();\n"); bodyTxt.Append("\trest.clear();\n"); bodyTxt.Append("\trest.setBaseUrl(dstore.baseURL);\n"); bodyTxt.Append("\trest.setRoute('/v" + eFunction.version.ToString() + "/" + eFile.csharpFileName + "/" + eFunction.functionName + "');\n"); bodyTxt.Append("\trest.setToken(dstore.token);\n"); foreach (EArg eArgSegment in segmentsList) { bodyTxt.Append("\trest.appendUrlSegment(" + eArgSegment.name + ");\n"); } foreach (EArg eArgParameter in parametersList) { bodyTxt.Append("\trest.appendParameter('" + eArgParameter.name + "'," + eArgParameter.name + ");\n"); } if (bodyArg != null) { bodyTxt.Append("\trest.setBody(JSON.stringify(" + bodyArg.name + "));\n"); } if (!isForTypescriptApp) { bodyTxt.Append("\trest." + Helper.GetRESTOperationForQML(eFile, eFunction, isForTypescriptApp) + "(function(response){\n"); bodyTxt.Append("\t\tif(progressBar)progressBar.visible=false;\n"); bodyTxt.Append("\t\tvar result=JSON.parse(response);\n"); bodyTxt.Append("\t\tcallback(result);\n"); bodyTxt.Append("\t});\n"); } else //for typescript app { bodyTxt.Append("\treturn rest." + Helper.GetRESTOperationForQML(eFile, eFunction, isForTypescriptApp) + "(progressBar);\n"); } bodyTxt.Append("}"); return(bodyTxt.ToString()); } catch (Exception e) { Logger.LogError(e); } return(""); }
static private string GetFunctionBody(EFunctionFile eFile, EFunction eFunction, string operation, List <EArg> segmentsList, List <EArg> mandatoryList, List <EArg> optionalList, List <EArg> formArgList, EArg bodyArg) { try { StringBuilder bodyTxt = new StringBuilder(); // if (formArgList.Any()) { // bodyTxt.Append("\t\tlet formData = new FormData();\n"); // foreach (EArg formArg in formArgList) { // if (formArg.typeName == "any") bodyTxt.Append("\t\tformData.append('" + formArg.name + "', " + formArg.name + ");\n"); // else bodyTxt.Append("\t\tformData.append('" + formArg.name + "', " + formArg.name + ".toString());\n"); // } // bodyTxt.Append("\t\tconst response = await this.authHttp." + operation + "(Defines.RestBaseURL + '/v" + eFunction.version.ToString() + "/" + eFile.csharpFileName + "/" + eFunction.functionName + "'"); // if (string.IsNullOrEmpty(AngularFunctionWriter.restInPeaceVersion)) bodyTxt.Append(", formData).timeout(timeoutSeconds*1000).toPromise().catch(Helper.handleError);\n"); // else bodyTxt.Append(", formData).toPromise().catch(Helper.handleError);\n"); // bodyTxt.Append("\t\treturn response.json();\n"); // bodyTxt.Append("\t}"); // return bodyTxt.ToString(); // } // if (mandatoryList.Count > 0 || optionalList.Count > 0) { // bodyTxt.Append("\t\tlet params: HttpParams = new HttpParams();\n"); // foreach (EArg mandatoryArg in mandatoryList) { // bodyTxt.Append("\t\tparams= params.set('" + mandatoryArg.name + "', " + mandatoryArg.name + ".toString());\n"); // } // foreach (EArg optionalArg in optionalList) { // bodyTxt.Append("\t\tif(" + optionalArg.name + "!=null) params= params.set('" + optionalArg.name + "', " + optionalArg.name + ".toString());\n"); // } // } bodyTxt.Append("\n\t\tfinal response = await http." + operation + "(Defines.RestBaseURL + '/v" + eFunction.version.ToString() + "/" + eFile.csharpFileName + "/" + eFunction.functionName); if (segmentsList.Count == 0) { bodyTxt.Append("'"); } foreach (EArg eArgSegment in segmentsList) { bodyTxt.Append("/${" + eArgSegment.name + "}"); } if (segmentsList.Count > 0) { bodyTxt.Append("'"); } bodyTxt.Append(",\n\t\t\t\theaders: {\"Content-Type\": \"application/json\", \"Authorization\": \"Bearer \"+Defines.JwtToken},"); if (bodyArg != null) { switch (bodyArg.typeName) //cshartptype { case "string": bodyTxt.Append("\n\t\t\t\tbody: json.encode(" + bodyArg.name + "));\n\n"); break; default: bodyTxt.Append("\n\t\t\t\tbody: json.encode(" + bodyArg.name + ".toJson()));\n\n"); break; } } else { bodyTxt.Append(");\n\n"); } // if (string.IsNullOrEmpty(AngularFunctionWriter.restInPeaceVersion)) { // if (eFunction.functionType == FunctionType.PUT || eFunction.functionType == FunctionType.POST) { // bodyTxt.Append(", { headers: Defines.Headers }"); // } // } // if (mandatoryList.Count > 0 || optionalList.Count > 0) { // bodyTxt.Append(", {params: params}"); // } bodyTxt.Append("\t\tif (response.statusCode != 200) print('(" + eFile.frontendClassName + ")" + eFunction.functionName + " error. Status code: ${response.statusCode}');\n"); if (eFunction.frontendReturnTypeName != "void") { bodyTxt.Append("\t\treturn "); if (eFunction.frontendReturnTypeName == "int") { bodyTxt.Append(eFunction.frontendReturnTypeName + ".parse(response.body);\n"); } else if (eFunction.frontendReturnTypeName == "bool") { bodyTxt.Append("BoolHelper.convertStringToBool(response.body);\n"); } else if (eFunction.frontendReturnTypeName.Contains("List<")) { string nameWithoutList = StringHelper.RemoveString(eFunction.returnTypeName, "List<"); nameWithoutList = StringHelper.RemoveString(nameWithoutList, ">"); bodyTxt.Append("(json.decode(response.body) as List).map((e) => new " + nameWithoutList + ".fromJson(e)).toList();\n"); } else if (eFunction.frontendReturnTypeName == "String") { bodyTxt.Append("json.decode(response.body);\n"); } else { bodyTxt.Append(eFunction.frontendReturnTypeName + ".fromJson(json.decode(response.body));\n"); } } bodyTxt.Append("\t}"); return(bodyTxt.ToString()); } catch (Exception e) { Logger.LogError(e); } return(""); }
static private bool GetFunctionArgs(EFunction eFunction, ref StringBuilder argsStringBuilder, out List <EArg> allArgsList, out List <EArg> segmentsList, out List <EArg> mandatoryList, out List <EArg> optionalList, out List <EArg> formArgList, out EArg bodyArg) { segmentsList = null; mandatoryList = null; optionalList = null; formArgList = null; allArgsList = new List <EArg>(); bodyArg = null; try { //orderby then to linq nao funciona para mesmo campo bodyArg = Helper.GetBodyArg(eFunction.argsList); segmentsList = Helper.GetSegmentsArgs(eFunction.argsList); mandatoryList = Helper.GetMandatoryArgs(eFunction.argsList); optionalList = Helper.GetOptionalArgs(eFunction.argsList); formArgList = Helper.GetFormArgs(eFunction.argsList); if (bodyArg != null) { allArgsList.Add(bodyArg); } if (segmentsList.Any()) { allArgsList.AddRange(segmentsList); } if (mandatoryList.Any()) { allArgsList.AddRange(mandatoryList); } if (optionalList.Any()) { allArgsList.AddRange(optionalList); } if (formArgList.Any()) { allArgsList.AddRange(formArgList); } bool optionalArgsStarted = false; for (int i = 0; i < allArgsList.Count; i++) { EArg eArg = allArgsList.ElementAt(i); bool hasDefaultValue = !string.IsNullOrEmpty(eArg.defaultValue); if (hasDefaultValue && (!optionalArgsStarted)) { argsStringBuilder.Append("{"); optionalArgsStarted = true; } string flutterTypeName = FlutterWatcher.GetFlutterType(eArg.typeName, out bool isAnotherEntityImport); argsStringBuilder.Append(flutterTypeName + " " + eArg.name); if (hasDefaultValue) { argsStringBuilder.Append("=" + eArg.defaultValue); } if (i < (allArgsList.Count - 1)) { argsStringBuilder.Append(", "); } } if (optionalArgsStarted) { argsStringBuilder.Append("}"); } return(true); } catch (Exception e) { Logger.LogError(e); } return(false); }