Example #1
0
        public async Task <IActionResult> AddItem(
            [FromBody] AConMvcClass systemHtml)
        {
            systemHtml.Addtime = DateTime.Now;

            if (string.IsNullOrEmpty(systemHtml.Guid))
            {
                systemHtml.Guid = Guid.NewGuid().ToString("D");
            }

            var oldmvc = await DbFactory.Queryable <AConMvcClass>().Where(p => p.ClassName.ToLower() == systemHtml.ClassName.ToLower()).FirstAsync();

            if (oldmvc != null)
            {
                return(Json(new { isok = false, err = $"has the same class {systemHtml.ClassName }" }));
            }

            var reint = await DbFactory.Insertable(systemHtml).ExecuteCommandAsync();

            if (systemHtml.IsEanable.ToBool() == true)
            {
                try
                {
                    var aConMvcCompileClass = AConMvcCompileClass.ToCompileClass(systemHtml);
                    _actionProvider.AddControllers(aConMvcCompileClass);
                    _dynamicChangeTokenProvider.NotifyChanges();
                    return(Json(new { isok = true }));
                }
                catch (Exception ex)
                {
                    return(Json(new { isok = false, err = ex.Message }));
                }
            }
            return(Json(new { isok = reint > 0 }));
        }
Example #2
0
        public async Task <IActionResult> UpdateItem([FromBody] AConMvcClass systemHtml)
        {
            if (string.IsNullOrEmpty(systemHtml.Guid))
            {
                systemHtml.Guid = Guid.NewGuid().ToString("D");
            }
            var aConMvcCompileClass = AConMvcCompileClass.ToCompileClass(systemHtml);
            var result = await DbFactory.Queryable <AConMvcClass>().Where(p => p.Id == systemHtml.Id).FirstAsync();

            if (result != null)
            {
                _actionProvider.RemoveController(aConMvcCompileClass);
                _dynamicChangeTokenProvider.NotifyChanges();

                result = systemHtml;
            }

            var reint = await DbFactory.Updateable(result).ExecuteCommandAsync();

            if (systemHtml.IsEanable.ToBool() == true)
            {
                try
                {
                    _actionProvider.AddControllers(aConMvcCompileClass);
                    _dynamicChangeTokenProvider.NotifyChanges();
                    return(Json(new { isok = true }));
                }
                catch (Exception ex)
                {
                    return(Json(new { isok = false, err = ex.Message }));
                }
            }
            return(Json(new { isok = reint >= 0 }));
        }
Example #3
0
        public void AddControllers(AConMvcCompileClass sourceCode)
        {
            var ss = _creator(sourceCode);

            //_actions.AddRange(ss);
            if (ss != null && ss.Count() > 0)
            {
                foreach (var a in ss)
                {
                    var oldactions = _actions.Where(p => p.ActionName == a.ActionName && p.ControllerName == a.ControllerName);
                    if (oldactions != null)
                    {
                        foreach (var oa in oldactions)
                        {
                            _actions.Remove(oa);
                        }
                        _actions.Add(a);
                    }
                    else
                    {
                        _actions.Add(a);
                    }
                }
            }
        }
Example #4
0
        public void RemoveController(AConMvcCompileClass sourceCode)
        {
            var oldClasss = _actions.Where(p => p.ControllerName.ToLower() == sourceCode.ClassName.ToLower());

            if (oldClasss != null)
            {
                var allinex = new List <int>();

                foreach (var oa in oldClasss)
                {
                    var oldaction = _actions.FirstOrDefault(p => p.ActionName == oa.ActionName && p.ControllerName == oa.ControllerName);
                    if (oldaction != null)
                    {
                        allinex.Add(_actions.IndexOf(oldaction));
                    }
                }
                var i = 0;
                foreach (var index in allinex)
                {
                    if (index - i < _actions.Count)
                    {
                        _actions.RemoveAt(index - i);
                    }
                    i++;
                }
            }
        }
Example #5
0
        public static async Task ClearAllDynamicActions(DynamicActionProvider dynamicActionProvider, DynamicChangeTokenProvider dynamicChangeToken)
        {
            var allactios = DB.UniClient.Queryable <AConMvcClass>().Where(p => p.IsEanable != null && p.IsEanable == true).ToList();

            try
            {
                foreach (var c in allactios)
                {
                    var classes = AConMvcCompileClass.ToCompileClass(c);

                    dynamicActionProvider.RemoveController(classes);
                    dynamicChangeToken.NotifyChanges();
                    Thread.Sleep(20);
                }
            }
            catch
            {
            }
        }
Example #6
0
        private static Task Complies(DynamicActionProvider dynamicActionProvider, List <AConMvcClass> allactios, DynamicChangeTokenProvider tokenProvider)
        {
            Task mytask = Task.Run(() =>
            {
                for (var i = 0; i < allactios.Count; i++)
                {
                    var c = allactios[i];
                    try
                    {
                        dynamicActionProvider.AddControllers(AConMvcCompileClass.ToCompileClass(c));
                        tokenProvider.NotifyChanges();
                        Logger.LogDebug("Complies", $"Complie{c.ClassName} done");
                    }
                    catch (Exception ex)
                    {
                        Logger.LogError("Complies erro ", $"controller :{c.ClassName}, action :{c.ActionCode}", ex);
                    }
                }
            });

            return(mytask);
        }