public ActionResult Edit([Bind(Include = "Id,UserId,TenantId,Firstname,LastName,Username,Email,PasswordHash,SecurityStamp,MobileNumber,Gender,Birthdate,Created")] EditUserViewModel userviewmodel) { try { using (var ctx = new SaasDbContext()) { // Get existing user from db var user = ctx.Users.Where(u => u.Id == userviewmodel.UserId).FirstOrDefault(); user.Firstname = userviewmodel.Firstname; user.Lastname = userviewmodel.Lastname; user.Email = userviewmodel.Email; user.UserName = userviewmodel.Email; user.Gender = userviewmodel.Gender; user.MobileNumber = userviewmodel.MobileNumber; //Get the user role from db var userRoleold = ctx.UserRoles.Where(ui => ui.UserId == userviewmodel.UserId).FirstOrDefault(); //Remove user role from db ctx.UserRoles.Remove(userRoleold); ctx.SaveChanges(); //Create a new user role var modelRole = new LidiaUserRole() { UserId = userviewmodel.UserId, RoleId = userviewmodel.Id, TenantId = userviewmodel.TenantId }; if (userviewmodel.UserId == CurrentUser.Id || User.IsInRole("SystemAdministrator") || User.IsInRole("TenantAdministrator")) { if (ModelState.IsValid) { //Update the user ctx.Entry(user).State = EntityState.Modified; ctx.UserRoles.Add(modelRole); ctx.SaveChanges(); return(RedirectToAction("Index")); } ViewBag.TenantId = new SelectList(ctx.Tenants.ToList(), "TenantId", "Name"); } else { return(View("Authorize")); } } } catch (Exception ex) { LogService.Info("Applications not found", ex.Message, ex.InnerException); } return(View(userviewmodel)); }
public ActionResult Edit(int?id) { //Create the model var model = new EditUserViewModel(); // Create the user var user = new LidiaUser(); var userRole = new LidiaUserRole(); try { using (var ctx = new SaasDbContext()) { //Get user from db user = ctx.Users.Where(u => u.Id == id).Include("Roles").FirstOrDefault(); //Get user role from db userRole = ctx.UserRoles.Where(s => s.UserId == user.Id).FirstOrDefault(); if (User.IsInRole("SystemAdministrator")) { model.Firstname = user.Firstname; model.Lastname = user.Lastname; model.Email = user.Email; model.MobileNumber = user.MobileNumber; model.Gender = user.Gender; model.UserId = user.Id; model.Id = userRole.RoleId; model.TenantId = userRole.TenantId; model.PasswordHash = user.PasswordHash; model.Birthdate = user.Birthdate; model.SecurityStamp = user.SecurityStamp; //Add user to model ViewBag.Id = new SelectList(ctx.Roles.ToList(), "Id", "Name"); } else if (CurrentTenant.TenantId == userRole.TenantId && User.IsInRole("TenantAdministrator")) { model.Firstname = user.Firstname; model.Lastname = user.Lastname; model.Email = user.Email; model.MobileNumber = user.MobileNumber; model.Gender = user.Gender; model.UserId = user.Id; model.Id = userRole.RoleId; model.TenantId = userRole.TenantId; model.PasswordHash = user.PasswordHash; model.Birthdate = user.Birthdate; model.SecurityStamp = user.SecurityStamp; ViewBag.Id = new SelectList(ctx.Roles.Where(r => r.Id != 3).ToList(), "Id", "Name"); } else if (CurrentUser.Id == user.Id) { model.Firstname = user.Firstname; model.Lastname = user.Lastname; model.Email = user.Email; model.MobileNumber = user.MobileNumber; model.Gender = user.Gender; model.UserId = user.Id; model.Id = userRole.RoleId; model.TenantId = userRole.TenantId; model.PasswordHash = user.PasswordHash; model.Birthdate = user.Birthdate; model.SecurityStamp = user.SecurityStamp; ViewBag.Id = new SelectList(ctx.Roles.Where(r => r.Id == 1).ToList(), "Id", "Name"); } else { return(View("Authorize")); } } // Create the breadcrumb var breadcrumb = new List <BreadcrumbItemViewModel>(); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = "Users", Link = "/Users" }); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = user.Firstname + " " + user.Lastname, Link = "/Users/" + user.Id + "/Details" }); breadcrumb.Add(new BreadcrumbItemViewModel() { Text = "Edit" }); ViewBag.Breadcrumb = breadcrumb; // Add currentUserId to model ViewBag.CurrentUser = CurrentUser.Id; ViewBag.CurrentTenant = CurrentTenant.TenantId; if (model != null) { return(View(model)); } else { return(RedirectToAction("Home/Index")); } } catch (Exception ex) { LogService.Info("User not found to edit", ex.Message, ex.InnerException); return(RedirectToAction("Home/Index")); } }
public async Task <ActionResult> Create([Bind(Include = "RoleId,TenantId,Firstname,LastName,Username,Email,Password,MobileNumber,Gender,Created")] CreateUserViewModel user) { try { //Create the LidiaUser var newUser = new LidiaUser() { Firstname = user.Firstname, Lastname = user.Lastname, Email = user.Email, Gender = user.Gender, MobileNumber = user.MobileNumber, UserName = user.Email }; using (var ctx = new SaasDbContext()) { if (User.IsInRole("SystemAdministrator") || user.TenantId == CurrentTenant.TenantId) { var result = await UserManager.CreateAsync(newUser, user.Password); if (result.Succeeded) { //Add user role var userRole = new LidiaUserRole() { RoleId = user.RoleId, TenantId = user.TenantId, UserId = newUser.Id }; ctx.UserRoles.Add(userRole); ctx.SaveChanges(); return(RedirectToAction("/Index")); } } if (User.IsInRole("SystemAdministrator")) { ViewBag.TenantId = new SelectList(ctx.Tenants.ToList(), "TenantId", "Name"); ViewBag.Id = new SelectList(ctx.Roles.ToList(), "Id", "Name"); } else if (User.IsInRole("TenantAdministrator")) { ViewBag.TenantId = new SelectList(ctx.Tenants.Where(t => t.TenantId == CurrentTenant.TenantId).ToList(), "TenantId", "Name"); ViewBag.Id = new SelectList(ctx.Roles.Where(t => t.Id != 3).ToList(), "Id", "Name"); } else { return(View("Authorize")); } } } catch (Exception ex) { LogService.Info("Application do not create", ex.Message, ex.InnerException); } return(View(user)); }