MIFOSX-765: ensure activated by is captured at creation if also activated at same time.

This commit is contained in:
Keith Woodlock
2013-11-14 12:22:04 +00:00
parent 83fc32b0af
commit 0451a99c19
3 changed files with 23 additions and 45 deletions
@@ -139,11 +139,8 @@ public final class Client extends AbstractPersistable<Long> {
@JoinColumn(name = "activatedon_userid", nullable = true) @JoinColumn(name = "activatedon_userid", nullable = true)
private AppUser activatedBy; private AppUser activatedBy;
public static Client createNew(final AppUser currentUser, final Office clientOffice, final Group clientParentGroup, final Staff staff,
final JsonCommand command) {
public static Client createNew(final AppUser currentUser, final Office clientOffice, final Group clientParentGroup, final Staff staff, final JsonCommand command) {
final String accountNo = command.stringValueOfParameterNamed(ClientApiConstants.accountNoParamName); final String accountNo = command.stringValueOfParameterNamed(ClientApiConstants.accountNoParamName);
final String externalId = command.stringValueOfParameterNamed(ClientApiConstants.externalIdParamName); final String externalId = command.stringValueOfParameterNamed(ClientApiConstants.externalIdParamName);
@@ -154,13 +151,9 @@ public final class Client extends AbstractPersistable<Long> {
final String lastname = command.stringValueOfParameterNamed(ClientApiConstants.lastnameParamName); final String lastname = command.stringValueOfParameterNamed(ClientApiConstants.lastnameParamName);
final String fullname = command.stringValueOfParameterNamed(ClientApiConstants.fullnameParamName); final String fullname = command.stringValueOfParameterNamed(ClientApiConstants.fullnameParamName);
LocalDate submittedOnDate = new LocalDate(); LocalDate submittedOnDate = new LocalDate();
if (command.hasParameter(ClientApiConstants.submittedOnDateParamName)) { if (command.hasParameter(ClientApiConstants.submittedOnDateParamName)) {
submittedOnDate = command.localDateValueOfParameterNamed(ClientApiConstants.submittedOnDateParamName); submittedOnDate = command.localDateValueOfParameterNamed(ClientApiConstants.submittedOnDateParamName);
} }
ClientStatus status = ClientStatus.PENDING; ClientStatus status = ClientStatus.PENDING;
@@ -169,8 +162,6 @@ public final class Client extends AbstractPersistable<Long> {
active = command.booleanPrimitiveValueOfParameterNamed(ClientApiConstants.activeParamName); active = command.booleanPrimitiveValueOfParameterNamed(ClientApiConstants.activeParamName);
} }
LocalDate activationDate = null; LocalDate activationDate = null;
LocalDate officeJoiningDate = null; LocalDate officeJoiningDate = null;
if (active) { if (active) {
@@ -179,20 +170,18 @@ public final class Client extends AbstractPersistable<Long> {
officeJoiningDate = activationDate; officeJoiningDate = activationDate;
} }
return new Client(currentUser, status, clientOffice, clientParentGroup, accountNo, firstname, middlename, lastname, fullname,
return new Client(currentUser,status, clientOffice, clientParentGroup, accountNo, firstname, middlename, lastname, fullname, activationDate, activationDate, officeJoiningDate, externalId, mobileNo, staff, submittedOnDate);
officeJoiningDate, externalId, mobileNo, staff,submittedOnDate);
} }
protected Client() { protected Client() {
// //
} }
private Client(final AppUser currentUser,final ClientStatus status, final Office office, final Group clientParentGroup, final String accountNo, private Client(final AppUser currentUser, final ClientStatus status, final Office office, final Group clientParentGroup,
final String firstname, final String middlename, final String lastname, final String fullname, final LocalDate activationDate, final String accountNo, final String firstname, final String middlename, final String lastname, final String fullname,
final LocalDate officeJoiningDate, final String externalId, final String mobileNo, final Staff staff,final LocalDate submittedOnDate) { final LocalDate activationDate, final LocalDate officeJoiningDate, final String externalId, final String mobileNo,
final Staff staff, final LocalDate submittedOnDate) {
if (StringUtils.isBlank(accountNo)) { if (StringUtils.isBlank(accountNo)) {
this.accountNumber = new RandomPasswordGenerator(19).generate(); this.accountNumber = new RandomPasswordGenerator(19).generate();
@@ -201,8 +190,6 @@ public final class Client extends AbstractPersistable<Long> {
this.accountNumber = accountNo; this.accountNumber = accountNo;
} }
this.submittedBy = currentUser;
if (isDateInTheFuture(submittedOnDate)) { if (isDateInTheFuture(submittedOnDate)) {
final String defaultUserMessage = "submitted date cannot be in the future."; final String defaultUserMessage = "submitted date cannot be in the future.";
@@ -216,10 +203,7 @@ public final class Client extends AbstractPersistable<Long> {
} }
this.submittedOnDate = submittedOnDate.toDate(); this.submittedOnDate = submittedOnDate.toDate();
this.submittedBy = currentUser;
this.status = status.getValue(); this.status = status.getValue();
this.office = office; this.office = office;
@@ -237,6 +221,7 @@ public final class Client extends AbstractPersistable<Long> {
if (activationDate != null) { if (activationDate != null) {
this.activationDate = activationDate.toDateTimeAtStartOfDay().toDate(); this.activationDate = activationDate.toDateTimeAtStartOfDay().toDate();
this.activatedBy = currentUser;
} }
if (officeJoiningDate != null) { if (officeJoiningDate != null) {
this.officeJoiningDate = officeJoiningDate.toDateTimeAtStartOfDay().toDate(); this.officeJoiningDate = officeJoiningDate.toDateTimeAtStartOfDay().toDate();
@@ -137,7 +137,6 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
public CommandProcessingResult createClient(final JsonCommand command) { public CommandProcessingResult createClient(final JsonCommand command) {
try { try {
final AppUser currentUser = this.context.authenticatedUser(); final AppUser currentUser = this.context.authenticatedUser();
this.fromApiJsonDeserializer.validateForCreate(command.json()); this.fromApiJsonDeserializer.validateForCreate(command.json());
@@ -334,7 +333,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
public CommandProcessingResult closeClient(final Long clientId, final JsonCommand command) { public CommandProcessingResult closeClient(final Long clientId, final JsonCommand command) {
try { try {
AppUser currentUser = this.context.authenticatedUser(); final AppUser currentUser = this.context.authenticatedUser();
this.fromApiJsonDeserializer.validateClose(command); this.fromApiJsonDeserializer.validateClose(command);
final Client client = this.clientRepository.findOneWithNotFoundDetection(clientId); final Client client = this.clientRepository.findOneWithNotFoundDetection(clientId);
@@ -81,10 +81,6 @@ public final class Group extends AbstractPersistable<Long> {
@JoinColumn(name = "parent_id") @JoinColumn(name = "parent_id")
private Group parent; private Group parent;
/*
* TODO - kw - it might be possible to just move this to be a java enum type
* rather than 'levels' table.
*/
@ManyToOne @ManyToOne
@JoinColumn(name = "level_id", nullable = false) @JoinColumn(name = "level_id", nullable = false)
private GroupLevel groupLevel; private GroupLevel groupLevel;
@@ -141,9 +137,8 @@ public final class Group extends AbstractPersistable<Long> {
// group is made active // group is made active
} }
return new Group(office, staff, parent, groupLevel, name, externalId, status, groupActivationDate, clientMembers, groupMembers,
submittedOnDate, currentUser);
return new Group(office, staff, parent, groupLevel, name, externalId, status, groupActivationDate, clientMembers, groupMembers,submittedOnDate,currentUser);
} }
public Group(final Office office, final Staff staff, final Group parent, final GroupLevel groupLevel, final String name, public Group(final Office office, final Staff staff, final Group parent, final GroupLevel groupLevel, final String name,
@@ -161,6 +156,7 @@ public final class Group extends AbstractPersistable<Long> {
this.status = status.getValue(); this.status = status.getValue();
if (activationDate != null) { if (activationDate != null) {
this.activationDate = activationDate.toDate(); this.activationDate = activationDate.toDate();
this.activatedBy = currentUser;
} }
if (StringUtils.isNotBlank(name)) { if (StringUtils.isNotBlank(name)) {
@@ -180,8 +176,6 @@ public final class Group extends AbstractPersistable<Long> {
this.groupMembers.addAll(groupMembers); this.groupMembers.addAll(groupMembers);
} }
this.submittedBy = currentUser;
if (isDateInTheFuture(submittedOnDate)) { if (isDateInTheFuture(submittedOnDate)) {
final String defaultUserMessage = "submitted date cannot be in the future."; final String defaultUserMessage = "submitted date cannot be in the future.";
@@ -195,6 +189,7 @@ public final class Group extends AbstractPersistable<Long> {
} }
this.submittedOnDate = submittedOnDate.toDate(); this.submittedOnDate = submittedOnDate.toDate();
this.submittedBy = currentUser;
} }
public void activate(final AppUser currentUser, final DateTimeFormatter formatter, final LocalDate activationLocalDate) { public void activate(final AppUser currentUser, final DateTimeFormatter formatter, final LocalDate activationLocalDate) {
@@ -401,7 +396,6 @@ public final class Group extends AbstractPersistable<Long> {
return clientIds; return clientIds;
} }
// TODO - kw - look into removing usage of these getters/setters
public GroupLevel getGroupLevel() { public GroupLevel getGroupLevel() {
return this.groupLevel; return this.groupLevel;
} }
@@ -452,7 +446,7 @@ public final class Group extends AbstractPersistable<Long> {
} }
public boolean isChildGroup() { public boolean isChildGroup() {
return (this.parent == null) ? false : true; return this.parent == null ? false : true;
} }