private void LoadReportSettings()
    {
        if (_reportID < 0)
        {
            return;
        }
        try
        {
            ReportData reportData = new ReportData(UserSession.LoginUser);
            reportData.LoadReportData(_reportID, UserSession.LoginUser.UserID);
            if (reportData.IsEmpty)
            {
                return;
            }

            TSUtils.LoadGridSettings(gridReport, reportData[0].ReportData);
            if (_isCustom && reportData[0].QueryObject.Trim() != "")
            {
                filterControl.ReportConditions           = (ReportConditions)DataUtils.StringToObject(reportData[0].QueryObject);
                filterControl.ReportConditions.LoginUser = UserSession.LoginUser;
            }

            try
            {
                gridReport.MasterTableView.Columns.FindByUniqueName("ButtonOpen").HeaderStyle.Width = new Unit(32, UnitType.Pixel);
            }
            catch (Exception) { }
        }
        catch (Exception)
        {
        }
    }
        /// <summary>
        /// Transforme le type en type Typescript.
        /// </summary>
        /// <param name="property">La propriété dont on cherche le type.</param>
        /// <returns>Le type en sortie.</returns>
        private string CSharpToTSType(ModelProperty property)
        {
            if (property.Name == "Code")
            {
                return($"{property.Class.Name}Code");
            }
            else if (property.Name.EndsWith("Code", StringComparison.Ordinal))
            {
                return(property.Name.ToFirstUpper());
            }

            return(TSUtils.CSharpToTSType(property));
        }
 private void SaveReportSettings()
 {
     if (_reportID < 0 || !IsPostBack || filterControl.ReportID != _reportID)
     {
         return;
     }
     try
     {
         string data = TSUtils.ReadGridSettings(gridReport);
         if (_isCustom)
         {
             ReportData.SaveReportData(UserSession.LoginUser, _reportID, UserSession.LoginUser.UserID, data, DataUtils.ObjectToString(filterControl.ReportConditions));
         }
         else
         {
             ReportData.SaveReportData(UserSession.LoginUser, _reportID, UserSession.LoginUser.UserID, data, "");
         }
     }
     catch (Exception ex)
     {
     }
 }
        /// <summary>
        /// Génère les définitions Typescript.
        /// </summary>
        /// <param name="rootNamespace">Namespace de l'application.</param>
        /// <param name="parameters">Paramètres.</param>
        /// <param name="modelRootList">La liste des modèles.</param>
        public static void Generate(string rootNamespace, JavascriptParameters parameters, ICollection <ModelRoot> modelRootList)
        {
            if (parameters.ModelOutputDirectory == null)
            {
                return;
            }

            var nameSpaceMap = new Dictionary <string, List <ModelClass> >();

            foreach (var model in modelRootList)
            {
                foreach (var modelNameSpace in model.Namespaces.Values)
                {
                    var namespaceName = TSUtils.ToNamespace(modelNameSpace.Name);

                    if (!nameSpaceMap.ContainsKey(namespaceName))
                    {
                        nameSpaceMap.Add(namespaceName, new List <ModelClass>());
                    }

                    nameSpaceMap[namespaceName].AddRange(modelNameSpace.ClassList);
                }
            }

            foreach (var entry in nameSpaceMap)
            {
                var staticLists = new List <ModelClass>();

                foreach (var model in entry.Value)
                {
                    if (!model.IsStatique)
                    {
                        if (!parameters.IsGenerateEntities && model.DataContract.IsPersistent)
                        {
                            continue;
                        }

                        var fileName = model.Name.ToDashCase();
                        Console.Out.WriteLine($"Generating Typescript file: {fileName}.ts ...");

                        fileName = $"{parameters.ModelOutputDirectory}/{entry.Key.ToDashCase(false)}/{fileName}.ts";
                        var fileInfo = new FileInfo(fileName);

                        var isNewFile = !fileInfo.Exists;

                        var directoryInfo = fileInfo.Directory;
                        if (!directoryInfo.Exists)
                        {
                            Directory.CreateDirectory(directoryInfo.FullName);
                        }

                        var template = new TypescriptTemplate {
                            RootNamespace = rootNamespace, Model = model
                        };
                        var result = template.TransformText();
                        File.WriteAllText(fileName, result, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
                    }
                    else
                    {
                        staticLists.Add(model);
                    }
                }

                if (staticLists.Any())
                {
                    Console.Out.WriteLine($"Generating Typescript file: references.ts ...");
                    var fileName = $"{parameters.ModelOutputDirectory}/{entry.Key.ToDashCase(false)}/references.ts";
                    var fileInfo = new FileInfo(fileName);

                    var isNewFile = !fileInfo.Exists;

                    var directoryInfo = fileInfo.Directory;
                    if (!directoryInfo.Exists)
                    {
                        Directory.CreateDirectory(directoryInfo.FullName);
                    }

                    var template = new ReferenceTemplate {
                        References = staticLists.OrderBy(r => r.Name)
                    };
                    var result = template.TransformText();
                    File.WriteAllText(fileName, result, new UTF8Encoding(encoderShouldEmitUTF8Identifier: false));
                }
            }
        }
Beispiel #5
0
 /// <summary>
 /// 获得当前请求的URL中double类型参数值
 /// </summary>
 /// <param name="paramName">参数的名称</param>
 /// <param name="defaultValue">缺省的值</param>
 /// <returns></returns>
 public double GetDoubleValue(string paramName, double defaultValue)
 {
     return(TSUtils.GetSafeDouble(this.paramsCollection[paramName], defaultValue));
 }
Beispiel #6
0
 /// <summary>
 /// 获得当前请求的URL中float类型参数值
 /// </summary>
 /// <param name="paramName">参数的名称</param>
 /// <param name="defaultValue">缺省的值</param>
 /// <returns></returns>
 public float GetFloatValue(string paramName, float defaultValue)
 {
     return(TSUtils.GetSafeFloat(this.paramsCollection[paramName], defaultValue));
 }
Beispiel #7
0
 /// <summary>
 /// 获得当前请求的URL中int类型参数值
 /// </summary>
 /// <param name="paramName">参数的名称</param>
 /// <param name="defaultValue">缺省的值</param>
 /// <returns></returns>
 public long GetLongValue(string paramName, long defaultValue)
 {
     return(TSUtils.GetSafeLong(this.paramsCollection[paramName], defaultValue));
 }
Beispiel #8
0
 /// <summary>
 /// 获得当前请求的URL中int类型参数值
 /// </summary>
 /// <param name="paramName">参数的名称</param>
 /// <param name="defaultValue">缺省的值</param>
 /// <returns></returns>
 public int GetIntValue(string paramName, int defaultValue)
 {
     return(TSUtils.GetSafeInt(this.paramsCollection[paramName], defaultValue));
 }
Beispiel #9
0
 /// <summary>
 /// 获得当前请求的URL中bool类型参数值
 /// </summary>
 /// <param name="paramName">参数的名称</param>
 /// <param name="defaultValue">缺省的值</param>
 /// <returns></returns>
 public bool GetBoolValue(string paramName, bool defaultValue)
 {
     return(TSUtils.GetSafeBool(this.paramsCollection[paramName], defaultValue));
 }
Beispiel #10
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            Write("/*\r\n    Ce fichier a été généré automatiquement.\r\n    Toute modification sera per" +
                  "due.\r\n*/\r\n\r\nimport {EntityToType, StoreNode} from \"focus4/entity\";\r\nimport {");

            Write(string.Join(", ", GetDomainList()));
            Write("} from \"../../domains\";\r\n");

            var imports = GetImportList();

            foreach (var import in imports)
            {
                Write("\r\nimport {");
                Write(import.import);
                Write("} from \"");
                Write(import.path);
                Write("\";");
            }
            if (imports.Any())
            {
                Write("\r\n");
            }

            Write("\r\nexport type ");
            Write(Model.Name);
            Write(" = EntityToType<typeof ");
            Write(Model.Name);
            Write("Entity>;\r\nexport type ");
            Write(Model.Name);
            Write("Node = StoreNode<typeof ");
            Write(Model.Name);
            Write("Entity>;\r\n\r\nexport const ");
            Write(Model.Name);
            Write("Entity = {\r\n    name: \"");
            Write(Model.Name.ToFirstLower());
            Write("\",\r\n    fields: {\r\n");

            if (Model.ParentClass != null)
            {
                Write("        ...");
                Write(Model.ParentClass.Name);
                Write("Entity.fields,\r\n");
            }

            foreach (var property in Model.PropertyList)
            {
                Write("        ");
                Write(property.Name.ToFirstLower());
                Write(": {\r\n            type: ");
                if (IsArray(property))
                {
                    Write("\"list\" as \"list\"");
                }
                else if (property.IsFromComposition)
                {
                    Write("\"object\" as \"object\"");
                }
                else
                {
                    Write("\"field\" as \"field\"");
                }

                Write(",\r\n        ");

                if (GetDomain(property) != null)
                {
                    Write("    name: \"");
                    Write(property.Name.ToFirstLower());
                    Write("\",\r\n            fieldType: {} as ");
                    Write(TSUtils.CSharpToTSType(property));
                    Write(",\r\n            domain: ");
                    Write(GetDomain(property));
                    Write(",\r\n            isRequired: ");
                    Write((property.DataMember.IsRequired && (!property.IsPrimaryKey || property.DataType != "int?")).ToString().ToFirstLower());
                    Write(",\r\n            label: \"");
                    Write(TSUtils.ToNamespace(Model.Namespace.Name));
                    Write(".");
                    Write(Model.Name.ToFirstLower());
                    Write(".");
                    Write(property.Name.ToFirstLower());
                    Write("\"\r\n        ");
                }
                else
                {
                    Write("    entity: ");
                    Write(GetReferencedType(property));
                    Write("Entity\r\n        ");
                }

                Write("}");

                if (property != Model.PropertyList.Last())
                {
                    Write(",");
                }

                Write("\r\n");
            }

            Write("    }\r\n};\r\n");

            if (Model.IsReference)
            {
                Write("\r\nexport const ");
                Write(Model.Name.ToFirstLower());
                Write(" = {type: {} as ");
                Write(Model.Name);
                Write(", valueKey: \"");
                Write(Model.PrimaryKey.First().Name.ToFirstLower());
                Write("\", labelKey: \"");
                Write(Model.DefaultProperty?.ToFirstLower() ?? "libelle");
                Write("\"};\r\n");
            }

            return(GenerationEnvironment.ToString());
        }
Beispiel #11
0
    private static DataTable GetReportDataTable(Report report)
    {
        using (SqlConnection connection = new SqlConnection(UserSession.LoginUser.ConnectionString))
        {
            // Pull repoprt data in preparation to apply column order and sort.
            ReportData reportData = new ReportData(UserSession.LoginUser);
            reportData.LoadReportData(report.ReportID, UserSession.LoginUser.UserID);
            Pair[] columnOrder = null;

            if (!reportData.IsEmpty)
            {
                LosFormatter formatter    = new LosFormatter();
                StringReader reader       = new StringReader(reportData[0].ReportData);
                object[]     gridSettings = (object[])formatter.Deserialize(reader);
                columnOrder = (Pair[])gridSettings[2];

                if (string.IsNullOrEmpty(reportData[0].OrderByClause))
                {
                    // here is where we need to get the order by clause and initialize the report data.
                    // this most be in the first version of the code.
                    string sortColumn    = null;
                    string sortDirection = null;
                    TSUtils.GetSortColumnAndDirection((ArrayList)gridSettings[1], ref sortColumn, ref sortDirection);
                    if (sortColumn != null)
                    {
                        string sortArgumentSuffix = null;
                        if (string.Compare(sortDirection, "Descending", StringComparison.OrdinalIgnoreCase) == 0)
                        {
                            sortArgumentSuffix = " DESC";
                        }
                        else
                        {
                            sortArgumentSuffix = " ASC";
                        }

                        reportData[0].OrderByClause = sortColumn + sortArgumentSuffix;
                        reportData[0].Collection.Save();
                    }
                }
            }

            // Get Table
            string query = report.GetSqlWithOrderByClause(false, null);
            query = query.Replace("SELECT ", "SELECT TOP 100 ");
            SqlCommand command = new SqlCommand(query, connection);
            Report.CreateParameters(UserSession.LoginUser, command, UserSession.LoginUser.UserID);
            SqlDataAdapter adapter = new SqlDataAdapter(command);
            DataTable      table   = new DataTable();
            connection.Open();
            try
            {
                adapter.Fill(table);
            }
            catch (Exception ex)
            {
                try
                {
                    adapter.SelectCommand.CommandText = report.GetSqlOld(false);
                    adapter.Fill(table);
                }
                catch (Exception ex2)
                {
                    ex.Data["Query"] = query;
                    ExceptionLogs.LogException(UserSession.LoginUser, ex2, "Dashboard");
                }
            }

            // columnNames used to apply column order.
            string[] columnNames = new string[table.Columns.Count];

            for (int i = 0; i < table.Columns.Count; i++)
            {
                table.Columns[i].ColumnName = table.Columns[i].ColumnName.Replace(' ', '_');
                columnNames[i] = table.Columns[i].ColumnName;
            }

            // Apply column order.
            if (columnOrder != null)
            {
                int standardReportAdjuster = 0;
                int columnOrderAdjuster    = 2;

                if (columnOrder.Length > table.Columns.Count)
                {
                    standardReportAdjuster = 1;
                    columnOrderAdjuster    = 3;
                }

                for (int i = 0; i < table.Columns.Count; i++)
                {
                    table.Columns[columnNames[i]].SetOrdinal((int)columnOrder[i + standardReportAdjuster].First - columnOrderAdjuster);
                }
            }

            return(table);
        }
    }
Beispiel #12
0
        /// <summary>
        /// Create the template output
        /// </summary>
        public virtual string TransformText()
        {
            Write("/*\r\n    Ce fichier a été généré automatiquement.\r\n    Toute modification sera per" +
                  "due.\r\n*/\r\n\r\nimport {fetch} from \"");

            Write(ServerPath);
            Write("\";\r\n");

            if (GetImportList().Any())
            {
                Write("\r\n");
            }

            foreach (var import in GetImportList())
            {
                Write("import {");
                Write(import.import);
                Write("} from \"");
                Write(import.path);
                Write("\";\r\n");
            }

            foreach (var service in Services)
            {
                Write("\r\n/**\r\n * ");
                Write(service.Documentation.Summary);
                Write("\r\n");

                foreach (var param in service.Documentation.Parameters)
                {
                    Write(" * @param ");
                    Write(param.Item1);
                    Write(" ");
                    Write(param.Item2);
                    Write("\r\n");
                }

                Write(" * @param options Fetch options.\r\n */\r\nexport function ");
                Write(service.Name.ToFirstLower());
                Write("(");

                foreach (var parameter in service.Parameters)
                {
                    Write(parameter.Name);
                    Write(parameter.IsOptional ? "?" : "");
                    Write(": ");
                    Write(TSUtils.CSharpToTSType(parameter.Type));

                    if (parameter.Name != service.Parameters.Last().Name)
                    {
                        Write(", ");
                    }
                }
                if (service.Parameters.Count() > 0)
                {
                    Write(", ");
                }

                Write("options: RequestInit = {}): Promise<");
                Write(TSUtils.CSharpToTSType(service.ReturnType));
                Write("> {\r\n    return fetch(\"");
                Write(service.Verb);
                Write("\", `./");
                Write(Regex.Replace(service.Route.Replace("{", "${"), ":([a-z]+)", string.Empty));
                Write("`, {");

                if (service.BodyParameter != null)
                {
                    Write("body: ");
                    Write(service.BodyParameter.Name);
                }

                if (service.BodyParameter != null && service.QueryParameters.Any())
                {
                    Write(", ");
                }

                if (service.QueryParameters.Any())
                {
                    Write("query: {");

                    foreach (var qParam in service.QueryParameters)
                    {
                        Write(qParam.Name);

                        if (qParam.Name != service.QueryParameters.Last().Name)
                        {
                            Write(", ");
                        }
                    }

                    Write("}");
                }

                Write("}, options);\r\n}\r\n");
            }

            return(GenerationEnvironment.ToString());
        }