public void ProcessDvColumnCollection()
        {
            //if (this.DVColumnColl != null)////////check
            //    return;

            this.Controls.Where(e => (e as EbDGColumn).Width <= 0).ToList().ForEach(e => (e as EbDGColumn).Width = 10);
            int widthSum = this.Controls.Where(e => !e.IsDisable).Select(e => (e as EbDGColumn).Width).Sum();

            this.DVColumnColl = new DVColumnCollection();
            int indx = 0;

            foreach (EbDGColumn column in this.Controls)
            {
                DVBaseColumn _col = column.GetDVBaseColumn(indx);
                if (!column.IsDisable)
                {
                    _col.sWidth = column.Width * 100.0 / widthSum + "%";
                }

                //if (column.EbDbType == EbDbTypes.Int16 || column.EbDbType == EbDbTypes.Int32 || column.EbDbType == EbDbTypes.Int64 || column.EbDbType == EbDbTypes.Double || column.EbDbType == EbDbTypes.Decimal || column.EbDbType == EbDbTypes.VarNumeric)
                //    _col = new DVNumericColumn { Data = indx, Name = column.Name, sTitle = column.Name, Type = column.EbDbType, bVisible = true, sWidth = "100px",
                //        Align = Align.Right, Aggregate = true,DecimalPlaces=2 };
                //else if (column.EbDbType == EbDbTypes.Boolean)
                //    _col = new DVBooleanColumn { Data = indx, Name = column.Name, sTitle = column.Name, Type = column.EbDbType, bVisible = true, sWidth = "100px" };
                //else if (column.EbDbType == EbDbTypes.DateTime || column.EbDbType == EbDbTypes.Date || column.EbDbType == EbDbTypes.Time)
                //    _col = new DVDateTimeColumn { Data = indx, Name = column.Name, sTitle = column.Name, sType = "date-uk", Type = column.EbDbType, bVisible = true, sWidth = "100px" };
                //else
                //    _col = new DVStringColumn { Data = indx, Name = column.Name, sTitle = column.Name, Type = column.EbDbType, bVisible = true, sWidth = "100px" };

                _col.EbSid      = column.EbDbType.ToString() + indx;
                _col.RenderType = _col.Type;
                DVColumnColl.Add(_col);
                indx++;
            }
            DVColumnColl.Add(new DVStringColumn {
                Data = indx++, Name = "id", sTitle = "id", Type = EbDbTypes.Int32, bVisible = false, sWidth = "100px"
            });
            DVColumnColl.Add(new DVStringColumn {
                IsCustomColumn = true, Data = indx, Name = "settings", sTitle = "<i class='fa fa-cog'></i>", Type = EbDbTypes.String, bVisible = true, sWidth = "100px"
            });
        }
        private string GetFormattedValue(long value, EbDataRow row, int columnIndex, long prev_value, CultureInfo _user_culture, DVBaseColumn col)
        {
            string Val           = (value == 0) ? string.Empty : Convert.ToDecimal(value).ToString("N", _user_culture.NumberFormat);
            string formatteddata = string.Empty;

            if (ConditionalFormating.Count > 0)
            {
                DoConditionalFormating(ref formatteddata, value, row);
            }
            else
            {
                if (this.ObjectLinks.Count == 1)
                {
                    formatteddata = "<a href ='#' class ='tablelink4calendar cal-data' idx='" + columnIndex + "'>" + Val + "</a>";
                }
                else
                {
                    formatteddata = "<span clas ='cal-data'>" + Val + "</span>";
                }

                if (ShowGrowthPercentage && CalendarType != AttendanceType.DayWise && prev_value > 0 && value > 0)
                {
                    long   percent = ((value - prev_value) * 100) / value;
                    string color = "green", direction = "up";
                    if (percent < 0)
                    {
                        color     = "red";
                        direction = "down";
                        percent  *= -1;
                    }
                    ;
                    formatteddata += @"  <span class='per-cont " + color + "'>" +
                                     "<i class='fa fa-caret-" + direction + "'></i>" +
                                     "<div class='val-perc'>" + percent + "% </div>" +
                                     "</span>";
                }
            }
            formatteddata = $"<div class='dataclass {col.Name}_class'>{formatteddata }</div>";
            return(formatteddata);
        }
        private EbDataVisualization getDVObject(EbDataVisualization dvobj)
        {
            //DataSourceColumnsResponse columnresp = null;
            DataSourceColumnsResponse columnresp = this.Redis.Get <DataSourceColumnsResponse>(string.Format("{0}_columns", dvobj.DataSourceRefId));

            if (columnresp == null || columnresp.Columns.Count == 0)
            {
                columnresp = this.ServiceClient.Get <DataSourceColumnsResponse>(new DataSourceColumnsRequest {
                    RefId = dvobj.DataSourceRefId, TenantAccountId = ViewBag.cid
                });
            }

            dvobj.AfterRedisGet(this.Redis);

            var __columns = (columnresp.Columns.Count > 1) ? columnresp.Columns[1] : columnresp.Columns[0];
            int _pos      = __columns.Count + 100;

            dvobj.Columns = new DVColumnCollection();
            // Add Serial & Checkbox
            //dvobj.Columns.Add(new DVNumericColumn { Name = "serial", sTitle = "#", Type = DbType.Int64, bVisible = true, sWidth = "10px", Pos = -2 });
            //dvobj.Columns.Add(new DVBooleanColumn { Name = "checkbox", sTitle = "checkbox", Type = DbType.Boolean, bVisible = false, sWidth = "10px", Pos = -1 });


            foreach (EbDataColumn column in __columns)
            {
                DVBaseColumn _col = null;

                if (column.Type == DbType.String)
                {
                    _col = new DVStringColumn {
                        Data = column.ColumnIndex, Name = column.ColumnName, sTitle = column.ColumnName, Type = column.Type, bVisible = true, sWidth = "100px", Pos = _pos, ClassName = "tdheight"
                    }
                }
                ;
                else if (column.Type == DbType.Int16 || column.Type == DbType.Int32 || column.Type == DbType.Int64 || column.Type == DbType.Double || column.Type == DbType.Decimal || column.Type == DbType.VarNumeric)
                {
                    _col = new DVNumericColumn {
                        Data = column.ColumnIndex, Name = column.ColumnName, sTitle = column.ColumnName, Type = column.Type, bVisible = true, sWidth = "100px", Pos = _pos, ClassName = "tdheight dt-body-right"
                    }
                }
                ;
                else if (column.Type == DbType.Boolean)
                {
                    _col = new DVBooleanColumn {
                        Data = column.ColumnIndex, Name = column.ColumnName, sTitle = column.ColumnName, Type = column.Type, bVisible = true, sWidth = "100px", Pos = _pos, ClassName = "tdheight"
                    }
                }
                ;
                else if (column.Type == DbType.DateTime || column.Type == DbType.Date || column.Type == DbType.Time)
                {
                    _col = new DVDateTimeColumn {
                        Data = column.ColumnIndex, Name = column.ColumnName, sTitle = column.ColumnName, Type = column.Type, bVisible = true, sWidth = "100px", Pos = _pos, ClassName = "tdheight"
                    }
                }
                ;

                dvobj.Columns.Add(_col);
            }
            dvobj.DSColumns = dvobj.Columns;
            return(dvobj);
        }
    }
        public void AfterRedisGetBasicInfo(IServiceClient client, IRedisClient Redis)
        {
            this.FormLinks = new List <FormLink>();
            foreach (DVBaseColumn col in this.Columns)
            {
                if (col.Check4FormLink())
                {
                    try
                    {
                        this.WebForm = Redis.Get <EbWebForm>(col.LinkRefId);
                        if (this.WebForm == null)
                        {
                            var result = client.Get <EbObjectParticularVersionResponse>(new EbObjectParticularVersionRequest {
                                RefId = col.LinkRefId
                            });
                            this.WebForm = EbSerializers.Json_Deserialize(result.Data[0].Json);
                            Redis.Set <EbWebForm>(col.LinkRefId, this.WebForm);
                        }
                        this.FormLinks.Add(new FormLink {
                            DisplayName = this.WebForm.DisplayName, Refid = col.LinkRefId, Params = col.FormParameters
                        });
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("AfterRedisGetBasicInfo " + e.Message);
                    }
                }
            }
            this.FormLinks = this.FormLinks.GroupBy(x => x.Refid).Select(x => x.First()).ToList();
            DVBaseColumn Col = this.Columns.Get("eb_action");

            if (Col != null)
            {
                foreach (DVColumnCollection _colcoll in this.ColumnsCollection)
                {
                    DVBaseColumn __col = _colcoll.Pop(Col.Name, EbDbTypes.String, false);
                }
                if (Col is DVStringColumn && this.AutoGen)
                {
                    DVBaseColumn actcol = new DVActionColumn
                    {
                        Data           = Col.Data,
                        Name           = Col.Name,
                        sTitle         = Col.sTitle,
                        Type           = EbDbTypes.String,
                        bVisible       = true,
                        sWidth         = "100px",
                        ClassName      = Col.ClassName,
                        LinkRefId      = Col.LinkRefId,
                        LinkType       = Col.LinkType,
                        FormMode       = Col.FormMode,
                        FormId         = Col.FormId,
                        Align          = Align.Center,
                        IsCustomColumn = true
                    };
                    this.Columns.Remove(Col);
                    this.Columns.Add(actcol);
                }
            }
            if (this.Columns.Get("eb_created_by") != null)
            {
                this.Columns.Get("eb_created_by").RenderType = EbDbTypes.String;
            }
            if (this.Columns.Get("eb_lastmodified_by") != null)
            {
                this.Columns.Get("eb_lastmodified_by").RenderType = EbDbTypes.String;
            }
            if (this.Columns.Get("eb_loc_id") != null)
            {
                this.Columns.Get("eb_loc_id").RenderType = EbDbTypes.String;
            }
        }