예제 #1
0
        public DataSet GetDataBrowserDetails(DatabrowserDropdownFilterServiceModel fieldDetailsFilterModel)
        {
            try
            {
                if (fieldDetailsFilterModel == null)
                {
                    // return exceptions
                }
                //get connection related Details
                int connectionId      = fieldDetailsFilterModel.ConnectionId;
                var connectionDetails = new DatabaseConnection();
                var paginations       = fieldDetailsFilterModel.PageSize * (fieldDetailsFilterModel.PageNumber - 1);

                using (var repo = new RepositoryPattern <DatabaseConnection>())
                {
                    connectionDetails = repo.SelectByID(connectionId);
                }
                List <FieldConfiguration> fieldConfigurationDetails = new List <FieldConfiguration>();
                using (var repo = new RepositoryPattern <FieldConfiguration>())
                {
                    fieldConfigurationDetails = repo.SelectAll().Where(a => a.TableConfigId == fieldDetailsFilterModel.Id && a.IsDisplay.HasValue && a.IsDisplay.Value).ToList();
                }
                string refTableSelectQuery = string.Empty;
                string masterTableAlias    = $"{fieldDetailsFilterModel.MasterTableName}_{DateTime.UtcNow.ToFileTimeUtc()}";

                ///////
                var leftJoinDetails = GetLeftJoinTablesDetailsToDisplay(fieldConfigurationDetails, fieldDetailsFilterModel, masterTableAlias, out refTableSelectQuery);
                //////

                string selectQuery = GetSelectQueryDetails(fieldDetailsFilterModel.MasterTableName, fieldConfigurationDetails, refTableSelectQuery, masterTableAlias);
                string totalCount  = "SELECT COUNT(*) AS [TotalCount] FROM " + fieldDetailsFilterModel.MasterTableName;

                string query = selectQuery + " " + leftJoinDetails + " ORDER BY " + masterTableAlias + ".Id OFFSET " + paginations + " ROWS FETCH NEXT " + fieldDetailsFilterModel.PageSize + " ROWS ONLY  " + totalCount;

                string connectionString = "server= " + connectionDetails.ServerInstanceName + ";Initial Catalog=" + connectionDetails.DatabaseName + " ;uid=" + connectionDetails.UserName + ";pwd=" + connectionDetails.Password + ";";

                using (SqlConnection conn = new SqlConnection(connectionString))
                {
                    conn.Open();
                    using (SqlCommand cmd = new SqlCommand(query, conn))
                    {
                        DataSet        ds = new DataSet();
                        SqlDataAdapter da = new SqlDataAdapter();
                        da = new SqlDataAdapter(cmd);
                        da.Fill(ds);
                        conn.Close();
                        return(ds);
                    }
                }
            }
            catch (Exception ex)
            {
                throw;
            }
        }
예제 #2
0
 public HttpResponseMessage GetFieldsDetails(DatabrowserDropdownFilterServiceModel fieldDetailsFilterModel)
 {
     return(Request.CreateResponse(HttpStatusCode.OK, _dataBrowserService.GetDataBrowserDetails(fieldDetailsFilterModel)));
 }
예제 #3
0
        private string GetLeftJoinTablesDetailsToDisplay(List <FieldConfiguration> fieldConfigurationDetails, DatabrowserDropdownFilterServiceModel fieldDetailsFilterModel, string masterTableAlias, out string refTableSelectQuery)
        {
            var newFieldConfigurationDetails = fieldConfigurationDetails.Where(c => c.FieldMappingConfigurations.Any()).ToList();
            var leftJoinDetails = string.Empty;
            var refTableSelectQueriesWithAlias = new List <string>();
            var counter = default(int);

            newFieldConfigurationDetails.ForEach(v =>
            {
                counter    += 1;
                var queries = string.Empty;
                var onQuery = string.Empty;
                List <string> displayColumns = new List <string>();
                var tableAlias = $"{v.ReferenceTableName}_{DateTime.UtcNow.ToFileTimeUtc()}" + counter.ToString();
                if (!string.IsNullOrEmpty(v.ReferenceTableName) && !string.IsNullOrWhiteSpace(v.ReferenceTableName))
                {
                    onQuery = tableAlias + @"." + v.ReferenceColumnName + @" = " + masterTableAlias + @"." + v.SourceColumnName;
                }
                queries          = @" LEFT JOIN [" + v.ReferenceTableName + "] " + tableAlias + @" ON " + onQuery;
                leftJoinDetails += queries;
                if (v.FieldMappingConfigurations.Any())
                {
                    displayColumns = v.FieldMappingConfigurations.Select(mapping => tableAlias + @"." + mapping.MapColumnName).ToList();
                }
                refTableSelectQueriesWithAlias.AddRange(displayColumns);
            });
            refTableSelectQuery = String.Join(",", refTableSelectQueriesWithAlias);
            return(leftJoinDetails);
        }