Skip to content

Commit

Permalink
Merge branch 'development' of ssh://git.devops.innovateuk.org/ifs/inn…
Browse files Browse the repository at this point in the history
…ovation-funding-service into development
  • Loading branch information
bitbucket committed Jan 8, 2021
2 parents 03a754d + 8ff2606 commit 39748ba
Show file tree
Hide file tree
Showing 116 changed files with 2,092 additions and 1,203 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,7 @@ private void resetFundingLevels(Long competitionId, Long applicationId) {
private boolean canResetFundingLevels(Application application) {
return !application.getCompetition()
.isMaximumFundingLevelConstant(() -> organisationService.findById(application.getLeadOrganisationId()).getSuccess().getOrganisationTypeEnum(),
() -> grantClaimMaximumService.isMaximumFundingLevelOverridden(
() -> grantClaimMaximumService.isMaximumFundingLevelConstant(
application.getCompetition().getId()).getSuccess());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,9 @@
@Entity
@DiscriminatorValue("RESEARCH_CATEGORY")
public class ResearchCategory extends Category {
public static final long FEASIBILITY_STUDIES_ID = 33L;
public static final long INDUSTRIAL_RESEARCH_ID = 34L;
public static final long EXPERIMENTAL_DEVELOPMENT_ID = 35L;

public ResearchCategory() {
// default constructor
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,14 @@
package org.innovateuk.ifs.competitionsetup.applicationformbuilder;

import org.innovateuk.ifs.category.domain.ResearchCategory;
import org.innovateuk.ifs.category.repository.ResearchCategoryRepository;
import org.innovateuk.ifs.competition.domain.Competition;
import org.innovateuk.ifs.competition.domain.CompetitionFinanceRowTypes;
import org.innovateuk.ifs.competition.domain.GrantTermsAndConditions;
import org.innovateuk.ifs.competition.domain.*;
import org.innovateuk.ifs.competition.repository.CompetitionFinanceRowsTypesRepository;
import org.innovateuk.ifs.competition.repository.GrantTermsAndConditionsRepository;
import org.innovateuk.ifs.competitionsetup.applicationformbuilder.builder.FormInputBuilder;
import org.innovateuk.ifs.competitionsetup.applicationformbuilder.builder.QuestionBuilder;
import org.innovateuk.ifs.competitionsetup.applicationformbuilder.builder.SectionBuilder;
import org.innovateuk.ifs.finance.domain.GrantClaimMaximum;
import org.innovateuk.ifs.finance.resource.OrganisationSize;
import org.innovateuk.ifs.finance.resource.cost.FinanceRowType;
import org.innovateuk.ifs.form.resource.FormInputScope;
import org.innovateuk.ifs.form.resource.FormInputType;
Expand Down Expand Up @@ -41,9 +40,6 @@ public class CommonBuilders {

public static final String EDI_QUESTION_PATTERN = "<a href=\"%s\" target=\"_blank\" rel=\"external\">Complete the survey (opens in new window).</a><p>We will not use this data when we assess your application. We collect this data anonymously and only use it to help us understand our funding recipients better.</p>";

@Autowired
private ResearchCategoryRepository categoryRepository;

@Autowired
private CompetitionFinanceRowsTypesRepository competitionFinanceRowsTypesRepository;

Expand Down Expand Up @@ -352,23 +348,6 @@ public static List<FormInputBuilder> defaultAssessedQuestionFormInputs(Function<
Function.identity());
}

public List<GrantClaimMaximum> getDefaultGrantClaimMaximums() {
ResearchCategory feasibilityStudies = categoryRepository.findById(33L).get();
ResearchCategory industrialResearch = categoryRepository.findById(34L).get();
ResearchCategory experimentalDevelopment = categoryRepository.findById(35L).get();
return newArrayList(
new GrantClaimMaximum(feasibilityStudies, OrganisationSize.SMALL, 70),
new GrantClaimMaximum(feasibilityStudies, OrganisationSize.MEDIUM, 60),
new GrantClaimMaximum(feasibilityStudies, OrganisationSize.LARGE, 50),
new GrantClaimMaximum(industrialResearch, OrganisationSize.SMALL, 70),
new GrantClaimMaximum(industrialResearch, OrganisationSize.MEDIUM, 60),
new GrantClaimMaximum(industrialResearch, OrganisationSize.LARGE, 50),
new GrantClaimMaximum(experimentalDevelopment, OrganisationSize.SMALL, 45),
new GrantClaimMaximum(experimentalDevelopment, OrganisationSize.MEDIUM, 35),
new GrantClaimMaximum(experimentalDevelopment, OrganisationSize.LARGE, 25)
);
}

public static Competition addDefaultProjectSetupColumns(Competition competition) {
addProjectSetupStage(competition, PROJECT_DETAILS);
addProjectSetupStage(competition, PROJECT_TEAM);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public CompetitionTypeEnum type() {

@Override
public Competition copyTemplatePropertiesToCompetition(Competition competition) {
competition.setGrantClaimMaximums(commonBuilders.getDefaultGrantClaimMaximums());
competition.setTermsAndConditions(grantTermsAndConditionsRepository.findFirstByNameOrderByVersionDesc("Advanced Propulsion Centre (APC)"));
competition.setAcademicGrantPercentage(100);
competition.setMinProjectDuration(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ public CompetitionTypeEnum type() {

@Override
public Competition copyTemplatePropertiesToCompetition(Competition competition) {
competition.setGrantClaimMaximums(commonBuilders.getDefaultGrantClaimMaximums());
competition.setTermsAndConditions(grantTermsAndConditionsRepository.findFirstByNameOrderByVersionDesc("Aerospace Technology Institute (ATI)"));
competition.setAcademicGrantPercentage(100);
competition.setMinProjectDuration(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,6 @@ public CompetitionTypeEnum type() {

@Override
public Competition copyTemplatePropertiesToCompetition(Competition competition) {
competition.setGrantClaimMaximums(commonBuilders.getDefaultGrantClaimMaximums());
competition.setTermsAndConditions(grantTermsAndConditionsRepository.findFirstByNameOrderByVersionDesc("Innovate UK"));
competition.setAcademicGrantPercentage(100);
competition.setMinProjectDuration(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,6 @@ public Competition copyTemplatePropertiesToCompetition(Competition competition)

competition.setTermsAndConditions(grantTermsAndConditionsRepository.findFirstByNameOrderByVersionDesc("Horizon Europe UK Application Privacy Notice"));
competition.setLeadApplicantTypes(organisationTypesList);
competition.setGrantClaimMaximums(commonBuilders.getDefaultGrantClaimMaximums());
competition.setAcademicGrantPercentage(100);
competition.setMinProjectDuration(1);
competition.setMaxProjectDuration(84);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ public CompetitionTypeEnum type() {

@Override
public Competition copyTemplatePropertiesToCompetition(Competition competition) {
competition.setGrantClaimMaximums(commonBuilders.getDefaultGrantClaimMaximums());
competition.setTermsAndConditions(grantTermsAndConditionsRepository.findFirstByNameOrderByVersionDesc("Horizon 2020"));
competition.setAcademicGrantPercentage(100);
competition.setMinProjectDuration(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,6 @@ public CompetitionTypeEnum type() {

@Override
public Competition copyTemplatePropertiesToCompetition(Competition competition) {
competition.setGrantClaimMaximums(commonBuilders.getDefaultGrantClaimMaximums());
competition.setTermsAndConditions(grantTermsAndConditionsRepository.findFirstByNameOrderByVersionDesc("Innovate UK"));
competition.setAcademicGrantPercentage(100);
competition.setMinProjectDuration(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ public CompetitionTypeEnum type() {

@Override
public Competition copyTemplatePropertiesToCompetition(Competition competition) {
competition.setGrantClaimMaximums(commonBuilders.getDefaultGrantClaimMaximums());
competition.setTermsAndConditions(grantTermsAndConditionsRepository.findFirstByNameOrderByVersionDesc("Innovate UK"));
competition.setAcademicGrantPercentage(100);
competition.setMinProjectDuration(1);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

import org.innovateuk.ifs.commons.error.Error;
import org.innovateuk.ifs.commons.service.ServiceResult;
import org.innovateuk.ifs.competition.domain.*;
import org.innovateuk.ifs.competition.domain.Competition;
import org.innovateuk.ifs.competition.domain.CompetitionAssessmentConfig;
import org.innovateuk.ifs.competition.domain.CompetitionType;
import org.innovateuk.ifs.competition.publiccontent.resource.FundingType;
import org.innovateuk.ifs.competition.repository.CompetitionAssessmentConfigRepository;
import org.innovateuk.ifs.competition.repository.CompetitionRepository;
Expand Down Expand Up @@ -110,12 +112,11 @@ public ServiceResult<Competition> initializeCompetitionByCompetitionTemplate(Lon
competition = fundingTypeTemplate.initialiseProjectSetupColumns(competition);
template.initialiseOrganisationConfig(competition);
template.initialiseApplicationConfig(competition);
competition.setSections(sectionBuilders.stream().map(SectionBuilder::build).collect(Collectors.toList()));
template.copyTemplatePropertiesToCompetition(competition);
competition = fundingTypeTemplate.overrideTermsAndConditions(competition);
competition = fundingTypeTemplate.setGolTemplate(competition);

questionPriorityOrderService.persistAndPrioritiseSections(competition, competition.getSections(), null);
questionPriorityOrderService.persistAndPrioritiseSections(competition, sectionBuilders.stream().map(SectionBuilder::build).collect(Collectors.toList()), null);
return serviceSuccess(competitionRepository.save(competition));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.innovateuk.ifs.finance.transactional.GrantClaimMaximumService;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Set;

/**
Expand All @@ -23,12 +24,17 @@ public GrantClaimMaximumController(GrantClaimMaximumService grantClaimMaximumSer
}

@GetMapping("/{id}")
public RestResult<GrantClaimMaximumResource> getGrantClaimMaximumById(@PathVariable("id") final long id) {
public RestResult<GrantClaimMaximumResource> getGrantClaimMaximumById(@PathVariable final long id) {
return grantClaimMaximumService.getGrantClaimMaximumById(id).toGetResponse();
}

@GetMapping("/competition/{competitionId}")
public RestResult<List<GrantClaimMaximumResource>> getGrantClaimMaximumByCompetitionId(@PathVariable final long competitionId) {
return grantClaimMaximumService.getGrantClaimMaximumByCompetitionId(competitionId).toGetResponse();
}

@PostMapping("/revert-to-default/{competitionId}")
public RestResult<Set<Long>> revertToDefault(@PathVariable("competitionId") final long competitionId) {
public RestResult<Set<Long>> revertToDefault(@PathVariable final long competitionId) {
return grantClaimMaximumService.revertToDefault(competitionId).toGetResponse();
}

Expand All @@ -38,7 +44,7 @@ public RestResult<GrantClaimMaximumResource> update(@RequestBody final GrantClai
}

@GetMapping("/maximum-funding-level-overridden/{competitionId}")
public RestResult<Boolean> isMaximumFundingLevelOverridden(@PathVariable("competitionId") final long competitionId) {
return grantClaimMaximumService.isMaximumFundingLevelOverridden(competitionId).toGetResponse();
public RestResult<Boolean> isMaximumFundingLevelConstant(@PathVariable("competitionId") final long competitionId) {
return grantClaimMaximumService.isMaximumFundingLevelConstant(competitionId).toGetResponse();
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.innovateuk.ifs.finance.domain;

import org.hibernate.annotations.Immutable;
import org.innovateuk.ifs.category.domain.ResearchCategory;
import org.innovateuk.ifs.competition.domain.Competition;
import org.innovateuk.ifs.finance.resource.OrganisationSize;
Expand All @@ -12,7 +11,6 @@
* Reference data that describes the maximum funding levels that can be applied for.
*/
@Entity
@Immutable
public class GrantClaimMaximum {

@Id
Expand Down Expand Up @@ -80,4 +78,5 @@ public Integer getMaximum() {
public void setMaximum(Integer maximum) {
this.maximum = maximum;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,14 @@
import org.innovateuk.ifs.finance.domain.GrantClaimMaximum;
import org.springframework.data.repository.CrudRepository;

import java.util.List;

/**
* This interface is used to generate Spring Data Repositories.
* For more info:
* http://docs.spring.io/spring-data/jpa/docs/current/reference/html/#repositories
*/
public interface GrantClaimMaximumRepository extends CrudRepository<GrantClaimMaximum, Long> {

List<GrantClaimMaximum> findByCompetitionsId(long competitionId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ private void handleOrganisationSizeChange(Finance finance,
CompetitionResource competition = competitionService.getCompetitionById(competitionId).getSuccess();

if (!competition.isMaximumFundingLevelConstant(() -> organisationService.findById(finance.getOrganisation()).getSuccess().getOrganisationTypeEnum(),
() -> grantClaimMaximumService.isMaximumFundingLevelOverridden(competitionId).getSuccess())) {
() -> grantClaimMaximumService.isMaximumFundingLevelConstant(competitionId).getSuccess())) {
resetYourFundingSection(finance, competitionId, userId);
resetFundingLevel(finance);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import org.innovateuk.ifs.finance.resource.GrantClaimMaximumResource;
import org.springframework.security.access.prepost.PreAuthorize;

import java.util.List;
import java.util.Set;

public interface GrantClaimMaximumService {
Expand All @@ -15,16 +16,20 @@ public interface GrantClaimMaximumService {
@PreAuthorize("hasAnyAuthority('comp_admin', 'project_finance')")
ServiceResult<GrantClaimMaximumResource> getGrantClaimMaximumById(long id);

@SecuredBySpring(value = "READ", securedType = GrantClaimMaximumResource.class,
description = "Only those with either comp admin or project finance roles can read a GrantClaimMaximum by" +
" comp id")
@PreAuthorize("hasAnyAuthority('comp_admin', 'project_finance')")
ServiceResult<List<GrantClaimMaximumResource>> getGrantClaimMaximumByCompetitionId(long competitionId);

@SecuredBySpring(value = "UPDATE", securedType = GrantClaimMaximumResource.class,
description = "Only those with either comp admin or project finance roles can update a GrantClaimMaximum")
@PreAuthorize("hasAnyAuthority('comp_admin', 'project_finance')")
ServiceResult<GrantClaimMaximumResource> save(GrantClaimMaximumResource grantClaimMaximumResource);

@SecuredBySpring(value = "READ_GRANT_CLAIM_MAXIMUM", description = "A user can see the grant claim maximums for " +
"if they have an application for the competition")
@PreAuthorize("hasPermission(#competitionId, 'org.innovateuk.ifs.competition.resource.CompetitionResource', " +
"'READ')")
ServiceResult<Boolean> isMaximumFundingLevelOverridden(long competitionId);
ServiceResult<Boolean> isMaximumFundingLevelConstant(long competitionId);

@SecuredBySpring(value = "UPDATE", securedType = GrantClaimMaximumResource.class,
description = "Only those with either comp admin or project finance roles can update a GrantClaimMaximum")
Expand Down
Loading

0 comments on commit 39748ba

Please sign in to comment.