//package jj.tech.paolu.biz.webadmin.controller;
//
//import static org.mybatis.dynamic.sql.SqlBuilder.constant;
//import static org.mybatis.dynamic.sql.SqlBuilder.count;
//import static org.mybatis.dynamic.sql.SqlBuilder.equalTo;
//import static org.mybatis.dynamic.sql.SqlBuilder.isEqualTo;
//import static org.mybatis.dynamic.sql.SqlBuilder.isEqualToWhenPresent;
//import static org.mybatis.dynamic.sql.SqlBuilder.isIn;
//import static org.mybatis.dynamic.sql.SqlBuilder.isInWhenPresent;
//import static org.mybatis.dynamic.sql.SqlBuilder.isLike;
//import static org.mybatis.dynamic.sql.SqlBuilder.isNotEqualTo;
//import static org.mybatis.dynamic.sql.SqlBuilder.select;
//
//import java.awt.image.BufferedImage;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Optional;
//import java.util.Properties;
//import java.util.Random;
//import java.util.function.Function;
//
//import javax.imageio.ImageIO;
//
//import org.apache.commons.codec.digest.DigestUtils;
//import org.apache.commons.collections.CollectionUtils;
//import org.apache.commons.lang3.ArrayUtils;
//import org.apache.commons.lang3.StringUtils;
//import org.mybatis.dynamic.sql.BasicColumn;
//import org.mybatis.dynamic.sql.SqlBuilder;
//import org.mybatis.dynamic.sql.render.RenderingStrategies;
//import org.mybatis.dynamic.sql.select.QueryExpressionDSL;
//import org.mybatis.dynamic.sql.select.SelectModel;
//import org.mybatis.dynamic.sql.select.render.SelectStatementProvider;
//import org.mybatis.dynamic.sql.where.WhereApplier;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.transaction.annotation.Transactional;
//import org.springframework.validation.annotation.Validated;
//import org.springframework.web.bind.annotation.PostMapping;
//import org.springframework.web.bind.annotation.RequestBody;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import com.google.code.kaptcha.impl.DefaultKaptcha;
//import com.google.code.kaptcha.util.Config;
//
//import io.swagger.v3.oas.annotations.Operation;
//import jakarta.servlet.ServletOutputStream;
//import jakarta.servlet.http.HttpServletRequest;
//import jakarta.servlet.http.HttpServletResponse;
//import jj.tech.paolu.biz.webadmin.dao.SelectMapper;
//import jj.tech.paolu.biz.webadmin.service.OrgService;
//import jj.tech.paolu.biz.webadmin.vo.AdminListVo;
//import jj.tech.paolu.biz.webadmin.vo.Id;
//import jj.tech.paolu.biz.webadmin.vo.IdsAndPwd;
//import jj.tech.paolu.biz.webadmin.vo.IdsAndPwdUpdate;
//import jj.tech.paolu.biz.webadmin.vo.LoginVo;
//import jj.tech.paolu.biz.webadmin.vo.SysAdminAddVo;
//import jj.tech.paolu.biz.webadmin.vo.SysAdminLock;
//import jj.tech.paolu.config.security.user.WebAdminUtil;
//import jj.tech.paolu.repository.mybatis.dao.CertificateApplyMapper;
//import jj.tech.paolu.repository.mybatis.dao.CertificateApplyRecordMapper;
//import jj.tech.paolu.repository.mybatis.dao.CertificateDetailMapper;
//import jj.tech.paolu.repository.mybatis.dao.SysAdminMapper;
//import jj.tech.paolu.repository.mybatis.dao.SysAdminRoleMapper;
//import jj.tech.paolu.repository.mybatis.dao.SysAdminWeidMapper;
//import jj.tech.paolu.repository.mybatis.dao.SysOrgMapper;
//import jj.tech.paolu.repository.mybatis.dao.SysRoleMapper;
//import jj.tech.paolu.repository.mybatis.dao.support.FilesApplyDynamicSqlSupport;
//import jj.tech.paolu.repository.mybatis.dao.support.SysAdminDynamicSqlSupport;
//import jj.tech.paolu.repository.mybatis.dao.support.SysAdminRoleDynamicSqlSupport;
//import jj.tech.paolu.repository.mybatis.dao.support.SysRoleDynamicSqlSupport;
//import jj.tech.paolu.repository.mybatis.entity.SysAdmin;
//import jj.tech.paolu.repository.mybatis.entity.SysAdminRole;
//import jj.tech.paolu.repository.mybatis.entity.SysOrg;
//import jj.tech.paolu.repository.mybatis.entity.SysRole;
//import jj.tech.paolu.utils.CookieUtil;
//import jj.tech.paolu.utils.IDHelp;
//import jj.tech.paolu.utils.Page;
//import jj.tech.paolu.utils.R;
//
//@RestController
//@RequestMapping(value = "/op/admin", name = "管理员账号管理列表")
//public class AdminManagerContronller {
//
//	@Autowired SysAdminMapper sysAdminMapper;
//	@Autowired SysAdminWeidMapper sysAdminWeidMapper;
//	@Autowired SysAdminRoleMapper sysAdminRoleMapper;
//	@Autowired SysOrgMapper sysOrgMapper;
//	@Autowired SysRoleMapper sysRoleMapper;
//	@Autowired CertificateApplyMapper certificateApplyMapper;
//	@Autowired CertificateApplyRecordMapper certificateApplyRecordMapper;
//	@Autowired CertificateDetailMapper certificateDetailMapper;
//	@Autowired SelectMapper selectMapper;
//	@Autowired OrgService orgService;
//
//
//
//
//	@Operation(summary = "管理员登录", description = "admin 000000")
//	@PostMapping("/login")
//	public Object login(@Validated @RequestBody LoginVo parame, 
//			HttpServletRequest request, HttpServletResponse response) {
//		
//		String passwordEncode = DigestUtils.sha3_256Hex(parame.password);
//		String captchaSha = DigestUtils.sha3_256Hex(parame.captcha);
//		String captchaShaCookie = CookieUtil.fine(request, "captcha");
//		if(!captchaSha.equals(captchaShaCookie)) {
//			return R.FALSE("验证码错误");
//		}
//		var provider = select(SysAdminMapper.selectList)
//				.from(SysAdminDynamicSqlSupport.sysAdmin)
//				.where(SysAdminDynamicSqlSupport.username, isEqualTo(parame.username))
//				.build()
//				.render(RenderingStrategies.MYBATIS3);
//
//		Optional<SysAdmin> op = sysAdminMapper.selectOne(provider);
//		if(!op.isPresent()) {
//			return R.FALSE("管理员不存在");
//		}
//		SysAdmin bean = op.get();
//		if(!passwordEncode.equals(bean.getPassword())) {
//			return R.FALSE("密码错误");
//		}
//
//		if(!bean.getId().equals("1") &&  bean.getIslock() == 0) {
//			return R.FALSE("管理员已被禁用");
//		}
//		bean.setPassword(null);
//
//		String token = WebAdminUtil.addUser(bean);
//		HashMap<String, Object> map = new HashMap<String, Object>();
//		map.put("webadmin", token);
//		map.put("admin", bean);
//		CookieUtil.delete(response, "captcha");
//		return R.SUCCESS(map);
//	}
//
//
//
//	@Operation(summary = "登出", description = "")
//	@PostMapping("/logout")
//	public Object logout() {
//		WebAdminUtil.deleteUser();
//		return R.SUCCESS("logout is ok");
//	}
//	
//	@Operation(summary = "验证码", description = "")
//	@PostMapping("/captcha")
//	public Object captcha(HttpServletRequest request, HttpServletResponse response){
//		try
//	    {
//			response.setDateHeader("Expires", 0);
//			response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
//			response.addHeader("Cache-Control", "post-check=0, pre-check=0");
//			response.setHeader("Pragma", "no-cache");
//			response.setContentType("image/jpeg");
//			
//			DefaultKaptcha captchaProducer = new DefaultKaptcha();
//			Properties p = new Properties();
////		    p.setProperty("kaptcha.image.width", null);
////		    p.setProperty("kaptcha.image.height", null);
////		    p.setProperty("kaptcha.textproducer.char.string", "0123456789");
//			p.setProperty("kaptcha.textproducer.char.length", "4");
//			
//			Config cfig = new Config(p);
//			captchaProducer.setConfig(cfig);
//			
//			String capText = captchaProducer.createText();
//			CookieUtil.add("captcha", DigestUtils.sha3_256Hex(capText), response);
//			
//			//request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
//			
//			BufferedImage bi = captchaProducer.createImage(capText);
//			
//			ServletOutputStream out = response.getOutputStream();
//			ImageIO.write(bi, "jpg", out);
//			out.flush();
//			
//	    }catch (Exception e) {
//			e.printStackTrace();
//	    }
//	    return null;
//	}
//
//
//	@Operation(summary = "管理员列表，按内容搜索", description = "")
//	@PostMapping("/list")
//	public Object list(@RequestBody AdminListVo parame) {
//		
//		Page p = new Page(parame.pageNum,parame.pageSize);
//		SysAdmin admin = WebAdminUtil.getUser();
//    	List<SysOrg> orgs = orgService.allFarter(admin.getOrg_id());
//    	SysOrg endOrg = orgs.getLast();
//    	
//    	BasicColumn[] adminCloudList  = BasicColumn.columnList(SysAdminDynamicSqlSupport.sysAdmin.allColumns());
//		BasicColumn roleNames = constant("string_agg(sys_role.rolename, ',')").as("rolenames");
//		BasicColumn[] basic = ArrayUtils.addAll(adminCloudList,roleNames);
//		
//		
//		Function<QueryExpressionDSL.FromGatherer<SelectModel>, QueryExpressionDSL<SelectModel>.JoinSpecificationFinisher> function =
//	    s -> {
//	    	
//	    	var from = s
//					.from(SysAdminDynamicSqlSupport.sysAdmin)
//					.leftJoin(SysAdminRoleDynamicSqlSupport.sysAdminRole)
//					.on(SysAdminRoleDynamicSqlSupport.adminid,equalTo(SysAdminDynamicSqlSupport.id))
//					.leftJoin(SysRoleDynamicSqlSupport.sysRole)
//					.on(SysRoleDynamicSqlSupport.id,equalTo(SysAdminRoleDynamicSqlSupport.roleid))
//					;
//			
//			return from;
//	    };
//	    
//		
//
//		var where = SqlBuilder.where(SysAdminDynamicSqlSupport.id, isNotEqualTo("1"));
//		if(!admin.getId().equals("1")) {
//			where.and(SysAdminDynamicSqlSupport.company_id, isEqualToWhenPresent(endOrg.getId()));
//		}
//		where.and(SysAdminDynamicSqlSupport.islock, isEqualToWhenPresent(parame.islock));
//		where.and(SysAdminDynamicSqlSupport.username, isEqualTo(parame.username).filter(StringUtils::isNoneBlank));
//		where.and(SysAdminDynamicSqlSupport.gender, isEqualToWhenPresent(parame.gender));
//		where.and(SysAdminDynamicSqlSupport.job, isLike(parame.getJob()).filter(StringUtils::isNoneBlank).map(s -> "%" + s + "%"));
//		where.and(SysAdminDynamicSqlSupport.realname, isLike(parame.getRealname()).filter(StringUtils::isNoneBlank).map(s -> "%" + s + "%"));
//		where.and(SysAdminDynamicSqlSupport.phone, isEqualTo(parame.getPhone()).filter(StringUtils::isNoneBlank));
//		where.and(SysAdminDynamicSqlSupport.type, isEqualToWhenPresent(parame.type));
//		where.and(SysAdminDynamicSqlSupport.org_id, isEqualToWhenPresent(parame.getOrg_id()).filter(StringUtils::isNoneBlank));
//		if(CollectionUtils.isNotEmpty(parame.getRolesId())){
//			where.and(SysAdminRoleDynamicSqlSupport.roleid, isInWhenPresent(parame.getRolesId()));
//		}
//
//		WhereApplier applier = where.toWhereApplier();
//		
//	    SelectStatementProvider provider = function.apply(select(basic))
//				.applyWhere(applier)
//				.configureStatement(config -> config.setNonRenderingWhereClauseAllowed(true))
//				.groupBy(SysAdminDynamicSqlSupport.id)
//				.orderBy(FilesApplyDynamicSqlSupport.id.descending())
//				.limit(p.getPageSize())
//				.offset(p.limitStart())
//				.build()
//				.render(RenderingStrategies.MYBATIS3);
//	    
//	    
//
//		SelectStatementProvider count = select(count())
//				.from(function.apply(select(basic))
//				.applyWhere(applier)
//				.groupBy(SysAdminDynamicSqlSupport.id)
//				.orderBy(FilesApplyDynamicSqlSupport.id.descending()),
//				"t1")
//				.configureStatement(config -> config.setNonRenderingWhereClauseAllowed(true))
////				.groupBy(SysAdminDynamicSqlSupport.id)
//				.build()
//				.render(RenderingStrategies.MYBATIS3);
//		
//
//
//		var list = selectMapper.selectMany(provider);
//		long total = selectMapper.count(count);
//		p.setList(list);
//		p.setTotal(total);
//		return R.SUCCESS(p);
//	}
//
//	@Transactional
//	@Operation(summary = "管理员添加", description = "")
//	@PostMapping("/add")
//	public Object add(@RequestBody(required = true) SysAdminAddVo parame) {
//		SysAdmin admin = WebAdminUtil.getUser();
//		if(admin.getId().equals("1")) {
//			if(parame.getType()!=1) { //是否是企业管理员
//				return R.FALSE("超级管理员只能添加企业管理员账号");
//			}
//		}
//		
//		if(!admin.getId().equals("1")) {
//			if(parame.getType()!=0) { //是否是企业管理员
//				return R.FALSE("企业管理员只能创建普通用户");
//			}
//		}
//		
//    	List<SysOrg> orgs = orgService.allFarter(parame.getOrg_id());
//    	SysOrg endOrg = orgs.getLast();
//		//用户名系统生成
//		parame.setUsername(generateUsername());
//
//		if(StringUtils.isEmpty(parame.getUsername())) {
//			return R.FALSE("用户名不能为空");
//		}
//
//		parame.setId(IDHelp.getInstance().nextId());
//		String password = parame.getPassword();
//
//
//		if(StringUtils.isEmpty(password)) {
//			password = "123456pwd";
//		}
//		
//		
//		//该公司是否存在企业管理员的账号
//		if(parame.getType()==1) { 
//			List<SysAdmin> has =
//			sysAdminMapper.select(s->s.where(SysAdminDynamicSqlSupport.company_id, isEqualTo(endOrg.getId()))
//				.and(SysAdminDynamicSqlSupport.type, isEqualTo(1))
//			);
//			if(has.size()>0) {
//				return R.FALSE("已经存在企业管理员:" + has.getFirst().getUsername());
//			}
//		}
//		
//		
//		
//		
//
//		String passwordEncode = DigestUtils.sha3_256Hex(password);
//		parame.setPassword(passwordEncode);
//		parame.setCompany_id(endOrg.getId());
//
//
//		sysAdminMapper.insertSelective(parame);
//		if(parame.role_ids.isEmpty()) {
//			return R.FALSE("角色不能为空");
//		}
//
//		List<SysAdminRole> roles = new ArrayList<SysAdminRole>();
//		parame.role_ids.forEach(roleid->{
//			SysAdminRole bean = new SysAdminRole();
//			bean.setId(IDHelp.getInstance().nextId());
//			bean.setAdminid(parame.getId());
//			bean.setRoleid(roleid);
//			roles.add(bean);
//		});
//
//		sysAdminRoleMapper.insertMultiple(roles);
//
//		/**
//		 * 创建用户的时候不生成weid，在用户成功申请完个人证书后再添加
//		 */
////		CreateResult cr = nBWeidService.createWeId().getResult();
////		SysAdminWeid adwid = new SysAdminWeid();
////		adwid.setId(IDHelp.getInstance().nextId());
////		adwid.setAdmin_id(parame.getId());
////		adwid.setWid(cr.getWeIdDocument().getId());
////		adwid.setWprivate_key(cr.getPrivateKeyHexStr());
////		sysAdminWeidMapper.insertSelective(adwid);
//		
//		return R.SUCCESS(parame);
//
//	}
//
//	@Transactional
//	@Operation(summary = "管理员更新", description = "")
//	@PostMapping("/update")
//	public Object update(@RequestBody(required = true) SysAdminAddVo parame) {
//		if(StringUtils.isEmpty(parame.getUsername())) {
//			return R.FALSE("用户名不能为空");
//		}
//		String password = parame.getPassword();
//		if(StringUtils.isNoneBlank(password)) {
//			String passwordEncode = DigestUtils.sha3_256Hex(password);
//			parame.setPassword(passwordEncode);
//		}
//		if(parame.getId() == null) {
//			return R.FALSE("id不能为空");
//		}
//		if(parame.getId().equals("1")) {
//			return R.FALSE("超级管理不能修改");
//		}
//		if(parame.role_ids.isEmpty()) {
//			return R.FALSE("角色不能为空");
//		}
//
//		sysAdminMapper.updateByPrimaryKeySelective(parame);
//		sysAdminRoleMapper.delete(d->d.where(SysAdminRoleDynamicSqlSupport.adminid, isEqualTo(parame.getId())));
//
//		List<SysAdminRole> roles = new ArrayList<SysAdminRole>();
//		parame.role_ids.forEach(roleid->{
//			SysAdminRole bean = new SysAdminRole();
//			bean.setId(IDHelp.getInstance().nextId());
//			bean.setAdminid(parame.getId());
//			bean.setRoleid(roleid);
//			roles.add(bean);
//		});
//
//		sysAdminRoleMapper.insertMultiple(roles);
//		return R.SUCCESS(parame);
//	}
//
//
//	@Transactional
//	@Operation(summary = "按管理员ID删除")
//	@PostMapping("/delete")
//	public Object delete(@Validated @RequestBody Id parame) {
//		String id = parame.getId();
//		if(id !=null && !id.equals("1")) {
//			sysAdminMapper.deleteByPrimaryKey(id);
//			sysAdminRoleMapper.delete(d->d.where(SysAdminRoleDynamicSqlSupport.adminid, isEqualTo(id)));
//		}
//		if(id.equals("1")) {
//			return R.FALSE("超级管理员不能删除");
//		}
//		return R.SUCCESS("delete: "+id);
//	}
//
//
//
//	@Operation(summary = "按管理员ID获取", description = "")
//	@PostMapping("/get")
//	public Object get(@Validated @RequestBody Id id) {
//		Optional<SysAdmin> op = sysAdminMapper.selectByPrimaryKey(id.getId());
//		if(op.isPresent()) {
//			SysAdmin admin = op.get();
//			admin.setPassword(null);
//
//			SysOrg org = sysOrgMapper.selectByPrimaryKey(admin.getOrg_id()).orElse(null);
//
//			List<SysRole> roles =
//			sysRoleMapper.select(s->s.where(SysRoleDynamicSqlSupport.id, isIn(
//				select(SysAdminRoleDynamicSqlSupport.roleid)
//					.from(SysAdminRoleDynamicSqlSupport.sysAdminRole)
//					.where(SysAdminRoleDynamicSqlSupport.adminid, isEqualTo(admin.getId()))
//			)));
//
////			CertificateDetail cert = certificateDetailMapper.selectOne(s->s
////					.where(CertificateDetailDynamicSqlSupport.id, isEqualTo(
////						select(CertificateApplyDynamicSqlSupport.cer_id)
////						.from(CertificateApplyDynamicSqlSupport.certificateApply)
////						.where(CertificateApplyDynamicSqlSupport.user_id, isEqualTo(admin.getId()))
////						.and(CertificateApplyDynamicSqlSupport.is_org, isEqualTo(0))
////						.orderBy(CertificateApplyDynamicSqlSupport.id.descending())
////						.limit(1)
////					))
////			).orElse(null);
//
//			HashMap<String,Object> h = new HashMap<String,Object>();
//			h.put("admin", admin);
//			h.put("org", org);
//			h.put("roles", roles);
////			h.put("cert", cert);
//			return R.SUCCESS(h);
//		}
//		return R.SUCCESS("can no find");
//	}
//
//	@Operation(summary = "更新管理员状态", description = "")
//	@PostMapping("/updateIsLock")
//	public Object updateIsLock(@Validated @RequestBody SysAdminLock param){
//		SysAdmin sysAdmin = new SysAdmin();
//		sysAdmin.setId(param.getId());
//		sysAdmin.setIslock(param.getIsLock());
//		int i = sysAdminMapper.updateByPrimaryKeySelective(sysAdmin);
//		return R.SUCCESS(i);
//	}
//
//	@Operation(summary = "更新管理员角色", description = "")
//	@PostMapping("/updateRoles")
//	@Transactional
//	public Object updateRoles(@RequestBody SysAdminAddVo param){
//		List<String> role_ids = param.role_ids;
//		if (CollectionUtils.isEmpty(role_ids)) {
//			return R.FALSE("角色不能为空");
//		}
//		List<SysAdminRole> roles = new ArrayList<SysAdminRole>();
//		sysAdminRoleMapper.delete(d -> d.where(SysAdminRoleDynamicSqlSupport.adminid, isEqualTo(param.getId())));
//		role_ids.forEach(roleid->{
//			SysAdminRole bean = new SysAdminRole();
//			bean.setId(IDHelp.getInstance().nextId());
//			bean.setAdminid(param.getId());
//			bean.setRoleid(roleid);
//			roles.add(bean);
//		});
//		sysAdminRoleMapper.insertMultiple(roles);
//		return R.SUCCESS("success");
//	}
//
//	@Operation(summary = "重置管理员密码", description = "")
//	@PostMapping("/resetPwd")
//	public Object resetPwd(@Validated @RequestBody IdsAndPwd params){
//		String pwd = params.getPassword();
//		if (!StringUtils.isEmpty(params.getPassword())){
//			pwd = DigestUtils.sha3_256Hex("123456pwd");
//		}else {
//			return R.FALSE("密码不能为空");
//		}
//		String finalPwd = pwd;
//		int update = sysAdminMapper.update(c -> c.set(SysAdminDynamicSqlSupport.password).equalTo(finalPwd)
//				.where(SysAdminDynamicSqlSupport.id, isInWhenPresent(params.getIds())));
//		return R.SUCCESS(update);
//	}
//	
//	@Operation(summary = "修改管理员密码", description = "")
//	@PostMapping("/updatePwd")
//	public Object updatePwd(@Validated @RequestBody IdsAndPwdUpdate params,
//			HttpServletRequest request, HttpServletResponse response){
//		SysAdmin admin = WebAdminUtil.getUser();
//		String captchaSha = DigestUtils.sha3_256Hex(params.captcha);
// 		String oldPasswordEncode = DigestUtils.sha3_256Hex(params.password);
//		
//		SysAdmin bean =
//		sysAdminMapper.selectOne(s->s.where(SysAdminRoleDynamicSqlSupport.id, isEqualTo(admin.getId()))).orElse(null);
//		if(!bean.getPassword().equals(oldPasswordEncode)) {
//			return R.FALSE("旧密码不正确");
//		}
//		if(oldPasswordEncode.equals(DigestUtils.sha3_256Hex(params.newpassword))) {
//			return R.FALSE("旧密码不能和新密码相同");
//		}
//		
//		String captchaShaCookie = CookieUtil.fine(request, "captcha");
//		if(!captchaSha.equals(captchaShaCookie)) {
//			return R.FALSE("验证码错误");
//		}
//		
//		
//		String pwd = DigestUtils.sha3_256Hex(params.newpassword);
//		
//		int update = sysAdminMapper.update(c -> c.set(SysAdminDynamicSqlSupport.password).equalTo(pwd)
//				.where(SysAdminDynamicSqlSupport.id, isEqualTo(admin.getId())));
//		
//		CookieUtil.delete(response, "captcha");
//		
//		return R.SUCCESS(update);
//	}
//
//
//
//	/**
//	 * 生成用户名
//	 * @return
//	 */
//	private String generateUsername(){
//		Random random = new Random();
//		//长度8位，不已0开头
//		int number;
//		do {
//			number = 10000000 + random.nextInt(90000000); // 生成100000到999999之间的随机数
//			// 将生成的随机数转换为字符串，确保不以0开头
//		} while (number % 10 == 0 && number != 0);
//		String username =  String.valueOf(number);
//		//判断用户名是否已存在
//		long count = sysAdminMapper.count(c -> c.applyWhere(whereFinisher -> whereFinisher.and(SysAdminDynamicSqlSupport.username, isEqualTo(username))));
//		if(count > 0){
//			return generateUsername();
//		}else {
//		    return username;
//		}
//	}
//
//
//
//
//
//
//}
