//*************************************** // ____ // | _ \ // | |_) | // | _ < // | |_) | // |____/ // // Browse our Data Type (B)READ // //**************************************** public IActionResult Index() { IEnumerable <dynamic> dataTypeContent = null; // GET THE SLUG, ex. 'posts', 'pages', etc. //var slug = GetSlug($request); var slug = "roles"; var tableName = "roles"; var keyColumn = "id"; // GET THE DataType based on the slug var dataType = db.Query("data_types").Where("slug", "=", slug).First(); // Check permission //$this->authorize('browse', app($dataType->model_name)); var getter = Convert.ToBoolean(dataType.server_side) ? "paginate" : "get"; var search = new Dictionary <string, string>() { { "value", Request.Query["s"].ToString() }, { "key", Request.Query["key"].ToString() }, { "filter", Request.Query["filter"].ToString() }, }; var searchNames = new Dictionary <string, string>(); if (Convert.ToBoolean(dataType.server_side)) { var searchable = SchemaManager.DescribeTable(db, tableName); var dataRow = db.Query("data_rows").Where("data_type_id", "=", dataType.id); foreach (var value in searchable) { var field = db.Query("data_rows").Where("field", value).First(); var displayName = value.Replace('_', ' ');//ucwords(str_replace('_', ' ', $value)); //if (field !== null) { // displayName = field->getTranslatedAttribute('display_name'); //} searchNames.Add(value, displayName); } } var orderBy = !string.IsNullOrEmpty(Request.Query["order_by"]) ? Request.Query["order_by"].ToString() : dataType.order_column; var sortOrder = !string.IsNullOrEmpty(Request.Query["sort_order"]) ? Request.Query["sort_order"].ToString() : dataType.order_direction; var usesSoftDeletes = false; var showSoftDeleted = false; // Next Get or Paginate the actual content from the MODEL that corresponds to the slug DataType if (Convert.ToString(dataType.model_name).Length != 0) { IVoyagerModel model = ObjectInstance.GetGenericInstanceOfDifferentAssembly <IVoyagerModel>(dataType.model_name); var table = model["TableName"].ToString(); var query = db.Query(tableName); //if (model.checkFunc("LocalScope")) //{ // query = model.func("LocalScope", new object[] { query }) as Query; //} // if ($dataType->scope && $dataType->scope != '' && method_exists($model, 'scope'.ucfirst($dataType->scope))) { // $query = $model->{$dataType->scope} (); // } else // { query = query.Select($"{table}.*"); // } // // Use withTrashed() if model uses SoftDeletes and if toggle is selected // if ($model && in_array(SoftDeletes::class, class_uses_recursive($model)) && Auth::user()->can('delete', app($dataType->model_name))) { // $usesSoftDeletes = true; // if ($request->get('showSoftDeleted')) { // $showSoftDeleted = true; // $query = $query->withTrashed(); // } //} // // If a column has a relationship associated with it, we do not want to show that field // $this->removeRelationshipField($dataType, 'browse'); string search_filter = string.Empty; string search_value = string.Empty; if (!string.IsNullOrEmpty(search["value"]) && !string.IsNullOrEmpty(search["key"]) && !string.IsNullOrEmpty(search["filter"])) { search_filter = (search["filter"] == "equals") ? "=" : "LIKE"; search_value = (search["filter"] == "equals") ? search["value"] : $"%{search["value"]}%"; query = query.Where(search["key"], search_filter, search_value); } if (!string.IsNullOrEmpty(orderBy)) { //if (string.IsNullOrEmpty(orderBy) && in_array($orderBy, $dataType->fields())) { var querySortOrder = (!string.IsNullOrEmpty(sortOrder)) ? sortOrder : "desc"; dataTypeContent = query.OrderBy(orderBy, querySortOrder); //$dataTypeContent = call_user_func([ // $query->orderBy($orderBy, $querySortOrder), // $getter, //]); } //elseif($model->timestamps) { // $dataTypeContent = call_user_func([$query->latest($model::CREATED_AT), $getter]); //} else { dataTypeContent = (IEnumerable <dynamic>)query.OrderByDesc(keyColumn).Get(); return(Ok(dataTypeContent)); } // // Replace relationships' keys for labels and create READ links if a slug is provided. // $dataTypeContent = $this->resolveRelations($dataTypeContent, $dataType); // } else //{ // // If Model doesn't exist, get data from table name // $dataTypeContent = call_user_func([DB::table($dataType->name), $getter]); // $model = false; } return(View()); }