public async Task <ActionResult> Edit([Bind(Include = "memno,mememail,Newpwd,NewpwdConfirm,memdiminutive,memname,memsex,memtel,memaddress,memaccountstate,memchecknumber,membirth")] MemEditModel model, HttpPostedFileBase files) { ModelState.Remove("mempwd"); ModelState.Remove("memcreatedate"); if (ModelState.IsValid) { MemService service = new MemService(); var user = await UserManager.FindByNameAsync(model.mememail); user.Email = model.mememail; user.PhoneNumber = model.memtel; user.NickName = model.memdiminutive; if (!string.IsNullOrWhiteSpace(model.Newpwd)) { user.PasswordHash = UserManager.PasswordHasher.HashPassword(model.Newpwd); model.mempwd = user.PasswordHash; } using (var scope = new TransactionScope(TransactionScopeAsyncFlowOption.Enabled)) { try { if (files != null) { if (files.ContentLength > 0) { model.mempic = fService.SaveImgFile(model.memno, files); } } var result = await UserManager.UpdateAsync(user); if (result.Succeeded) { MEMBER uMember = Service.SetEditModel(model); Service.Update(uMember); scope.Complete(); return(RedirectToAction("Index", "Member", new { area = "Admin" })); } } catch (DbEntityValidationException ex) { logger.Error(GetEntityErrorMsg(ex)); } catch (Exception ex) { logger.Error(ex.Message); scope.Dispose(); } } } return(View(model)); }
// GET: Admin/Memmber/Delete/5 public async Task <ActionResult> Delete(int?id) { CustomModel.ResultModel customModel = new CustomModel.ResultModel() { Message = "刪除失敗" }; MemService service = new MemService(); MEMBER member = service.FindOne(id); if (member == null) { return(Json(customModel)); } var user = await UserManager.FindByNameAsync(member.mememail); var logins = user.Logins; var rolesForUser = await UserManager.GetRolesAsync(user.Id); var appDbContext = HttpContext.GetOwinContext().Get <ApplicationDbContext>(); using (var transaction = appDbContext.Database.BeginTransaction()) { try { foreach (var login in logins.ToList()) { await UserManager.RemoveLoginAsync(login.UserId, new UserLoginInfo(login.LoginProvider, login.ProviderKey)); } if (rolesForUser.Count() > 0) { foreach (var item in rolesForUser.ToList()) { // item should be the name of the role var result = await UserManager.RemoveFromRoleAsync(user.Id, item); } } await UserManager.DeleteAsync(user); Service.Delete(id); transaction.Commit(); customModel.Success = true; customModel.Message = "刪除成功"; return(Json(customModel)); } catch (DbEntityValidationException ex) { logger.Error(GetEntityErrorMsg(ex)); } catch (Exception ex) { logger.Error(ex.Message); transaction.Rollback(); } return(Json(customModel)); } }