package crmdna.common.config; import crmdna.common.Utils; import crmdna.common.api.APIException; import crmdna.common.api.APIResponse.Status; import crmdna.user.UserCore; import static crmdna.common.OfyService.ofyCrmDna; public class ConfigCRMDNA { private static final String DEFAULT_FROM_EMAIL = "sathya.t@ishafoundation.org"; private static final String DEV_TEAM_MEMBER_1 = "sathya.t@ishafoundation.org"; private static final String DEV_TEAM_MEMBER_2 = "thulasidhar@gmail.com"; public static ConfigCRMDNAProp set(String fromEmail, Boolean devMode, String login) { if (login == null) throw new APIException().status(Status.ERROR_LOGIN_REQUIRED).message("Please login"); if (!UserCore.isSuperUser(login)) throw new APIException().status(Status.ERROR_INSUFFICIENT_PERMISSION).message( "This method can only be called by SUPER_USER"); ConfigCRMDNAEntity entity = ofyCrmDna().load().type(ConfigCRMDNAEntity.class).id("KEY").now(); if (null == entity) entity = new ConfigCRMDNAEntity(); if (fromEmail != null) { Utils.ensureValidEmail(fromEmail); entity.fromEmail = fromEmail; } if (devMode != null) { entity.devMode = devMode; } ofyCrmDna().save().entity(entity).now(); return entity.toProp(); } public static ConfigCRMDNAEntity get() { ConfigCRMDNAEntity entity = ofyCrmDna().load().type(ConfigCRMDNAEntity.class).id("KEY").now(); if (entity == null) { // save an entry with default values entity = new ConfigCRMDNAEntity(); entity.fromEmail = DEFAULT_FROM_EMAIL; entity.devTeamEmails.add(DEV_TEAM_MEMBER_1); entity.devTeamEmails.add(DEV_TEAM_MEMBER_2); entity.devMode = false; ofyCrmDna().save().entity(entity).now(); } return entity; } public static ConfigCRMDNAProp addOrDeleteDevTeamMember(String email, boolean add, String login) { if (!UserCore.isSuperUser(login)) throw new APIException().status(Status.ERROR_INSUFFICIENT_PERMISSION).message( "This method can be only called by SUPER_USER"); ConfigCRMDNAEntity entity = get(); boolean change; if (add) { Utils.ensureValidEmail(email); change = entity.devTeamEmails.add(email); } else { change = entity.devTeamEmails.remove(email); } if (change) ofyCrmDna().save().entity(entity).now(); return entity.toProp(); } }