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:
Manuel Rego Casasnovas 2012-05-09 08:53:32 +02:00
parent dd501faba8
commit 88920249ec
3 changed files with 48 additions and 10 deletions

View file

@ -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);
}

View file

@ -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());

View file

@ -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;
}
}