Exemple #1
0
        /// <summary>
        /// 根据教务网账号获取姓名
        /// </summary>
        /// <param name="account"></param>
        /// <param name="name"></param>
        /// <returns></returns>
        public QssResult QssGetNameByAccount(string account, out string name)
        {
            QssResult result = QssGetUserByAccount(account, out User user);

            name = result == QssResult.Success ? user.Name : "";
            return(result);
        }
Exemple #2
0
        /// <summary>
        /// 根据邮箱获取账号
        /// </summary>
        /// <param name="email">邮箱</param>
        /// <param name="account">返回的账号</param>
        /// <returns></returns>
        public QssResult QssGetAccountByEmail(string email, out string account)
        {
            QssResult result = QssGetUserByEmail(email, out User user);

            account = result == QssResult.Success ? user.Account : "";
            return(result);
        }
Exemple #3
0
 /// <summary>
 /// Content通用返回方法
 /// </summary>
 /// <param name="result">处理结果</param>
 /// <param name="message">处理结果信息</param>
 /// <param name="successUrl">成功消息/跳转链接</param>
 /// <returns></returns>
 protected ActionResult QssContentCommonReturn(QssResult result, string message, string failUrl, string successUrl)
 {
     return(Json(
                result == QssResult.Error ? RedirectToAction("LogOff", "Account") as ActionResult :
                result == QssResult.Fail ? Content(QssReturnHepler.QssGetReturnContent(message, failUrl)) :
                Content(QssReturnHepler.QssGetReturnContent(message, successUrl))
                ));
 }
Exemple #4
0
        /// <summary>
        /// 创建投票
        /// </summary>
        /// <param name="content">投票内容</param>
        /// <param name="message">处理结果信息</param>
        /// <returns></returns>
        public QssResult QssCreateVote(string content, out string message)
        {
            // 获取当前登录用户
            QssResult result = DbSession.UserDal.QssGetUserByAccount(User.Identity.Name, out User user);

            if (result != QssResult.Success)
            {
                message = "获取当前用户失败!";
                return(QssResult.Error);
            }

            // 校验邮箱
            if (!user.QssCheckHaveEmail())
            {
                message = "未绑定邮箱!";
                return(QssResult.Fail);
            }

            // 每人每天只能添加3份投票
            if (user.LastAddVoteTime.AddDays(1) > DateTime.Now && user.AddVoteNum >= 3)
            {
                message = "添加投票失败,每人每天只能添加3份投票!";
                return(QssResult.Error);
            }

            // 获取投票内容
            JObject voteRoot = (JObject)JsonConvert.DeserializeObject(content);

            // 全局变量
            JObject voteGlobal = (JObject)voteRoot["Global"];

            // 创建投票
            result = QssCreateVoteGlobal(voteGlobal, user, out Vote vote, out message);
            if (result != QssResult.Success)
            {
                return(result);
            }

            // 创建选项
            JArray voteOption = (JArray)voteRoot["Option"];

            result = new VoteOptionService().QssCreateVoteOption(voteOption, user, vote, out message);
            if (result != QssResult.Success)
            {
                return(result);
            }

            // 保存投票内容
            result = QssCreateVoteContent(vote, out message);
            if (result != QssResult.Success)
            {
                return(result);
            }

            // 发送站内信和邮件
            return(new QssSendQvLetterEmail <Vote>(vote).Send(out message));
        }
Exemple #5
0
        /// <summary>
        /// 创建问卷
        /// Error:跳转
        /// </summary>
        /// <param name="content">问卷内容</param>
        /// <param name="message">处理结果信息</param>
        /// <returns></returns>
        public QssResult QssCreateQues(string content, out string message)
        {
            // 获取当前登录用户
            QssResult result = DbSession.UserDal.QssGetUserByAccount(User.Identity.Name, out User user);

            if (result != QssResult.Success)
            {
                message = "获取当前用户失败!";
                return(QssResult.Error);
            }

            if (!user.QssCheckHaveEmail())
            {
                message = "未绑定邮箱!";
                return(QssResult.Fail);
            }

            // 每人每天只能添加3份问卷
            if (user.LastAddQuesTime.AddDays(1) > DateTime.Now && user.AddQuesNum >= 3)
            {
                message = "添加问卷失败,每人每天只能添加3份问卷!";
                return(QssResult.Error);
            }

            // 获取问卷内容
            JObject quesRoot = (JObject)JsonConvert.DeserializeObject(content);

            // 全局变量
            JObject quesGlobal = (JObject)quesRoot["Global"];

            // 创建问卷
            result = QssCreateQuesGlobal(quesGlobal, user, out Question question, out message);
            if (result != QssResult.Success)
            {
                return(result);
            }

            // 创建题目
            JArray quesSubject = (JArray)quesRoot["Subjects"];

            result = new QuesSubjectService().QssCreateQuesSubject(quesSubject, user, question, out message);
            if (result != QssResult.Success)
            {
                return(result);
            }

            // 保存问卷内容
            result = QssCreateQuesContent(question, out message);
            if (result != QssResult.Success)
            {
                return(result);
            }

            // 发送站内信和邮件
            return(new QssSendQvLetterEmail <Question>(question).Send(out message));
        }
        public ActionResult Login(LoginModel model, string returnUrl)
        {
            ViewBag.ReturnUrl = returnUrl;
            if (ModelState.IsValid)
            {
                // 若是超级管理员
                // 因为超级管理员的账号不是教务网账号,是单独设置的,所以需要单独处理
                if (model.Account == QssEnvironment.AdministratorAccount)
                {
                    QssResult result = AdministratorLogin(model.Password, out string _result);
                    if (result != QssResult.Success)
                    {
                        ModelState.AddModelError("", _result);
                        return(View());
                    }
                    return(Redirect(_result));
                }

                // 模拟登陆确认用户合法
                var login    = new QssSicauLoginHelper();
                var userType = model.Account.Length >= 8 ? UserType.S : UserType.T;
                try
                {
                    if (login.Login(model.Account, model.Password, userType))
                    {
                        // 账号密码正确
                        // 开始更新用户信息
                        var result = UserService.QssUpdateUserInfo(login, userType, out User user);
                        if (result != QssResult.Success)
                        {
                            QssLogHelper.Log("更新用户信息失败", "用户登录时,更新用户信息失败!用户:" + model.Account, QssLogType.Error, $"{model.Account}({user.Name})");
                            ModelState.AddModelError("", "更新用户信息失败!请重试.");
                            return(View(model));
                        }

                        // 更新用户信息成功
                        // 开始处理登录请求
                        LoginHandle(user.Account, user.Role.Name + "|" + user.Name + "|" + user.Id);
                        QssLogHelper.Log("登录成功", "登录成功!", QssLogType.Info, $"{model.Account}({user.Name})");
                        // 跳转到AutoDealOrg进行自动加入或退出组织处理
                        return(RedirectToAction("AutoDealOrg", "Account", new { returnUrl = returnUrl }));
                    }
                }
                catch (Exception exception)
                {
                    ModelState.AddModelError("", "登录教务网失败!" + exception.Message);
                    QssLogHelper.Log("更新用户信息失败", "用户登录教务网失败!用户:" + model.Account, QssLogType.Error, exception);
                    return(View(model));
                }

                // 账号密码错误
                ModelState.AddModelError("", "登录失败,账号密码错误!或是教务网未评教,请评教后请重试.");
                return(View(model));
            }
            return(View(model));
        }
Exemple #7
0
        /// <summary>
        /// 保存填写投票内容
        /// </summary>
        /// <param name="content">投票内容</param>
        /// <param name="message">处理后的结果信息</param>
        /// <returns></returns>
        public QssResult QssSaveVote(string content, out string message)
        {
            JObject voteRoot = (JObject)JsonConvert.DeserializeObject(content);
            int     voteId   = Convert.ToInt32(voteRoot["Id"]);

            // 查看填写问卷权限
            if (CheckWtAuth(voteId, out Vote vote, out message) != QssResult.Success)
            {
                return(QssResult.Fail);
            }

            // 投票状态
            if (vote.State != QssQuesAndVoteState.Write)
            {
                message = "投票已结束,不能填写!";
                return(QssResult.Fail);
            }

            // 获取当前用户
            QssResult result = DbSession.UserDal.QssGetUserByAccount(User.Identity.Name, out User user);

            if (result != QssResult.Success)
            {
                message = "获取当前用户失败!";
                QssLogHelper.Log("没有获取到当前用户", "在保存填写的问卷时,没有获取到当前用户", QssLogType.Warn);
                return(QssResult.Error);
            }

            // 校验权限
            if (vote.VoteWtOrganizes.Intersect(user.JoinOrganizes).Count() <= 0)
            {
                message = "权限不够";
                return(QssResult.Fail);
            }

            // 保存选项
            result = new VoteOptionService().QssSaveVoteWtLog((JArray)voteRoot["Option"], vote, out List <GetWtVoteOption> wtOptions, out message);
            if (result != QssResult.Success)
            {
                return(result);
            }

            // 保存结果
            result = QssSaveResult(vote, out message);
            if (result != QssResult.Success)
            {
                return(result);
            }

            // 保存填写记录
            return(new WtLogService().QssSaveVoteWtLog(vote, wtOptions.ToArray(), user, out message));
        }
Exemple #8
0
        public ActionResult Edit(int id, string content)
        {
            // 先删除
            QssResult result = VoteService.QssDeleteVote(id, out string message);

            if (result != QssResult.Success)
            {
                return(Json(new QssJsonResult()
                {
                    Message = message, Type = QssJsonResultType.Fail.ToString()
                }));
            }
            // 再创建
            return(QssJsonCommonReturn(VoteService.QssCreateVote(content, out message), "/Users/VoteList"));
        }
Exemple #9
0
 /// <summary>
 /// Json通用返回方法
 /// </summary>
 /// <param name="result">处理结果</param>
 /// <param name="message">处理结果信息</param>
 /// <param name="successUrl">成功消息/跳转链接</param>
 /// <returns></returns>
 protected ActionResult QssJsonCommonReturn(QssResult result, string message, string successUrl)
 {
     return(Json(
                result == QssResult.Error ? new QssJsonResult()
     {
         Type = QssJsonResultType.Danger.ToString(), Message = "/Account/LogOff"
     } :
                result == QssResult.Fail ? new QssJsonResult()
     {
         Type = QssJsonResultType.Fail.ToString(), Message = message
     } :
                new QssJsonResult()
     {
         Type = QssJsonResultType.Success.ToString(), Message = successUrl ?? message
     }
                ));
 }
Exemple #10
0
        /// <summary>
        /// 创建问卷题目
        /// </summary>
        /// <param name="subject">问卷题目</param>
        /// <param name="user"></param>
        /// <param name="message"></param>
        /// <returns></returns>
        public QssResult QssCreateQuesSubject(JArray subjects, User user, Question question, out string message)
        {
            foreach (JObject subject in subjects)
            {
                // 创建题目
                QuesSubject quesSubject = new QuesSubject()
                {
                    Content  = (string)subject["Content"],
                    Question = question
                };

                // 题目类型
                string type = (string)subject["Type"];
                quesSubject.Type =
                    // 单选题
                    type == QssQuesSubType.Radio.ToString() ? QssQuesSubType.Radio :
                    // 多选题
                    type == QssQuesSubType.Multiselect.ToString() ? QssQuesSubType.Multiselect :
                    // 主观题
                    type == QssQuesSubType.Subjective.ToString() ? QssQuesSubType.Subjective :
                    // 判断题
                    QssQuesSubType.Judge;

                // 保存题目
                QssResult result = QssSaveSubject(quesSubject, out message);
                if (result != QssResult.Success)
                {
                    return(result);
                }

                // 创建选项
                if (quesSubject.Type == QssQuesSubType.Subjective)
                {
                    continue;                                                // 主观题无选项
                }
                result = new QuesOptionService().QssCreateQuesOption((JArray)subject["Options"], user, quesSubject, out message);
                if (result != QssResult.Success)
                {
                    return(result);
                }
            }
            message = "创建问卷题目成功!";
            return(QssResult.Success);
        }
Exemple #11
0
        public ActionResult Create(CreateOrgModel model)
        {
            // 组织类型
            QssOrganizeType type =
                model.OrgType == QssOrganizeType.Association.ToString() ? QssOrganizeType.Association :
                model.OrgType == QssOrganizeType.Campus.ToString() ? QssOrganizeType.Campus :
                model.OrgType == QssOrganizeType.Class.ToString() ? QssOrganizeType.Class :
                model.OrgType == QssOrganizeType.College.ToString() ? QssOrganizeType.College :
                model.OrgType == QssOrganizeType.Department.ToString() ? QssOrganizeType.Department :
                model.OrgType == QssOrganizeType.Major.ToString() ? QssOrganizeType.Major :
                model.OrgType == QssOrganizeType.School.ToString() ? QssOrganizeType.School :
                QssOrganizeType.Temp;

            if (ModelState.IsValid)
            {
                QssResult result = OrganizeService.QssCreateOrganize(type, model.OrgName, model.Password, model.ComPassword, out string message);
                switch (result)
                {
                case QssResult.Success:
                    return(Content(QssReturnHepler.QssGetReturnContent(message, "/Users/OrganizeList")));

                case QssResult.Fail:
                    return(Content(QssReturnHepler.QssGetReturnContent(message, "/Organize/Create")));

                case QssResult.Error:
                default:
                    return(RedirectToAction("LogOff", "Account"));
                }
            }

            string errmsg = "";

            foreach (var item in ModelState.Values)
            {
                foreach (var _item in item.Errors)
                {
                    errmsg += _item.ErrorMessage;
                }
            }
            return(Content(QssReturnHepler.QssGetReturnContent(errmsg, "/Organize/Create")));
        }
Exemple #12
0
        /// <summary>
        /// 修改密码
        /// </summary>
        /// <param name="oldPasswd">旧密码</param>
        /// <param name="passwd">新密码</param>
        /// <returns></returns>
        public QssResult ChangePassword(string oldPasswd, string passwd, out string _result)
        {
            QssResult result = GetAdministrator(out AdministratorModel admin);

            // 获取成功
            if (result == QssResult.Success)
            {
                // 旧密码正确
                if (admin.Password == QssMD5Helper.QssGetMd5(admin.Account, oldPasswd))
                {
                    try
                    {
                        var config = DbSession.WebConfigDal.GetEntities(p => true).FirstOrDefault();
                        config.Password = QssMD5Helper.QssGetMd5(admin.Account, passwd);
                        DbSession.WebConfigDal.Update(config);
                        // 保存新密码
                        DbSession.SaveChanges();

                        // 修改密码成功
                        _result = "修改密码成功!";
                        return(QssResult.Success);
                    }
                    catch (Exception exception)
                    {
                        // 保存失败
                        QssLogHelper.Log("修改密码错误", "超级管理员在修改密码时保存新密码出现错误!错误原因: " + exception.Message, QssLogType.Error, exception);
                        _result = "修改密码失败!请重试.";
                        return(QssResult.Fail);
                    }
                }

                // 旧密码错误
                QssLogHelper.Log("管理员密码错误", "超级管理员在修改密码,但是旧密出现错误! ", QssLogType.Warn);
                _result = "旧密码错误!登录已被注销.";
                return(QssResult.Error);
            }

            // 没有正确获取到管理员
            _result = "系统出现严重错误!请查看日志.";
            return(QssResult.Error);
        }
        public ActionResult RegisterEmail(RegisterEmailModel model)
        {
            if (ModelState.IsValid)
            {
                string code = Guid.NewGuid().ToString().Replace("-", "");
                string url  = new UriBuilder(Request.Url)
                {
                    Path  = Url.Action("ActivateEmail", "Account", new { id = code }),
                    Query = ""
                }.ToString();
                QssResult result = UserService.QssRegisterEmail(model.Email, url, code, out string _result);
                if (result == QssResult.Success)
                {
                    return(Content(QssReturnHepler.QssGetReturnContent(_result, "/Users")));
                }

                ModelState.AddModelError("", _result);
                return(View(model));
            }
            return(View(model));
        }
Exemple #14
0
        /// <summary>
        /// 获取最新问卷/投票
        /// </summary>
        /// <param name="searchStr">搜索词</param>
        /// <returns></returns>
        public IQueryable <NewQuesAndVoteModel> GetNewQuesVote(string searchStr)
        {
            // 最新问卷/投票
            var newQuesVote = CurrentDal.GetEntities(p => p.State == QssQuesAndVoteState.End);
            // 是否统计最新问卷/投票
            bool isCount = false;

            // 已登录
            if (HttpContext.Current.Request.IsAuthenticated)
            {
                // 获得已登录用户
                QssResult result = DbSession.UserDal.QssGetUserByAccount(User.Identity.Name, out User user);
                // 获取用户成功
                if (result == QssResult.Success)
                {
                    // 获得该用户已加入的组织
                    var joinOrganize = user.JoinOrganizes.Select(x => x.Id);
                    // 已加入组织大于0
                    if (joinOrganize.Any())
                    {
                        result = DbSession.OrganizeDal.QssGetSchool(out Organize isPublic);
                        // 学校组织存在
                        if (result == QssResult.Success)
                        {
                            // 最新问卷/投票
                            // 条件:已结束,结果对全校公开或者对自己加入的组织公开
                            int shId = isPublic.Id;
                            newQuesVote = newQuesVote.Where(p => p.QuesRdOrganizes.Any(x => x.Id == shId) || p.QuesRdOrganizes.Where(x => joinOrganize.Contains(x.Id)).Any()).OrderByDescending(p => p.Id);
                        }
                        // 学校组织不存在或有多个
                        else
                        {
                            // 最新问卷/投票
                            // 条件:已结束,结果对自己加入的组织公开
                            newQuesVote = newQuesVote.Where(p => p.QuesRdOrganizes.Where(x => joinOrganize.Contains(x.Id)).Any()).OrderByDescending(p => p.Id);
                        }
                        // 标记为已统计
                        isCount = true;
                    }
                }
            }
            // 未统计最新问卷/投票(未登录或者已登录但是加入的组织数为零)
            if (!isCount)
            {
                QssResult result = DbSession.OrganizeDal.QssGetSchool(out Organize isPublic);
                // 学校组织存在
                if (result == QssResult.Success)
                {
                    // 最新问卷/投票
                    // 条件:已结束, 结果对全校公开
                    int shId = isPublic.Id;
                    newQuesVote = newQuesVote.Where(p => p.QuesRdOrganizes.Any(x => x.Id == shId)).OrderByDescending(p => p.Id);
                }
                // 学校组织不存在或有多个
                else
                {
                    newQuesVote = newQuesVote.Where(p => false);
                }
            }

            // 搜索
            if (!string.IsNullOrWhiteSpace(searchStr))
            {
                newQuesVote = newQuesVote.Where(p => p.Title.Contains(searchStr));
            }

            return(newQuesVote.Select(x => new NewQuesAndVoteModel {
                Id = x.Id, Title = x.Title, BeginTime = x.BeginTime, EndTime = x.EndTime, JoinNum = x.JoinNum, WaiverNum = x.WaiverNum
            }));
        }
Exemple #15
0
        /// <summary>
        /// 删除问卷
        /// </summary>
        /// <param name="qid">问卷Id</param>
        /// <param name="message">处理后的结果信息</param>
        /// <returns></returns>
        public QssResult QssDeleteQues(int qid, out string message)
        {
            var question = CurrentDal.GetEntity(qid);

            if (question == null)
            {
                message = "没有该问卷";
                QssLogHelper.Log("没有该问卷", $"删除问卷 {qid} 时,找不到该问卷", QssLogType.Error);
                return(QssResult.Fail);
            }

            // 获取当前用户
            var rel = DbSession.UserDal.QssGetUserByAccount(User.Identity.Name, out User user);

            if (user == null)
            {
                message = "获取当前用户失败!";
                QssLogHelper.Log("获取用户失败", $"删除问卷 {qid} 时,没有获取到当前用户。", QssLogType.Error);
                return(QssResult.Fail);
            }

            // 校验权限
            if (question.Creator.Id != user.Id)
            {
                message = "没有权限!";
                QssLogHelper.Log("权限不够", $"删除问卷 {qid} 时,没有获取到当前用户。", QssLogType.Error);
                return(QssResult.Fail);
            }

            // 删除题目和题目选项
            foreach (var subject in question.QuesSubjects)
            {
                // 删除题目选项
                if (subject.Type != QssQuesSubType.Subjective)
                {
                    DbSession.QuesOptionDal.DeleteRange(subject.QuesOptions);
                    QssResult result = QssSaveDeleteQues("问卷题目选项", out message);
                    if (result != QssResult.Success)
                    {
                        return(result);
                    }
                }
            }

            // 删除题目
            DbSession.QuesSubjectDal.DeleteRange(question.QuesSubjects);
            QssResult _result = QssSaveDeleteQues("问卷题目", out message);

            if (_result != QssResult.Success)
            {
                return(_result);
            }

            // 删除问卷相关的记录
            DbSession.WtLogDal.DeleteRange(DbSession.WtLogDal.GetEntities(p => p.Type == QssWtLogType.Question && p.QuesVoteId == question.Id));
            _result = QssSaveDeleteQues("问卷填写记录", out message);
            if (_result != QssResult.Success)
            {
                return(_result);
            }

            // 删除问卷
            CurrentDal.Delete(question);
            _result = QssSaveDeleteQues("问卷", out message);
            if (_result != QssResult.Success)
            {
                return(_result);
            }

            // 调整次数
            user.AddQuesNum = user.AddQuesNum > 0 ? user.AddQuesNum - 1 : 0;
            DbSession.UserDal.Update(user);
            _result = QssSaveDeleteQues("问卷填写次数", out message);
            if (_result != QssResult.Success)
            {
                return(_result);
            }

            message = "删除问卷成功!";
            return(QssResult.Success);
        }
Exemple #16
0
        /// <summary>
        /// 删除投票
        /// </summary>
        /// <param name="vid">投票Id</param>
        /// <param name="message">处理后的结果信息</param>
        /// <returns></returns>
        public QssResult QssDeleteVote(int vid, out string message)
        {
            var vote = CurrentDal.GetEntity(vid);

            if (vote == null)
            {
                message = "没有该投票";
                QssLogHelper.Log("没有该投票", $"删除投票 {vid} 时,找不到该投票", QssLogType.Error);
                return(QssResult.Fail);
            }

            // 获取当前用户
            var rel = DbSession.UserDal.QssGetUserByAccount(User.Identity.Name, out User user);

            if (user == null)
            {
                message = "获取当前用户失败!";
                QssLogHelper.Log("获取用户失败", $"删除投票 {vid} 时,没有获取到当前用户。", QssLogType.Error);
                return(QssResult.Fail);
            }

            // 校验权限
            if (vote.Creator.Id != user.Id)
            {
                message = "没有权限!";
                QssLogHelper.Log("权限不够", $"删除投票 {vid} 时,没有获取到当前用户。", QssLogType.Error);
                return(QssResult.Fail);
            }

            // 删除选项
            DbSession.VoteOptionDal.DeleteRange(vote.VoteOptions);
            QssResult _result = QssSaveDeleteVote("题目", out message);

            if (_result != QssResult.Success)
            {
                return(_result);
            }

            // 删除投票相关的记录
            DbSession.WtLogDal.DeleteRange(DbSession.WtLogDal.GetEntities(p => p.Type == QssWtLogType.Vote && p.QuesVoteId == vote.Id));
            QssResult __result = QssSaveDeleteVote("投票填写记录", out message);

            if (__result != QssResult.Success)
            {
                return(__result);
            }

            // 删除投票
            CurrentDal.Delete(vote);
            __result = QssSaveDeleteVote("投票", out message);
            if (__result != QssResult.Success)
            {
                return(__result);
            }

            // 调整次数
            user.AddVoteNum = user.AddVoteNum > 0 ? user.AddVoteNum - 1 : 0;
            DbSession.UserDal.Update(user);
            __result = QssSaveDeleteVote("投票填写次数", out message);
            if (__result != QssResult.Success)
            {
                return(__result);
            }

            message = "删除投票成功!";
            return(QssResult.Success);
        }
Exemple #17
0
        /// <summary>
        /// 保存问卷题目
        /// </summary>
        /// <param name="question">当前问卷</param>
        /// <param name="subjects">题目列表</param>
        /// <param name="message">处理结果信息</param>
        /// <returns></returns>
        public QssResult QssSaveQuesWtLog(JArray subjects, Question question, out List <GetWtQuesSubject> wtSubjects, out string message)
        {
            // 存放题目和题目列表的临时变量
            var getWtSubjects = new List <GetWtQuesSubject>();

            foreach (JObject subject in subjects)
            {
                // 获取题目Id
                int subjectId = Convert.ToInt32(subject["Id"]);

                // 获取该题目
                var quesSubject = question.QuesSubjects.FirstOrDefault(s => s.Id == subjectId);
                if (quesSubject == null)
                {
                    wtSubjects = null;
                    message    = "获取题目失败!";
                    QssLogHelper.Log("获取题目失败", "在保存填写记录时,获取题目Id失败", QssLogType.Error);
                    return(QssResult.Fail);
                }

                // 当前题目信息
                var wtQuesSubject = new GetWtQuesSubject
                {
                    Id      = quesSubject.Id,
                    Content = quesSubject.Content,
                    Num     = quesSubject.QuesOptions.Count(),
                    Type    = quesSubject.Type.ToString()
                };

                // 获取题目类型
                string subjectType = (string)subject["Type"];

                if (subjectType == QssQuesSubType.Subjective.ToString())
                {
                    // 获取主观题答案
                    string answer = (string)subject["Content"];
                    if (string.IsNullOrWhiteSpace(quesSubject.Answer))
                    {
                        quesSubject.Answer = answer;
                    }
                    else
                    {
                        quesSubject.Answer += "@@@@@" + answer;
                    }

                    // 保存主观题答案
                    try
                    {
                        DbSession.QuesSubjectDal.Update(quesSubject);
                        DbSession.SaveChanges();

                        // 保存成功
                        wtQuesSubject.SubAnswers = answer;
                        getWtSubjects.Add(wtQuesSubject);
                        continue;
                    }
                    catch (Exception exception)
                    {
                        // 保存失败
                        wtSubjects = null;
                        message    = "保存主观题答案失败! 原因:" + exception.Message;
                        QssLogHelper.Log("保存答案失败", "在保存填写记录时,保存主观题答案失败", QssLogType.Error, exception);
                        return(QssResult.Fail);
                    }
                }

                // 保存选项答案
                var       quesOptionService = new QuesOptionService();
                QssResult result            = quesOptionService.QssSaveQuesOption((JArray)subject["Options"], quesSubject, out List <GetWtQuesOption> wtOptions, out message);
                if (result != QssResult.Success)
                {
                    wtSubjects = null;
                    return(result);
                }
                wtQuesSubject.ObjAnswers = wtOptions.ToArray();

                // 获取选项列表
                if (quesSubject.Type != QssQuesSubType.Subjective)
                {
                    var wtQuesOptions = new List <GetQuesOption>();
                    foreach (var option in quesSubject.QuesOptions)
                    {
                        wtQuesOptions.Add(new GetQuesOption()
                        {
                            Id = option.Id, Content = option.Content
                        });
                    }
                    wtQuesSubject.Options = wtQuesOptions.OrderByDescending(p => p.Id).ToArray();
                    getWtSubjects.Add(wtQuesSubject);
                }
            }

            wtSubjects = getWtSubjects.OrderByDescending(p => p.Id).ToList();
            message    = "保存问卷结果成功!";
            return(QssResult.Success);
        }
Exemple #18
0
 /// <summary>
 /// Json通用返回方法
 /// </summary>
 /// <param name="result">处理结果</param>
 /// <param name="message">处理结果信息</param>
 /// <returns></returns>
 protected ActionResult QssJsonCommonReturn(QssResult result, string message) => QssJsonCommonReturn(result, message, null);
Exemple #19
0
        /// <summary>
        /// 更新用户信息
        /// </summary>
        /// <param name="stuInfo">从教务处获取的,经过封装的用户信息</param>
        /// <param name="user">更新成功后的该学生信息</param>
        /// <returns></returns>
        public QssResult QssUpdateUserInfo(UserInfoHandle userInfo, out User user)
        {
            QssResult result = QssGetUserByAccount(userInfo.Account, out user);

            if (result == QssResult.Error)
            {
                // 获取到多个用户
                user = null;
                return(QssResult.Fail);
            }
            bool isFirst = false;

            if (result == QssResult.Fail)
            {
                // 第一次登录
                // 获取角色
                result = new RoleService().QssGetRoleByName(QssRoleType.User.ToString(), out Role role);
                if (result != QssResult.Success)
                {
                    user = null;
                    return(QssResult.Fail);
                }
                user = new User()
                {
                    Account = userInfo.Account,
                    Role    = role
                };
                isFirst = true;
            }

            // 更新信息
            if (userInfo.UserType == UserType.S.ToString())
            {
                // 学生
                user.Type    = UserType.S.ToString();
                user.Name    = userInfo.Name;
                user.Campus  = userInfo.Campus;
                user.College = userInfo.College;
                user.Grade   = Convert.ToInt32(userInfo.Grade);
                user.LoSch   = Convert.ToInt32(userInfo.LoSch);
                user.Class   = userInfo.NewClass; //永远获取新班级
                user.Major   = userInfo.NewMajor; //永远获取新专业
            }
            else
            {
                // 教师
                user.Type    = UserType.T.ToString();
                user.Name    = userInfo.Name;
                user.Campus  = userInfo.Campus;
                user.College = userInfo.College;
            }

            try
            {
                // 写入数据库
                if (isFirst)
                {
                    CurrentDal.Add(user);
                }
                else
                {
                    CurrentDal.Update(user);
                }
                DbSession.SaveChanges();
                return(QssResult.Success);
            }
            catch (Exception exception)
            {
                // 写入失败
                QssLogHelper.Log("写入用户信息失败", "在写入用户: " + user.Account + " 的用户信息时发生错误! 原因:" + exception.Message, QssLogType.Error, exception);
                return(QssResult.Fail);
            }
        }