package foundation.user; import foundation.capacity.ActorTarget; import foundation.capacity.sight.Sight; import foundation.json.IJSONProvider; import foundation.json.IJSONWriter; import foundation.org.Employee; import foundation.org.Position; import foundation.token.IOnlineUser; import foundation.token.IUser; import foundation.variant.provider.DataEvent; public class OnlineUser extends IOnlineUser implements IJSONProvider { private String onlineCode; private User user; public OnlineUser(String onlineCode, IUser user) { this.onlineCode = onlineCode; this.user = (User)user; } public static OnlineUser getInstance() { IOnlineUser one = localInstance.get(); if (one == null) { return null; } OnlineUser onlineUser = (OnlineUser)one; return onlineUser; } public void collectActors() throws Exception { user.loadHierarchyAndCapacitys(); } public ActorTarget getCurrentActor() throws Exception { return user.getCurrentActor(onlineCode); } public ActorTarget changeCurrentCapacity(String actorId) throws Exception { return user.changeCurrentActor(onlineCode, actorId); } public Sight getCurrentSight() throws Exception { return user.getCurrentSight(onlineCode); } public String getPassword() { return user.getPassword(); } public void chagnePassword(String newPass) throws Exception { user.chagnePassword(newPass); } public String getOnlineCode() { return onlineCode; } public User getUser() { return user; } @Override public boolean isAdmin() { return user.isAdmin(); } @Override public String getId() { return user.getId(); } @Override public String getCode() { return user.getCode(); } @Override public String getName() { return user.getName(); } @Override public String getOrgId() { return user.getOrgId(); } @Override public String getPositionId() throws Exception { Position position = user.getPosition(onlineCode); if (position == null) { return null; } return position.getId(); } @Override public String getActorId() throws Exception { ActorTarget actor = user.getCurrentActor(onlineCode); if (actor == null) { return null; } return actor.getActorId(); } @Override public String getPositionField() throws Exception { Position position = user.getPosition(onlineCode); if (position == null) { return null; } return position.getLevelField(); } public Position getCurrentPosition() { return user.getCurrentPosition(); } @Override public String getAccountId() throws Exception { ActorTarget actorTarget = user.getCurrentActor(onlineCode); if (actorTarget == null) { return null; } return actorTarget.getTargetId(); } @Override public String getCompanyId() throws Exception { ActorTarget actorTarget = user.getCurrentActor(onlineCode); if (actorTarget == null) { return null; } return actorTarget.getCompanyId(); } @Override public String getBUId() throws Exception { ActorTarget actorTarget = user.getCurrentActor(onlineCode); if (actorTarget == null) { return null; } return actorTarget.getBuId(); } @Override public boolean isOrgFrozen() { boolean result = user.isOrgFrozen(); return result; } @Override public boolean isAnymous() { return user.isAnymous(); } @Override public boolean isLimitActive() { return user.isLimitActive(); } @Override public String getEmployeeId() { Employee employee = user.getCurrentEmployee(); if (employee == null) { return null; } return employee.getId(); } @Override public String getEmployeeName() { Employee employee = user.getCurrentEmployee(); if (employee == null) { return null; } return employee.getName(); } @Override public Object getVariantValue(DataEvent dataEvent, String variantName) { return user.getVariantValue(dataEvent, variantName); } @Override public void writeJSON(IJSONWriter writer) { writer.beginObject(); //1. user write user.writeJSONBody(writer); //2. online user write writeJSONBody(writer); writer.endObject(); } private void writeJSONBody(IJSONWriter writer) { try { ActorTarget actor = user.getCurrentActor(onlineCode); if (actor != null) { writer.beginObject("currentActor"); actor.writeJSONBody(writer); writer.endObject(); } else { writer.writeNull("currentCapacity"); } Employee employee = user.getCurrentEmployee(); if (employee != null) { writer.beginObject("employee"); employee.writeJSONBody(writer); writer.endObject(); } else { writer.writeNull("employee"); } writer.write("position_level_field", getPositionField()); } catch (Exception e) { e.printStackTrace(); } } }