Exemple #1
0
 private void InsertEvents(SysBest_Element insObj, int addressId, List <ElementEvent> formEvents, int elementId, string founder)
 {
     if (formEvents.IsValuable())
     {
         _db.Delete <SysBest_ElementEvent>(it => it.ElementId == elementId);
         List <SysBest_ElementEvent> insertEventList = new List <SysBest_ElementEvent>();
         foreach (var it in formEvents)
         {
             if (it.Value.IsNullOrEmpty())
             {
                 continue;
             }
             SysBest_ElementEvent data = new SysBest_ElementEvent()
             {
                 ElementId  = elementId,
                 Key        = it.Key,
                 Value      = it.Value,
                 LinkId     = addressId,
                 EventType  = it.EventType.TryToInt(),
                 Pars       = (it.Pars.TryToString()).ToUrlDecode().Replace("$^douhao^$", ","),
                 CreateTime = DateTime.Now,
                 Founder    = insObj.Founder,
                 Sort       = 0
             };
             insertEventList.Add(data);
         }
         _db.InsertRange(insertEventList, false);
     }
 }
Exemple #2
0
        /// <summary>
        /// 保存事件和属性
        /// </summary>
        /// <param name="elementType"></param>
        /// <param name="insObj"></param>
        /// <returns></returns>

        public bool SaveAttrsAndEvents_temp(int elementType, SysBest_Element insObj, int addressId, List <ElementAttr> formAttrs, List <ElementEvent> formEvents)
        {
            try
            {
                _db.BeginTran();



                //保存元素
                int elementId = 0;
                var isAdd     = _db.Queryable <SysBest_Element>().Any(it => it.Html_Id == insObj.Html_Id).IsFalse();
                if (isAdd)
                {
                    //添加

                    elementId = _db.Insert <SysBest_Element>(insObj).TryToInt();
                }
                else
                {
                    //编辑
                    var data = _db.Queryable <SysBest_Element>().Single(it => it.Html_Id == insObj.Html_Id);
                    data.EleName      = insObj.EleName;
                    data.ModifiedTime = DateTime.Now;
                    data.ModifiedBy   = insObj.Founder;
                    data.ApiId        = insObj.ApiId;
                    data.Description  = insObj.Description;
                    _db.Update(data);
                    elementId = data.Id;
                }

                InsertAttrs(addressId, formAttrs, elementId, insObj.Founder);

                //插入事件
                InsertEvents(insObj, addressId, formEvents, elementId, insObj.Founder);

                //插入备份
                this.InsertElementItemBak(addressId, insObj.LanguageId, _db);

                _db.CommitTran();
                return(true);
            }
            catch (Exception ex)
            {
                _db.RollbackTran();
                throw ex;
            }
        }
Exemple #3
0
        public JsonResult SaveAttrsAndEvents(string htmlId, int addressId, int languageId, string category, string eleName, int?ApiId, string Description)
        {
            PageFactoryDomain _pfd = new PageFactoryDomain(_db);

            //允许Form有特殊字符 如 < ,等
            RequestToModel.SetIsUnvalidatedFrom = key =>
            {
                var val = Request.Unvalidated.Form.GetValues(key);
                if (val.IsNullOrEmpty())
                {
                    return(null);
                }
                var formArray = val.Select(it => it == null ? it : it.Replace(",", RequestToModel.COMMAS)).ToArray();
                return(string.Join(",", formArray));
            };

            //锁住静态对象
            lock (RequestToModel.SetIsUnvalidatedFrom)
            {
                var             elementType = _pfd.GetElementIdByCategory(category);
                SysBest_Element insObj      = new SysBest_Element()
                {
                    AddressId   = addressId,
                    CreateTime  = DateTime.Now,
                    ElementType = elementType,
                    LanguageId  = languageId,
                    EleName     = eleName,
                    Html_Id     = htmlId,
                    ApiId       = ApiId,
                    Description = Description,
                    Founder     = "聪哥"
                };
                //允许特殊字符
                var formEvents = RequestToModel.GetListByForm <ElementEvent>("event.");
                var formAttrs  = RequestToModel.GetListByForm <ElementAttr>("attr.");
                //用完清空
                RequestToModel.SetIsUnvalidatedFrom = null;
                var reval = SaveAttrsAndEvents_temp(elementType, insObj, addressId, formAttrs, formEvents);
                ActionResultModel <string> model = new ActionResultModel <string>();
                model.isSuccess = reval;
                return(Json(model));
            }
        }
Exemple #4
0
        public string GetApiUrlByElement(SysBest_Element ele)
        {
            string reval = string.Empty;
            var    apiId = ele.ApiId;
            var    api   = _db.Queryable <SysBest_DataApi>().Where(it => it.Id == apiId).SingleOrDefault();

            if (api == null)
            {
                return(reval);
            }
            if (api.ApiActionType == 10 /*插件*/)
            {
                reval = api.ActionName;
            }
            else
            {
                var address = _db.Queryable <SysBest_MenuAddress>().Where(it => it.Id == ele.AddressId).FirstOrDefault();
                if (address != null)
                {
                    reval = "/{0}/{1}/{2}".ToFormat(address.AreaName, address.ControllerName, api.ActionName);
                }
            }
            return(reval);
        }
 private void distinctHtmlIdList(SysBest_PageContent sp, List <string> formHtmlIdList)
 {
     foreach (var htmlId in formHtmlIdList)
     {
         var oldList = _db.Queryable <SysBest_Element>()
                       .Where(it => it.AddressId != sp.AddressId || it.LanguageId != sp.LanguageId)
                       .Where(it => it.Html_Id == htmlId).ToList();
         if (oldList.Any())
         {
             var oldElement = oldList.Single();
             var oldAttr    = _db.Queryable <SysBest_ElementAttr>().Where(it => it.ElementId == oldElement.Id).ToList();
             var oldEvent   = _db.Queryable <SysBest_ElementEvent>().Where(it => it.ElementId == oldElement.Id).ToList();
             var newHtmlId  = "randId_" + Guid.NewGuid().ToString().Replace("-", "");
             //替换现成HTML里面的 HTMLID
             sp.Html = sp.Html.Replace(htmlId, newHtmlId);
             _db.Update <SysBest_PageContent>(new { Html = sp.Html }, it => it.AddressId == sp.AddressId && it.LanguageId == sp.LanguageId);
             var newElement = new SysBest_Element()
             {
                 AddressId  = sp.AddressId,
                 LanguageId = sp.LanguageId,
                 Html_Id    = newHtmlId,
                 //取原始属性
                 ApiId       = oldElement.ApiId,
                 CreateTime  = DateTime.Now,
                 Description = oldElement.Description,
                 ElementType = oldElement.ElementType,
                 EleName     = oldElement.EleName,
                 Founder     = oldElement.Founder,
                 Sort        = oldElement.Sort
             };
             //插入新元素
             var id = _db.Insert <SysBest_Element>(newElement).TryToInt();
             //插入新元素属性
             foreach (var it in oldAttr)
             {
                 var attr = new SysBest_ElementAttr()
                 {
                     CreateTime = DateTime.Now,
                     ElementId  = id,
                     Founder    = it.Founder,
                     Key        = it.Key,
                     Value      = it.Value,
                     LinkId     = newElement.AddressId,
                     Sort       = it.Sort
                 };
                 _db.Insert <SysBest_ElementAttr>(attr).TryToInt();
             }
             ;
             //插入新元素事件
             foreach (var it in oldEvent)
             {
                 var even = new SysBest_ElementEvent()
                 {
                     CreateTime = DateTime.Now,
                     ElementId  = id,
                     Founder    = it.Founder,
                     Key        = it.Key,
                     Value      = it.Value,
                     LinkId     = newElement.AddressId,
                     Sort       = it.Sort,
                     EventType  = it.EventType,
                     Pars       = it.Pars,
                 };
                 _db.Insert <SysBest_ElementEvent>(even).TryToInt();
             }
             ;
         }
     }
 }