@Transactional(value = "transactionManagerMain", readOnly = false, rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
public Response<?> addUserAccount(Map<String, Object> input) {
LOGGER.info("Begin addUserAccount...");
Response<String> response = new Response<String>();
UserAccount userAccount = new UserAccount();
try {
FamilyMaster familyMaster = new FamilyMaster();
List<FamilyMembers> listMembers = new ArrayList<FamilyMembers>();
prepareMasterFamily(input, familyMaster);
familyDao.addMasterFamily(familyMaster);
String password = EncryptDecryptUtil.randomString(8);
input.put(Constants.PASSWORD_USER_ACCOUNT, password);
input.put(Constants.FAMILY_MASTER, familyMaster);
prepareFamilyMembers(input, listMembers);
FamilyMembers familyMember = listMembers.get(0);
// FIXME: Provisionally the first element is familymember
userAccount.setFamilyMember(familyMember);
prepareUserAccoount(input, userAccount);
familyDao.addMembersFamily(listMembers);
userAccountDao.addUserAccount(userAccount);
response.setT(password);
response.setCodeExcute(Constants.OK);