Untitled

                Never    
Java
       
@Transactional
	public MstReminder edit(MstReminder entity) {
		DetailPenerimaReminder detailPenerimaReminder;
		ReminderSetting reminderSetting;
		MstWorkplace mstWorkplace = null;
		MstDepartment mstDepartment = null;

		if (entity.getType() != null) {
			reminderSetting = reminderSettingService.findByBk(entity.getType()).orElse(null);
		} else {
			reminderSetting = null;
		}

		if (entity.getWorkplace() != null) {
			mstWorkplace = workplaceService.find(entity.getWorkplace().getId()).orElse(null);
		} else {
			mstWorkplace = null;
		}

		if (entity.getDepartment() != null) {
			mstDepartment = departmentService.find(entity.getDepartment().getId()).orElse(null);
		} else {
			mstDepartment = null;
		}

		System.out.println("=============> id detail reminder: " + entity.getId());
		System.out.println("=============> id2 detail reminder: " + entity.getId2());
		detailPenerimaReminder = detailPenerimaReminderService.find(entity.getId2()).orElse(null);
//		detailPenerimaReminder = detailPenerimaReminderService.findByBk(reminderSetting, mstWorkplace, mstDepartment).orElse(null);

		DetailPenerimaReminder detailPenerimaEdited = new DetailPenerimaReminder();
		if (detailPenerimaReminder != null) {
			detailPenerimaReminder.setReminderSetting(reminderSetting);
			detailPenerimaReminder.setWorkplace(mstWorkplace);
			detailPenerimaReminder.setDepartment(mstDepartment);
			detailPenerimaEdited = detailPenerimaReminderService.edit(detailPenerimaReminder);
		}


		List<User> userDelete = reminderSettingService.findUserByIdDetailReminder(detailPenerimaEdited.getId());
		for (int i = 0; i < userDelete.size(); i++) {
			if(!entity.getUser().contains(userDelete.get(i))) {
				DetailPenerimaUserReminder detailUser = new DetailPenerimaUserReminder();
				detailUser = detailPenerimaUserReminderService.findByBk(detailPenerimaEdited, userDelete.get(i)).orElse(null);
				if(detailUser != null) {
					detailPenerimaUserReminderService.delete(detailUser.getId(), detailUser.getVersion(), DetailPenerimaUserReminder.class);
				}
			}
		}

		List<User> users = new ArrayList<>();
		for (User user : entity.getUser()) {
			DetailPenerimaUserReminder detailUser = new DetailPenerimaUserReminder();

			detailUser = detailPenerimaUserReminderService.findByBk(detailPenerimaEdited, user).orElse(null);

			if (detailUser == null) {
				DetailPenerimaUserReminder detailUserEdited = new DetailPenerimaUserReminder();

				detailUserEdited.setDetailPenerimaReminder(detailPenerimaEdited);
				detailUserEdited.setUser(user);
				detailUserEdited = detailPenerimaUserReminderService.add(detailUserEdited);

				users.add(detailUserEdited.getUser());
			}
		}

		List<String> emailDelete = reminderSettingService.findEmailByIdDetailReminder(detailPenerimaEdited.getId());
		for (int i = 0; i < emailDelete.size(); i++) {
			if (!entity.getEmail().contains(emailDelete.get(i))) {
				DetailPenerimaEmailReminder detailEmail = new DetailPenerimaEmailReminder();
				detailEmail = detailPenerimaEmailReminderService.findByBk(detailPenerimaReminder, emailDelete.get(i)).orElse(null);
				if (detailEmail != null) {
					detailPenerimaEmailReminderService.delete(detailEmail.getId(), detailEmail.getVersion(), DetailPenerimaEmailReminder.class);
				}
			}
		}

		List<String> emails = new ArrayList<>();
		for (String email : entity.getEmail()) {
			DetailPenerimaEmailReminder detailEmail = new DetailPenerimaEmailReminder();

			detailEmail = detailPenerimaEmailReminderService.findByBk(detailPenerimaEdited, email).orElse(null);

			if (detailEmail == null) {
				DetailPenerimaEmailReminder detailEmailEdited = new DetailPenerimaEmailReminder();

				detailEmailEdited.setDetailPenerimaReminder(detailPenerimaEdited);
				detailEmailEdited.setEmail(email);
				detailEmailEdited = detailPenerimaEmailReminderService.add(detailEmailEdited);

				emails.add(detailEmailEdited.getEmail());
			}
		}

		MstReminder editedEntity = new MstReminder();
		editedEntity.setId2(detailPenerimaEdited.getId());
		editedEntity.setversion2(detailPenerimaEdited.getVersion());
		editedEntity.setType(detailPenerimaEdited.getReminderSetting().getType());
		editedEntity.setWorkplace(detailPenerimaEdited.getWorkplace());
		editedEntity.setDepartment(detailPenerimaEdited.getDepartment());
		editedEntity.setUser(users);
		editedEntity.setEmail(emails);
		return editedEntity;
	}

Raw Text