Skip to content

Commit

Permalink
Release/3.6 (#24)
Browse files Browse the repository at this point in the history
* TMI2-253: Add pre-commit check and update .gitignore to include application-local.properties and .env.local


* New regex to ensure non-special characters are all handled (#21)

* Tmi2 364/add grant advert controller and service (#18)

* Feature/GAP-2218 - adds an endpoint to provide the application status (#22)

---------

Co-authored-by: Iain Cooper <[email protected]>
Co-authored-by: iaincooper-tco <[email protected]>
Co-authored-by: ryan-tco <[email protected]>
Co-authored-by: john-tco <[email protected]>
Co-authored-by: a-lor-cab <[email protected]>
Co-authored-by: john-tco <[email protected]>
  • Loading branch information
7 people authored Oct 17, 2023
1 parent 8c221e4 commit 5c28056
Show file tree
Hide file tree
Showing 68 changed files with 1,306 additions and 124 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/feature.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@ on:
- bug/**
- GAP-**
- feat/**
- TMI2-**
pull_request:
branches:
- feature/**
- AFG-**
- bug/**
- GAP-**
- TMI2-**

jobs:
build:
Expand Down
4 changes: 3 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,6 @@ build/
### VS Code ###
.vscode/

application-local.properties
### Local properties ###
application-local.properties
.env.local
5 changes: 5 additions & 0 deletions .pre-commit-config.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v4.4.0
hooks:
- id: detect-aws-credentials
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package gov.cabinetoffice.gap.applybackend.dto.api;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.UUID;

@NoArgsConstructor
@AllArgsConstructor
@Builder
@Data
public class GetGrandAdvertDto {
private UUID id;
private String externalSubmissionUrl;
private int version;
//need jsonProperty because Jackson removes the 'is' from 'isInternal'
@JsonProperty("isInternal")
private boolean isInternal;
private Integer grantApplicationId;
private Integer grantSchemeId;
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,14 @@
package gov.cabinetoffice.gap.applybackend.dto.api;

import gov.cabinetoffice.gap.applybackend.model.SubmissionQuestion;
import lombok.*;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import java.util.UUID;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package gov.cabinetoffice.gap.applybackend.dto.api;

import gov.cabinetoffice.gap.applybackend.enums.GrantAttachmentStatus;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.UUID;

@NoArgsConstructor
@AllArgsConstructor
@Builder
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package gov.cabinetoffice.gap.applybackend.enums;

public enum GrantAdvertPageResponseStatus {

NOT_STARTED, IN_PROGRESS, COMPLETED, CHANGED

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package gov.cabinetoffice.gap.applybackend.enums;

public enum GrantAdvertSectionResponseStatus {

NOT_STARTED, IN_PROGRESS, COMPLETED, CHANGED

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package gov.cabinetoffice.gap.applybackend.enums;

public enum GrantAdvertStatus {

DRAFT, SCHEDULED, PUBLISHED, UNPUBLISHED, UNSCHEDULED

}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package gov.cabinetoffice.gap.applybackend.model;

import com.fasterxml.jackson.annotation.JsonInclude;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.*;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import java.time.LocalDateTime;
import java.util.UUID;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,12 @@
import lombok.Setter;
import lombok.ToString;

import javax.persistence.*;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "grant_funding_organisation")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package gov.cabinetoffice.gap.applybackend.model;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;

@Entity
@Table(name = "gap_user")
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class GapUser {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "gap_user_id")
private Integer id;

@Column(name = "user_sub")
private String userSub;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package gov.cabinetoffice.gap.applybackend.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.OneToOne;
import javax.persistence.Table;

@Entity
@Table(name = "grant_admin")
@Getter
@Setter
@ToString
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class GrantAdmin {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "grant_admin_id")
private Integer id;

@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "funder_id", referencedColumnName = "funder_id")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
private FundingOrganisation funder;

@OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
@JoinColumn(name = "user_id", referencedColumnName = "gap_user_id")
private GapUser gapUser;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
package gov.cabinetoffice.gap.applybackend.model;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import gov.cabinetoffice.gap.applybackend.enums.GrantAdvertStatus;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import lombok.ToString;
import org.hibernate.Hibernate;
import org.hibernate.annotations.Type;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.annotation.LastModifiedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EntityListeners;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import java.time.Instant;
import java.util.Objects;
import java.util.UUID;

@EntityListeners(AuditingEntityListener.class)
@Getter
@Setter
@ToString
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Entity
@Table(name = "grant_advert")
public class GrantAdvert extends BaseEntity {

@Id
@GeneratedValue
@Column(name = "grant_advert_id")
private UUID id;

@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, fetch = FetchType.LAZY)
@JoinColumn(name = "scheme_id", nullable = false)
@ToString.Exclude
@JsonIgnoreProperties({"hibernateLazyInitializer"})
private GrantScheme scheme;

@Column(name = "version", nullable = false)
private Integer version;

@CreatedDate
@Column(name = "created", nullable = false)
private Instant created;

@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, fetch = FetchType.LAZY)
@JoinColumn(name = "created_by", referencedColumnName = "grant_admin_id", nullable = false)
@ToString.Exclude
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
private GrantAdmin createdBy;

@LastModifiedDate
@Column(name = "last_updated")
private Instant lastUpdated;

@ManyToOne(cascade = {CascadeType.MERGE, CascadeType.PERSIST}, fetch = FetchType.LAZY)
@JoinColumn(name = "last_updated_by", referencedColumnName = "grant_admin_id")
@ToString.Exclude
@JsonIgnoreProperties({"hibernateLazyInitializer"})
private GrantAdmin lastUpdatedBy;

@Column(name = "opening_date")
private Instant openingDate;

@Column(name = "closing_date")
private Instant closingDate;

@Column(name = "first_published_date")
private Instant firstPublishedDate;

@Column(name = "last_published_date")
private Instant lastPublishedDate;

@Column(name = "unpublished_date")
private Instant unpublishedDate;

@Column(name = "status", nullable = false)
@Enumerated(EnumType.STRING)
private GrantAdvertStatus status;

@Column(name = "contentful_entry_id", unique = true)
private String contentfulEntryId;

@Column(name = "contentful_slug", unique = true)
private String contentfulSlug;

@Column(name = "grant_advert_name")
private String grantAdvertName;

@Type(type = "json")
@Column(name = "response", columnDefinition = "json")
private GrantAdvertResponse response;

@Override
public boolean equals(Object o) {
if (this == o)
return true;
if (o == null || Hibernate.getClass(this) != Hibernate.getClass(o))
return false;
GrantAdvert that = (GrantAdvert) o;
return id != null && Objects.equals(id, that.id);
}

@Override
public int hashCode() {
return getClass().hashCode();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package gov.cabinetoffice.gap.applybackend.model;

import gov.cabinetoffice.gap.applybackend.enums.GrantAdvertPageResponseStatus;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GrantAdvertPageResponse {

@Builder.Default
private List<GrantAdvertQuestionResponse> questions = new ArrayList<>();

private String id;

private GrantAdvertPageResponseStatus status;

public Optional<GrantAdvertQuestionResponse> getQuestionById(String questionId) {
return questions.stream().filter(page -> Objects.equals(page.getId(), questionId)).findFirst();

}

}
Loading

0 comments on commit 5c28056

Please sign in to comment.