public async Task <IViewComponentResult> InvokeAsync(Models.Component component) { var viewName = component.View ?? "Default"; ViewBag.CssClass = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "CssClass")?.Value; return(await Task.FromResult(View(viewName, component))); }
public async Task <IViewComponentResult> InvokeAsync(Models.Component component) { var viewName = component.View ?? "Default"; ViewBag.Src = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "Src")?.Value; ViewBag.Width = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "Width")?.Value; ViewBag.Height = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "Height")?.Value; return(await Task.FromResult(View(viewName, component))); }
public async Task <IViewComponentResult> InvokeAsync(Models.Component component) { var viewName = component.View ?? "Default"; var componentId = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "Form")?.Value; var c = _context.Components.Include(d => d.ComponentType).FirstOrDefault(d => d.Id == componentId); ViewBag.Component = c; return(await Task.FromResult(View(viewName, component))); }
public bool Delete(Models.Component component) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(_apiUrl); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); return(client.DeleteAsync($"api/Components/{component.Id}").Result.IsSuccessStatusCode); } }
public Models.Component Update(Models.Component component) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(_apiUrl); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = client.PutAsync("api/Components", component, new JsonMediaTypeFormatter()).Result; return(response.IsSuccessStatusCode ? response.Content.ReadAsAsync <Models.Component>().Result : null); } }
public async Task <bool> Upload(Models.Component component) { using (var client = new HttpClient()) { client.BaseAddress = new Uri(_apiUrl); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); var response = await client.PostAsync("api/Packages", component, new JsonMediaTypeFormatter()); return(response.IsSuccessStatusCode); } }
public async Task <IViewComponentResult> InvokeAsync(Models.Component component) { var viewName = component.View ?? "Default"; var dtId = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DataTable").Value; var datatable = await _context.DataTables.Include(e => e.Columns).ThenInclude(e => e.Property).ThenInclude(pv => pv.PropertyValues).FirstOrDefaultAsync(e => e.Id == dtId); ViewBag.DataTable = datatable; var CreateButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "CreateButtonText")?.Value; ViewBag.CreateButtonText = CreateButtonText; var CreateButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "CreateButtonHref")?.Value; ViewBag.CreateButtonHref = CreateButtonHref; var EditButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "EditButtonText")?.Value; ViewBag.EditButtonText = EditButtonText; var EditButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "EditButtonHref")?.Value; ViewBag.EditButtonHref = EditButtonHref; var DeleteButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DeleteButtonText")?.Value; ViewBag.DeleteButtonText = DeleteButtonText; var DeleteButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DeleteButtonHref")?.Value; ViewBag.DeleteButtonHref = DeleteButtonHref; var AddButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "AddButtonText")?.Value; ViewBag.AddButtonText = AddButtonText; var AddButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "AddButtonHref")?.Value; ViewBag.AddButtonHref = AddButtonHref; var RemoveButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "RemoveButtonText")?.Value; ViewBag.RemoveButtonText = RemoveButtonText; var RemoveButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "RemoveButtonHref")?.Value; ViewBag.RemoveButtonHref = RemoveButtonHref; var entityId = datatable.EntityId; var values = _context.PropertyValues.Include(i => i.Entity).Include(i => i.Property).ThenInclude(t => t.DataSourceProperty).ThenInclude(v => v.PropertyValues).Where(x => x.EntityId == entityId && _context.PropertyValues.Where( p => (datatable.Columns.Any(c => c.FilterOperator != Models.FilterOperator.None) ? (datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterOperator == Models.FilterOperator.Equals ? (p.Value == datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterValue) : (datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterOperator == Models.FilterOperator.Contains ? (p.Value.Contains(datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterValue)) : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterOperator == Models.FilterOperator.DoesNotContain ? (!p.Value.Contains(datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterValue)) : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterOperator == Models.FilterOperator.LessThan ? (p.Value.CompareTo(datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterValue) > 0) : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterOperator == Models.FilterOperator.LessThanOrEquals ? (p.Value.CompareTo(datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterValue) >= 0) : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterOperator == Models.FilterOperator.GreaterThan ? (p.Value.CompareTo(datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterValue) < 0) : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterOperator == Models.FilterOperator.GreaterThanOrEquals ? (p.Value.CompareTo(datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).FilterValue) <= 0) : false)))))))))))) : true)).Any(f => f.RowId == x.RowId)).OrderBy(r => r.RowId).Take(datatable.Top).ToList(); ViewBag.Values = values; return(await Task.FromResult(View(viewName, component))); }
public async Task <IViewComponentResult> InvokeAsync(Models.Component component, string location) { // var menuItems=0; if (!String.IsNullOrEmpty(location)) { var menu = await _context.Menus.Include(c => c.MenuItems).ThenInclude(t => t.ChildMenuItems).Where(m => m.MenuLocation == location).FirstOrDefaultAsync(); if (menu == null) { menu = new Models.Menu(); } return(View(menu)); } return(View()); }
public async Task <IViewComponentResult> InvokeAsync(Models.Component component) { var viewName = component.View ?? "Default"; var formName = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "FormName")?.Value; if (String.IsNullOrEmpty(Request.Query["returnUrl"].ToString())) { ViewBag.ReturnUrl = Request.Path; } else { ViewBag.ReturnUrl = Request.Query["returnUrl"].ToString(); } string mode = Request.Query["mode"].ToString().ToLowerInvariant(); if (String.IsNullOrEmpty(mode)) { mode = "create"; } ViewBag.Mode = mode; var rowId = Request.Query["id"].ToString(); ViewBag.RowId = rowId; ViewBag.Form = await _context.Forms.Include(f => f.Fields).ThenInclude(ff => ff.Property).ThenInclude(d => d.DataSourceProperty).Include("Fields.Property.PropertyValues").SingleOrDefaultAsync(f => f.Name == formName); var entityName = ((Form)ViewBag.Form).EntityName; if ((mode == "edit" || mode == "delete") && !String.IsNullOrEmpty(rowId)) { ViewBag.RowValues = _context.PropertyValues.Include(pv => pv.Entity).Include(pv => pv.Property).ThenInclude(p => p.DataSourceProperty).ThenInclude(v => v.PropertyValues).Include("Property.DataSourceEntity").Where(pv => pv.Entity.Name == entityName && pv.RowId == Convert.ToInt64(rowId)).OrderBy(r => r.RowId).ToList(); } IDictionary <String, IList <PropertyValue> > DataSourcePropertyValues = new Dictionary <string, IList <PropertyValue> >(); foreach (var item in ((Form)ViewBag.Form).Fields) { if (item.Property.DataSourceProperty != null && !String.IsNullOrEmpty(item.Property.DataSourceProperty.Id)) { var entityId = item.Property.DataSourceProperty.EntityId; var pvs = _context.PropertyValues.Where(pv => pv.Entity.Id == entityId && pv.PropertyId == item.Property.DataSourceProperty.Id).OrderBy(r => r.RowId).ToList(); DataSourcePropertyValues.Add(item.Property.DataSourceProperty.Id, pvs); } } ViewBag.DataSourcePropertyValues = DataSourcePropertyValues; return(await Task.FromResult(View(viewName, component))); }
public IActionResult Add(Models.Component component) { this._componentService.Add(component); return(View()); }
public async Task <IViewComponentResult> InvokeAsync(Models.Component component, string relatedId = "") { var viewName = component.View ?? "Default"; var dtId = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DataTable").Value; var datatable = await _context.DataTables.Include("Columns.Property.DataSourceProperty").Include(e => e.Columns).ThenInclude(e => e.Property).ThenInclude(pv => pv.PropertyValues).FirstOrDefaultAsync(e => e.Id == dtId); ViewBag.DataTable = datatable; var CreateButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "CreateButtonText")?.Value; ViewBag.CreateButtonText = CreateButtonText; var CreateButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "CreateButtonHref")?.Value; ViewBag.CreateButtonHref = CreateButtonHref; var EditButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "EditButtonText")?.Value; ViewBag.EditButtonText = EditButtonText; var EditButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "EditButtonHref")?.Value; ViewBag.EditButtonHref = EditButtonHref; var DeleteButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DeleteButtonText")?.Value; ViewBag.DeleteButtonText = DeleteButtonText; var DeleteButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DeleteButtonHref")?.Value; ViewBag.DeleteButtonHref = DeleteButtonHref; var AddButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "AddButtonText")?.Value; ViewBag.AddButtonText = AddButtonText; var AddButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "AddButtonHref")?.Value; ViewBag.AddButtonHref = AddButtonHref; var RemoveButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "RemoveButtonText")?.Value; ViewBag.RemoveButtonText = RemoveButtonText; var RemoveButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "RemoveButtonHref")?.Value; ViewBag.RemoveButtonHref = RemoveButtonHref; var entityId = datatable.EntityId; //string pId = datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).Property.DataSourceProperty.PropertyValues.FirstOrDefault(v => v.RowId.ToString() == Request.Query["id"].ToString()).Value var values = _context.PropertyValues .Include(i => i.Entity).Include(i => i.Property) .ThenInclude(t => t.DataSourceProperty) .ThenInclude(v => v.PropertyValues) // veri tablosunun kullandığı varlığın değerlerine ulaş .Where(pv => pv.EntityId == entityId // eğer veri tablosunun sütunları filtre içeriyorsa bu filtreleri uygula && _context.PropertyValues.Where(pv2 => (datatable.Columns.Any(c => c.FilterOperator != Models.FilterOperator.None) // sütunların özellikleri ile değerlerin özelliklerini joinle, değeri olan her bir sütun filtre operatörü "eşittir" ise ? (datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.Equals // bu özelliğin değerini filtre değeri ile karşılaştır ? (pv2.Value == string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) // filtre operatörü "eşittir" değil "contains" ise : (datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.Contains // bu özelliğin değeri filtre değerini içeriyor mu diye bak ? (pv2.Value.Contains(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId))) // filtre operatörü "does not contain" ise : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.DoesNotContain // özellik değeri filtre değerini içermiyor mu diye kontrol et ? (!pv2.Value.Contains(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId))) // filtre operatörü "less than" ise : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.LessThan // özellik değeri filtre değerinden küçük mü diye kontrol et ? (pv2.Value.CompareTo(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) > 0) // filtre operatörü "less than or equals" ise : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.LessThanOrEquals // özellik değeri filtre değerinden küçük mü veya eşit mi diye kontrol et ? (pv2.Value.CompareTo(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) >= 0) // filtre operatörü "greater than" ise : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.GreaterThan // özellik değeri filtre değerinden büyük mü diye kontrol et ? (pv2.Value.CompareTo(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) < 0) // filtre operatörü "greater than or equals" ise : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.GreaterThanOrEquals // özellik değeri filtre değeriden büyük veya eşit mi diye kontrol et ? (pv2.Value.CompareTo(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) <= 0) // filtre operatörü başka bir şeyse false uygula : false)))))))))))) // sütunlar filtre içermiyorsa tüm kayıtları getir : true)).Any(f => f.RowId == pv.RowId)).OrderBy(r => r.RowId).Take(datatable.Top).ToList(); ViewBag.Values = values; return(await Task.FromResult(View(viewName, component))); }
public async Task <IViewComponentResult> InvokeAsync(Models.Component component) { var viewName = component.View ?? "Default"; var dtId = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DataTable").Value; var datatable = await _context.DataTables.Include(e => e.Columns).ThenInclude(e => e.Property).ThenInclude(pv => pv.PropertyValues).FirstOrDefaultAsync(e => e.Id == dtId); ViewBag.DataTable = datatable; var CreateButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "CreateButtonText")?.Value; ViewBag.CreateButtonText = CreateButtonText; var CreateButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "CreateButtonHref")?.Value; ViewBag.CreateButtonHref = CreateButtonHref; var EditButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "EditButtonText")?.Value; ViewBag.EditButtonText = EditButtonText; var EditButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "EditButtonHref")?.Value; ViewBag.EditButtonHref = EditButtonHref; var DeleteButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DeleteButtonText")?.Value; ViewBag.DeleteButtonText = DeleteButtonText; var DeleteButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DeleteButtonHref")?.Value; ViewBag.DeleteButtonHref = DeleteButtonHref; var actionsMenuId = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "ActionsMenu")?.Value; if (!string.IsNullOrEmpty(actionsMenuId)) { var ActionMenu = await _context.Menus.Include(m => m.MenuItems).ThenInclude(i => i.ParentMenuItem).FirstOrDefaultAsync(f => f.Id == actionsMenuId); ViewBag.ActionsMenu = ActionMenu; } var entityId = datatable.EntityId; var values = _context.EntityRows .Where(r => r.EntityId == entityId && (datatable.Columns.Any(a => a.FilterOperator != Models.FilterOperator.None) ? datatable.Columns.Join(r.Values.Keys.ToList(), o => o.PropertyId, i => i, (o, i) => new { column = o, propertyId = i, values = r.Values }) .Where(w => datatable.Columns.Any(a => a.FilterOperator != Models.FilterOperator.None) ? (w.column.FilterOperator == Models.FilterOperator.Equals ? w.values.GetValueOrDefault(w.propertyId) == w.column.FilterValue : (w.column.FilterOperator == Models.FilterOperator.NotEquals ? w.values.GetValueOrDefault(w.propertyId) != w.column.FilterValue: (w.column.FilterOperator == Models.FilterOperator.Contains ? w.values.GetValueOrDefault(w.column.PropertyId).Contains(w.column.FilterValue): (w.column.FilterOperator == Models.FilterOperator.DoesNotContain ? !(w.values.GetValueOrDefault(w.column.PropertyId).Contains(w.column.FilterValue)) : (w.column.FilterOperator == Models.FilterOperator.In ? (w.column.FilterValue.Contains(w.values.GetValueOrDefault(w.column.PropertyId))) : (w.column.FilterOperator == Models.FilterOperator.NotIn ? !(w.column.FilterValue.Contains(w.values.GetValueOrDefault(w.column.PropertyId))): (w.column.FilterOperator == Models.FilterOperator.GreaterThan ? (w.values.GetValueOrDefault(w.column.PropertyId).CompareTo(w.column.FilterValue) < 0): (w.column.FilterOperator == Models.FilterOperator.GreaterThanOrEquals ? (w.values.GetValueOrDefault(w.column.PropertyId).CompareTo(w.column.FilterValue) <= 0): (w.column.FilterOperator == Models.FilterOperator.LessThan ? (w.values.GetValueOrDefault(w.column.PropertyId).CompareTo(w.column.FilterValue) > 0) : (w.column.FilterOperator == Models.FilterOperator.LessThanOrEquals ? (w.values.GetValueOrDefault(w.column.PropertyId).CompareTo(w.column.FilterValue) >= 0) : false)))))))))): true).Select(j => j.propertyId).Count() == datatable.Columns.Where(h => h.FilterOperator != Models.FilterOperator.None).Count():true)) .OrderBy(o => o.RowId).Select(e => e).Distinct().ToList(); /*var values = (from pv in _context.PropertyValues * .Include(i => i.Entity).Include(i => i.Property) * .ThenInclude(t => t.DataSourceProperty) * .ThenInclude(v => v.PropertyValues) * join c in _context.Columns.Where(cl => cl.DataTableId == dtId) * on pv.PropertyId equals c.PropertyId * where pv.EntityId == entityId && (from v2 in _context.PropertyValues where v2.PropertyId == pv.PropertyId && c.FilterOperator == Models.FilterOperator.Equals * ? v2.Value == c.FilterValue : (c.FilterOperator == Models.FilterOperator.Contains * ? v2.Value.Contains(c.FilterValue) : (c.FilterOperator == Models.FilterOperator.NotEquals * ? v2.Value != c.FilterValue : (c.FilterOperator == Models.FilterOperator.DoesNotContain * ? !v2.Value.Contains(c.FilterValue) : (c.FilterOperator == Models.FilterOperator.In * ? c.FilterValue.Contains(v2.Value) : (c.FilterOperator == Models.FilterOperator.NotIn * ? !c.FilterValue.Contains(v2.Value) : (c.FilterOperator == Models.FilterOperator.GreaterThan * ? v2.Value.CompareTo(c.FilterValue) < 0 : (c.FilterOperator == Models.FilterOperator.GreaterThanOrEquals * ? v2.Value.CompareTo(c.FilterValue) <= 0 : (c.FilterOperator == Models.FilterOperator.LessThan * ? v2.Value.CompareTo(c.FilterValue) > 0 : (c.FilterOperator == Models.FilterOperator.LessThanOrEquals * ? v2.Value.CompareTo(c.FilterValue) >= 0 : false * ) * ) * ) * ) * ) * ) * ) * ) * ) select v2.RowId).Contains(pv.RowId) * orderby pv.RowId * select pv).Take(datatable.Top).ToList(); * */ /*var values = _context.PropertyValues * .Include(i => i.Entity).Include(i => i.Property) * .ThenInclude(t => t.DataSourceProperty) * .ThenInclude(v => v.PropertyValues) * // veri tablosunun kullandığı varlığın değerlerine ulaş * .Where(pv => pv.EntityId == entityId * // eğer veri tablosunun sütunları filtre içeriyorsa bu filtreleri uygula * && (_context.PropertyValues.Where(pv2 => pv2.EntityId == entityId && pv.RowId == pv2.RowId * && (datatable.Columns.Any(c => c.FilterOperator != Models.FilterOperator.None) * // sütunların özellikleri ile değerlerin özelliklerini joinle, değeri olan her bir sütun filtre operatörü "eşittir" ise * ? (datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.Equals * // bu özelliğin değerini filtre değeri ile karşılaştır * ? (pv2.Value == datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue) * // filtre operatörü "eşittir" değil "contains" ise * : (datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.Contains * // bu özelliğin değeri filtre değerini içeriyor mu diye bak * ? (pv2.Value.Contains(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue)) * // filtre operatörü "does not contain" ise * : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.DoesNotContain * // özellik değeri filtre değerini içermiyor mu diye kontrol et * ? (!pv2.Value.Contains(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue)) * // filtre operatörü "less than" ise * : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.LessThan * // özellik değeri filtre değerinden küçük mü diye kontrol et * ? (pv2.Value.CompareTo(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue) > 0) * // filtre operatörü "less than or equals" ise * : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.LessThanOrEquals * // özellik değeri filtre değerinden küçük mü veya eşit mi diye kontrol et * ? (pv2.Value.CompareTo(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue) >= 0) * // filtre operatörü "greater than" ise * : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.GreaterThan * // özellik değeri filtre değerinden büyük mü diye kontrol et * ? (pv2.Value.CompareTo(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue) < 0) * // filtre operatörü "greater than or equals" ise * : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.GreaterThanOrEquals * // özellik değeri filtre değeriden büyük veya eşit mi diye kontrol et * ? (pv2.Value.CompareTo(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue) <= 0) * // filtre operatörü başka bir şeyse false uygula * : false)))))))))))) * // sütunlar filtre içermiyorsa tüm kayıtları getir * : true)).Select(s=>s.RowId).Contains(pv.RowId))).OrderBy(r => r.RowId).Take(datatable.Top).ToList(); * //var filterRows = (from v in _context.PropertyValues * // join c in _context.Columns on v.PropertyId equals c.PropertyId * // where v.EntityId == entityId && c.DataTableId == dtId && c.FilterOperator == Models.FilterOperator.Equals && v.Value == c.FilterValue * // select v.Value).ToList(); * //var values = _context.PropertyValues.Include(i => i.Entity).Include(i => i.Property) * // .ThenInclude(t => t.DataSourceProperty) * // .ThenInclude(v => v.PropertyValues).Where(pv => pv.EntityId == entityId && filterRows.Contains(pv.Value)).OrderBy(o => o.RowId).Take(datatable.Top).ToList(); */ ViewBag.Values = values; return(await Task.FromResult(View(viewName, component))); }
public async Task <IViewComponentResult> InvokeAsync(Models.Component component, string relatedId = "") { var viewName = component.View ?? "Default"; var dtId = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DataTable").Value; var datatable = await _context.DataTables.Include("Columns.Property.DataSourceProperty").Include(e => e.Columns).ThenInclude(e => e.Property).ThenInclude(pv => pv.PropertyValues).FirstOrDefaultAsync(e => e.Id == dtId); ViewBag.DataTable = datatable; var CreateButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "CreateButtonText")?.Value; ViewBag.CreateButtonText = CreateButtonText; var CreateButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "CreateButtonHref")?.Value; ViewBag.CreateButtonHref = CreateButtonHref; var EditButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "EditButtonText")?.Value; ViewBag.EditButtonText = EditButtonText; var EditButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "EditButtonHref")?.Value; ViewBag.EditButtonHref = EditButtonHref; var DeleteButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DeleteButtonText")?.Value; ViewBag.DeleteButtonText = DeleteButtonText; var DeleteButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "DeleteButtonHref")?.Value; ViewBag.DeleteButtonHref = DeleteButtonHref; var AddButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "AddButtonText")?.Value; ViewBag.AddButtonText = AddButtonText; var AddButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "AddButtonHref")?.Value; ViewBag.AddButtonHref = AddButtonHref; var RemoveButtonText = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "RemoveButtonText")?.Value; ViewBag.RemoveButtonText = RemoveButtonText; var RemoveButtonHref = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "RemoveButtonHref")?.Value; ViewBag.RemoveButtonHref = RemoveButtonHref; var actionsMenuId = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "ActionsMenu")?.Value; if (!string.IsNullOrEmpty(actionsMenuId)) { var ActionMenu = await _context.Menus.Include(m => m.MenuItems).ThenInclude(i => i.ParentMenuItem).FirstOrDefaultAsync(f => f.Id == actionsMenuId); ViewBag.ActionsMenu = ActionMenu; } var toolbarsMenuId = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "ToolbarMenu")?.Value; if (!string.IsNullOrEmpty(toolbarsMenuId)) { var ToolbarMenu = await _context.Menus.Include(m => m.MenuItems).ThenInclude(i => i.ParentMenuItem).FirstOrDefaultAsync(f => f.Id == toolbarsMenuId); ViewBag.ToolbarMenu = ToolbarMenu; } //var entityId = datatable.EntityId; //string pId = datatable.Columns.FirstOrDefault(c => c.PropertyId == p.PropertyId).Property.DataSourceProperty.PropertyValues.FirstOrDefault(v => v.RowId.ToString() == Request.Query["id"].ToString()).Value //var values = _context.PropertyValues // .Include(i => i.Entity).Include(i => i.Property) // .ThenInclude(t => t.DataSourceProperty) // .ThenInclude(v => v.PropertyValues) // // veri tablosunun kullandığı varlığın değerlerine ulaş // .Where(pv => pv.EntityId == entityId // // eğer veri tablosunun sütunları filtre içeriyorsa bu filtreleri uygula // && _context.PropertyValues.Where(pv2 => (datatable.Columns.Any(c => c.FilterOperator != Models.FilterOperator.None) // // sütunların özellikleri ile değerlerin özelliklerini joinle, değeri olan her bir sütun filtre operatörü "eşittir" ise // ? (datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.Equals // // bu özelliğin değerini filtre değeri ile karşılaştır // ? (pv2.Value == string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) // // filtre operatörü "eşittir" değil "contains" ise // : (datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.Contains // // bu özelliğin değeri filtre değerini içeriyor mu diye bak // ? (pv2.Value.Contains(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId))) // // filtre operatörü "does not contain" ise // : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.DoesNotContain // // özellik değeri filtre değerini içermiyor mu diye kontrol et // ? (!pv2.Value.Contains(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId))) // // filtre operatörü "less than" ise // : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.LessThan // // özellik değeri filtre değerinden küçük mü diye kontrol et // ? (pv2.Value.CompareTo(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) > 0) // // filtre operatörü "less than or equals" ise // : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.LessThanOrEquals // // özellik değeri filtre değerinden küçük mü veya eşit mi diye kontrol et // ? (pv2.Value.CompareTo(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) >= 0) // // filtre operatörü "greater than" ise // : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.GreaterThan // // özellik değeri filtre değerinden büyük mü diye kontrol et // ? (pv2.Value.CompareTo(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) < 0) // // filtre operatörü "greater than or equals" ise // : ((datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterOperator == Models.FilterOperator.GreaterThanOrEquals // // özellik değeri filtre değeriden büyük veya eşit mi diye kontrol et // ? (pv2.Value.CompareTo(string.Format(datatable.Columns.FirstOrDefault(c => c.PropertyId == pv2.PropertyId).FilterValue, relatedId)) <= 0) // // filtre operatörü başka bir şeyse false uygula // : false)))))))))))) // // sütunlar filtre içermiyorsa tüm kayıtları getir // : true)).Any(f => f.RowId == pv.RowId)).OrderBy(r => r.RowId).Take(datatable.Top).ToList(); var entityId = datatable.EntityId; var values = _context.EntityRows .Where(r => r.EntityId == entityId && (datatable.Columns.Any(a => a.FilterOperator != Models.FilterOperator.None) ? datatable.Columns.Join(r.Values.Keys.ToList(), o => o.PropertyId, i => i, (o, i) => new { column = o, propertyId = i, values = r.Values }) .Where(w => datatable.Columns.Any(a => a.FilterOperator != Models.FilterOperator.None) ? (w.column.FilterOperator == Models.FilterOperator.Equals ? w.values.GetValueOrDefault(w.propertyId) == string.Format(w.column.FilterValue, relatedId) : (w.column.FilterOperator == Models.FilterOperator.NotEquals ? w.values.GetValueOrDefault(w.propertyId) != string.Format(w.column.FilterValue) : (w.column.FilterOperator == Models.FilterOperator.Contains ? w.values.GetValueOrDefault(w.column.PropertyId).Contains(string.Format(w.column.FilterValue)) : (w.column.FilterOperator == Models.FilterOperator.DoesNotContain ? !(w.values.GetValueOrDefault(w.column.PropertyId).Contains(string.Format(w.column.FilterValue))) : (w.column.FilterOperator == Models.FilterOperator.In ? (w.column.FilterValue.Contains(w.values.GetValueOrDefault(string.Format(w.column.PropertyId)))) : (w.column.FilterOperator == Models.FilterOperator.NotIn ? !(w.column.FilterValue.Contains(w.values.GetValueOrDefault(string.Format(w.column.PropertyId)))) : (w.column.FilterOperator == Models.FilterOperator.GreaterThan ? (w.values.GetValueOrDefault(w.column.PropertyId).CompareTo(string.Format(w.column.FilterValue)) < 0) : (w.column.FilterOperator == Models.FilterOperator.GreaterThanOrEquals ? (w.values.GetValueOrDefault(w.column.PropertyId).CompareTo(string.Format(w.column.FilterValue)) <= 0) : (w.column.FilterOperator == Models.FilterOperator.LessThan ? (w.values.GetValueOrDefault(w.column.PropertyId).CompareTo(string.Format(w.column.FilterValue)) > 0) : (w.column.FilterOperator == Models.FilterOperator.LessThanOrEquals ? (w.values.GetValueOrDefault(w.column.PropertyId).CompareTo(string.Format(w.column.FilterValue)) >= 0) : false)))))))))) : true).Select(j => j.propertyId).Count() == datatable.Columns.Where(h => h.FilterOperator != Models.FilterOperator.None).Count() : true)) .OrderBy(o => o.RowId).Select(e => e).Distinct().ToList(); ViewBag.Values = values; return(await Task.FromResult(View(viewName, component))); }
public async Task <IViewComponentResult> InvokeAsync(Models.Component component) { var viewName = component.View ?? "Default"; var formId = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "Form")?.Value; var initialValues = component.ParameterValues.FirstOrDefault(f => f.Parameter.Name == "InitialValues")?.Value; if (initialValues != null) { ViewBag.InitialValues = JsonConvert.DeserializeObject <Dictionary <string, string> >(initialValues); } if (String.IsNullOrEmpty(Request.Query["returnUrl"].ToString())) { ViewBag.ReturnUrl = Request.Path; } else { ViewBag.ReturnUrl = Request.Query["returnUrl"].ToString(); } string mode = Request.Query["mode"].ToString().ToLowerInvariant(); if (String.IsNullOrEmpty(mode)) { mode = "create"; } ViewBag.Mode = mode; var rowId = Request.Query["id"].ToString(); ViewBag.RowId = rowId; var frm = await _context.Forms.Include(c => c.Components).ThenInclude(pv => pv.ParameterValues).ThenInclude(p => p.Parameter).ThenInclude(ct => ct.ComponentType).Include(fs => fs.Fieldsets).Include(t => t.Tabs).ThenInclude(f => f.Fields).ThenInclude(ff => ff.Property).ThenInclude(d => d.DataSourceProperty).ThenInclude(ds => ds.DataSourceProperty).Include("Fields.Property.PropertyValues").SingleOrDefaultAsync(f => f.Id == formId); if (frm == null) { throw new Exception($"\"{formId}\" id'li bir form bulunamadı."); } ViewBag.Form = frm; var formEntityId = ((Form)ViewBag.Form).EntityId; if ((mode == "edit" || mode == "delete") && !String.IsNullOrEmpty(rowId)) { ViewBag.RowValues = _context.PropertyValues.Include(pv => pv.Entity).Include(pv => pv.Property).ThenInclude(p => p.DataSourceProperty).ThenInclude(v => v.PropertyValues).Include("Property.DataSourceEntity").Where(pv => pv.EntityId == formEntityId && pv.RowId == Convert.ToInt64(rowId)).OrderBy(r => r.RowId).ToList(); } IDictionary <String, IList <PropertyValue> > DataSourcePropertyValues = new Dictionary <string, IList <PropertyValue> >(); foreach (var item in ((Form)ViewBag.Form).Fields) { if (item.Property.DataSourceProperty != null && !String.IsNullOrEmpty(item.Property.DataSourceProperty.Id)) { var entityId = item.Property.DataSourceProperty.EntityId; var pvs = _context.PropertyValues.Where(pv => pv.Entity.Id == entityId && pv.PropertyId == item.Property.DataSourceProperty.Id).OrderBy(r => r.RowId).ToList(); if (!DataSourcePropertyValues.ContainsKey(item.Property.DataSourceProperty.Id)) { DataSourcePropertyValues.Add(item.Property.DataSourceProperty.Id, pvs); } } } ViewBag.DataSourcePropertyValues = DataSourcePropertyValues; return(await Task.FromResult(View(viewName, component))); IDictionary <String, IList <PropertyValue> > DataSourcePropertyValues2 = new Dictionary <string, IList <PropertyValue> >(); foreach (var item in ((Form)ViewBag.Form).Fields) { if (item.Property.DataSourceProperties2 != null && !String.IsNullOrEmpty(item.Property.DataSourceProperty.Id)) { var entityId = item.Property.DataSourceProperty.EntityId; var pvs = _context.PropertyValues.Where(pv => pv.Entity.Id == entityId && pv.PropertyId == item.Property.DataSourceProperty.Id).OrderBy(r => r.RowId).ToList(); if (!DataSourcePropertyValues2.ContainsKey(item.Property.DataSourceProperty.Id)) { DataSourcePropertyValues2.Add(item.Property.DataSourceProperty.Id, pvs); } } } ViewBag.DataSourcePropertyValues2 = DataSourcePropertyValues2; return(await Task.FromResult(View(viewName, component))); IDictionary <String, IList <PropertyValue> > DataSourcePropertyValues3 = new Dictionary <string, IList <PropertyValue> >(); foreach (var item in ((Form)ViewBag.Form).Fields) { if (item.Property.DataSourceProperties3 != null && !String.IsNullOrEmpty(item.Property.DataSourceProperty.Id)) { var entityId = item.Property.DataSourceProperty.EntityId; var pvs = _context.PropertyValues.Where(pv => pv.Entity.Id == entityId && pv.PropertyId == item.Property.DataSourceProperty.Id).OrderBy(r => r.RowId).ToList(); if (!DataSourcePropertyValues3.ContainsKey(item.Property.DataSourceProperty.Id)) { DataSourcePropertyValues3.Add(item.Property.DataSourceProperty.Id, pvs); } } } ViewBag.DataSourcePropertyValues3 = DataSourcePropertyValues3; return(await Task.FromResult(View(viewName, component))); }