MIFOSX-765: ensure activated by is captured at creation if also activated at same time.
This commit is contained in:
+12
-27
@@ -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,
|
||||
|
||||
+1
-2
@@ -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);
|
||||
|
||||
+10
-16
@@ -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.";
|
||||
|
||||
Reference in New Issue
Block a user