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); } }
/// <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; } }
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)); } }
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(); } ; } } }