Skip to content

Instantly share code, notes, and snippets.

@binmaocom
Created October 12, 2016 01:22
Show Gist options
  • Save binmaocom/c6da39bfad2d7765323cc6bf4656d5b2 to your computer and use it in GitHub Desktop.
Save binmaocom/c6da39bfad2d7765323cc6bf4656d5b2 to your computer and use it in GitHub Desktop.
public ActionResult Edit(EditUserModel model)
{
if (db.Users.Any(item => item.UserName == model.UserName && item.Id != model.Id))
{
ModelState.AddModelError("UserName", string.Format(Translate("UserNameIsAlreadyTaken", "ValidationMessage", "Tài khoản '{0}' đã tồn tại."), model.UserName));
}
if (db.Users.Any(item => item.Email == model.Email && item.Id != model.Id))
{
ModelState.AddModelError("Email", string.Format(Translate("EmailIsAlreadyTaken", "ValidationMessage", "Email đã tồn tại."), model.Email));
}
if (!string.IsNullOrWhiteSpace(model.PhoneNumber) && db.Users.Any(item => item.PhoneNumber == model.PhoneNumber && item.Id != model.Id))
{
ModelState.AddModelError("PhoneNumber", string.Format(Translate("PhoneNumberIsAlreadyTaken", "ValidationMessage", "Điện thoại đã tồn tại."), model.PhoneNumber));
}
if (model.Position == null)
{
model.Position = new int[0];
}
//if (MemberManager.IsInRole(model.Id, "Administrators") && !model.Position.Contains(0))
//{
// model.Position = model.Position.Concat(new int[] { 0 }).ToArray();
//}
ModelState.Remove("Password");
ModelState.Remove("ConfirmPassword");
ModelState.Remove("Position");
if (ModelState.IsValid)
{
var user = MemberManager.GetUser(model.Id);
user.UserName = model.UserName;
user.Status = model.Status;
user.Email = model.Email;
user.PhoneNumber = model.PhoneNumber;
user.Profile.FirstName = model.FirstName;
user.Profile.LastName = model.LastName;
user.Profile.LocationId = model.LocationId;
user.Profile.DisplayName = string.Format(Translate("FullName", "Format", "{1} {0}"), model.FirstName, model.LastName);
var ok = MemberManager.UpdateUser(user, model.Position.Select(pid => pid == 0 ? "Administrators" : "RoleForPosition" + pid).ToArray()).Succeeded;
if (ok)
{
user = db.Users.Find(user.Id);
var oldpostids = user.Positions.Select(p => p.Id).ToList();
var newpos = db.Positions.Where(p => model.Position.Contains(p.Id) && !oldpostids.Contains(p.Id)).ToList();
var removepos = user.Positions.Where(p => !model.Position.Contains(p.Id)).ToList();
newpos.ForEach(p => user.Positions.Add(p));
removepos.ForEach(p => user.Positions.Remove(p));
db.SaveChanges();
AddLog(model.Id, "Users", "Update", null);
Session["CurrentUser"] = null;
return AjaxResult(Translate("UpdateSuccess", "User", "Cập nhật tài khoản thành công."), true, Url.Action("list"));
}
else
{
return AjaxResult(Translate("UpdateError", "User", "Có lỗi xẩy ra."));
}
}
return AjaxModelError();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment