Ejemplo n.º 1
0
        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));
        }
Ejemplo n.º 2
0
        // 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));
            }
        }