public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            var ResultObject = new List <EventViewModel>();

            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }
            var clueValue       = bindingContext.HttpContext.Request.Form.Select(s => s.Key + "=" + s.Value);
            var urlParamsString = String.Join('&', clueValue);

            var json = new URLParamsToJsonConverter().Covert(urlParamsString) as JObject;
            var view = json.ToString();

            IList <string> entitiesNames = json.Properties().Select(p => p.Name).ToList();

            entitiesNames.Remove("account");
            entitiesNames.Remove("task");   // Задачи не обрабатываюся и нет моделей

            Dictionary <string, Type> TypeForEvent = new Dictionary <string, Type> {
                { "contacts", typeof(ContactViewModel) },
                { "leads", typeof(LeadViewModel) }
            };

            foreach (var entityName in entitiesNames)
            {
                var eventsNames = (json[entityName] as JObject)
                                  .Properties().Select(p => p.Name).ToList();

                foreach (var eventName in eventsNames)
                {
                    var item = new EventViewModel();
                    item.Entity   = entityName;
                    item.Event    = eventName;
                    item.Entities = new List <EntityBase>();

                    foreach (var i in json[entityName][eventName])
                    {
                        var obj = ((JObject)i).ToObject(TypeForEvent[entityName]);

                        item.Entities.Add(obj as EntityBase);
                    }

                    ResultObject.Add(item);
                }
            }

            bindingContext.Result = ModelBindingResult.Success(ResultObject);

            return(Task.CompletedTask);
        }
        public Task BindModelAsync(ModelBindingContext bindingContext)
        {
            var ResultObject = new ListenedEvent();

            if (bindingContext == null)
            {
                throw new ArgumentNullException(nameof(bindingContext));
            }


            var ttt = bindingContext.HttpContext.Request.Form;

            var strFull = ttt.Select(s => s.Key + "=" + s.Value);

            var asd = String.Join('&', strFull);


            var result3 = new URLParamsToJsonConverter().Covert(asd);
            var view    = result3.ToString();


            var names = bindingContext.HttpContext.Request.Form.Keys.FirstOrDefault().Split("[").Select(x => x.Replace("]", "")).ToArray();

            char[] charsToTrim = { '\n', '\r', ' ' };


            ResultObject.Entity = names[0].Trim(charsToTrim);

            string @event = names[1].Trim(charsToTrim);

            ResultObject.Events = GetEvents(ResultObject.Entity, @event, bindingContext);

            ResultObject.EntityId = bindingContext.ValueProvider.GetValue(ResultObject.Entity + "." + @event + "[0].id").FirstValue;

            ResultObject.ContactType = bindingContext.ValueProvider.GetValue(ResultObject.Entity + "." + @event + "[0].type").FirstValue;

            ResultObject.Account = bindingContext.ValueProvider.GetValue("account.subdomain").FirstValue;



            bindingContext.Result = ModelBindingResult.Success(ResultObject);

            return(Task.CompletedTask);
        }