diff --git a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java index 5f9ee8be..06e0927c 100644 --- a/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java +++ b/src/main/java/net/gepafin/tendermanagement/constants/GepafinConstant.java @@ -176,5 +176,7 @@ public class GepafinConstant { public static final String VATNUMBER_MANDATORY = "vatnumber.mandatory"; public static final String VATNUMBER_ALREADY_EXISTS = "vatnumber.already.exists"; public static final String INVALID_EMAIL = "invalid.email"; + public static final String UNAUTHORIZED = "UNAUTHORIZED"; + public static final String COMPANY_ID_MANDATORY = "company.id.mandatory"; } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java index c7ad96c5..8dd589e4 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/ApplicationDao.java @@ -17,15 +17,18 @@ import net.gepafin.tendermanagement.service.FormService; import net.gepafin.tendermanagement.util.DateTimeUtil; import net.gepafin.tendermanagement.util.FieldValidator; import net.gepafin.tendermanagement.util.Utils; +import net.gepafin.tendermanagement.util.Validator; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; -import org.checkerframework.checker.units.qual.A; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.jpa.domain.Specification; import org.springframework.stereotype.Component; +import jakarta.persistence.criteria.Predicate; + import java.text.MessageFormat; import java.time.LocalDateTime; import java.util.*; @@ -65,14 +68,17 @@ public class ApplicationDao { @Autowired private FlowDataRepository flowDataRepository; + + @Autowired + private Validator validator; - public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId,Long applicationId) { + public ApplicationResponseBean createApplication(ApplicationRequestBean applicationRequestBean, UserEntity userEntity, Long formId, Long applicationId) { FormEntity formEntity = formService.validateForm(formId); - CallEntity call = callService.validatePublishedCall(formEntity.getCall().getId()); + callService.validatePublishedCall(formEntity.getCall().getId()); validateFormFields(applicationRequestBean,formEntity); ApplicationEntity applicationEntity = validateApplication(applicationId); - if(Boolean.TRUE.equals(applicationEntity.getStatus().equals(ApplicationStatusTypeEnum.SUBMIT.getValue()))){ + if(Boolean.TRUE.equals(applicationEntity.getStatus().equals(ApplicationStatusTypeEnum.SUBMIT.getValue()))) { throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_SUBMITTED)); } formService.validateFormField(applicationRequestBean.getFormFields(),applicationEntity,formEntity); @@ -94,9 +100,10 @@ public class ApplicationDao { return applicationFormEntity; } - public ApplicationEntity createApplicationEntity(UserEntity user, CallEntity call) { + public ApplicationEntity createApplicationEntity(UserEntity user, CallEntity call, CompanyEntity companyEntity) { ApplicationEntity entity = new ApplicationEntity(); - entity.setUser(user); + entity.setUserId(user.getId()); + entity.setCompany(companyEntity); entity.setCall(call); entity.setIsDeleted(false); entity.setStatus(ApplicationStatusTypeEnum.DRAFT.getValue()); @@ -109,7 +116,6 @@ public class ApplicationDao { ApplicationEntity applicationEntity = validateApplication(id); ApplicationFormEntity applicationFormEntity = applicationFormRepository.findByApplicationIdAndFormId(applicationEntity.getId(),formId); List applicationFormFieldResponseBeans=new ArrayList<>(); - ApplicationFormFieldResponseBean applicationFormFieldResponseBeans1=null; List applicationFormFieldEntities = applicationFormFieldRepository.findByApplicationFormId(applicationFormEntity.getId()); applicationFormFieldResponseBeans=createApplicationFormFieldResponse(applicationFormFieldEntities, applicationFormEntity, applicationFormFieldResponseBeans); ApplicationResponseBean applicationResponseBean= convertApplicationEntityToApplicationResponseBean(applicationEntity); @@ -170,44 +176,74 @@ public class ApplicationDao { log.info("Application deleted with ID: {}", id); } - public List getAllApplications(UserEntity userEntity, Long callId) { - boolean isBeneficiary = isBeneficiary(userEntity); - +// public List getAllApplications(UserEntity userEntity, Long callId, CompanyEntity companyEntity) { +// boolean isBeneficiary = validator.checkIsBeneficiary(); +// +// log.info("Fetching applications for RoleType: {}", userEntity.getRoleEntity().getRoleType()); +// List applicationResponses = new ArrayList<>(); +// +// if (callId != null) { +// // Fetch based on callId and user if role is BENEFICIARY, otherwise fetch all for the call +// log.info("Fetching applications for callId: {}", callId); +// CallEntity call = callService.validateCall(callId); +// +// // Use a single method to handle both conditions for consistency +// List applicationEntities = isBeneficiary +// ? applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(), call.getId()) +// .map(List::of) // Convert Optional to a List of one element +// .orElse(List.of()) // If not present, return an empty list +// : applicationRepository.findByCallIdAndIsDeletedFalse(call.getId()); +// +// applicationResponses = applicationEntities.stream() +// .map(this::getApplicationResponse) +// .collect(Collectors.toList()); +// +// } else { +// // Fetch all applications for the user if BENEFICIARY, or fetch all applications in general +// List applicationEntities = isBeneficiary +// ? applicationRepository.findByUserIdAndIsDeletedFalse(companyEntity.getId()) +// : applicationRepository.findByIsDeletedFalse(); +// +// applicationResponses = applicationEntities.stream() +// .map(this::getApplicationResponse) +// .collect(Collectors.toList()); +// } +// +// return applicationResponses; +// } + + public List getAllApplications(UserEntity userEntity, Long callId, Long companyId) { + log.info("Fetching applications for RoleType: {}", userEntity.getRoleEntity().getRoleType()); - List applicationResponses = new ArrayList<>(); - if (callId != null) { - // Fetch based on callId and user if role is BENEFICIARY, otherwise fetch all for the call - log.info("Fetching applications for callId: {}", callId); - CallEntity call = callService.validateCall(callId); + Specification spec = search(userEntity.getId(), callId, companyId); - // Use a single method to handle both conditions for consistency - List applicationEntities = isBeneficiary - ? applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(), call.getId()) - .map(List::of) // Convert Optional to a List of one element - .orElse(List.of()) // If not present, return an empty list - : applicationRepository.findByCallIdAndIsDeletedFalse(call.getId()); + List applicationEntities = applicationRepository.findAll(spec); - applicationResponses = applicationEntities.stream() - .map(this::getApplicationResponse) - .collect(Collectors.toList()); - - } else { - // Fetch all applications for the user if BENEFICIARY, or fetch all applications in general - List applicationEntities = isBeneficiary - ? applicationRepository.findByUserIdAndIsDeletedFalse(userEntity.getId()) - : applicationRepository.findByIsDeletedFalse(); - - applicationResponses = applicationEntities.stream() - .map(this::getApplicationResponse) - .collect(Collectors.toList()); - } - - return applicationResponses; + return applicationEntities.stream() + .map(this::getApplicationResponse) + .collect(Collectors.toList()); } - private ApplicationResponse getApplicationResponse(ApplicationEntity applicationEntity) { + private Specification search(Long userId, Long callId, Long companyId) { + return (root, query, builder) -> { + Boolean isBeneficiary = validator.checkIsBeneficiary(); + Predicate predicate = builder.isFalse(root.get("isDeleted")); + if (isBeneficiary) { + predicate = builder.and(predicate, builder.equal(root.get("userId"), userId)); + } + if (callId != null) { + predicate = builder.and(predicate, builder.equal(root.get("call").get("id"), callId)); + } + if (companyId != null) { + predicate = builder.and(predicate, builder.equal(root.get("company").get("id"), companyId)); + } + return predicate; + }; + } + + private ApplicationResponse getApplicationResponse(ApplicationEntity applicationEntity) { ApplicationResponse responseBean = new ApplicationResponse(); List flowEdgesList = flowEdgesRepository.findByCallId(applicationEntity.getCall().getId()); Long totalFormSteps = flowFormDao.calculateTotalSteps(flowEdgesList); @@ -223,13 +259,17 @@ public class ApplicationDao { responseBean.setSubmissionDate(applicationEntity.getSubmissionDate()); responseBean.setStatus(applicationEntity.getStatus()); responseBean.setComments(applicationEntity.getComments()); + responseBean.setCompanyId(applicationEntity.getCompany().getId()); + responseBean.setCompanyName(applicationEntity.getCompany().getCompanyName()); return responseBean; } - public ApplicationEntity validateApplication(Long id) { - ApplicationEntity applicationEntity= applicationRepository.findById(id).orElseThrow(() ->new ResourceNotFoundException(Status.NOT_FOUND, Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG))); - return applicationEntity; - } + public ApplicationEntity validateApplication(Long id) { + ApplicationEntity applicationEntity = applicationRepository.findById(id) + .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, + Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG))); + return applicationEntity; + } private ApplicationResponseBean convertApplicationEntityToApplicationResponseBean(ApplicationEntity entity) { ApplicationResponseBean response = new ApplicationResponseBean(); @@ -349,20 +389,19 @@ public class ApplicationDao { return applicationEntity; } - public ApplicationGetResponseBean getApplicationByFormId( Long applicationId,Long formId, UserEntity userEntity) { + public ApplicationGetResponseBean getApplicationByFormId( Long applicationId, Long formId, UserEntity userEntity) { List formApplicationResponses = new ArrayList<>(); List formEntities = new ArrayList<>(); boolean isBeneficiary = isBeneficiary(userEntity); ApplicationEntity applicationEntity = isBeneficiary - ? applicationRepository.findByIdAndUserIdAndIsDeletedFalse(applicationId,userEntity.getId()) + ? applicationRepository.findByIdAndUserIdAndIsDeletedFalse(applicationId, userEntity.getId()) .orElseThrow(() -> new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG))) : applicationRepository.findById(applicationId) .stream().findFirst() .orElseThrow(() -> new CustomValidationException(Status.BAD_REQUEST, Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG))); - if (formId != null) { FormEntity formEntity = formService.validateForm(formId); - Optional application = applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(), + Optional application = applicationRepository.findByIdAndUserIdAndCallIdAndIsDeletedFalse(applicationId, userEntity.getId(), formEntity.getCall().getId()); applicationEntity=application.get(); formEntities.add(formEntity); @@ -422,6 +461,8 @@ public class ApplicationDao { applicationGetResponseBean.setSubmissionDate(applicationEntity.getSubmissionDate()); applicationGetResponseBean.setCallId(applicationEntity.getCall().getId()); applicationGetResponseBean.setCallTitle(applicationEntity.getCall().getName()); + applicationGetResponseBean.setCompanyId(applicationEntity.getCompany().getId()); + applicationGetResponseBean.setCompanyName(applicationEntity.getCompany().getCompanyName()); return applicationGetResponseBean; } @@ -434,36 +475,29 @@ public class ApplicationDao { return formApplicationResponse; } - public ApplicationResponse createApplicationByCallId(ApplicationRequest applicationRequest,Long callId,UserEntity userEntity){ - CallEntity call=callService.validateCall(callId); - call = callService.validatePublishedCall(call.getId()); - checkIfApplicationExists(call,userEntity); - ApplicationEntity applicationEntity=createApplicationEntity(userEntity,call); - applicationEntity.setComments(applicationRequest.getComments()); - applicationEntity=saveApplicationEntity(applicationEntity); - ApplicationResponse applicationResponse=getApplicationResponse(applicationEntity); - return applicationResponse; - } - public void checkIfApplicationExists(CallEntity call,UserEntity userEntity){ - Optional applicationEntity=applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(),call.getId()); + public ApplicationResponse createApplicationByCallId(CompanyEntity companyEntity, + ApplicationRequest applicationRequest, Long callId, UserEntity userEntity) { + CallEntity call = callService.validateCall(callId); + call = callService.validatePublishedCall(call.getId()); + checkIfApplicationExists(call, companyEntity); + ApplicationEntity applicationEntity = createApplicationEntity(userEntity, call, companyEntity); + applicationEntity.setComments(applicationRequest.getComments()); + applicationEntity = saveApplicationEntity(applicationEntity); + ApplicationResponse applicationResponse = getApplicationResponse(applicationEntity); + return applicationResponse; + } + public void checkIfApplicationExists(CallEntity call, CompanyEntity companyEntity){ + Optional applicationEntity=applicationRepository.findByCompanyIdAndCallIdAndIsDeletedFalse(companyEntity.getId(),call.getId()); if(applicationEntity.isPresent()){ throw new CustomValidationException(Status.BAD_REQUEST,Translator.toLocale(GepafinConstant.APPLICATION_ALREADY_EXISTS)); } } - - - public ApplicationEntity getApplicationByCallAndUser(CallEntity call, UserEntity userEntity) { - return applicationRepository.findByUserIdAndCallIdAndIsDeletedFalse(userEntity.getId(), call.getId()) - .orElseThrow(() -> new ResourceNotFoundException(Status.NOT_FOUND, - Translator.toLocale(GepafinConstant.APPLICATION_NOT_FOUND_MSG))); - - } public void updateApplicationStatus(Long applicationId, ApplicationStatusTypeEnum status) { ApplicationEntity applicationEntity = validateApplication(applicationId); if (status.equals(ApplicationStatusTypeEnum.SUBMIT)) { - CallEntity callEntity = applicationEntity.getCall(); +// CallEntity callEntity = applicationEntity.getCall(); // Long initialFormId = callEntity.getInitialForm(); // Long finalFormId = callEntity.getFinalForm(); //// if (initialFormId == null || finalFormId == null) { @@ -501,7 +535,7 @@ public class ApplicationDao { return (int) Math.round(progress); } public void validateFormFields(ApplicationRequestBean request, FormEntity formEntity) { - List errors=new ArrayList<>(); + List contentResponseBeans=Utils.convertJsonStringToList(formEntity.getContent(),ContentResponseBean.class); List requestFields = request.getFormFields(); diff --git a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java index 6b0774aa..5aa03a64 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/CompanyDao.java @@ -42,20 +42,20 @@ public class CompanyDao { } private void validateCompany(CompanyRequest companyRequest) { + if (Boolean.FALSE.equals(StringUtils.isEmpty(companyRequest.getEmail())) && Boolean.FALSE.equals(Utils.isValidEmail(companyRequest.getEmail()))) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.INVALID_EMAIL)); } - if(StringUtils.isEmpty(companyRequest.getVatNumber())) { + if (StringUtils.isEmpty(companyRequest.getVatNumber())) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.VATNUMBER_MANDATORY)); } - if(companyRepository.existsByVatNumber(companyRequest.getVatNumber())) { + if (companyRepository.existsByVatNumber(companyRequest.getVatNumber())) { throw new CustomValidationException(Status.VALIDATION_ERROR, Translator.toLocale(GepafinConstant.VATNUMBER_ALREADY_EXISTS)); } - } private UserWithCompanyEntity createUserWithCompanyRelation(UserEntity userEntity, CompanyEntity companyEntity) { @@ -153,4 +153,9 @@ public class CompanyDao { return list.stream().map(this::convertCompanyEntityToCompanyResponse).toList(); } + public UserWithCompanyEntity validateUserWithCompny(Long userId, Long companyId) { + return userWithCompanyRepository.findByUserIdAndCompanyId(userId, companyId).orElseThrow(() -> new CustomValidationException(Status.UNAUTHORIZED, + Translator.toLocale(GepafinConstant.UNAUTHORIZED))); + } + } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java index b8ebd278..cfec2fe2 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FaqDao.java @@ -12,8 +12,11 @@ import net.gepafin.tendermanagement.model.request.FaqReq; import net.gepafin.tendermanagement.model.response.FaqResponseBean; import net.gepafin.tendermanagement.repositories.FaqRepository; import net.gepafin.tendermanagement.service.CallService; +import net.gepafin.tendermanagement.service.CompanyService; import net.gepafin.tendermanagement.service.LookUpDataService; import net.gepafin.tendermanagement.util.DateTimeUtil; +import net.gepafin.tendermanagement.util.Validator; +import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; import org.springframework.beans.factory.annotation.Autowired; @@ -35,12 +38,25 @@ public class FaqDao { @Autowired private LookUpDataService lookUpDataService; + + @Autowired + private Validator validator; + + @Autowired + private CompanyService companyService; - public FaqResponseBean createFaq(FaqReq faqRequest, UserEntity userEntity, Long callId) { - FaqEntity entity = new FaqEntity(); + public FaqResponseBean createFaq(FaqReq faqRequest, UserEntity userEntity, Long callId, Long companyId) { CallEntity callEntity = callService.validateCall(callId); - entity = createOrUpdateFaqEntity(faqRequest, callEntity, userEntity, + FaqEntity entity = createOrUpdateFaqEntity(faqRequest, callEntity, userEntity, LookUpDataEntity.LookUpDataTypeEnum.FAQ); + if (validator.checkIsBeneficiary() && companyId == null) { + throw new CustomValidationException(Status.VALIDATION_ERROR, + Translator.toLocale(GepafinConstant.COMPANY_ID_MANDATORY)); + } + if(companyId!=null) { + companyService.validateCompany(companyId); + entity.setCompanyId(companyId); + } faqRepository.save(entity); return convertToFaqResponseBean(entity); } diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FlowDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FlowDao.java index 6b4d34d5..2fbf0943 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FlowDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FlowDao.java @@ -4,20 +4,16 @@ import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.constants.GepafinConstant; import net.gepafin.tendermanagement.entities.CallEntity; import net.gepafin.tendermanagement.entities.FlowDataEntity; -import net.gepafin.tendermanagement.entities.FlowDataEntity; import net.gepafin.tendermanagement.entities.FlowEdgesEntity; import net.gepafin.tendermanagement.enums.CallStatusEnum; import net.gepafin.tendermanagement.model.request.FlowDataRequestBean; import net.gepafin.tendermanagement.model.request.FlowEdgesRequestBean; import net.gepafin.tendermanagement.model.request.FlowRequestBean; -import net.gepafin.tendermanagement.model.response.EvaluationCriteriaResponseBean; import net.gepafin.tendermanagement.model.response.FlowDataResponseBean; import net.gepafin.tendermanagement.model.response.FlowEdgesResponseBean; import net.gepafin.tendermanagement.model.response.FlowResponseBean; import net.gepafin.tendermanagement.repositories.CallRepository; import net.gepafin.tendermanagement.repositories.FlowDataRepository; -import net.gepafin.tendermanagement.repositories.FlowDataRepository; -import net.gepafin.tendermanagement.repositories.FlowEdgesRepository; import net.gepafin.tendermanagement.repositories.FlowEdgesRepository; import net.gepafin.tendermanagement.service.CallService; import net.gepafin.tendermanagement.service.FormService; @@ -29,7 +25,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import java.time.LocalDateTime; -import java.util.ArrayList; import java.util.List; import java.util.stream.Collectors; diff --git a/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java b/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java index 57f3c756..b99ba6c2 100644 --- a/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java +++ b/src/main/java/net/gepafin/tendermanagement/dao/FlowFormDao.java @@ -1,7 +1,6 @@ package net.gepafin.tendermanagement.dao; import java.util.*; -import java.util.stream.Collectors; import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; import net.gepafin.tendermanagement.repositories.*; @@ -20,7 +19,6 @@ import net.gepafin.tendermanagement.enums.FormActionEnum; import net.gepafin.tendermanagement.model.response.NextOrPreviousFormResponse; import net.gepafin.tendermanagement.service.FormService; import net.gepafin.tendermanagement.web.rest.api.errors.CustomValidationException; -import net.gepafin.tendermanagement.web.rest.api.errors.ResourceNotFoundException; import net.gepafin.tendermanagement.web.rest.api.errors.Status; @Component @@ -296,6 +294,8 @@ public class FlowFormDao { applicationDao.processForm(formEntity, applicationEntity)); nextOrPreviousFormResponse.setCallId(applicationEntity.getCall().getId()); nextOrPreviousFormResponse.setCallTitle(applicationEntity.getCall().getName()); + nextOrPreviousFormResponse.setCompanyId(applicationEntity.getCompany().getId()); + nextOrPreviousFormResponse.setCompanyName(applicationEntity.getCompany().getCompanyName()); List flowEdgesList = flowEdgesRepository.findByCallId(applicationEntity.getCall().getId()); Long totalFormSteps = calculateTotalSteps(flowEdgesList); diff --git a/src/main/java/net/gepafin/tendermanagement/entities/ApplicationEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/ApplicationEntity.java index 8c9156e3..01648c67 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/ApplicationEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/ApplicationEntity.java @@ -13,9 +13,12 @@ import java.time.LocalDateTime; @Builder public class ApplicationEntity extends BaseEntity { + @Column(name = "USER_ID") + private Long userId; + @ManyToOne - @JoinColumn(name = "USER_ID", nullable = false) - private UserEntity user; + @JoinColumn(name = "COMPANY_ID", nullable = false) + private CompanyEntity company; @Column(name = "SUBMISSION_DATE") private LocalDateTime submissionDate; @@ -29,7 +32,7 @@ public class ApplicationEntity extends BaseEntity { @ManyToOne @JoinColumn(name = "CALL_ID", nullable = false) private CallEntity call; - + @Column(name="IS_DELETED") private Boolean isDeleted; diff --git a/src/main/java/net/gepafin/tendermanagement/entities/FaqEntity.java b/src/main/java/net/gepafin/tendermanagement/entities/FaqEntity.java index 38cd3b2b..a476f2c5 100644 --- a/src/main/java/net/gepafin/tendermanagement/entities/FaqEntity.java +++ b/src/main/java/net/gepafin/tendermanagement/entities/FaqEntity.java @@ -41,6 +41,9 @@ public class FaqEntity extends BaseEntity { @Column(name ="IS_DELETED", nullable = false) private Boolean isDeleted = false; + + @Column(name ="COMPANY_ID") + private Long companyId; } diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationGetResponseBean.java b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationGetResponseBean.java index 50ce0c57..9078f3a2 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationGetResponseBean.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationGetResponseBean.java @@ -19,6 +19,10 @@ public class ApplicationGetResponseBean { private Long callId; private String callTitle; + + private Long companyId; + + private String companyName; private List form; diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java index b5a0fbb2..4283637f 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/ApplicationResponse.java @@ -26,5 +26,9 @@ public class ApplicationResponse{ private String status; private String comments; + + private Long companyId; + + private String companyName; } \ No newline at end of file diff --git a/src/main/java/net/gepafin/tendermanagement/model/response/NextOrPreviousFormResponse.java b/src/main/java/net/gepafin/tendermanagement/model/response/NextOrPreviousFormResponse.java index 0c39d4a9..7864e831 100644 --- a/src/main/java/net/gepafin/tendermanagement/model/response/NextOrPreviousFormResponse.java +++ b/src/main/java/net/gepafin/tendermanagement/model/response/NextOrPreviousFormResponse.java @@ -17,6 +17,10 @@ public class NextOrPreviousFormResponse { private Long completedSteps; private Long currentStep; + + private Long companyId; + + private String companyName; private ApplicationStatusTypeEnum applicationStatus; diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java index ad9104a5..567c8198 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/ApplicationRepository.java @@ -3,6 +3,7 @@ package net.gepafin.tendermanagement.repositories; import net.gepafin.tendermanagement.entities.ApplicationEntity; import net.gepafin.tendermanagement.entities.FaqEntity; import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.JpaSpecificationExecutor; import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import org.springframework.stereotype.Repository; @@ -11,9 +12,7 @@ import java.util.List; import java.util.Optional; @Repository -public interface ApplicationRepository extends JpaRepository { - - public Optional findByUserIdAndCallIdAndIsDeletedFalse(Long userId,Long callId); +public interface ApplicationRepository extends JpaRepository, JpaSpecificationExecutor { public List findByUserIdAndIsDeletedFalse(Long userId); @@ -26,4 +25,9 @@ public interface ApplicationRepository extends JpaRepository findByIdAndUserIdAndIsDeletedFalse(Long id,Long userId); + Optional findByCompanyIdAndCallIdAndIsDeletedFalse(Long companyId, Long callId); + + public Optional findByIdAndUserIdAndCallIdAndIsDeletedFalse(Long applicationId, Long userId, + Long callId); + } diff --git a/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java b/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java index c026c801..89da2436 100644 --- a/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java +++ b/src/main/java/net/gepafin/tendermanagement/repositories/UserWithCompanyRepository.java @@ -1,6 +1,7 @@ package net.gepafin.tendermanagement.repositories; import java.util.List; +import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Query; @@ -16,4 +17,6 @@ public interface UserWithCompanyRepository extends JpaRepository findCompanyIdByUserId(@Param("userId") Long userId); + Optional findByUserIdAndCompanyId(Long userId, Long companyId); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java b/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java index 152bc1b5..a8f6ad53 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/ApplicationService.java @@ -19,15 +19,16 @@ public interface ApplicationService { ApplicationGetResponseBean getApplicationByFormId(HttpServletRequest request, Long applicationId,Long formId); - List getAllApplications(HttpServletRequest request,Long callId); + List getAllApplications(HttpServletRequest request,Long callId, Long companyId); void deleteApplication(HttpServletRequest request, Long applicationId); public ApplicationEntity validateApplication(Long userId); - public ApplicationResponse createApplication(HttpServletRequest request, ApplicationRequest applicationRequest, Long callId); + public ApplicationResponse createApplication(HttpServletRequest request, Long companyId, ApplicationRequest applicationRequest, Long callId); public NextOrPreviousFormResponse getNextOrPreviousForm(HttpServletRequest request, Long applicationId, Long formId, FormActionEnum action); public void updateApplicationStatus(HttpServletRequest request, Long applicationId, ApplicationStatusTypeEnum status); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java b/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java index e21c22c6..d0d7ce20 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/CompanyService.java @@ -4,6 +4,8 @@ import java.util.List; import java.util.Map; import jakarta.servlet.http.HttpServletRequest; +import net.gepafin.tendermanagement.entities.CompanyEntity; +import net.gepafin.tendermanagement.entities.UserWithCompanyEntity; import net.gepafin.tendermanagement.model.request.CompanyRequest; import net.gepafin.tendermanagement.model.response.CompanyResponse; @@ -21,4 +23,8 @@ public interface CompanyService { Map checkVatNumber(HttpServletRequest request, String vatNumber); + CompanyEntity validateCompany(Long companyId); + + UserWithCompanyEntity validateUserWithCompny(Long userId, Long companyId); + } diff --git a/src/main/java/net/gepafin/tendermanagement/service/FaqService.java b/src/main/java/net/gepafin/tendermanagement/service/FaqService.java index 55adc950..74fd414d 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/FaqService.java +++ b/src/main/java/net/gepafin/tendermanagement/service/FaqService.java @@ -11,7 +11,7 @@ import net.gepafin.tendermanagement.model.response.FaqResponseBean; public interface FaqService { - FaqResponseBean createFaq(HttpServletRequest request,Long callId, FaqReq faqRequest); + FaqResponseBean createFaq(HttpServletRequest request,Long callId, Long companyId, FaqReq faqRequest); FaqResponseBean getFaqById(HttpServletRequest request, Long id); diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java index e2364698..a64afadf 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/ApplicationServiceImpl.java @@ -4,6 +4,7 @@ import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.ApplicationDao; import net.gepafin.tendermanagement.dao.FlowFormDao; import net.gepafin.tendermanagement.entities.ApplicationEntity; +import net.gepafin.tendermanagement.entities.CompanyEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.model.request.ApplicationRequest; import net.gepafin.tendermanagement.enums.ApplicationStatusTypeEnum; @@ -35,10 +36,11 @@ public class ApplicationServiceImpl implements ApplicationService { @Override @Transactional(rollbackFor = Exception.class) - public ApplicationResponseBean createApplication(HttpServletRequest request, ApplicationRequestBean applicationRequestBean,Long applicationId, Long formId) { - UserEntity userEntity = validator.validateUser(request); - return applicationDao.createApplication(applicationRequestBean,userEntity,formId,applicationId); - } + public ApplicationResponseBean createApplication(HttpServletRequest request, + ApplicationRequestBean applicationRequestBean, Long applicationId, Long formId) { + UserEntity userEntity = validator.validateUser(request); + return applicationDao.createApplication(applicationRequestBean, userEntity, formId, applicationId); + } @Override @Transactional(readOnly = true) @@ -60,9 +62,10 @@ public class ApplicationServiceImpl implements ApplicationService { @Override @Transactional(rollbackFor = Exception.class) - public ApplicationResponse createApplication(HttpServletRequest request, ApplicationRequest applicationRequest, Long callId) { + public ApplicationResponse createApplication(HttpServletRequest request, Long companyId, ApplicationRequest applicationRequest, Long callId) { UserEntity userEntity = validator.validateUser(request); - return applicationDao.createApplicationByCallId(applicationRequest,callId,userEntity); + CompanyEntity companyEntity = validator.validateUSerWithCompany(request, companyId); + return applicationDao.createApplicationByCallId(companyEntity, applicationRequest, callId, userEntity); } @Override @@ -80,8 +83,11 @@ public class ApplicationServiceImpl implements ApplicationService { @Override @Transactional(readOnly = true) - public List getAllApplications(HttpServletRequest request,Long callId) { - UserEntity userEntity = validator.validateUser(request); - return applicationDao.getAllApplications(userEntity,callId); - } + public List getAllApplications(HttpServletRequest request, Long callId, Long companyId) { + UserEntity userEntity = validator.validateUser(request); + if (companyId != null) { + validator.validateUSerWithCompany(request, companyId); + } + return applicationDao.getAllApplications(userEntity, callId, companyId); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java index e54bf146..6dfec87a 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/CompanyServiceImpl.java @@ -10,7 +10,9 @@ import org.springframework.transaction.annotation.Transactional; import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.dao.CompanyDao; import net.gepafin.tendermanagement.dao.VatCheckDao; +import net.gepafin.tendermanagement.entities.CompanyEntity; import net.gepafin.tendermanagement.entities.UserEntity; +import net.gepafin.tendermanagement.entities.UserWithCompanyEntity; import net.gepafin.tendermanagement.model.request.CompanyRequest; import net.gepafin.tendermanagement.model.response.CompanyResponse; import net.gepafin.tendermanagement.service.CompanyService; @@ -68,5 +70,14 @@ public class CompanyServiceImpl implements CompanyService { public Map checkVatNumber(HttpServletRequest request, String vatNumber) { return vatCheckDao.checkVatNumber(vatNumber); } + @Override + public CompanyEntity validateCompany(Long companyId) { + return companyDao.validateCompany(companyId); + } + + @Override + public UserWithCompanyEntity validateUserWithCompny(Long userId, Long companyId) { + return companyDao.validateUserWithCompny(userId, companyId); + } } diff --git a/src/main/java/net/gepafin/tendermanagement/service/impl/FaqServiceImpl.java b/src/main/java/net/gepafin/tendermanagement/service/impl/FaqServiceImpl.java index 78a458f3..921b0ae7 100644 --- a/src/main/java/net/gepafin/tendermanagement/service/impl/FaqServiceImpl.java +++ b/src/main/java/net/gepafin/tendermanagement/service/impl/FaqServiceImpl.java @@ -25,9 +25,9 @@ public class FaqServiceImpl implements FaqService { private Validator validator; @Override - public FaqResponseBean createFaq(HttpServletRequest request,Long callId, FaqReq faqRequest) { + public FaqResponseBean createFaq(HttpServletRequest request,Long callId, Long companyId, FaqReq faqRequest) { UserEntity userEntity = validator.validateUser(request); - return faqDao.createFaq(faqRequest, userEntity,callId); + return faqDao.createFaq(faqRequest, userEntity, callId, companyId); } @Override diff --git a/src/main/java/net/gepafin/tendermanagement/util/Validator.java b/src/main/java/net/gepafin/tendermanagement/util/Validator.java index 37c5c29f..44ba62af 100644 --- a/src/main/java/net/gepafin/tendermanagement/util/Validator.java +++ b/src/main/java/net/gepafin/tendermanagement/util/Validator.java @@ -4,8 +4,10 @@ import jakarta.servlet.http.HttpServletRequest; import net.gepafin.tendermanagement.config.Translator; import net.gepafin.tendermanagement.config.jwt.TokenProvider; import net.gepafin.tendermanagement.constants.GepafinConstant; +import net.gepafin.tendermanagement.entities.CompanyEntity; import net.gepafin.tendermanagement.entities.UserEntity; import net.gepafin.tendermanagement.enums.RoleStatusEnum; +import net.gepafin.tendermanagement.service.CompanyService; import net.gepafin.tendermanagement.service.UserService; import net.gepafin.tendermanagement.web.rest.api.errors.Status; import net.gepafin.tendermanagement.web.rest.api.errors.UnauthorizedAccessException; @@ -26,6 +28,9 @@ public class Validator { @Autowired private UserService userService; + + @Autowired + private CompanyService companyService; public Map getUserInfoFromToken(HttpServletRequest request) { return tokenProvider.getUserInfoAndUserIdFromToken(request); @@ -36,7 +41,7 @@ public class Validator { return userService.validateUser(Long.parseLong(userInfo.get("userId").toString())); } - public Boolean checkIsSuperAdmin(HttpServletRequest request) { + public Boolean checkIsSuperAdmin() { Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication != null && authentication.isAuthenticated()) { @@ -51,9 +56,35 @@ public class Validator { } public void validateRequest(HttpServletRequest request,RoleStatusEnum role) { - if (RoleStatusEnum.ROLE_SUPER_ADMIN.equals(role) && Boolean.FALSE.equals(checkIsSuperAdmin(request))) { + if (RoleStatusEnum.ROLE_SUPER_ADMIN.equals(role) && Boolean.FALSE.equals(checkIsSuperAdmin())) { throw new UnauthorizedAccessException(Status.UNAUTHORIZED, Translator.toLocale(GepafinConstant.INVALID_REQUEST)); } } + + public CompanyEntity validateUSerWithCompany(HttpServletRequest request, Long companyId) { + if (checkIsSuperAdmin()) { + return companyService.validateCompany(companyId); + } + Map userInfo = tokenProvider.getUserInfoAndUserIdFromToken(request); + companyService.validateUserWithCompny(getUserId(userInfo), companyId); + return companyService.validateCompany(companyId); + } + + private Long getUserId(Map userInfo) { + return Long.parseLong(userInfo.get("userId").toString()); + } + + public Boolean checkIsBeneficiary() { + Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); + if (authentication != null && authentication.isAuthenticated()) { + // Check if the user has the ROLE_SUPER_ADMIN authority + for (GrantedAuthority authority : authentication.getAuthorities()) { + if (RoleStatusEnum.ROLE_BENEFICIARY.getValue().equals(authority.getAuthority())) { + return true; + } + } + } + return false; + } } diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java index 9499bfe0..c56680ef 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/ApplicationApi.java @@ -67,7 +67,8 @@ public interface ApplicationApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @GetMapping(value = "", produces = "application/json") ResponseEntity>> getAllApplications(HttpServletRequest request, - @Parameter(description = "The call id", required = false) @RequestParam(value = "callId", required = false) Long callId); + @Parameter(description = "The call id", required = false) @RequestParam(value = "callId", required = false) Long callId, + @Parameter(description = "The company id", required = false) @RequestParam(value = "companyId", required = false) Long companyId); @Operation(summary = "Api to delete application", responses = { @@ -93,9 +94,10 @@ public interface ApplicationApi { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) })) }) @PostMapping(value = "/call/{callId}", produces = { "application/json" }) - ResponseEntity> createApplicationByCallId(HttpServletRequest request, - @Parameter(description = " Flow request object", required = true) @Valid @RequestBody ApplicationRequest applicationRequest, - @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId); + ResponseEntity> createApplicationByCallId(HttpServletRequest request, + @Parameter(description = "The company ID", required = true) @RequestParam(value = "companyId", required = true) Long companyId, + @Parameter(description = " Flow request object", required = true) @Valid @RequestBody ApplicationRequest applicationRequest, + @Parameter(description = "The call ID", required = true) @PathVariable("callId") Long callId); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/DocumentApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/DocumentApi.java index 9c2cedcc..45a16c8f 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/DocumentApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/DocumentApi.java @@ -31,9 +31,13 @@ public interface DocumentApi { @ApiResponse(responseCode = "400", description = "Bad Request", content = @Content(mediaType = MediaType.APPLICATION_JSON_VALUE, examples = { @ExampleObject(value = ErrorConstants.BADREQUEST_ERROR_EXAMPLE) }))}) @PostMapping(value = "/uploadFile/source/{sourceId}", consumes = MediaType.MULTIPART_FORM_DATA_VALUE) - default ResponseEntity>> uploadFile(HttpServletRequest httpServletRequest, @Parameter(description = "Source Id", required = true) @PathVariable("sourceId") Long sourceId, @RequestParam DocumentSourceTypeEnum sourceType, @RequestParam("file") List files, @RequestParam("documentType") DocumentTypeEnum documentTypeEnum) { - return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); - } + default ResponseEntity>> uploadFile(HttpServletRequest httpServletRequest, + @Parameter(description = "Source Id", required = true) @PathVariable("sourceId") Long sourceId, + @RequestParam("sourceType") DocumentSourceTypeEnum sourceType, + @RequestParam("file") List files, + @RequestParam("documentType") DocumentTypeEnum documentTypeEnum) { + return new ResponseEntity<>(HttpStatus.NOT_IMPLEMENTED); + } @Operation(summary = "API to delete a file by document id", responses = { diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/FaqApi.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/FaqApi.java index f44491a8..8fad8c06 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/FaqApi.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/FaqApi.java @@ -24,7 +24,7 @@ public interface FaqApi { }) @PostMapping(value = "/call/{callId}", consumes = "application/json", produces = "application/json") ResponseEntity> createFaq(HttpServletRequest request, @Parameter(description = "call id", required = true) - @PathVariable("callId") Long callId, @Valid @RequestBody FaqReq faqRequest); + @PathVariable("callId") Long callId, @RequestParam(value = "companyId", required = false) Long companyId, @Valid @RequestBody FaqReq faqRequest); @Operation(summary = "API to get FAQ by id", responses = { diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java index 1d8b205b..69f28492 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/ApplicationApiController.java @@ -60,14 +60,14 @@ public class ApplicationApiController implements ApplicationApi { } @Override - public ResponseEntity> createApplicationByCallId(HttpServletRequest request, ApplicationRequest applicationRequest, Long callId) { - ApplicationResponse applicationResponseBean=applicationService.createApplication(request,applicationRequest,callId); + public ResponseEntity> createApplicationByCallId(HttpServletRequest request, Long companyId, ApplicationRequest applicationRequest, Long callId) { + ApplicationResponse applicationResponseBean=applicationService.createApplication(request, companyId, applicationRequest, callId); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(applicationResponseBean, Status.SUCCESS, Translator.toLocale(GepafinConstant.APPLICATION_CREATED_SUCCESS_MSG))); } @Override - public ResponseEntity>> getAllApplications(HttpServletRequest request,Long callId) { - List applications = applicationService.getAllApplications(request,callId); + public ResponseEntity>> getAllApplications(HttpServletRequest request,Long callId,Long companyId) { + List applications = applicationService.getAllApplications(request,callId,companyId); log.info("Get All Applications"); return ResponseEntity.status(HttpStatus.OK) .body(new Response<>(applications, Status.SUCCESS, Translator.toLocale(GepafinConstant.GET_APPLICATION_SUCCESS_MSG))); diff --git a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FaqApiController.java b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FaqApiController.java index 142e5614..d905e938 100644 --- a/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FaqApiController.java +++ b/src/main/java/net/gepafin/tendermanagement/web/rest/api/impl/FaqApiController.java @@ -22,8 +22,8 @@ public class FaqApiController implements FaqApi { private FaqService faqService; @Override - public ResponseEntity> createFaq(HttpServletRequest request, Long callId,FaqReq faqRequest) { - FaqResponseBean response = faqService.createFaq(request,callId, faqRequest); + public ResponseEntity> createFaq(HttpServletRequest request, Long callId, Long companyId, FaqReq faqRequest) { + FaqResponseBean response = faqService.createFaq(request,callId, companyId, faqRequest); return ResponseEntity.status(HttpStatus.CREATED) .body(new Response<>(response, Status.SUCCESS, Translator.toLocale(GepafinConstant.FAQ_CREATED_SUCCESSFULLY))); } diff --git a/src/main/resources/db/changelog/db.changelog-1.0.0.xml b/src/main/resources/db/changelog/db.changelog-1.0.0.xml index d4da3d66..1fe6a617 100644 --- a/src/main/resources/db/changelog/db.changelog-1.0.0.xml +++ b/src/main/resources/db/changelog/db.changelog-1.0.0.xml @@ -813,5 +813,16 @@ + + + + + + + + + + + diff --git a/src/main/resources/message_en.properties b/src/main/resources/message_en.properties index 96726470..5ef423b2 100644 --- a/src/main/resources/message_en.properties +++ b/src/main/resources/message_en.properties @@ -204,3 +204,4 @@ invalid.vatnumber=Invalid VAT number. vatnumber.mandatory=VatNumber is mandatory. vatnumber.already.exists=VatNumber already exists. invalid.email=Invalid email. +company.id.mandatory=Company id is mandatory. diff --git a/src/main/resources/message_it.properties b/src/main/resources/message_it.properties index 324131cb..273cdef9 100644 --- a/src/main/resources/message_it.properties +++ b/src/main/resources/message_it.properties @@ -197,3 +197,4 @@ invalid.vatnumber=Numero di partita IVA non valido. vatnumber.mandatory=Il numero di partita IVA è obbligatorio. vatnumber.already.exists=Il numero di partita IVA esiste già. invalid.email=Email non valida. +company.id.mandatory=L'ID dell'azienda è obbligatorio.