Example #1
0
        /// <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);
        }
Example #2
0
        public ApiResult Draw(DrawInput drawInput)
        {
            if (!this.IsFormValid())
            {
                return(ApiResult.Failure <Hudong>(this.FormInvalidReason()));
            }

            var result = Resolve <IHudongService>().Draw(drawInput);

            return(ApiResult.Success(result));
        }
Example #3
0
        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);
        }
Example #4
0
        /// <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 + "&nbsp";
                retval += DrawInput.InputTextField(fieldId, SearchValue, numberJSON.maxLength, "", validationFunction, "width: 50px;", "title=\"" + Common.StrLang(Text.EnterValueBetweenXandY, numberJSON.from + "," + numberJSON.to) + "\" onKeyUp=\"" + validationFunction + "\"");
                retval += "&nbsp;" + Text.And + "&nbsp;";
                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 + "&nbsp";
                retval            += DrawInput.InputTextField(fieldId, SearchValue, "10", "", validationFunction, "width: 50px;", "onKeyUp=\"" + validationFunction + "\"");
                retval            += "&nbsp;" + Text.And + "&nbsp;";
                retval            += DrawInput.InputTextField(fieldId + "_aux", SearchValueAux, "10", "", validationFunction, "width: 50px;", "onKeyUp=\"" + validationFunction + "\"");
                break;

            case Data.DATE:
                retval  = Text.Between + "&nbsp";
                retval += DrawInput.InputTextField(fieldId, SearchValue, "", "datePicker", "", "width: 85px;", "");
                retval += "&nbsp;" + Text.And + "&nbsp;";
                retval += DrawInput.InputTextField(fieldId + "_aux", SearchValueAux, "", "datePicker", "", "width: 85px;", "");
                break;

            default:
                break;
            }
            return(retval);
        }
Example #5
0
        /// <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>&nbsp;</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 += "&nbsp;<a href='#' class='dark' onClick='firstPage();'>&lt;&lt;</a>";
            retval += "&nbsp;<a href='#' class='dark' onClick='prevPage();'>&lt;</a>";
            retval += "&nbsp;<a href='#' class='dark' onClick='nextPage();'>&gt;</a>";
            retval += "&nbsp;<a href='#' class='dark' onClick='lastPage(" + totalPages + ");'>&gt;&gt;</a>";
            retval += "</div>";
            retval += "</div>";

            return(retval);
        }
Example #6
0
        /// <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));
        }
Example #7
0
        /// <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);
        }
Example #8
0
        /// <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);
        }