Skip to content

Commit

Permalink
HLM-4496, HLM-4207 attendance module (#616)
Browse files Browse the repository at this point in the history
* HLM-4496: Added attendance module in HCM

* HLM-4496: updated attendance directory, removed target folder and imi file

* buil config added for hlm-4496 in feature branch

* HLM-4207: offline enablement in attendance log

* HLM-4207: added db migration script

* HLM-4207: updated db migration script

* HLM-4207: updated incorrect statements

* HLM-4207: bulk api support, without redis cache

* HLM-4207: updated Attendancelog consumer for bulk api

* HLM-4207: consumer fix

* HLM-4207: cache support added for attendance log create and update

* HLM-4207: added health-individual endpoint

* HLM-4207: added radis host

* HLM-4207: updated qualified for objectmapper in attendance module

* HLM-4496,HLM-4207: updated application.properties for redis config

* HLM-4207: updated kafka listener topics

* HLM-4207: changed kafka config

* HLM-4894 adding hrms related flag to Individual object, adding another ApiOperation

* HLM-4894 adding hrms related flag to Individual object, adding another ApiOperation

* HLM-4207, HLM-4986, HLM-4987 : bug fix

* HLM-4894 adding changes related to linking of HRMS Employee with Individual

* HLM-4894 adding changes related to linking of HRMS Employee with Individual

* HLM-4207: added clientreferenceid search, null check for document id

* HLM-4894 reverting changes related to linking of HRMS Employee with Individual

* HLM-4894 reverting changes related to linking of HRMS Employee with Individual from libraries, common-models

* HLM-4207: code re-format

* HLM-4894 adding changes for managing attendees while enrollment

* HLM-4207: updated attendance search, register id or clientreference id are mandatory

* hlm-5009 staffId in ProjectStaffSearch changed to list from string

* HLM-4894 updating build config

* HLM-4207: clientReferenceIds is changed to clientReferenceId for Attendance Log search criteria

* HLM-4207: removed staff validation for search without register id

* HLM-4894 adding changes for project staff validation

* HLM-4894 adding @qualifier annotation for object mapper

* HLM-4894 fixing hrms url

* HLM-4771: added changes for updating the registers on project date update

* HLM-4771: project update changes

* HLM-4771: updated the project start date update validation, can not update start date if it is already started

* HLM-4771: updated attendance register consumer and service with comments

* HLM-4771: updated the tenant id

* HLM-4894 updating environment variables.

* HLM-4894 updating code changes

* HLM-4894 adding code changes

* HLM-4894 adding code changes

* HLM-4894 adding code changes

* HLM-4771: updated the project validators, validation for start and end date of project

* HLM-4894 adding useruuid as search param in individual search

* HLM-4894 adding useruuid as search param in individual search

* HLM-4894 adding useruuid as search param in individual search

* HLM-4894 adding changes for registry creation when supervisor enrolls

* HLM-4496, HLM-4894: first staff enrollment on attendance register creation is optional

* HLM-4894 adding changes attendee enrollment

* HLM-4894 adding changes for making staffId as list of staffId in ProjectStaffSearch

* HLM-4894 adding changes for making staffId as list of staffId in ProjectStaffSearch

* HLM-4894 adding changes for making staffId as list of staffId in ProjectStaffSearch

* HLM-4894 removing staff-bulk-create-topic

* HLM-4894 removing staff-bulk-create-topic

* HLM-4894 removing staff-bulk-create-topic

* HLM-4894 removing staff-bulk-create-topic

* HLM-4894 changing health-attendance consumer group-id

* HLM-4894 adding changes for projectstaff consumer

* HLM-4894 adding changes for projectstaff consumer

* HLM-4894 adding changes for projectstaff consumer

* HLM-4894 adding changes for projectstaff consumer

* HLM-4894 adding changes for projectstaff consumer

* HLM-5045: added changes, project start date and end date difference should at least be 1 day.

* HLM-4894 adding comments

* HLM-4894 adding additional Details during attendance register creation

* HLM-4894 adding additional Details during attendance register creation

* hlm-4496 : bug fix on adding staff on updation of register

* HLM-4894 increasing limit to 1000

* Added changelog for individual, health-services-models, project, stock

* HLM-4496 : remove attendance module as it is moved to DIGIT-Works repository.

* HLM-5076: added changes related to project module

* updated individual user uuid search field for hlm-4496, hlm-4207

* changed common models build to 1.0.19-SNAPSHOT

---------

Co-authored-by: Priyanka-eGov <priyanka@egovernments.org>
Co-authored-by: syed-egov <syed.owais@egovernments.org>
Co-authored-by: kavi_elrey@1993 <25226238+kavi-egov@users.noreply.github.com>
  • Loading branch information
4 people authored Feb 28, 2024
1 parent 00ac1a1 commit 9a489b0
Show file tree
Hide file tree
Showing 20 changed files with 279 additions and 32 deletions.
44 changes: 43 additions & 1 deletion build/build-config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,13 @@ config:
dockerfile: "build/maven/Dockerfile"
- work-dir: "health-services/project/src/main/resources/db"
image-name: "project-db"
- name: "builds/health-campaign-services/health-services/health-project"
build:
- work-dir: "health-services/project"
image-name: "health-project"
dockerfile: "build/maven/Dockerfile"
- work-dir: "health-services/project/src/main/resources/db"
image-name: "health-project-db"
- name: "builds/health-campaign-services/health-services/referralmanagement"
build:
- work-dir: "health-services/referralmanagement"
Expand All @@ -57,6 +64,20 @@ config:
dockerfile: "build/maven/Dockerfile"
- work-dir: "health-services/individual/src/main/resources/db"
image-name: "individual-db"
- name: "builds/health-campaign-services/health-services/health-individual"
build:
- work-dir: "health-services/individual"
image-name: "health-individual"
dockerfile: "build/maven/Dockerfile"
- work-dir: "health-services/individual/src/main/resources/db"
image-name: "health-individual-db"
- name: "builds/health-campaign-services/health-services/health-attendance"
build:
- work-dir: "health-services/attendance"
image-name: "health-attendance"
dockerfile: "build/maven/Dockerfile"
- work-dir: "health-services/attendance/src/main/resources/db"
image-name: "health-attendance-db"
- name: "builds/health-campaign-services/health-services/household"
build:
- work-dir: "health-services/household"
Expand All @@ -68,7 +89,7 @@ config:
build:
- work-dir: "core-services/error-handler"
image-name: "error-handler"
dockerfile: "build/maven/Dockerfile"
dockerfile: "build/maven/Dockerfile"
- name: "builds/health-campaign-services/core-services/dashboard-analytics"
build:
- work-dir: "core-services/dashboard-analytics"
Expand Down Expand Up @@ -118,6 +139,13 @@ config:
dockerfile: "build/maven/Dockerfile"
- work-dir: "core-services/pgr-services/src/main/resources/db"
image-name: "pgr-services-db"
- name: "builds/health-campaign-services/core-services/health-pgr-services"
build:
- work-dir: "core-services/pgr-services"
image-name: "health-pgr-services"
dockerfile: "build/maven/Dockerfile"
- work-dir: "core-services/pgr-services/src/main/resources/db"
image-name: "health-pgr-services-db"
- name: "builds/health-campaign-services/core-services/user-otp"
build:
- work-dir: "core-services/user-otp"
Expand All @@ -126,3 +154,17 @@ config:
build:
- work-dir: "core-services/egov-notification-mail"
image-name: "egov-notification-mail"
- name: "builds/health-campaign-services/core-services/attendance"
build:
- work-dir: "core-services/attendance"
image-name: "attendance"
dockerfile: "build/maven/Dockerfile"
- work-dir: "core-services/attendance/src/main/resources/db"
image-name: "attendance-db"
- name: "builds/health-campaign-services/core-services/health-hrms"
build:
- work-dir: "core-services/egov-hrms"
image-name: "health-hrms"
dockerfile: "build/maven/Dockerfile"
- work-dir: "core-services/egov-hrms/src/main/resources/db"
image-name: "health-hrms-db"
3 changes: 3 additions & 0 deletions health-services/individual/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
All notable changes to this module will be documented in this file.

## 1.1.3
- Search by uuid added for individual search

## 1.1.2
- upgraded version from beta

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -269,12 +269,21 @@ private String getQueryForIndividual(IndividualSearch searchObject, Integer limi
query = query + "AND userId=:userId ";
paramsMap.put("userId", String.valueOf(searchObject.getUserId()));
}

if (searchObject.getUserUuid() != null) {
query = query + "AND userUuid in (:userUuid) ";
paramsMap.put("userUuid", searchObject.getUserUuid());
}

query = query + "ORDER BY id ASC LIMIT :limit OFFSET :offset";
paramsMap.put("tenantId", tenantId);
paramsMap.put("isDeleted", includeDeleted);
paramsMap.put("lastModifiedTime", lastChangedSince);
paramsMap.put("limit", limit);
paramsMap.put("offset", offset);

log.info("query-------------------------->");
log.info(query);
return query;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,10 @@ public class IndividualSearch {
@JsonProperty("userId")
private Long userId;

@Exclude
@JsonProperty("userUuid")
private List<String> userUuid;

@Exclude
@JsonProperty("latitude")
@DecimalMin("-90")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,17 @@ public IndividualSearchTestBuilder byClientReferenceId(String... args) {
this.builder.clientReferenceId(ids);
return this;
}
public IndividualSearchTestBuilder byUserUUID(String... args) {
ArrayList<String> ids = new ArrayList<>();
if (args != null && args.length > 0) {
ids.add(args[0]);
} else {
ids.add("some-user-uuid");
}

this.builder.userUuid(ids);
return this;
}

public IndividualSearchTestBuilder byName() {
this.builder.name(Name.builder()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@ void shouldFindOtherParamsFromDbAndReturnAllTheDependentEntitiesAsWellIfPresent(
IndividualSearch individualSearch = IndividualSearchTestBuilder.builder()
.byId()
.byClientReferenceId()
.byUserUUID()
.byGender()
.byName()
.byDateOfBirth()
Expand Down Expand Up @@ -145,6 +146,7 @@ void shouldFindOtherParamsAndIdentifierFromDbAndReturnAllTheDependentEntitiesAsW
IndividualSearch individualSearch = IndividualSearchTestBuilder.builder()
.byId()
.byClientReferenceId()
.byUserUUID()
.byGender()
.byName()
.byDateOfBirth()
Expand Down
7 changes: 7 additions & 0 deletions health-services/libraries/health-services-models/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,12 @@
All notable changes to this module will be documented in this file.

## 1.0.19 - 2024-02-26
- Project staff search staffId changed to a list
- Stock senderid and receiver id is added.

## 1.0.18 - 2024-02-13
- Adding user uuid in individual search

## 1.0.11 - 2023-11-15
- Client reference id added for member of household
- revert of household search change
Expand Down
2 changes: 1 addition & 1 deletion health-services/libraries/health-services-models/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.egov.common</groupId>
<artifactId>health-services-models</artifactId>
<version>1.0.15-SNAPSHOT</version>
<version>1.0.19-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,5 +82,8 @@ public class IndividualSearch {

@JsonProperty("userId")
private Long userId;

@JsonProperty("userUuid")
private List<String> userUuid;
}

Original file line number Diff line number Diff line change
Expand Up @@ -13,33 +13,33 @@
import java.util.List;

/**
* This object defines the mapping of a system staff user to a project for a certain period.
*/
@ApiModel(description = "This object defines the mapping of a system staff user to a project for a certain period.")
* This object defines the mapping of a system staff user to a project for a certain period.
*/
@ApiModel(description = "This object defines the mapping of a system staff user to a project for a certain period.")
@Validated
@javax.annotation.Generated(value = "org.egov.codegen.SpringBootCodegen", date = "2022-12-02T17:32:25.406+05:30")

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProjectStaffSearch {
@JsonIgnoreProperties(ignoreUnknown = true)
public class ProjectStaffSearch {


@JsonProperty("id")
private List<String> id = null;

@JsonProperty("tenantId")
@Size(min=2,max=1000)
@Size(min = 2, max = 1000)
private String tenantId = null;

@JsonProperty("staffId")
@Size(min=2,max=64)
private String staffId = null;
@Size(min = 2, max = 64)
private List<String> staffId = null;

@JsonProperty("projectId")
@Size(min=2,max=64)
@Size(min = 2, max = 64)
private String projectId = null;

@JsonProperty("startDate")
Expand Down
3 changes: 3 additions & 0 deletions health-services/project/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
All notable changes to this module will be documented in this file.

## 1.1.2 - 2024-02-26
- Added Project start date and end date update validation

## 1.1.1 - 2023-11-15
- Added tag in project beneficiary

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -183,4 +183,7 @@ public class ProjectConfiguration {
@Value("${egov.user.id.validator}")
private String egovUserIdValidator;

@Value("${project.staff.attendance.topic}")
private String projectStaffAttendanceTopic;

}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.egov.common.models.project.ProjectStaff;
import org.egov.common.models.project.ProjectStaffBulkRequest;
import org.egov.common.models.project.ProjectStaffRequest;
import org.egov.common.producer.Producer;
import org.egov.common.service.IdGenService;
import org.egov.common.service.UserService;
import org.egov.common.utils.CommonUtils;
Expand All @@ -26,7 +27,9 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.lang.reflect.Type;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.function.Predicate;
Expand Down Expand Up @@ -60,6 +63,8 @@ public class ProjectStaffService {

private final List<Validator<ProjectStaffBulkRequest, ProjectStaff>> validators;

private final Producer producer;

private final Predicate<Validator<ProjectStaffBulkRequest, ProjectStaff>> isApplicableForCreate = validator ->
validator.getClass().equals(PsUserIdValidator.class)
|| validator.getClass().equals(PsProjectIdValidator.class)
Expand All @@ -86,14 +91,16 @@ public ProjectStaffService(
ProjectService projectService,
UserService userService,
ProjectConfiguration projectConfiguration,
ProjectStaffEnrichmentService enrichmentService, List<Validator<ProjectStaffBulkRequest, ProjectStaff>> validators) {
ProjectStaffEnrichmentService enrichmentService,
Producer producer, List<Validator<ProjectStaffBulkRequest, ProjectStaff>> validators) {
this.idGenService = idGenService;
this.projectStaffRepository = projectStaffRepository;
this.projectService = projectService;
this.userService = userService;
this.projectConfiguration = projectConfiguration;
this.enrichmentService = enrichmentService;
this.validators = validators;
this.producer = producer;
}

public ProjectStaff create(ProjectStaffRequest request) {
Expand All @@ -117,6 +124,7 @@ public List<ProjectStaff> create(ProjectStaffBulkRequest request, boolean isBulk
if (!validEntities.isEmpty()) {
log.info("processing {} valid entities", validEntities.size());
enrichmentService.create(validEntities, request);
producer.push(projectConfiguration.getProjectStaffAttendanceTopic(), new ProjectStaffBulkRequest(request.getRequestInfo(),validEntities));
projectStaffRepository.save(validEntities, projectConfiguration.getCreateProjectStaffTopic());
log.info("successfully created project staff");
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,10 @@
package org.egov.project.util;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;

import digit.models.coremodels.mdms.MasterDetail;
import digit.models.coremodels.mdms.MdmsCriteria;
import digit.models.coremodels.mdms.MdmsCriteriaReq;
Expand All @@ -14,16 +19,13 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;

import static org.egov.project.util.ProjectConstants.MASTER_ATTENDANCE_SESSION;
import static org.egov.project.util.ProjectConstants.MASTER_DEPARTMENT;
import static org.egov.project.util.ProjectConstants.MASTER_NATUREOFWORK;
import static org.egov.project.util.ProjectConstants.MASTER_PROJECTTYPE;
import static org.egov.project.util.ProjectConstants.MASTER_TENANTS;
import static org.egov.project.util.ProjectConstants.MDMS_COMMON_MASTERS_MODULE_NAME;
import static org.egov.project.util.ProjectConstants.MDMS_HCM_ATTENDANCE_MODULE_NAME;
import static org.egov.project.util.ProjectConstants.MDMS_TENANT_MODULE_NAME;

@Component
Expand Down Expand Up @@ -58,11 +60,13 @@ public MdmsCriteriaReq getMDMSRequest(RequestInfo requestInfo, String tenantId,
ModuleDetail projectMDMSModuleDetail = getMDMSModuleRequestData(request);
ModuleDetail projectDepartmentModuleDetail = getDepartmentModuleRequestData(request);
ModuleDetail projectTenantModuleDetail = getTenantModuleRequestData(request);
ModuleDetail attendanceModuleDetail = getAttendanceModuleRequestData(request);

List<ModuleDetail> moduleDetails = new LinkedList<>();
moduleDetails.add(projectMDMSModuleDetail);
moduleDetails.add(projectDepartmentModuleDetail);
moduleDetails.add(projectTenantModuleDetail);
moduleDetails.add(attendanceModuleDetail);

MdmsCriteria mdmsCriteria = MdmsCriteria.builder().moduleDetails(moduleDetails).tenantId(tenantId)
.build();
Expand Down Expand Up @@ -123,4 +127,19 @@ private ModuleDetail getTenantModuleRequestData(ProjectRequest request) {
return tenantModuleDetail;
}

}
private ModuleDetail getAttendanceModuleRequestData(ProjectRequest request) {
List<MasterDetail> attendanceMasterDetails = new ArrayList<>();

MasterDetail attendanceSessionsMasterDetails = MasterDetail.builder().name(MASTER_ATTENDANCE_SESSION)
.filter(filterCode)
.build();

attendanceMasterDetails.add(attendanceSessionsMasterDetails);

ModuleDetail attendanceModuleDetail = ModuleDetail.builder().masterDetails(attendanceMasterDetails)
.moduleName(MDMS_HCM_ATTENDANCE_MODULE_NAME).build();

return attendanceModuleDetail;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@ public class ProjectConstants {
public static final String MASTER_TENANTS = "tenants";
public static final String MDMS_TENANT_MODULE_NAME = "tenant";
public static final String MDMS_COMMON_MASTERS_MODULE_NAME = "common-masters";
public static final String MDMS_HCM_ATTENDANCE_MODULE_NAME = "HCM-ATTENDANCE";
public static final String MASTER_DEPARTMENT = "Department";
public static final String MASTER_PROJECTTYPE = "ProjectType";
//location
public static final String MASTER_NATUREOFWORK = "NatureOfWork";
public static final String MASTER_ATTENDANCE_SESSION = "AttendanceSessions";
public static final String CODE = "code";
//General
public static final String SEMICOLON = ":";
Expand All @@ -19,6 +21,8 @@ public class ProjectConstants {
public static final String TASK_NOT_ALLOWED = "TASK_NOT_ALLOWED";
public static final String TASK_NOT_ALLOWED_BENEFICIARY_REFUSED_RESOURCE_EMPTY_ERROR_MESSAGE = "Task not allowed as resources can not be provided when " + TaskStatus.BENEFICIARY_REFUSED;
public static final String TASK_NOT_ALLOWED_RESOURCE_CANNOT_EMPTY_ERROR_MESSAGE = "Task not allowed as resources can not be empty when ";
public static final String NUMBER_OF_SESSIONS = "numberOfSessions";

public enum TaskStatus {
BENEFICIARY_REFUSED("BENEFICIARY_REFUSED");
private String value;
Expand Down
Loading

0 comments on commit 9a489b0

Please sign in to comment.