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)
|
@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,13 +190,11 @@ 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.";
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("error.msg.clients.submittedOnDate.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>();
|
final List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
|
||||||
dataValidationErrors.add(error);
|
dataValidationErrors.add(error);
|
||||||
@@ -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();
|
||||||
@@ -304,7 +289,7 @@ public final class Client extends AbstractPersistable<Long> {
|
|||||||
this.accountNumberRequiresAutoGeneration = false;
|
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()) {
|
if (isActive()) {
|
||||||
final String defaultUserMessage = "Cannot activate client. Client is already active.";
|
final String defaultUserMessage = "Cannot activate client. Client is already active.";
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("error.msg.clients.already.active", defaultUserMessage,
|
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) {
|
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);
|
||||||
|
|||||||
+10
-16
@@ -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;
|
||||||
@@ -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,
|
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 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;
|
GroupingTypeStatus status = GroupingTypeStatus.PENDING;
|
||||||
LocalDate groupActivationDate = null;
|
LocalDate groupActivationDate = null;
|
||||||
@@ -141,14 +137,13 @@ 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,
|
||||||
final String externalId, final GroupingTypeStatus status, final LocalDate activationDate, final Set<Client> clientMembers,
|
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.office = office;
|
||||||
this.staff = staff;
|
this.staff = staff;
|
||||||
this.groupLevel = groupLevel;
|
this.groupLevel = groupLevel;
|
||||||
@@ -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,13 +176,11 @@ 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.";
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("error.msg.group.submittedOnDate.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>();
|
final List<ApiParameterError> dataValidationErrors = new ArrayList<ApiParameterError>();
|
||||||
dataValidationErrors.add(error);
|
dataValidationErrors.add(error);
|
||||||
@@ -195,9 +189,10 @@ 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) {
|
||||||
if (isActive()) {
|
if (isActive()) {
|
||||||
final String defaultUserMessage = "Cannot activate group. Group is already active.";
|
final String defaultUserMessage = "Cannot activate group. Group is already active.";
|
||||||
final ApiParameterError error = ApiParameterError.parameterError("error.msg.group.already.active", defaultUserMessage,
|
final ApiParameterError error = ApiParameterError.parameterError("error.msg.group.already.active", defaultUserMessage,
|
||||||
@@ -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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -460,7 +454,7 @@ public final class Group extends AbstractPersistable<Long> {
|
|||||||
return GroupingTypeStatus.fromInt(this.status).isClosed();
|
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()) {
|
if (isClosed()) {
|
||||||
final String errorMessage = "Group with identifier " + getId() + " is alread closed.";
|
final String errorMessage = "Group with identifier " + getId() + " is alread closed.";
|
||||||
|
|||||||
Reference in New Issue
Block a user