/// <summary> /// Retrieves the HTML of a given role. /// </summary> /// <param name="idRole">The given idRole.</param> /// <returns>An HTML including the formatted role list and the currently selected permissions for the role.</returns> public static string GetRoleInfo(int idRole) { string retval = ""; string className = ""; Dictionary <string, bool> roleModules = Modules.GetRoleModules(idRole); //Table Header retval = "<table align='center' width='70%'>"; retval += "<tr><th width='70%'>" + Text.Module + "<th>" + Text.GrantPermission + "</th><th>" + Text.RevokePermission + "</th></tr>"; List <Module> moduleList = new List <Module>(); moduleList = Modules.GetModuleTree(moduleList, 0, 0); foreach (Module tempModule in moduleList) { string elementName = tempModule.IdModule.ToString(); bool isGranted = Common.GetBDNum("GrantPermission", "SELECT GrantPermission FROM RoleModules WHERE IdRole = " + idRole.ToString() + " AND IdModule = " + tempModule.IdModule.ToString()) == 1; bool isRevoked = Common.GetBDNum("RevokePermission", "SELECT RevokePermission FROM RoleModules WHERE IdRole = " + idRole.ToString() + " AND IdModule = " + tempModule.IdModule.ToString()) == 1; className = Common.SwitchClass(className); retval += "<tr class='" + className + "'>"; retval += "<td>" + DepthSpacing(tempModule.Depth) + Modules.FriendlyModuleName(tempModule.Name) + "</td>"; retval += "<td align='center'>" + DrawInput.InputCheckbox("grt_" + elementName, "1", isGranted, "", "", "", "") + "</td>"; retval += "<td align='center'>" + DrawInput.InputCheckbox("rvk_" + elementName, "1", isRevoked, "", "", "", "") + "</td>"; retval += "</tr>"; retval += "<script language='JavaScript'>roles[roles.length] = new Role(" + tempModule.IdModule.ToString() + ", " + tempModule.IdModuleParent.ToString() + ");</script>"; } //Table Footer retval += "</table>"; return(retval); }
public ApiResult Draw(DrawInput drawInput) { if (!this.IsFormValid()) { return(ApiResult.Failure <Hudong>(this.FormInvalidReason())); } var result = Resolve <IHudongService>().Draw(drawInput); return(ApiResult.Success(result)); }
public static string DrawThemeTreeSelect(string fieldId, string selected, int idTheme, string defaultText) { string retval = ""; string themeJSON = GetThemeTree(0, idTheme); selected = Common.StrAdd(GetThemeTreeFromId(selected), "_", selected); retval = DrawInput.InputHiddenField(fieldId, selected, "", ""); retval += "<div id='tree_" + fieldId + "'></div>"; retval += "<script language='JavaScript'>"; retval += "$('#tree_" + fieldId + "').treeSelectJSON({"; retval += " source: " + themeJSON + ","; retval += " target: '" + fieldId + "',"; retval += " defaultText: '- " + defaultText + " -',"; retval += " preselected: '" + selected + "'"; retval += "});"; retval += "</script>"; return(retval); }
/// <summary> /// Retrieves the HTML for the current field. /// </summary> /// <returns>An HTML String.</returns> public string GetSearchHTML() { string retval = ""; string fieldId = "data_" + IdData.ToString(); string validationFunction = ""; switch (Kind) { case Data.SIMPLE_TEXT: case Data.YES_NO: case Data.OPTIONS: case Data.CHECKBOX: case Data.TREE: case Data.EMAIL: retval = GetFieldHTML(); break; case Data.MULTI_TEXT: retval = DrawInput.InputTextField(fieldId, SearchValue, "", "", "", "", ""); break; case Data.INTEGER: case Data.FLOAT: NumberJSON numberJSON = JsonConvert.DeserializeObject <NumberJSON>(AuxValues); if ((numberJSON.from == numberJSON.to) && (numberJSON.to == 0)) { numberJSON.maxLength = "10"; } if (Kind == Data.FLOAT) { validationFunction = "validateFloat($(this), event);"; } else { validationFunction = "validateInt($(this), event);"; } retval = Text.Between + " "; retval += DrawInput.InputTextField(fieldId, SearchValue, numberJSON.maxLength, "", validationFunction, "width: 50px;", "title=\"" + Common.StrLang(Text.EnterValueBetweenXandY, numberJSON.from + "," + numberJSON.to) + "\" onKeyUp=\"" + validationFunction + "\""); retval += " " + Text.And + " "; retval += DrawInput.InputTextField(fieldId + "_aux", SearchValueAux, numberJSON.maxLength, "", validationFunction, "width: 50px;", "title=\"" + Common.StrLang(Text.EnterValueBetweenXandY, numberJSON.from + "," + numberJSON.to) + "\" onKeyUp=\"" + validationFunction + "\""); break; case Data.SLIDER: validationFunction = "validateInt($(this), event);"; retval = Text.Between + " "; retval += DrawInput.InputTextField(fieldId, SearchValue, "10", "", validationFunction, "width: 50px;", "onKeyUp=\"" + validationFunction + "\""); retval += " " + Text.And + " "; retval += DrawInput.InputTextField(fieldId + "_aux", SearchValueAux, "10", "", validationFunction, "width: 50px;", "onKeyUp=\"" + validationFunction + "\""); break; case Data.DATE: retval = Text.Between + " "; retval += DrawInput.InputTextField(fieldId, SearchValue, "", "datePicker", "", "width: 85px;", ""); retval += " " + Text.And + " "; retval += DrawInput.InputTextField(fieldId + "_aux", SearchValueAux, "", "datePicker", "", "width: 85px;", ""); break; default: break; } return(retval); }
/// <summary> /// Retrieves the question list as an HTML string. /// </summary> /// <param name="modules">The current user modules.</param> /// <param name="currentPage">The current page used.</param> /// <param name="filter">An SQL filter.</param> /// <returns>The HTML string with the question list.</returns> public static string GetQuestionList(Dictionary <string, bool> modules, int currentPage, string filter, bool forSelection) { string retval = ""; string className = ""; int total = 0; string sql = "SELECT COUNT(IdQuestion) AS HowMany FROM ExamQuestion"; sql = Common.StrAdd(sql, " WHERE ", filter); double recordsPerPage = Config.RecordsPerPage(); double totalRecords = Common.GetBDNum("HowMany", sql); int totalPages = Convert.ToInt32(Math.Ceiling(totalRecords / recordsPerPage)); if (currentPage > totalPages) { currentPage = totalPages; } if (currentPage == 0) { currentPage = 1; } retval = "<table width='100%'>"; retval += "<tr>"; //Table Header if (forSelection) { retval += "<th> </th>"; } retval += "<th>" + Text.Identifier + "</th><th>" + Text.Question + "</th>"; if (!forSelection) { retval += "<th>" + Text.Theme + "</th><th>" + Text.Status + "</th>"; } retval += "<th>" + Text.DifficultyIndex + "</th></tr>"; sql = "SELECT IdQuestion, Question FROM (SELECT IdQuestion, Question, ROW_NUMBER() OVER (ORDER BY IdQuestion) AS RowNum FROM ExamQuestion"; sql = Common.StrAdd(sql, " WHERE ", filter); sql += ") AS U WHERE U.RowNum BETWEEN ((" + currentPage + " - 1) * " + recordsPerPage + ") + 1 AND " + recordsPerPage + " * (" + currentPage + ")"; string[] idQuestionList = Common.CSVToArray(Common.GetBDList("IdQuestion", sql, false)); foreach (string idQuestion in idQuestionList) { try { ExamQuestion question = new ExamQuestion(Convert.ToInt32(idQuestion)); ExamTheme theme = new ExamTheme(question.IdTheme); string themeName = ""; if (String.IsNullOrEmpty(theme.Theme)) { themeName = Text.None; } else { themeName = theme.Theme; } className = Common.SwitchClass(className); string questionStatus = Text.Inactive; if (question.Status == ExamQuestionStatus.ACTIVE) { questionStatus = Text.Active; } retval += "<tr class='" + className + "' id='q_" + idQuestion + "' onClick='showQuestion(" + idQuestion + ");'>"; if (forSelection) { retval += "<td width='5%' align='center'>" + DrawInput.InputCheckbox("q_chk_" + idQuestion, "", false, "questionChk", "", "", "") + "</td>"; } retval += "<td width='5%' align='center'>" + question.IdQuestion + "</td>"; retval += "<td width='60%'>" + Common.BBCodeToHTML(question.Question) + "</td>"; if (!forSelection) { retval += "<td width='20%' align='center'>" + themeName + "</td>"; retval += "<td width='10%' align='center'>" + questionStatus + "</td>"; } retval += "<td width='5%' align='center'>" + String.Format("{0:0.00}", question.DifficultyIndex("")) + "</td>"; retval += "</tr>"; total++; } catch (Exception ex) { } } retval += "</table>"; //footer / pagination retval += "<div align='center' class='pagination'>"; retval += "<div align='left' style='width: 50%; display: inline-block;'>" + Common.StrLang(Text.ShowingXofY, total.ToString() + "," + totalRecords.ToString()) + " " + Text.Question_s + "</div>"; retval += "<div align='right' style='width: 50%; display: inline-block;'>" + Common.StrLang(Text.PageXofY, currentPage.ToString() + "," + totalPages.ToString()); retval += " <a href='#' class='dark' onClick='firstPage();'><<</a>"; retval += " <a href='#' class='dark' onClick='prevPage();'><</a>"; retval += " <a href='#' class='dark' onClick='nextPage();'>></a>"; retval += " <a href='#' class='dark' onClick='lastPage(" + totalPages + ");'>>></a>"; retval += "</div>"; retval += "</div>"; return(retval); }
/// <summary> /// 抽奖所中 /// 如果抽中储值1,优惠券4,打折券2,兑换券3则直接存储在用户账户,同时记录到中奖记录表 /// 需要返回一个中奖项,用户剩余可抽奖次数 /// </summary> /// <param name="drawInput"></param> /// <returns></returns> public ServiceResult Draw(DrawInput drawInput) { if (drawInput.DrawCount <= 0) { return(ServiceResult.FailedWithMessage("抽奖次数已用完!")); } if (drawInput.Id == null) { return(ServiceResult.FailedWithMessage("获取数据为空!")); } var model = GetSingle(ObjectId.Parse(drawInput.Id), drawInput.Key); if (model == null) { return(ServiceResult.FailedWithMessage("获取数据为空!")); } var list = model.Awards; var rateDic = new Dictionary <Guid, int>(); list.ForEach(a => { if (a.Count > 0) { rateDic.Add(a.AwardId, (int)a.Rate * 100); } }); var resultsDic = Lottery(rateDic); //获取抽奖结果 var results = ""; foreach (var d in resultsDic) { results = d.Key.ToString(); } if (!string.IsNullOrEmpty(results)) { var winList = model.Awards.Where(a => a.AwardId == results.ToGuid()); var awardWin = winList.FirstOrDefault(u => u.AwardId == results.ToGuid()); var updateResult = true; //中奖后要减去对应的奖品数量 if (awardWin.Type != HudongAwardType.None) //如果中奖项为:未中奖,则不用更改数据 { var awardList = new List <HudongAward>(); foreach (var award in model.Awards) { var awardModel = new HudongAward(); if (award.AwardId == results.ToGuid()) { awardModel.Count = award.Count - 1; } else { awardModel.Count = award.Count; } awardModel.AwardId = award.AwardId; awardModel.img = award.img; awardModel.Grade = award.Grade; awardModel.Rate = award.Rate; awardModel.Type = award.Type; awardModel.worth = award.worth; awardList.Add(awardModel); } model.Awards = awardList; updateResult = Update(model); } //更改中奖数量 if (updateResult) { //根据中奖的awardID查询对应model var drawType = awardWin.Type.Value(); var intro = awardWin.Intro.IsNullOrEmpty() ? "" : awardWin.Intro; var worth = awardWin.worth; var count = awardWin.Count; //每次抽奖后需要一条抽奖记录 var recordModel = new HudongRecord(); recordModel.UserId = drawInput.UserId; recordModel.HuDongType = HuDongEnums.BigWheel; recordModel.Intro = intro; recordModel.HuDongStatus = AwardStatus.NotExchange; recordModel.Grade = awardWin.Grade; recordModel.HuDongActivityType = awardWin.Type; var moneyTypes = new MoneyTypeConfig(); var moneyType = MoneyTypeConfig.Credit; if (drawType == HudongAwardType.StoreValue.Value()) //储值对应人民币 { moneyTypes.Id = MoneyTypeConfig.CNY; recordModel.HuDongStatus = AwardStatus.Exchage; } else if (drawType == HudongAwardType.Discount.Value()) //赠送消费额 { moneyTypes.Id = MoneyTypeConfig.ShopAmount; recordModel.HuDongStatus = AwardStatus.Exchage; } else if (drawType == HudongAwardType.Integral.Value()) //积分 { moneyTypes.Id = MoneyTypeConfig.Point; recordModel.HuDongStatus = AwardStatus.Exchage; } else if (drawType == HudongAwardType.Coupon.Value()) //优惠券 { moneyTypes.Id = MoneyTypeConfig.Preferential; recordModel.HuDongStatus = AwardStatus.Exchage; } var recordResult = Resolve <IHudongRecordService>().AddRecord(recordModel); //抽奖记录 if (recordResult.Succeeded && awardWin.Type != HudongAwardType.None && recordModel.HuDongStatus == AwardStatus.Exchage) { var user = Resolve <IUserService>().GetSingle(drawInput.UserId); Resolve <IBillService>().Increase(user, moneyTypes, worth, "大转盘抽奖中奖获得"); } } } return(ServiceResult.SuccessWithObject(results)); }
/// <summary> /// Retrieves and returns the current Data Fields list. /// </summary> /// <returns>An HTML including the data fields list.</returns> public static string GetDataFieldsList() { string retval = ""; string className = ""; int total = 0; string dataGroupList = ""; retval = "<table width='60%' align='center'><tr><td><ul id='dataGroups' style='list-style-type: none; margin: 0; padding: 0; width: 100%'>"; string[] idDataGroupList = Common.CSVToArray(Common.GetBDList("IdDataGroup", "SELECT IdDataGroup, Name FROM DataGroup ORDER BY GroupSequence", false)); foreach (string idDataGroup in idDataGroupList) { if (!String.IsNullOrEmpty(idDataGroup)) { DataGroup dataGroup = new DataGroup(Convert.ToInt32(idDataGroup)); dataGroupList = Common.StrAdd(dataGroupList, ",", "#idDG_" + dataGroup.IdDataGroup); retval += "<li id='idGroup_" + dataGroup.IdDataGroup + "'><span class='moveIcon'><img src='images/move.png' /></span><div class='cellTitle' align='center' style='height: 32px;'>" + dataGroup.Name + "</div>"; retval += "<ul id='idDG_" + dataGroup.IdDataGroup + "' class='dragEnabledConn' style='list-style-type: none; margin: 0; padding: 8; width: 100%'>"; string[] idDataList = Common.CSVToArray(Common.GetBDList("IdData", "SELECT IdData, Name FROM DataDesc WHERE IdDataGroup = " + idDataGroup + " ORDER BY FieldSequence", false)); foreach (string idData in idDataList) { try { DataDesc dataDesc = new DataDesc(Convert.ToInt32(idData)); className = Common.SwitchClass(className); retval += "<li id='idDI_" + dataDesc.IdData + "' class='" + className + "' style='height: 32px'><span class='moveIcon'><img src='images/move.png' /></span><span onClick='editField(" + idData + ");' style='margin-left: 30px;'>" + dataDesc.Name + " (" + Data.FriendlyName(dataDesc.Kind) + ")" + (dataDesc.Inactive == 1 ? " <i>" + Text.Inactive + "</i>" : "") + "</span></li>"; total++; } catch (Exception ex) { } } retval += "</ul>"; retval += "<div align='right'>"; if (Modules.PermissionOr(SessionHandler.Modules, Modules.EDIT_FIELDS + "," + Modules.DATAFIELDS_ADMINISTRATION)) { retval += DrawInput.InputButton("editGrp_" + dataGroup.IdDataGroup, Text.Edit, "", "editGroup(" + dataGroup.IdDataGroup + ", '" + dataGroup.Name + "'); return false;", "background-image: url(./images/edit.png); background-repeat: no-repeat; height: 30px; padding-left: 30px;", ""); } if (Modules.PermissionOr(SessionHandler.Modules, Modules.DELETE_FIELDS + "," + Modules.DATAFIELDS_ADMINISTRATION)) { retval += DrawInput.InputButton("deleteGrp_" + dataGroup.IdDataGroup, Text.Delete, "", "deleteGroup(" + dataGroup.IdDataGroup + "); return false;", "background-image: url(./images/delete.png); background-repeat: no-repeat; height: 30px; padding-left: 30px;", ""); } retval += "</div></li>"; } } retval += "</ul>"; if (!String.IsNullOrEmpty(dataGroupList)) { retval += "<script type='text/javascript'>"; retval += "$('" + dataGroupList + "').sortable({ connectWith: '.dragEnabledConn', placeholder: 'sort-placeholder', handle: '.moveIcon', stop: function(event, ui) { invalidateList($(this).attr('id'), $(this).sortable('toArray')); }, receive: function(event, ui) { invalidateList($(this).attr('id'), $(this).sortable('toArray')); } }).disableSelection();"; retval += "$('#dataGroups').sortable({ handle: '.moveIcon', stop: function(event, ui) { invalidateList($(this).attr('id'), $(this).sortable('toArray')); } }).disableSelection();"; retval += "</script>"; } //Footer retval += "<div align='center' class='pagination'>"; retval += "<div align='left' style='width: 100%; display: inline-block;'>" + Common.StrLang(Text.ShowingXofY, total.ToString() + "," + total.ToString()) + " " + Text.Field_s + "</div>"; retval += "</div></td></tr></table>"; return(retval); }
/// <summary> /// Builds the HTML code for a given field. /// </summary> /// <returns>The HTML string of the field.</returns> public string GetFieldHTML() { string retval = ""; string fieldId = "data_" + IdData.ToString(); string validationFunction = ""; switch (Kind) { case Data.SIMPLE_TEXT: retval = DrawInput.InputTextField(fieldId, Value, "", "", "", "", ""); break; case Data.YES_NO: retval = DrawInput.InputSelect(fieldId, Value, Common.CSVToArray("," + Text.Yes + "," + Text.No), "", "", "", ""); break; case Data.OPTIONS: retval = DrawInput.InputSelect(fieldId, Value, Common.CSVToArray('|', "|" + AuxValues), "", "", "", ""); break; case Data.INTEGER: NumberJSON numberJSON = JsonConvert.DeserializeObject <NumberJSON>(AuxValues); if ((numberJSON.from == numberJSON.to) && (numberJSON.to == 0)) { validationFunction = "validateInt($(this), event);"; numberJSON.maxLength = "10"; } else { validationFunction = "validateInt($(this), event, " + numberJSON.from + ", " + numberJSON.to + ");"; } retval = DrawInput.InputTextField(fieldId, Value, numberJSON.maxLength, "", validationFunction, "width: 50px;", "title=\"" + Common.StrLang(Text.EnterValueBetweenXandY, numberJSON.from + "," + numberJSON.to) + "\" onKeyUp=\"validateInt($(this), event);\""); break; case Data.FLOAT: NumberJSON numberJSONf = JsonConvert.DeserializeObject <NumberJSON>(AuxValues); if ((numberJSONf.from == numberJSONf.to) && (numberJSONf.to == 0)) { validationFunction = "validateFloat($(this), event);"; numberJSONf.maxLength = "10"; } else { validationFunction = "validateFloat($(this), event, " + numberJSONf.from + ", " + numberJSONf.to + ");"; } retval = DrawInput.InputTextField(fieldId, Value, numberJSONf.maxLength, "", validationFunction, "width: 50px;", "title=\"" + Common.StrLang(Text.EnterValueBetweenXandY, numberJSONf.from + "," + numberJSONf.to) + "\" onKeyUp=\"validateFloat($(this), event);\""); break; case Data.DATE: retval = DrawInput.InputTextField(fieldId, Value, "", "datePicker", "", "width: 85px;", ""); break; case Data.CHECKBOX: retval = DrawInput.InputCheckbox(fieldId, Value, (Value == "1"), "", "", "", "onChange='toggleCheckbox($(this));'"); break; case Data.TREE: retval = DrawInput.InputHiddenField(fieldId, Value, "", ""); retval += "<div id='tree_" + fieldId + "'></div>"; retval += "<script language='JavaScript'>"; retval += "$('#tree_" + fieldId + "').treeSelectJSON({"; retval += " source: " + AuxValues + ","; retval += " target: '" + fieldId + "',"; retval += " defaultText: '- " + Common.SQSF(Text.Select) + " -',"; retval += " preselected: '" + Value + "'"; retval += "});"; retval += "</script>"; break; case Data.MULTI_TEXT: retval = DrawInput.InputTextArea(fieldId, Value, "4", "", "", "", "width: 100%;", ""); break; case Data.SLIDER: if (String.IsNullOrEmpty(Value)) { Value = "0"; } retval = DrawInput.InputHiddenField(fieldId, Value, "", ""); retval += "<div id='" + fieldId + "_slider'></div>"; retval += "<script language='JavaScript'>"; retval += "$('#" + fieldId + "_slider').slider({ value: " + Value + ", max: " + AuxValues + ", change: function() { $('#" + fieldId + "').val($('#" + fieldId + "_slider').slider('option', 'value')) }});"; retval += "</script>"; break; case Data.EMAIL: retval = DrawInput.InputTextField(fieldId, Value, "", "", "validateEmail($(this));", "", "title=\"" + Text.InvalidEmail + "\" placeholder=\"[email protected]\""); break; case Data.LABEL: retval = "<div align='center'>" + AuxValues + "</div>"; break; default: break; } return(retval); }