// return root node of this sub tree public static DTNode LoadSubTree(XmlNode i_xmlNode) { XmlAttribute nameAttr = i_xmlNode.Attributes[DTNode.xmlNodeNameAtrName_]; string nodeName = nameAttr != null ? nameAttr.Value : ""; DTNode node = new DTNode(nodeName); for (int i = 0; i < i_xmlNode.ChildNodes.Count; ++i) { var curNode = i_xmlNode.ChildNodes[i]; if (curNode.Name.Equals(DTNode.xmlNodeName_)) { node.subNodes_.Add(LoadSubTree(curNode)); } else if (curNode.Name.Equals(BasicCondition.xmlNodeName)) { BasicCondition condition = BasicCondition.Deserialize(curNode as XmlElement); if (condition != null) { node.conditions_.Add(condition); } } else if (curNode.Name.Equals(BasicResult.xmlNodeName)) { BasicResult result = BasicResult.Deserialize(curNode as XmlElement); if (result != null) { node.results_.Add(result); } } } return(node); }
public void LoginPost_UserFoundButPasswordIncorrect_LoginFails() { // setup UserModel user = new UserModel() { Id = Guid.NewGuid(), UserName = "******", Password = "******" }; _userRepo.GetByUserName(user.UserName).Returns(user); _passwordProvider.CheckPassword(Arg.Any <string>(), Arg.Any <string>()).Returns(false); var browser = CreateBrowser(null); // execute var response = browser.Post(Actions.Login.Default, (with) => { with.HttpRequest(); with.FormValue("UserName", "admin"); with.FormValue("Password", "password"); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); _passwordProvider.Received(1).CheckPassword(Arg.Any <string>(), Arg.Any <string>()); BasicResult result = JsonConvert.DeserializeObject <BasicResult>(response.Body.AsString()); Assert.IsFalse(result.Success); _userRepo.Received(1).GetByUserName(user.UserName); _passwordProvider.Received(1).CheckPassword("password", user.Password); }
public IHttpActionResult Put(MentalillnessToHospitalReqInParm parm) { BasicResult result = null; try { CheckModel(ref result); if (result.Code == CommonCode.OK.ToResCode()) { parm.CreateIp = ClientIp; parm.UpdateIp = ClientIp; result = _iocContext.Resolve <IServiceMTC>().UpdateToHospitalRecord(parm); } return(Ok(result)); } catch (Exception ex) { _logger.Fatal(ControllerName + "-修改精神病人醫療服務單:" + ex.Message); return(Redirect(ErrorUrl)); } finally { //TODO: write api log to db } }
public void ChangePassword_InvalidPassword_ReturnsError(string password) { // setup var currentUser = new UserIdentity() { Id = Guid.NewGuid(), UserName = "******" }; var browser = new Browser((bootstrapper) => bootstrapper.Module(new UserModule(_userRepo, _createUserCommand, _updateUserPasswordCommand, _deleteUserCommand)) .RequestStartup((container, pipelines, context) => { context.CurrentUser = currentUser; }) ); // execute var response = browser.Post(Actions.User.ChangePassword, (with) => { with.HttpRequest(); with.FormsAuth(currentUser.Id, new Nancy.Authentication.Forms.FormsAuthenticationConfiguration()); with.FormValue("Password", password); with.FormValue("ConfirmPassword", "ConfirmPasswordIsOk"); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); BasicResult result = JsonConvert.DeserializeObject <BasicResult>(response.Body.AsString()); Assert.IsFalse(result.Success); Assert.AreEqual(1, result.Messages.Length); }
public BasicResult ChangePassword(long userId, string password) { if (!IsValidPassword(password)) { return(BasicResult.FailResult("Invalid Password (Must: contain 1 uppercase, contain 1 number and be 8-15 characters long)")); } var user = GetById(userId); if (user == null) { return(BasicResult.FailResult("No user with that id exists")); } string savedPasswordHash = HashPassword(password); user.Password = savedPasswordHash; var success = _repository.Update(user); if (!success) { return(BasicResult.FailResult("Database Error")); } return(BasicResult.SuccessResult()); }
public IActionResult Create(CreateModel model) { var result = new BasicResult(); try { var path = @"C:/temp/img.jpg"; if (model.fileReceipt != null) { using (var stream = new FileStream(path, FileMode.Create)) { model.fileReceipt.CopyTo(stream); } } using (var conn = new SqlConnection(Define.ConnStr)) { var caseExchange = new seedDB.CaseExchange { name = model.name, phone = model.phone, address = model.address, receipt = model.receipt, type = model.type, result = "審核中", filePath = path, }; conn.Insert(caseExchange); } result.success = true; } catch (Exception ex) { result.message = ex.ToString(); } return(Json(result)); }
public void ChangePassword_PasswordDoesNotMatchConfirm_ReturnsError() { // setup var currentUser = new UserIdentity() { Id = Guid.NewGuid(), UserName = "******" }; var browser = new Browser((bootstrapper) => bootstrapper.Module(new UserModule(_userStore, _userValidator, _passwordProvider)) .RequestStartup((container, pipelines, context) => { context.CurrentUser = currentUser; }) ); // execute var response = browser.Post(Actions.User.ChangePassword, (with) => { with.HttpRequest(); with.FormsAuth(currentUser.Id, new Nancy.Authentication.Forms.FormsAuthenticationConfiguration()); with.FormValue("Password", "IsValidPassword"); with.FormValue("ConfirmPassword", "ButDoesNotMatch"); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); BasicResult result = JsonConvert.DeserializeObject <BasicResult>(response.Body.AsString()); Assert.IsFalse(result.Success); Assert.AreEqual(1, result.Messages.Length); Assert.IsTrue(result.Messages[0].Contains("do not match")); }
public long?_checkSessionToken(string sessionToken, BasicResult result) { if (sessionToken == null) { return(null); } var now = DateTime.Now; var session = mContext.UserSession .Where(s => s.SessionToken.Equals(sessionToken) && s.IsActived && (s.ExpiresAt.HasValue && DateTime.Compare(s.ExpiresAt.Value, now) > 0)) .FirstOrDefault(); if (session != null) { // Cập nhật lại thời gian hết hạn của phiên. session.refresh(); mContext.SaveChanges(); // Cập nhật lại Session Token nếu có thay đổi. result.SessionToken = session.SessionToken; return(session.UserId); } else { // Cập nhật lại Session Token nếu có thay đổi. result.SessionToken = null; result.MessageError = "Phiên đã hết hạn hoặc không tồn tại. Vui lòng đăng nhập lại."; return(null); } }
public void LoginPost_UserNotFound_LoginFails() { // setup bool userStoreChecked = false; _userStore.Users.Returns(new List <UserModel>()).AndDoes((c) => { userStoreChecked = true; }); var browser = CreateBrowser(null); // execute var response = browser.Post(Actions.Login.Default, (with) => { with.HttpRequest(); with.FormValue("UserName", "admin"); with.FormValue("Password", "password"); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); _passwordProvider.DidNotReceive().CheckPassword(Arg.Any <string>(), Arg.Any <string>()); BasicResult result = JsonConvert.DeserializeObject <BasicResult>(response.Body.AsString()); Assert.IsFalse(result.Success); Assert.IsTrue(userStoreChecked); }
} // for editor only public virtual void BeOverrided(BasicResult another) { if (this.GetType() != another.GetType()) { throw new UnityException("cannot override different type of result"); } }
public static void Serialize(BasicResult _condition, ref XmlElement result) { if (result == null || _condition == null) { return; } if (result.Name != BasicResult.xmlNodeName) { return; } Type cType = _condition.GetType(); result.SetAttribute("Type", cType.Name); FieldInfo[] variables = cType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); for (int vi = 0; vi < variables.Length; ++vi) { FieldInfo var = variables[vi]; if (!Attribute.IsDefined(var, typeof(DtVariable))) { continue; } object value = var.GetValue(_condition); string valueStr = ParseUtil.SerializeValue(value); DtVariable varAtr = (DtVariable)Attribute.GetCustomAttribute(var, typeof(DtVariable)); result.SetAttribute(varAtr.xmlAtrName, valueStr); } }
public dynamic Save() { var model = this.Bind <UserViewModel>(); UserModel user = Mapper.Map <UserViewModel, UserModel>(model); // try and execute the command BasicResult result = new BasicResult(true); try { if (model.Password != model.ConfirmPassword) { throw new ValidationException("Password does not match confirmation password"); } _createUserCommand.Execute(user.UserName, user.Password, user.Role); } catch (ValidationException vex) { result = new BasicResult(false, vex.ValidationErrors.ToArray()); } catch (Exception ex) { result = new BasicResult(false, ex.Message); } return(Response.AsJson(result)); }
private void OverrideFinalDecision(BasicResult another) { if (type2Decision_.ContainsKey(another.GetType())) { type2Decision_[another.GetType()].BeOverrided(another); } }
/// <summary> /// 检测上传的媒体是否满足基本要求 /// </summary> /// <param name="media"></param> /// <returns></returns> private BasicResult MediaChecker(LocalMedia media) { var sizes = new Dictionary <string, long> { { Media.Image, 128 * 1024 }, { Media.Voice, 256 * 1024 }, { Media.Video, 1 * 1024 * 1024 }, { Media.Thumb, 64 * 1024 }, }; if (media == null) { return(BasicResult.GetFailed("缺少媒体参数")); } if (!File.Exists(media.MediaPath)) { return(BasicResult.GetFailed("指定的媒体文件不存在")); } if (string.IsNullOrEmpty(media.MediaType)) { return(BasicResult.GetFailed("未指定媒体类型")); } if (new FileInfo(media.MediaPath).Length > sizes[media.MediaType]) { return(BasicResult.GetFailed(string.Format("指定的媒体文件超过限制大小{0}K", sizes[media.MediaPath] / 1024))); } return(BasicResult.GetSuccess()); }
public BasicResult Register(Models.User user) { var result = new BasicResult(); var readyExists = mContext.User .Where(u => u.Username == user.Username).Count() > 0; if (readyExists) { result.MessageError = "Tài khoản đã tồn tại"; } else { user.Id = 0; // TODO: Generate password salt. user.Salt = "giautm"; user.Password = _hashUserPassword(user.Password, user.Salt); user.CreatedAt = DateTime.Now; mContext.User.Add(user); mContext.SaveChanges(); var currentSession = new Models.UserSession(user.Id); mContext.UserSession.Add(currentSession); mContext.UserAccount.Add(new Models.UserAccount(user.Id)); mContext.SaveChanges(); result.SessionToken = currentSession.SessionToken; } return(result); }
public void ChangePassword_PasswordValid_UpdatesAndSaves() { const string newPassword = "******"; const string oldPassword = "******"; string salt = Guid.NewGuid().ToString(); string newHashedPassword = Guid.NewGuid().ToString(); // setup var currentUser = new UserIdentity() { Id = Guid.NewGuid(), UserName = "******" }; var browser = new Browser((bootstrapper) => bootstrapper.Module(new UserModule(_userStore, _userValidator, _passwordProvider)) .RequestStartup((container, pipelines, context) => { context.CurrentUser = currentUser; }) ); UserModel user = new UserModel() { Id = currentUser.Id, UserName = currentUser.UserName, Password = oldPassword }; List <UserModel> users = new List <UserModel>() { user }; _userStore.Users.Returns(users); _passwordProvider.GenerateSalt().Returns(salt); _passwordProvider.HashPassword(newPassword, salt).Returns(newHashedPassword); // execute var response = browser.Post(Actions.User.ChangePassword, (with) => { with.HttpRequest(); with.FormsAuth(currentUser.Id, new Nancy.Authentication.Forms.FormsAuthenticationConfiguration()); with.FormValue("Password", newPassword); with.FormValue("ConfirmPassword", newPassword); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); // check the result BasicResult result = JsonConvert.DeserializeObject <BasicResult>(response.Body.AsString()); Assert.IsTrue(result.Success); Assert.AreEqual(0, result.Messages.Length); // make sure the user was updated and saved Assert.AreEqual(newHashedPassword, user.Password); _userStore.Received(1).Save(); _passwordProvider.Received(1).GenerateSalt(); _passwordProvider.Received(1).HashPassword(newPassword, salt); }
// not real deep copy, only copy DtVariables for editor public static DTNode DeepCopy(DTNode i_node) { DTNode retNode = new DTNode(i_node.nodeName_); for (int i = 0; i < i_node.conditions_.Count; ++i) { Type conditionType = i_node.conditions_[i].GetType(); BasicCondition tempCondition = Activator.CreateInstance(conditionType) as BasicCondition; FieldInfo[] conditionVariables = conditionType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); for (int vi = 0; vi < conditionVariables.Length; ++vi) { FieldInfo var = conditionVariables[vi]; if (Attribute.IsDefined(var, typeof(DtVariable))) { if (var.FieldType == typeof(string) || var.FieldType.IsArray || !var.FieldType.IsClass) { var.SetValue(tempCondition, var.GetValue(i_node.conditions_[i])); } else { System.Object value = Activator.CreateInstance(var.FieldType, var.GetValue(i_node.conditions_[i])); var.SetValue(tempCondition, value); } } } retNode.conditions_.Add(tempCondition); } for (int i = 0; i < i_node.results_.Count; ++i) { Type resultType = i_node.results_[i].GetType(); BasicResult tempResult = Activator.CreateInstance(resultType) as BasicResult; FieldInfo[] resultVariables = resultType.GetFields(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance); for (int vi = 0; vi < resultVariables.Length; ++vi) { FieldInfo var = resultVariables[vi]; if (Attribute.IsDefined(var, typeof(DtVariable))) { if (var.FieldType == typeof(string) || var.FieldType.IsArray || !var.FieldType.IsClass) { var.SetValue(tempResult, var.GetValue(i_node.results_[i])); } else { System.Object value = Activator.CreateInstance(var.FieldType, var.GetValue(i_node.results_[i])); var.SetValue(tempResult, value); } } } retNode.results_.Add(tempResult); } for (int i = 0; i < i_node.subNodes_.Count; ++i) { retNode.subNodes_.Add(DeepCopy(i_node.subNodes_[i])); } return(retNode); }
public void Save_ValidUser_PasswordHashed() { // setup const string userName = "******"; const string password = "******"; var currentUser = new UserIdentity() { Id = Guid.NewGuid(), UserName = "******" }; currentUser.Claims = new string[] { Claims.UserAdd }; var browser = new Browser((bootstrapper) => bootstrapper.Module(new UserModule(_userStore, _userValidator, _passwordProvider)) .RequestStartup((container, pipelines, context) => { context.CurrentUser = currentUser; }) ); _userStore.Users.Returns(new List <UserModel>()); _userValidator.Validate(Arg.Any <UserModel>()).Returns(new ValidationResult()); string salt = Guid.NewGuid().ToString(); string hashedPassword = Guid.NewGuid().ToString(); _passwordProvider.GenerateSalt().Returns(salt); _passwordProvider.HashPassword(password, salt).Returns(hashedPassword); // execute var response = browser.Post(Actions.User.Save, (with) => { with.HttpRequest(); with.FormsAuth(currentUser.Id, new Nancy.Authentication.Forms.FormsAuthenticationConfiguration()); with.FormValue("UserName", userName); with.FormValue("Password", password); with.FormValue("ConfirmPassword", password); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); // check the result BasicResult result = JsonConvert.DeserializeObject <BasicResult>(response.Body.AsString()); Assert.IsTrue(result.Success); Assert.AreEqual(0, result.Messages.Length); _passwordProvider.Received(1).GenerateSalt(); _passwordProvider.Received(1).HashPassword(password, salt); List <UserModel> users = _userStore.Users; Assert.AreEqual(hashedPassword, users[0].Password); }
public BasicResult Answer(string sessionToken, Models.AnswerSheet answerSheet, long quizzesId, string answer) { var result = new BasicResult(); var userId = _checkSessionToken(sessionToken, result); var ans = mContext.AnswerSheet.FirstOrDefault(a => a.Id == answerSheet.Id && a.UserId == userId); if (ans != null) { var exam = mContext.Exam.FirstOrDefault(e => e.Id == ans.ExamId); var deadline = ans.CreatedAt.AddMinutes(exam.Time); if (deadline <= DateTime.Now) { ans.IsClosed = true; } var quizzesIds = exam.Quizzes.Split(new char[] { ',' }); if (ans.IsClosed == true) { result.MessageError = string.Format("Bài kiểm tra đã được đóng, không thể tiếp tục"); var answers = mContext.AnswerSheetItem .Where(ai => ai.AnswerSheetId == ans.Id).ToArray(); ans.Score = answers.Select(i => i.Match ? 1.0 : 0.0).Sum() / answers.Length; mContext.SaveChanges(); } else if (quizzesIds.Any(q => q == quizzesId.ToString())) { var answerItem = mContext.AnswerSheetItem .FirstOrDefault(ai => ai.AnswerSheetId == ans.Id && ai.QuizzesId == quizzesId); if (answerItem == null) { answerItem = new Models.AnswerSheetItem() { AnswerSheetId = ans.Id, QuizzesId = quizzesId, Answer = answer, Match = false }; mContext.AnswerSheetItem.Add(answerItem); } var quizzes = mContext.Quizzes.FirstOrDefault(q => q.Id == quizzesId); answerItem.Match = quizzes != null?quizzes.Answer.Trim() == answer.Trim() : false; mContext.SaveChanges(); } else { result.MessageError = string.Format("Câu hỏi không có trong đề thi!"); } } return(result); }
public static void saveResultsToFile(string file, IEnumerable <Configuration> configs, IEnumerable <BasicResult> results) { Debug.Assert(configs.Count() == results.Count()); var stream = File.Open(file, FileMode.Create, FileAccess.Write); var sw = new StreamWriter(stream); sw.WriteLine(Configuration.getCSVHeaders() + ";" + BasicResult.getCSVHead()); foreach (var result in configs.Zip(results, (c, r) => new { Config = c, Result = r })) { sw.WriteLine(result.Config.getCSVValues() + ";" + result.Result.getCSVData()); } sw.Close(); }
private void HandledProgressSaved(BasicResult result) { if (result.Success) { if (ProgressSaved != null) { ProgressSaved.Invoke(); } } else { if (DatabaseError != null) { DatabaseError.Invoke(result.Exception); } } }
private void HandledDatabaseLoaded(BasicResult result) { if (result.Success) { if (DatabaseLoaded != null) { DatabaseLoaded.Invoke(); } DoDiscoveredElementsChanged(); } else { if (DatabaseError != null) { DatabaseError.Invoke(result.Exception); } } }
/// <summary> /// 下载媒体文件。 /// 如果下载成功,返回值的ErrMsg属性携带保存的文件全路径 /// </summary> /// <param name="mediaId"></param> /// <param name="filePath"> /// 保存下载的文件的本地文件名或目录(以\结尾)。 /// 如果为目录,则文件名为微信响应的文件名。 /// 如果文件已经存在,则会覆盖原文件。 /// </param> /// <returns>如果成功,ErrMsg属性携带保存的文件全路径</returns> public BasicResult Download(string mediaId, string filePath) { var param = new FormData { { "access_token", AccessToken }, { "media_id", mediaId } }; var url = string.Format("{0}?{1}", DownLoadUrl, param.Format()); var request = HttpHelper.CreateRequest(url); var response = request.GetResponse(); using (var stream = response.GetResponseStream()) { var disposition = response.Headers["Content-disposition"]; if (string.IsNullOrEmpty(disposition)) { var s = new StreamReader(stream, Encoding.UTF8).ReadToEnd(); return(JsonConvert.DeserializeObject <BasicResult>(s)); } filePath = filePath.EndsWith(@"\") ? string.Format("{0}{1}", filePath, Regex.Match(disposition, "(?<=filename\\s*=\\s*\\\"?)[^\\\"]+", RegexOptions.IgnoreCase)) : filePath; var fs = new FileStream(filePath, FileMode.OpenOrCreate); try { var buffer = new byte[128 * 1024]; //128K int i; while ((i = stream.Read(buffer, 0, buffer.Length)) > 0) { fs.Write(buffer, 0, i); } return(BasicResult.GetSuccess(filePath)); } finally { fs.Close(); } } }
public void Save_ValidUser_Saves() { // setup const string userName = "******"; const string password = "******"; var currentUser = new UserIdentity() { Id = Guid.NewGuid(), UserName = "******" }; currentUser.Claims = new string[] { Claims.UserAdd }; var browser = new Browser((bootstrapper) => bootstrapper.Module(new UserModule(_userRepo, _createUserCommand, _updateUserPasswordCommand, _deleteUserCommand)) .RequestStartup((container, pipelines, context) => { context.CurrentUser = currentUser; }) ); _userRepo.GetAll().Returns(new List <UserModel>()); _userValidator.Validate(Arg.Any <UserModel>()).Returns(new ValidationResult()); // execute var response = browser.Post(Actions.User.Save, (with) => { with.HttpRequest(); with.FormsAuth(currentUser.Id, new Nancy.Authentication.Forms.FormsAuthenticationConfiguration()); with.FormValue("UserName", userName); with.FormValue("Password", password); with.FormValue("ConfirmPassword", password); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); // check the result BasicResult result = JsonConvert.DeserializeObject <BasicResult>(response.Body.AsString()); Assert.IsTrue(result.Success); Assert.AreEqual(0, result.Messages.Length); _createUserCommand.Received(1).Execute(userName, password, Arg.Any <string>()); }
public dynamic LoginPost() { LoginViewModel model = this.Bind <LoginViewModel>(); BasicResult result = new BasicResult(false); // if the email or password hasn't been supplied, exit if ((!String.IsNullOrWhiteSpace(model.UserName)) && (!String.IsNullOrWhiteSpace(model.Password))) { // get the user UserModel user = _userStore.Users.SingleOrDefault(x => x.UserName == model.UserName); if (user != null && _passwordProvider.CheckPassword(model.Password, user.Password)) { result.Success = true; return(this.Login(user.Id, DateTime.Now.AddDays(1))); } } return(this.Response.AsJson(result)); }
public void LoginPost_NoPassword_LoginFailsWithoutCheck() { // setup var browser = CreateBrowser(null); // execute var response = browser.Post(Actions.Login.Default, (with) => { with.HttpRequest(); with.FormValue("UserName", "admin"); }); // assert Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); _passwordProvider.DidNotReceive().CheckPassword(Arg.Any <string>(), Arg.Any <string>()); BasicResult result = JsonConvert.DeserializeObject <BasicResult>(response.Body.AsString()); Assert.IsFalse(result.Success); }
public dynamic Save() { var model = this.Bind <UserViewModel>(); UserModel user = Mapper.Map <UserViewModel, UserModel>(model); // do first level validation - if it fails then we need to exit ValidationResult validationErrors = this._userValidator.Validate(user); if (model.Password != model.ConfirmPassword) { validationErrors.Messages.Add("Password does not match confirmation password"); } if (validationErrors.Messages.Count > 0) { var vresult = new BasicResult(false, validationErrors.Messages.ToArray()); return(Response.AsJson(vresult)); } // validation is done - hash the password user.Password = _passwordProvider.HashPassword(user.Password, _passwordProvider.GenerateSalt()); // try and execute the command BasicResult result = new BasicResult(true); try { _userStore.Users.Add(user); _userStore.Save(); } //catch (ValidationException vex) //{ // result = new BasicResult(false, vex.Errors.ToArray()); //} catch (Exception ex) { result = new BasicResult(false, ex.Message); } return(Response.AsJson(result)); }
public BasicResult Login(string username, string password) { var result = new BasicResult(); var user = mContext.User .Where(u => u.Username.Equals(username)) .FirstOrDefault(); if (user != null && user.Id > 0 && user.Password.Equals(_hashUserPassword(password, user.Salt))) { var session = mContext.UserSession.Add(new Models.UserSession(user.Id)); mContext.SaveChanges(); result.SessionToken = session.SessionToken; } else { result.MessageError = "Tên đăng nhập hoặc mật khẩu không chính xác."; } return(result); }
public BasicResult MakeExam(string sessionToken, Models.Exam exam, int numberOf) { var result = new BasicResult(); var userId = _checkSessionToken(sessionToken, result); if (userId.HasValue) { var quizzesId = mContext.Quizzes .Where(q => q.Subject.Equals(exam.Subject)) .Select(q => q.Id) .ToArray(); var count = quizzesId.Length; if (count > numberOf) { var idies = new long[numberOf]; var random = new Random(); while (numberOf > 0) { var idx = quizzesId[random.Next(0, count)]; if (idies.Contains(idx) == false) { idies[--numberOf] = idx; } } exam.Quizzes = string.Join(",", idies.Select(x => x.ToString()).ToArray()); mContext.Exam.Add(exam); mContext.SaveChanges(); } else { result.MessageError = string.Format("Số lượng câu hỏi lớn hơn số lượng câu hỏi trong CSDL."); } } return(result); }
public IHttpActionResult Delete(int id) { BasicResult result = null; try { CheckModel(ref result); if (result.Code == CommonCode.OK.ToResCode()) { result = _iocContext.Resolve <IServiceMTC>().DeleteToHospitalRecord(id); } return(Ok(result)); } catch (Exception ex) { _logger.Fatal(ControllerName + "-刪除精神病人醫療服務單:" + ex.Message); return(Redirect(ErrorUrl)); } finally { //TODO: write api log to db } }
private void HandledDatabaseLoaded(BasicResult result) { if (result.Success) { if (DatabaseLoaded != null) DatabaseLoaded.Invoke(); DoDiscoveredElementsChanged(); } else { if (DatabaseError != null) DatabaseError.Invoke(result.Exception); } }
private void HandledProgressSaved(BasicResult result) { if (result.Success) { if (ProgressSaved != null) ProgressSaved.Invoke(); } else { if (DatabaseError != null) DatabaseError.Invoke(result.Exception); } }