Add option to remove bound user too when removing a resource
If the bound user is not an administrator, a question is asked to the user to decide if he wants to remove or not the bound user. FEA: ItEr76S27ResourceBinding
This commit is contained in:
parent
dd501faba8
commit
88920249ec
3 changed files with 48 additions and 10 deletions
|
|
@ -134,7 +134,8 @@ public interface IWorkerModel extends IIntegrationEntityModel {
|
|||
|
||||
boolean canRemove(Worker worker);
|
||||
|
||||
void confirmRemove(Worker worker) throws InstanceNotFoundException;
|
||||
void confirmRemove(Worker worker, boolean removeBoundUser)
|
||||
throws InstanceNotFoundException;
|
||||
|
||||
void removeCalendar();
|
||||
|
||||
|
|
@ -144,4 +145,6 @@ public interface IWorkerModel extends IIntegrationEntityModel {
|
|||
|
||||
void setBoundUser(User user);
|
||||
|
||||
User getBoundUserFromDB(Worker worker);
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -947,20 +947,33 @@ public class WorkerCRUDController extends GenericForwardComposer implements
|
|||
|
||||
public void confirmRemove(Worker worker) {
|
||||
try {
|
||||
if (!workerModel.canRemove(worker)) {
|
||||
messages.showMessage(
|
||||
Level.WARNING,
|
||||
_("This worker cannot be deleted because it has assignments to projects or imputed hours"));
|
||||
return;
|
||||
}
|
||||
|
||||
int status = Messagebox.show(_("Confirm deleting this worker. Are you sure?"), _("Delete"),
|
||||
Messagebox.OK | Messagebox.CANCEL, Messagebox.QUESTION);
|
||||
if (Messagebox.OK != status) {
|
||||
return;
|
||||
}
|
||||
if(workerModel.canRemove(worker)) {
|
||||
workerModel.confirmRemove(worker);
|
||||
messages.showMessage(Level.INFO, _("Worker deleted"));
|
||||
goToList();
|
||||
}
|
||||
else {
|
||||
messages.showMessage(Level.WARNING,
|
||||
_("This worker cannot be deleted because it has assignments to projects or imputed hours"));
|
||||
|
||||
boolean removeBoundUser = false;
|
||||
User user = workerModel.getBoundUserFromDB(worker);
|
||||
if (user != null && !user.isAdministrator()) {
|
||||
removeBoundUser = Messagebox.show(
|
||||
_("Do you want to remove bound user \"{0}\" too?",
|
||||
user.getLoginName()), _("Delete bound user"),
|
||||
Messagebox.YES | Messagebox.NO, Messagebox.QUESTION) == Messagebox.YES;
|
||||
}
|
||||
|
||||
workerModel.confirmRemove(worker, removeBoundUser);
|
||||
messages.showMessage(Level.INFO,
|
||||
removeBoundUser ? _("Worker and bound user deleted")
|
||||
: _("Worker deleted"));
|
||||
goToList();
|
||||
} catch (InterruptedException e) {
|
||||
messages.showMessage(
|
||||
Level.ERROR, e.getMessage());
|
||||
|
|
|
|||
|
|
@ -606,8 +606,12 @@ public class WorkerModel extends IntegrationEntityModel implements IWorkerModel
|
|||
|
||||
@Override
|
||||
@Transactional
|
||||
public void confirmRemove(Worker worker) throws InstanceNotFoundException {
|
||||
public void confirmRemove(Worker worker, boolean removeBoundUser)
|
||||
throws InstanceNotFoundException {
|
||||
resourceDAO.remove(worker.getId());
|
||||
if (removeBoundUser) {
|
||||
userDAO.remove(worker.getUser());
|
||||
}
|
||||
}
|
||||
|
||||
public EntityNameEnum getEntityName() {
|
||||
|
|
@ -651,4 +655,22 @@ public class WorkerModel extends IntegrationEntityModel implements IWorkerModel
|
|||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public User getBoundUserFromDB(Worker worker) {
|
||||
if (worker != null) {
|
||||
User user = worker.getUser();
|
||||
if (user != null) {
|
||||
try {
|
||||
User foundUser = userDAO.find(user.getId());
|
||||
foundUser.getAllRoles().size();
|
||||
return foundUser;
|
||||
} catch (InstanceNotFoundException e) {
|
||||
// Do nothing
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue