public ActionResult Edit(long[] ids)
 {
     using (var session = new SessionFactory().OpenSession())
     {
         var model = session.Load<TrainManagementItem>(ids[0]);
         if (model.ExamStatus != null && !model.ExamStatus.Equals(ExamStatusConst.未考试))
         {
             FlashWarn("您已经完成该考试!");
             return Close();
         }
         var q = new Criteria<Exam>(session)
          .AndIn<TrainManagementItem>(m => m.TrainManId, n => n.TrainManId, n => n.Id == ids[0]);
         var exam = q.Load();
         if (exam == null)
         {
             FlashWarn("考试不存在!请联系管理员!");
             return Close();
         }
         var models = session.Find<Question>(m => m.ExamId == exam.Id);
         if (models == null || !models.Any())
         {
             FlashWarn("考试题目未设置!");
             return Close();
         }
         Response.Write(string.Format("<script>window.open('Exam?ids={0}','_blank')</script>", ids[0]));
         return Close();
     }
 }
 /* [Priviledge(Name = "查看培训试卷评改", IsEntry = true, Position = 15)]
  public ActionResult Details(long[] ids)
  {
      if (ids.Length == 0)
      {
          FlashWarn("请选择要操作的记录。");
          return Close();
      }
      using (var session = new SessionFactory().OpenSession())
      {
          var models = session.Find<ExamAnswer>(m => m.Id.In(ids));
          if (models.Count == 0)
          {
              FlashWarn("没有可以查看的记录。");
              return Close();
          }
          return View(models);
      }
  }*/
 public ActionResult Exam(long[] ids)
 {
     using (var session = new SessionFactory().OpenSession())
     {
         var q = new Criteria<Exam>(session)
           .AndIn<TrainManagementItem>(m => m.TrainManId, n => n.TrainManId, n => n.Id == ids[0]);
         var exam = q.Load();
         if (exam == null)
         {
             FlashWarn("考试不存在!请联系管理员!");
             return Close();
         }
         ViewData["ExamContent"] = exam.AnswerHtmlContent;
         var models = session.Find<ExamAnswer>(m => m.TrainManagementItemId == ids[0]);
         if (models == null || !models.Any())
         {
             FlashWarn("用户答题记录不在在!请联系管理员!");
             return Close();
         }
         return View(models);
     }
 }
        public ActionResult Login(FormCollection collection)
        {
            Reset();
            var key = collection["key"];
            if (!string.IsNullOrEmpty(key))
            {
                return UkeyLogin(key);
            }

            var name = collection["username"];
            var pwd = collection["password"];
            ViewData["username"] = name;

            Session[Const.CurrentAccountName] = name;

            if (string.IsNullOrEmpty(name))
            {
                return JsonMessage(100, "请输入用户名!");
            }
            if (string.IsNullOrEmpty(pwd))
            {
                return JsonMessage(100, "请输入密码!");
            }

            using (var session = new SessionFactory().OpenSession())
            {
                var q = new Criteria<Account>(session)
                     .AndIn<User>(m => m.Name, n => n.Code, n => n.Name.Equals(name) || n.Code.Equals(name))
                     .Limit(2);
                var uc = q.Count(true);
                if (uc == 0)
                {
                    FlashFailureAndLog("用户名或者密码不正确", name);
                    return JsonMessage(100, "用户名或者密码不正确,请重新输入!");
                }
                if (uc > 1)
                {
                    FlashFailureAndLog("用户身份不唯一", name);
                    return JsonMessage(100, "用户身份不唯一,请联系管理员解决!");
                }

                var account = q.Load();
                if (account == null)
                {
                    FlashFailureAndLog("读取用户数据失败", name);
                    return JsonMessage(100, "读取用户数据失败,请联系管理员解决!");
                }

                // 禁用的用户
                if (account.Status == -1)
                {
                    FlashFailureAndLog("你的账户已经被禁用,请联系系统管理员!");
                    return JsonMessage(100, "你的账户已经被禁用,请联系管理员解决!");
                }

                // 未初始化的用户,使用验证码登录
                if (account.Status == 0)
                {
                    if (!pwd.Equals(account.Flag))
                    {
                        FlashFailureAndLog("验证码不正确,请重新输入!");
                        return JsonMessage(100, "验证码不正确,请重新输入!");
                    }

                    Session[Const.CurrentAccountId] = account.Id;
                    Session[Const.CurrentAccountName] = name;

                    FormsAuthentication.SetAuthCookie(account.Name, false);
                    var resetPasswordUrl = "/base/profile/resetpassword?ReturnUrl=" + Request.Params["ReturnUrl"];
                    WriteSuccessLog("初次登录,账户初始化!");
                    return JsonMessage(200, "账户初始化,请稍候...", resetPasswordUrl);
                }

                // 已经初始化的用户,使用密码登录
                if (!account.AuthPassword(pwd))
                {
                    FlashFailureAndLog("用户名密码验证不正确,请重新输入!");
                    return JsonMessage(100, "用户名密码验证不正确,请重新输入!");
                }

                Session[Const.CurrentAccountId] = account.Id;
                Session[Const.CurrentAccountName] = name;

                FormsAuthentication.SetAuthCookie(account.Name, true);

                account.LastLoginAt = DateTime.Now;
                account.LoginCount++;

                if (!session.Update(account))
                {
                    FlashFailureAndLog("更新用户登录记录出错!");
                    return JsonMessage(100, "更新用户登录记录出错,请联系管理员解决!");
                }

                WriteSuccessLog("登录", account);

                var url = Request.Params["ReturnUrl"];
                if (string.IsNullOrEmpty(url))
                {
                    url = FormsAuthentication.DefaultUrl;
                }
                return JsonMessage(200, "验证成功,请稍候...", url);
            }
        }
예제 #4
0
 public User GetProfile()
 {
     if (User == null)
     {
         Criteria<User> q = new Criteria<User>().Where(m => m.Name.Equals(Name));
         User = q.Load();
     }
     return User;
 }
예제 #5
0
 public static bool IsWarehouseMgr(string accountNo)
 {
     if (string.IsNullOrEmpty(accountNo)) return false;
     var query = new Criteria<User>().Where(m => m.Name.Equals(accountNo)).AndIn(m => m.Name, n => n.Name,
         new Criteria<Account>().AndIn(p => p.Id, q => q.AccountId,
         new Criteria<AccountRoleRef>().AndIn<Role>(x => x.RoleId, y => y.Id, y => y.Name.Include("库管员"))));
     return query.Load() != null;
 }