Exemple #1
0
        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)));
        }
Exemple #2
0
        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)));
        }
Exemple #3
0
        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)));
        }
Exemple #8
0
        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());
        }
Exemple #9
0
        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)));
        }
Exemple #10
0
 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)));
        }
Exemple #14
0
        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)));
        }