// Если тэга с таким именем не было - просто создается, если был, но был удален без очистки линков // - восстанавливается // Если имя тэга уникально, при попытке добавления такого-же будет ошибка public void create(String name, Long pkId) { if (adminService.tarifIsNotExpired(pkId)) { boolean unique = true; boolean deleted = false; Tag existingTag = getTagByNameAndPkId(name, pkId); Tag deletedTag = getDeletedTagByNameAndPkId(name, pkId); if (existingTag != null) { unique = false; if (deletedTag != null) { deleted = true; } } if (unique) { Tag tag = new Tag(); tag.setCabinet(pkDao.find(pkId)); tag.setName(name); if (validate(tag)) { tagDao.save(tag); } } else { if (deleted) { deletedTag.setDeleteDate(null); if (validate(deletedTag)) { tagDao.update(deletedTag); } } else { addError("Такой тэг уже есть"); } } } else { addError("Не удалось добваить тэг в связи с ограничениями тарифа"); } }
public void delete(Long tagId, boolean deleteLinks) { if (tagId != null) { Tag tag = tagDao.find(tagId); if (tag != null) { if (deleteLinks) { for (Client client : tag.getClients()) { Set<Tag> cltags = client.getTags(); cltags.remove(tag); client.setTags(cltags); if (validate(client)) { clientDao.update(client); addError(client.getNameCompany()); } } tagDao.delete(tag); } else { tag.setDeleteDate(new Date()); } } else { addError("Не удалось найти тэг"); } } else { addError("Ид тэга не передан"); } }