From d33c19b3ac6803de4b5c8d475832efef131c1a45 Mon Sep 17 00:00:00 2001 From: Roy Ben Shabat Date: Wed, 30 Dec 2020 15:11:34 +0000 Subject: Revert "Hope it is fine" --- .../DbPropertyExtensionModel.cs | 42 +++++++++++++++ .../Tango.CodeGeneration/EntityCodeFile.cs | 2 +- .../Tango.CodeGeneration/RangeDescriptionModel.cs | 15 ------ .../Tango.CodeGeneration.csproj | 4 +- .../TangoWebClientv2CodeFile.cs | 30 +++++++++++ .../Templates/EntityCodeFile.cshtml | 31 ++++++++++-- .../Templates/TangoWebClientCodeFile.cshtml | 9 ++++ .../Templates/TangoWebClientv2CodeFile.cshtml | 59 ++++++++++++++++++++++ 8 files changed, 170 insertions(+), 22 deletions(-) create mode 100644 Software/Visual_Studio/Tango.CodeGeneration/DbPropertyExtensionModel.cs delete mode 100644 Software/Visual_Studio/Tango.CodeGeneration/RangeDescriptionModel.cs create mode 100644 Software/Visual_Studio/Tango.CodeGeneration/TangoWebClientv2CodeFile.cs create mode 100644 Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientv2CodeFile.cshtml (limited to 'Software/Visual_Studio/Tango.CodeGeneration') diff --git a/Software/Visual_Studio/Tango.CodeGeneration/DbPropertyExtensionModel.cs b/Software/Visual_Studio/Tango.CodeGeneration/DbPropertyExtensionModel.cs new file mode 100644 index 000000000..c02094273 --- /dev/null +++ b/Software/Visual_Studio/Tango.CodeGeneration/DbPropertyExtensionModel.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.CodeGeneration +{ + public class DbPropertyExtensionModel + { + public String Description { get; set; } + public double Min { get; set; } + public double Max { get; set; } + public String StringFormat { get; set; } + public int? Index { get; set; } + + public bool HasDescription + { + get { return Description != null; } + } + + public bool HasRange + { + get { return Min != Max; } + } + + public bool HasStringFormat + { + get { return StringFormat != null; } + } + + public bool HasIndex + { + get { return Index != null; } + } + + public DbPropertyExtensionModel() + { + StringFormat = "0.0"; + } + } +} diff --git a/Software/Visual_Studio/Tango.CodeGeneration/EntityCodeFile.cs b/Software/Visual_Studio/Tango.CodeGeneration/EntityCodeFile.cs index 24d61bb0a..8126c8bc4 100644 --- a/Software/Visual_Studio/Tango.CodeGeneration/EntityCodeFile.cs +++ b/Software/Visual_Studio/Tango.CodeGeneration/EntityCodeFile.cs @@ -66,7 +66,7 @@ namespace Tango.CodeGeneration public String DbDescription { get; set; } - public RangeDescriptionModel RangeDescription { get; set; } + public DbPropertyExtensionModel PropertyExtension { get; set; } public bool IsForeignKey { get; set; } diff --git a/Software/Visual_Studio/Tango.CodeGeneration/RangeDescriptionModel.cs b/Software/Visual_Studio/Tango.CodeGeneration/RangeDescriptionModel.cs deleted file mode 100644 index 4600460b7..000000000 --- a/Software/Visual_Studio/Tango.CodeGeneration/RangeDescriptionModel.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Tango.CodeGeneration -{ - public class RangeDescriptionModel - { - public String Description { get; set; } - public double Min { get; set; } - public double Max { get; set; } - } -} diff --git a/Software/Visual_Studio/Tango.CodeGeneration/Tango.CodeGeneration.csproj b/Software/Visual_Studio/Tango.CodeGeneration/Tango.CodeGeneration.csproj index 6bff5b42e..41413f4bd 100644 --- a/Software/Visual_Studio/Tango.CodeGeneration/Tango.CodeGeneration.csproj +++ b/Software/Visual_Studio/Tango.CodeGeneration/Tango.CodeGeneration.csproj @@ -77,7 +77,7 @@ - + @@ -90,6 +90,7 @@ + @@ -125,6 +126,7 @@ + diff --git a/Software/Visual_Studio/Tango.CodeGeneration/TangoWebClientv2CodeFile.cs b/Software/Visual_Studio/Tango.CodeGeneration/TangoWebClientv2CodeFile.cs new file mode 100644 index 000000000..421655d07 --- /dev/null +++ b/Software/Visual_Studio/Tango.CodeGeneration/TangoWebClientv2CodeFile.cs @@ -0,0 +1,30 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Tango.CodeGeneration +{ + public class TangoWebClientv2CodeFile : Class + { + public class ControllerAction + { + public String Name { get; set; } + public String Request { get; set; } + public String Response { get; set; } + } + + public String Namespace { get; set; } + public String ControllerName { get; set; } + public String LoginRequest { get; set; } + public String LoginResponse { get; set; } + + public List Actions { get; set; } + + public TangoWebClientv2CodeFile() + { + Actions = new List(); + } + } +} diff --git a/Software/Visual_Studio/Tango.CodeGeneration/Templates/EntityCodeFile.cshtml b/Software/Visual_Studio/Tango.CodeGeneration/Templates/EntityCodeFile.cshtml index 950e24f79..76c035df9 100644 --- a/Software/Visual_Studio/Tango.CodeGeneration/Templates/EntityCodeFile.cshtml +++ b/Software/Visual_Studio/Tango.CodeGeneration/Templates/EntityCodeFile.cshtml @@ -19,6 +19,7 @@ using System.Linq; using Tango.DAL.Remote.DB; using Tango.Core; using System.ComponentModel; +using Tango.Core.CustomAttributes; namespace Tango.BL.Entities { @@ -67,12 +68,32 @@ namespace Tango.BL.Entities @(prop.IsForeignKey ? "[ForeignKey(\"" + prop.ForeignKeyName + "\")]" : "") @(prop.XmlIgnore ? "[XmlIgnore]" : "") @(prop.XmlIgnore ? "[JsonIgnore]" : "") - @if (prop.RangeDescription != null) + @if (prop.PropertyExtension != null) { -
- [Description("@(prop.RangeDescription.Description)")] - [Range(@(prop.RangeDescription.Min),@(prop.RangeDescription.Max))] -
+ if (prop.PropertyExtension.HasDescription) + { +
+ [Description("@(prop.PropertyExtension.Description)")] +
+ } + if (prop.PropertyExtension.HasRange) + { +
+ [Range(@(prop.PropertyExtension.Min),@(prop.PropertyExtension.Max))] +
+ } + if (prop.PropertyExtension.HasStringFormat) + { +
+ [StringFormat("@(prop.PropertyExtension.StringFormat)")] +
+ } + if (prop.PropertyExtension.HasIndex) + { +
+ [PropertyIndex(@(prop.PropertyExtension.Index))] +
+ } } public @(prop.Construct || prop.Complex ? "virtual" : "") @(prop.Type) @(prop.Name) { diff --git a/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientCodeFile.cshtml b/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientCodeFile.cshtml index 7d9ebc075..3918ce928 100644 --- a/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientCodeFile.cshtml +++ b/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientCodeFile.cshtml @@ -42,6 +42,15 @@ namespace @(model.Namespace) } + /// + /// Initializes a new instance of the class. + /// + /// Other instance. + public @(model.Name)(@(model.Name) cloned) : base(cloned) + { + + } + @foreach (var action in model.Actions) {
diff --git a/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientv2CodeFile.cshtml b/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientv2CodeFile.cshtml new file mode 100644 index 000000000..cfcc89716 --- /dev/null +++ b/Software/Visual_Studio/Tango.CodeGeneration/Templates/TangoWebClientv2CodeFile.cshtml @@ -0,0 +1,59 @@ +@{ + Tango.CodeGeneration.TangoWebClientv2CodeFile model = Model as Tango.CodeGeneration.TangoWebClientv2CodeFile; +} +using System; +using System.Threading.Tasks; +using Tango.Web; + +namespace @(model.Namespace) +{ + /// + /// Represents a machine service @(model.ControllerName) web client. + /// + /// + public abstract class @(model.Name) : TangoWebClientV2<@(model.LoginRequest), @(model.LoginResponse)> + { + /// + /// Initializes a new instance of the class. + /// + /// The service address. + /// Existing token. + public @(model.Name)(String address, String token) : base(address, "@(model.ControllerName)", token) + { + + } + + /// + /// Initializes a new instance of the class. + /// + /// The service address. + public @(model.Name)(String address) : this(address, null) + { + + } + + /// + /// Initializes a new instance of the class. + /// + /// Other instance. + public @(model.Name)(@(model.Name) cloned) : base(cloned) + { + + } + + @foreach (var action in model.Actions) + { +
+ /// + /// Executes the @(action.Name) action and returns @(action.Response). + /// + /// + public Task<@(action.Response)> @(action.Name)(@(action.Request) request) + { + return Post<@(action.Request), @(action.Response)>("@(action.Name)", request); + } + +
+ } + } +} \ No newline at end of file -- cgit v1.3.1