Exemplo n.º 1
0
		protected void WriteFile(string path, string file, StringBuilderIndented builder)
		{
			if (!Directory.Exists(path))
				Directory.CreateDirectory(path);

			string fullPath = Path.Combine(path, file);

			File.WriteAllText(fullPath, builder.ToString(), Encoding.UTF8);
		}
Exemplo n.º 2
0
		private void GenerateQuery(CSharpConfig config)
		{
			foreach (var group in config.DataBaseItems)
			{
				foreach (var table in group.Items)
				{
					string path = Path.Combine(config.ConcretePath, group.Name, "Query");
					string file = Path.Combine(path, $"{table.Name}Query.cs");

					if (File.Exists(file))
						continue;

					var nameSpace = new List<string> { "System", "System.Linq", "System.Collections.Generic", "XCommon.Patterns.Specification.Query", "XCommon.Patterns.Specification.Query.Extensions", "XCommon.Extensions.String", "XCommon.Extensions.Checks" };
					nameSpace.Add($"{config.DataBase.NameSpace}.{group.Name}");
					nameSpace.Add($"{config.EntrityNameSpace}.{group.Name}.Filter");

					StringBuilderIndented builder = new StringBuilderIndented();

					var columnOrder = table.Properties.Any(c => c.Name == "Name")
						? "Name"
						: table.NameKey;

					builder
						.ClassInit($"{table.Name}Query", $"SpecificationQuery<{table.Name}, {table.Name}Filter>", $"{config.ConcreteNameSpace}.{group.Name}.Query", ClassVisility.Public, nameSpace.ToArray())
						.AppendLine($"public override IQueryable<{table.Name}> Build(IQueryable<{table.Name}> source, {table.Name}Filter filter)")
						.AppendLine("{")
						.IncrementIndent()
						.AppendLine($"var spefications = NewSpecificationList()")
						.IncrementIndent()
						.AppendLine($".And(e => e.{table.NameKey} == filter.Key, f => f.Key.HasValue)")
						.AppendLine($".And(e => filter.Keys.Contains(e.{table.NameKey}), f => f.Keys.IsValidList())")
						.AppendLine($".OrderBy(e => e.{columnOrder})")
						.AppendLine(".Take(filter.PageNumber, filter.PageSize);")
						.DecrementIndent()
						.AppendLine()
						.AppendLine("return CheckSpecifications(spefications, source, filter);")
						.DecrementIndent()
						.AppendLine("}")
						.ClassEnd();

					if (!Directory.Exists(path))
						Directory.CreateDirectory(path);

					File.WriteAllText(file, builder.ToString(), Encoding.UTF8);
				}
			}
		}
Exemplo n.º 3
0
		private void GenerateConcrete(CSharpConfig config)
		{
			foreach (var group in config.DataBaseItems)
			{
				foreach (var item in group.Items)
				{
					string path = Path.Combine(config.ConcretePath, group.Name);
					string file = Path.Combine(path, $"{item.Name}Business.cs");

					if (File.Exists(file))
						continue;

					var nameSpace = new List<string> { "System", " XCommon.Patterns.Repository" };
					nameSpace.Add($"{config.EntrityNameSpace}.{group.Name}");
					nameSpace.Add($"{config.EntrityNameSpace}.{group.Name}.Filter");
					nameSpace.Add($"{config.ContractNameSpace}.{group.Name}");
					nameSpace.Add($"{config.DataBase.NameSpace}");
					nameSpace.Add($"{config.DataBase.NameSpace}.{group.Name}");

					StringBuilderIndented builder = new StringBuilderIndented();

					builder
						.ClassInit($"{item.Name}Business", $"RepositoryEFBase<{item.Name}Entity, {item.Name}Filter, {item.Name}, {config.DataBase.ContextName}>, I{item.Name}Business", $"{config.ConcreteNameSpace}.{group.Name}", ClassVisility.Public, nameSpace.ToArray())
						.ClassEnd();

					if (!Directory.Exists(path))
						Directory.CreateDirectory(path);

					File.WriteAllText(file, builder.ToString(), Encoding.UTF8);
				}
			}
		}
Exemplo n.º 4
0
		private string BuidService(TypeScriptResource config, StringBuilderIndented builder)
		{
			builder
				.AppendLine("@Injectable()")
				.AppendLine("export class ResourceService {")
				.IncrementIndent()
				.AppendLine(config.LazyLoad ? "constructor(private http: Http) {" : "constructor() {")
				.IncrementIndent();

			BuildLanguageSuportedContructor(config, builder);

			builder
				.AppendLine($"this.SetLanguage(\"{config.CultureDefault.Name}\")")
				.DecrementIndent()
				.AppendLine("}")
				.AppendLine();

			if (config.LazyLoad)
			{
				builder
					.AppendLine("private Resources: Map<IResource> = {};");
			}

			builder
				.AppendLine("public Languages: ApplicationCulture[] = [];")
				.AppendLine("private Language: ApplicationCulture;")
				.AppendLine();

			foreach (var resource in Resources)
			{
				builder.AppendLine($"public {resource.ResourceName}: I{resource.ResourceName};");
			}

			builder
				.AppendLine()
				.AppendLine("public GetLanguage(): ApplicationCulture {")
				.IncrementIndent()
				.AppendLine("return this.Language;")
				.DecrementIndent()
				.AppendLine("}")
				.AppendLine()
				.AppendLine("public SetLanguage(language: string): void {")
				.IncrementIndent()
				.AppendLine()

				.AppendLine("if (this.Language && this.Language.Name === language) {")
				.IncrementIndent()
				.AppendLine("return;")
				.DecrementIndent()
				.AppendLine("}")
				.AppendLine()

				.AppendLine("let value = this.Languages.find((item: ApplicationCulture) => item.Name == language);")
				.AppendLine()
				.AppendLine("if (!value) {")
				.IncrementIndent()
				.AppendLine($"console.warn(`Unknown language: ${{language}}! Set up current culture as the default language: {config.CultureDefault.Name}`);")
				.AppendLine($"this.SetLanguage(\"{config.CultureDefault.Name}\");")
				.AppendLine("return;")
				.DecrementIndent()
				.AppendLine("}")
				.AppendLine()
				.AppendLine("this.Language = value;")
				.AppendLine();


			if (!config.LazyLoad)
			{
				BuildNormalService(config, builder);
			}

			if (config.LazyLoad)
			{
				BuildLazyService(config, builder);
			}

			builder
				.DecrementIndent()
							.AppendLine("}")
							.DecrementIndent()
							.AppendLine("}");

			return builder.ToString();
		}