private static string GenerateViewText(string templateType, string templateName, string ClassName, string TableName, string CategoryName, string autogenWarningText) { //Splittum template-inu í flokka eftir --PROPERTIES-- taginu var splitTemplate = TemplateParser.SplitTemplate(TemplateParser.ParseTemplate("Views/" + templateType, templateName, ClassName, TableName, CategoryName, "")); //Náum í lista af properties fyrir töflunafnið var properties = DatabaseMockup.Get_propertyType_propertyName_List(TableName); //Byrjum á að smíða texta strenginn, setjum fyrst inn viðvörun um að file-inn sé auto generated string viewText = "@* " + autogenWarningText + " *@" + Environment.NewLine; //Síðan setjum við efsta part splittaða template-sins inn viewText += splitTemplate.ElementAt(0).ToString(); //Útbúum færibreytu sem segir okkur til um hvort við séum að fara í gegnum for lykkjuna tvisvar sinnum, það þarf að gera það fyrir List view-in int k = 0; for (int i = 0; i < properties.Count; i++) { if (templateType == "CreateEdit") { //Special case fyrir selectable, það á að vera represent-að á sérstakan hátt, ekki sem int if (DatabaseMockup.IsSelectable(CategoryName, properties.ElementAt(i).Item2)) { //Trimmum Id af endanum á property ef við erum að eiga við selectable, Id er sett inn í template-inu fyrir selectable string propertyTrimmed = properties.ElementAt(i).Item2.Substring(0, properties.ElementAt(i).Item2.Length - 2); viewText += TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Selectable", ClassName, TableName, CategoryName, propertyTrimmed); } //Special case fyrir boolean else if (properties.ElementAt(i).Item1 == "bool") { viewText += TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Bool", ClassName, TableName, CategoryName, properties.ElementAt(i).Item2); } //Special case fyrir primary Id, sem er ekki höndlað eins og önnur editable int og er partur af Create og Edit views(sleppt í Create og hafður hidden í Edit) else if (properties.ElementAt(i).Item2 != "Id") { //Ef við erum ekki að deal-a við special case, eins og Id, þá getum við lesið template-ið fyrir property-ið beint úr CreateEdittype template-inu viewText += TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Type", ClassName, TableName, CategoryName, properties.ElementAt(i).Item2); } //Setjum inn newline á milli properties á meðan við erum ekki á primaryKey, þetta er til þess að losna við auka línubil sem myndast annars í Create og Edit fyrir Id-ið, það er ekki höndlað sem property hér heldur tilgreint í ViewTemplate-unum sjálfum if (properties.ElementAt(i).Item2 != "Id") { viewText += Environment.NewLine; } } else if (templateType == "Details") { viewText += TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Type", ClassName, TableName, CategoryName, properties.ElementAt(i).Item2); //Setjum inn newline á milli properties viewText += Environment.NewLine; } else if (templateType == "List") { var splitListPropertyTypeTemplate = new List <string>(); //Special case fyrir selectable, það á að vera represent-að á sérstakan hátt, ekki sem int if (DatabaseMockup.IsSelectable(CategoryName, properties.ElementAt(i).Item2)) { //Trimmum Id af endanum á property ef við erum að eiga við selectable, Id er sett inn í template-inu fyrir selectable string propertyTrimmed = properties.ElementAt(i).Item2.Substring(0, properties.ElementAt(i).Item2.Length - 2); //Splittum Template file-um fyrir ListView þar sem við erum bæði með fyrir ofan og neðan töflu í þeim splitListPropertyTypeTemplate = TemplateParser.SplitTemplate(TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Selectable", ClassName, TableName, CategoryName, propertyTrimmed)); } else { //Splittum Template file-um fyrir ListView þar sem við erum bæði með fyrir ofan og neðan töflu í þeim splitListPropertyTypeTemplate = TemplateParser.SplitTemplate(TemplateParser.ParseTemplate("Views/" + templateType, templateType + "Type", ClassName, TableName, CategoryName, properties.ElementAt(i).Item2)); } if (properties.ElementAt(i).Item2 == "Id") { } //Setjum annaðhvort efri eða neðri part property-sins inn, fer eftir því hvort við erum á first eða second pass í for lykkjunni viewText += splitListPropertyTypeTemplate.ElementAt(k).ToString(); } //Ef við erum að eiga við lista og erum komin á enda properties þá þurfum við að gera k að 1 og fara aftur í gegnum properties; það þarf að setja inn neðri helming list-view-sins if (templateType == "List" && i == properties.Count - 1 && k == 0) { i = -1; // k = 1; viewText += splitTemplate.ElementAt(1); //Bætum við miðju úr töflu } } //Setjum inn lokahluta template-sins, það er á mismunandi stað eftir því hvort verið er að eiga við lista eða Edit/Create views if (templateType == "List") { viewText += splitTemplate.ElementAt(2); } else { viewText += splitTemplate.ElementAt(1); } return(viewText); }