/// <summary> /// /// </summary> /// <param name="id">user identifier</param> /// <param name="roles"></param> /// <returns></returns> public ActionResult ChangeUserRoles(int id, AdminUserRoles roles) { this.UserRepository.ChangeUserRoles(id, roles); return this.Json(new { success = true }); }
public OperationResult<OperationResults, object> ChangeUserRoles(int userID, AdminUserRoles roles) { using (var context = this.CreateMainContext()) { context.Connection.Open(); context.Transaction = context.Connection.BeginTransaction(); try { var record = context.AdminUserMembershipRecords.Where(x => x.ID == userID).SingleOrDefault(); if (record == null) return new OperationResult<OperationResults, object>() { Result = OperationResults.NotFound }; foreach (var item in record.AdminUserToRoleRecords) context.AdminUserToRoleRecords.DeleteOnSubmit(item); context.SubmitChanges(); //TODO: refactor, temporary we use 2 roles => for that reason I insert 1 item context.AdminUserToRoleRecords.InsertOnSubmit(new AdminUserToRoleRecord() { MemberID = userID, RoleID = (int)roles }); context.SubmitChanges(); context.Transaction.Commit(); } catch (Exception ex) { if (context.Transaction != null) context.Transaction.Rollback(); this.Logger.WriteError(ex); throw; } return new OperationResult<OperationResults, object>() { Result = OperationResults.Success }; } }