All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.mosip.registration.service.packet.impl.RegistrationApprovalServiceImpl Maven / Gradle / Ivy

package io.mosip.registration.service.packet.impl;

import static io.mosip.registration.constants.RegistrationConstants.APPLICATION_ID;
import static io.mosip.registration.constants.RegistrationConstants.APPLICATION_NAME;

import java.util.ArrayList;
import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import io.mosip.kernel.core.logger.spi.Logger;
import io.mosip.kernel.core.util.StringUtils;
import io.mosip.registration.audit.AuditManagerService;
import io.mosip.registration.config.AppConfig;
import io.mosip.registration.constants.AuditEvent;
import io.mosip.registration.constants.AuditReferenceIdTypes;
import io.mosip.registration.constants.Components;
import io.mosip.registration.constants.LoggerConstants;
import io.mosip.registration.constants.RegistrationConstants;
import io.mosip.registration.context.SessionContext;
import io.mosip.registration.dao.RegistrationDAO;
import io.mosip.registration.dto.RegistrationApprovalDTO;
import io.mosip.registration.entity.Registration;
import io.mosip.registration.exception.RegBaseCheckedException;
import io.mosip.registration.exception.RegBaseUncheckedException;
import io.mosip.registration.service.BaseService;
import io.mosip.registration.service.packet.RegistrationApprovalService;
import io.mosip.registration.util.advice.AuthenticationAdvice;
import io.mosip.registration.util.advice.PreAuthorizeUserId;

/**
 * Implementation class of {@link RegistrationApprovalService} interface
 *
 * @author Mahesh Kumar
 * @since 1.0.0
 */
@Service
public class RegistrationApprovalServiceImpl extends BaseService implements RegistrationApprovalService {

	/**
	 * Object for Registration DAO
	 */
	@Autowired
	private RegistrationDAO registrationDAO;

	/**
	 * Object for Logger
	 */
	private static final Logger LOGGER = AppConfig.getLogger(RegistrationApprovalServiceImpl.class);

	/**
	 * Instance of {@code AuditFactory}
	 */
	@Autowired
	private AuditManagerService auditFactory;

	/*
	 * (non-Javadoc)
	 * 
	 * @see io.mosip.registration.service.RegistrationApprovalService#
	 * getEnrollmentByStatus(java.lang.String)
	 */
	@Override
	public List getEnrollmentByStatus(String status) throws RegBaseCheckedException {
		LOGGER.info(LoggerConstants.LOG_GET_REGISTER_PKT, APPLICATION_NAME, APPLICATION_ID,
				"Fetching Packets list by status started");
		auditFactory.audit(AuditEvent.PACKET_RETRIVE, Components.PACKET_RETRIVE,
				SessionContext.userContext().getUserId(), AuditReferenceIdTypes.USER_ID.getReferenceTypeId());

		List list = new ArrayList<>();
		if (nullCheckForgetEnrollementByStatus(status)) {
			try {
				List details = registrationDAO.getEnrollmentByStatus(status);

				LOGGER.info(LoggerConstants.LOG_GET_REGISTER_PKT, APPLICATION_NAME, APPLICATION_ID,
						"Packet  list has been fetched");
				auditFactory.audit(AuditEvent.PACKET_RETRIVE, Components.PACKET_RETRIVE,
						SessionContext.userContext().getUserId(), AuditReferenceIdTypes.USER_ID.getReferenceTypeId());
				details.forEach(detail -> list.add(new RegistrationApprovalDTO(detail.getAppId(), detail.getPacketId(),
						regDateTimeConversion(detail.getCrDtime().toString()), detail.getAckFilename(), detail.getRegUsrId(), RegistrationConstants.EMPTY, detail.getHasBwords())));
			} catch (RuntimeException runtimeException) {
				throw new RegBaseUncheckedException(RegistrationConstants.PACKET_RETRIVE_STATUS,
						runtimeException.toString());
			}
		} else {
			throw new RegBaseCheckedException(RegistrationConstants.PACKET_RETRIVE_STATUS_EXCEPTION,
					"Status is empty or null");
		}
		LOGGER.info(LoggerConstants.LOG_GET_REGISTER_PKT, APPLICATION_NAME, APPLICATION_ID,
				"Fetching Packets list by status ended");
		return list;
	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see
	 * io.mosip.registration.service.RegistrationApprovalService#packetUpdateStatus(
	 * java.lang.String, java.lang.String, java.lang.String, java.lang.String,
	 * java.lang.String)
	 */
	@Override
	@PreAuthorizeUserId(roles = { AuthenticationAdvice.OFFICER_ROLE, AuthenticationAdvice.SUPERVISOR_ROLE,
			AuthenticationAdvice.ADMIN_ROLE,AuthenticationAdvice.DEFAULT_ROLE })
	public Registration updateRegistration(String packetID, String statusComments, String clientStatusCode)
			throws RegBaseCheckedException {

		LOGGER.info(LoggerConstants.LOG_UPADTE_REGISTER_PKT, APPLICATION_NAME, APPLICATION_ID,
				"Updating status of Packet");
		auditFactory.audit(AuditEvent.PACKET_UPDATE, Components.PACKET_UPDATE, SessionContext.userContext().getUserId(),
				AuditReferenceIdTypes.USER_ID.getReferenceTypeId());
		Registration registration;
		if (nullCheckForupdateRegistration(packetID, clientStatusCode)) {
			registration = registrationDAO.updateRegistration(packetID, statusComments, clientStatusCode);
		} else {
			throw new RegBaseCheckedException(RegistrationConstants.PACKET_UPDATE_STATUS_EXCEPTION,
					"Registartion ID/ Client Status Code is empty or null");
		}
		return registration;
	}
	
	@Override
	@PreAuthorizeUserId(roles = { AuthenticationAdvice.OFFICER_ROLE, AuthenticationAdvice.SUPERVISOR_ROLE,
			AuthenticationAdvice.ADMIN_ROLE,AuthenticationAdvice.DEFAULT_ROLE })
	public Registration updateRegistrationWithPacketId(String packetId, String statusComments, String clientStatusCode)
			throws RegBaseCheckedException {

		LOGGER.info(LoggerConstants.LOG_UPADTE_REGISTER_PKT, APPLICATION_NAME, APPLICATION_ID,
				"Updating status of Packet");
		auditFactory.audit(AuditEvent.PACKET_UPDATE, Components.PACKET_UPDATE, SessionContext.userContext().getUserId(),
				AuditReferenceIdTypes.USER_ID.getReferenceTypeId());
		Registration registration;
		if (nullCheckForupdateRegistration(packetId, clientStatusCode)) {
			registration = registrationDAO.updateRegistrationWithPacketId(packetId, statusComments, clientStatusCode);
		} else {
			throw new RegBaseCheckedException(RegistrationConstants.PACKET_UPDATE_STATUS_EXCEPTION,
					"Application ID/ Client Status Code is empty or null");
		}
		return registration;
	}

	/**
	 * Null check for getEnrollement by status.
	 *
	 * @param status 
	 * 				the status of packets that needs to be fetched from Database
	 * @return true, 
	 * 				if successful
	 */
	private boolean nullCheckForgetEnrollementByStatus(String status) {

		if (StringUtils.isEmpty(status)) {
			LOGGER.info(LoggerConstants.LOG_GET_REGISTER_PKT, APPLICATION_NAME, APPLICATION_ID,
					"Status is empty or null");
			return false;
		}
		return true;
	}

	/**
	 * Null check for update registration.
	 *
	 * @param registrationID 
	 * 					the registration ID of the registration packet.
	 * @param clientStatusCode 
	 * 					the client status code of the registration packet.
	 * @return true, if successful
	 */
	private boolean nullCheckForupdateRegistration(String id, String clientStatusCode) {

		if (StringUtils.isEmpty(id)) {
			LOGGER.info(LoggerConstants.LOG_GET_REGISTER_PKT, APPLICATION_NAME, APPLICATION_ID,
					"Registration/Application ID is empty or null");
			return false;
		} else if (StringUtils.isEmpty(clientStatusCode)) {
			LOGGER.info(LoggerConstants.LOG_GET_REGISTER_PKT, APPLICATION_NAME, APPLICATION_ID,
					"Client Status Code is empty or null");
			return false;
		} else {
			return true;
		}
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy