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)
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 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 fullname = command.stringValueOfParameterNamed(ClientApiConstants.fullnameParamName);
LocalDate submittedOnDate = new LocalDate();
if (command.hasParameter(ClientApiConstants.submittedOnDateParamName)) {
submittedOnDate = command.localDateValueOfParameterNamed(ClientApiConstants.submittedOnDateParamName);
}
ClientStatus status = ClientStatus.PENDING;
@@ -169,8 +162,6 @@ public final class Client extends AbstractPersistable<Long> {
active = command.booleanPrimitiveValueOfParameterNamed(ClientApiConstants.activeParamName);
}
LocalDate activationDate = null;
LocalDate officeJoiningDate = null;
if (active) {
@@ -179,20 +170,18 @@ public final class Client extends AbstractPersistable<Long> {
officeJoiningDate = activationDate;
}
return new Client(currentUser,status, clientOffice, clientParentGroup, accountNo, firstname, middlename, lastname, fullname, activationDate,
officeJoiningDate, externalId, mobileNo, staff,submittedOnDate);
return new Client(currentUser, status, clientOffice, clientParentGroup, accountNo, firstname, middlename, lastname, fullname,
activationDate, officeJoiningDate, externalId, mobileNo, staff, submittedOnDate);
}
protected Client() {
//
}
private Client(final AppUser currentUser,final ClientStatus status, final Office office, final Group clientParentGroup, final String accountNo,
final String firstname, final String middlename, final String lastname, final String fullname, final LocalDate activationDate,
final LocalDate officeJoiningDate, final String externalId, final String mobileNo, final Staff staff,final LocalDate submittedOnDate) {
private Client(final AppUser currentUser, final ClientStatus status, final Office office, final Group clientParentGroup,
final String accountNo, final String firstname, final String middlename, final String lastname, final String fullname,
final LocalDate activationDate, final LocalDate officeJoiningDate, final String externalId, final String mobileNo,
final Staff staff, final LocalDate submittedOnDate) {
if (StringUtils.isBlank(accountNo)) {
this.accountNumber = new RandomPasswordGenerator(19).generate();
@@ -201,13 +190,11 @@ public final class Client extends AbstractPersistable<Long> {
this.accountNumber = accountNo;
}
this.submittedBy = currentUser;
if (isDateInTheFuture(submittedOnDate)) {
final String defaultUserMessage = "submitted date cannot be in the future.";
final ApiParameterError error = ApiParameterError.parameterError("error.msg.clients.submittedOnDate.in.the.future",
defaultUserMessage, ClientApiConstants.submittedOnDateParamName,submittedOnDate);
defaultUserMessage, ClientApiConstants.submittedOnDateParamName, submittedOnDate);
final List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
dataValidationErrors.add(error);
@@ -216,10 +203,7 @@ public final class Client extends AbstractPersistable<Long> {
}
this.submittedOnDate = submittedOnDate.toDate();
this.submittedBy = currentUser;
this.status = status.getValue();
this.office = office;
@@ -237,6 +221,7 @@ public final class Client extends AbstractPersistable<Long> {
if (activationDate != null) {
this.activationDate = activationDate.toDateTimeAtStartOfDay().toDate();
this.activatedBy = currentUser;
}
if (officeJoiningDate != null) {
this.officeJoiningDate = officeJoiningDate.toDateTimeAtStartOfDay().toDate();
@@ -304,7 +289,7 @@ public final class Client extends AbstractPersistable<Long> {
this.accountNumberRequiresAutoGeneration = false;
}
public void activate(final AppUser currentUser,final DateTimeFormatter formatter, final LocalDate activationLocalDate) {
public void activate(final AppUser currentUser, final DateTimeFormatter formatter, final LocalDate activationLocalDate) {
if (isActive()) {
final String defaultUserMessage = "Cannot activate client. Client is already active.";
final ApiParameterError error = ApiParameterError.parameterError("error.msg.clients.already.active", defaultUserMessage,
@@ -137,7 +137,6 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
public CommandProcessingResult createClient(final JsonCommand command) {
try {
final AppUser currentUser = this.context.authenticatedUser();
this.fromApiJsonDeserializer.validateForCreate(command.json());
@@ -334,7 +333,7 @@ public class ClientWritePlatformServiceJpaRepositoryImpl implements ClientWriteP
public CommandProcessingResult closeClient(final Long clientId, final JsonCommand command) {
try {
AppUser currentUser = this.context.authenticatedUser();
final AppUser currentUser = this.context.authenticatedUser();
this.fromApiJsonDeserializer.validateClose(command);
final Client client = this.clientRepository.findOneWithNotFoundDetection(clientId);
@@ -81,10 +81,6 @@ public final class Group extends AbstractPersistable<Long> {
@JoinColumn(name = "parent_id")
private Group parent;
/*
* TODO - kw - it might be possible to just move this to be a java enum type
* rather than 'levels' table.
*/
@ManyToOne
@JoinColumn(name = "level_id", nullable = false)
private GroupLevel groupLevel;
@@ -131,7 +127,7 @@ public final class Group extends AbstractPersistable<Long> {
public static Group newGroup(final Office office, final Staff staff, final Group parent, final GroupLevel groupLevel,
final String name, final String externalId, final boolean active, final LocalDate activationDate,
final Set<Client> clientMembers, final Set<Group> groupMembers,final LocalDate submittedOnDate,final AppUser currentUser) {
final Set<Client> clientMembers, final Set<Group> groupMembers, final LocalDate submittedOnDate, final AppUser currentUser) {
GroupingTypeStatus status = GroupingTypeStatus.PENDING;
LocalDate groupActivationDate = null;
@@ -141,14 +137,13 @@ public final class Group extends AbstractPersistable<Long> {
// 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,
final String externalId, final GroupingTypeStatus status, final LocalDate activationDate, final Set<Client> clientMembers,
final Set<Group> groupMembers,final LocalDate submittedOnDate,final AppUser currentUser) {
final Set<Group> groupMembers, final LocalDate submittedOnDate, final AppUser currentUser) {
this.office = office;
this.staff = staff;
this.groupLevel = groupLevel;
@@ -161,6 +156,7 @@ public final class Group extends AbstractPersistable<Long> {
this.status = status.getValue();
if (activationDate != null) {
this.activationDate = activationDate.toDate();
this.activatedBy = currentUser;
}
if (StringUtils.isNotBlank(name)) {
@@ -180,13 +176,11 @@ public final class Group extends AbstractPersistable<Long> {
this.groupMembers.addAll(groupMembers);
}
this.submittedBy = currentUser;
if (isDateInTheFuture(submittedOnDate)) {
final String defaultUserMessage = "submitted date cannot be in the future.";
final ApiParameterError error = ApiParameterError.parameterError("error.msg.group.submittedOnDate.in.the.future",
defaultUserMessage,"SubmittedOnDate");
defaultUserMessage, "SubmittedOnDate");
final List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
dataValidationErrors.add(error);
@@ -195,9 +189,10 @@ public final class Group extends AbstractPersistable<Long> {
}
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) {
if (isActive()) {
final String defaultUserMessage = "Cannot activate group. Group is already active.";
final ApiParameterError error = ApiParameterError.parameterError("error.msg.group.already.active", defaultUserMessage,
@@ -401,7 +396,6 @@ public final class Group extends AbstractPersistable<Long> {
return clientIds;
}
// TODO - kw - look into removing usage of these getters/setters
public GroupLevel getGroupLevel() {
return this.groupLevel;
}
@@ -452,7 +446,7 @@ public final class Group extends AbstractPersistable<Long> {
}
public boolean isChildGroup() {
return (this.parent == null) ? false : true;
return this.parent == null ? false : true;
}
@@ -460,7 +454,7 @@ public final class Group extends AbstractPersistable<Long> {
return GroupingTypeStatus.fromInt(this.status).isClosed();
}
public void close(final AppUser currentUser,final CodeValue closureReason, final LocalDate closureDate) {
public void close(final AppUser currentUser, final CodeValue closureReason, final LocalDate closureDate) {
if (isClosed()) {
final String errorMessage = "Group with identifier " + getId() + " is alread closed.";