From 0451a99c1916cbe8657ca3c49df90f2483c68f18 Mon Sep 17 00:00:00 2001 From: Keith Woodlock Date: Thu, 14 Nov 2013 12:22:04 +0000 Subject: [PATCH] MIFOSX-765: ensure activated by is captured at creation if also activated at same time. --- .../portfolio/client/domain/Client.java | 39 ++++++------------- ...WritePlatformServiceJpaRepositoryImpl.java | 3 +- .../portfolio/group/domain/Group.java | 26 +++++-------- 3 files changed, 23 insertions(+), 45 deletions(-) diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java index b81f4a350..d2f9efa36 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/domain/Client.java @@ -139,11 +139,8 @@ public final class Client extends AbstractPersistable { @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 { 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 { active = command.booleanPrimitiveValueOfParameterNamed(ClientApiConstants.activeParamName); } - - LocalDate activationDate = null; LocalDate officeJoiningDate = null; if (active) { @@ -179,20 +170,18 @@ public final class Client extends AbstractPersistable { 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 { 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 dataValidationErrors = new ArrayList(); dataValidationErrors.add(error); @@ -216,10 +203,7 @@ public final class Client extends AbstractPersistable { } this.submittedOnDate = submittedOnDate.toDate(); - - - - + this.submittedBy = currentUser; this.status = status.getValue(); this.office = office; @@ -237,6 +221,7 @@ public final class Client extends AbstractPersistable { 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 { 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, diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java index 8be65be77..a6d89a2a8 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/client/service/ClientWritePlatformServiceJpaRepositoryImpl.java @@ -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); diff --git a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/domain/Group.java b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/domain/Group.java index 4f4abf301..c06b50210 100644 --- a/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/domain/Group.java +++ b/mifosng-provider/src/main/java/org/mifosplatform/portfolio/group/domain/Group.java @@ -81,10 +81,6 @@ public final class Group extends AbstractPersistable { @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 { 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 clientMembers, final Set groupMembers,final LocalDate submittedOnDate,final AppUser currentUser) { + final Set clientMembers, final Set groupMembers, final LocalDate submittedOnDate, final AppUser currentUser) { GroupingTypeStatus status = GroupingTypeStatus.PENDING; LocalDate groupActivationDate = null; @@ -141,14 +137,13 @@ public final class Group extends AbstractPersistable { // 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 clientMembers, - final Set groupMembers,final LocalDate submittedOnDate,final AppUser currentUser) { + final Set 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 { 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 { 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 dataValidationErrors = new ArrayList(); dataValidationErrors.add(error); @@ -195,9 +189,10 @@ public final class Group extends AbstractPersistable { } 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 { 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 { } 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 { 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.";