✨ Fiks kommentar backend (#27)
* 🚧 Påbegynt kommentarhåndtering WIP: Kommentarer vises ikke i frontend Co-authored-by: Amalie Erdal Mansåker <amalie.erdal.mansaker@nav.no> * 💄🐛 Bruker switch til å endre om sak haster i redigering BUG: La også til kommentar-field for å unngå BAD_REQUEST på Posting av nye feil * 💄 Gjør små styling forbedringer, forbedret UU ved å lage skillelinjer i forms * ♿️ La til heading på Switch i redigeringsskjema * ✨ Saker som meldes inn kan merkes som haster fra innmelding (#24) Co-authored-by: Sid <93219711+SindreKjelsrud@users.noreply.github.com> * Kommentarer frontend (#26) * 💄 Laget mulighet for å skrive inn og submitte kommentar * 💄 Gjorde kommentar til en "notat-klistrelapp" * 🚑 Frontend bruker oppdaterkommentar endepunktet * 🚧 Påbegynt kommentarhåndtering WIP: Kommentarer vises ikke i frontend Co-authored-by: Amalie Erdal Mansåker <amalie.erdal.mansaker@nav.no> * 🔥 Fjerner ubrukte felt Co-authored-by: Sindre Kjelsrud <sindre.kjelsrud@nav.no> * ✨ Kommentarer til feilmeldinger vises i frontend Vises foreløpig ikke riktig i frontend, men det vises Co-authored-by: Sindre Kjelsrud <sindre.kjelsrud@nav.no> --------- Co-authored-by: Amalie Erdal Mansåker <amalie.erdal.mansaker@nav.no> Co-authored-by: Markus Johansen <markus.aleksander.rakil.johansen@nav.no> Co-authored-by: Markus A. R. Johansen <90006516+J0hans1@users.noreply.github.com>
This commit is contained in:
parent
96bc900c22
commit
65cd2cb6ae
12 changed files with 37 additions and 15 deletions
|
@ -9,6 +9,7 @@ import no.nav.helse.sprik.db.FeilmeldingTable.kommentar
|
||||||
import no.nav.helse.sprik.db.FeilmeldingTable.tittel
|
import no.nav.helse.sprik.db.FeilmeldingTable.tittel
|
||||||
import no.nav.helse.sprik.modell.Feilmelding
|
import no.nav.helse.sprik.modell.Feilmelding
|
||||||
import org.jetbrains.exposed.sql.*
|
import org.jetbrains.exposed.sql.*
|
||||||
|
import org.jetbrains.exposed.sql.SqlExpressionBuilder.eq
|
||||||
import org.jetbrains.exposed.sql.SqlExpressionBuilder.like
|
import org.jetbrains.exposed.sql.SqlExpressionBuilder.like
|
||||||
import org.jetbrains.exposed.sql.transactions.transaction
|
import org.jetbrains.exposed.sql.transactions.transaction
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
@Serializable
|
||||||
|
class InnkommendeKommentar(val id: Int, val kommentar: String)
|
|
@ -1,5 +1,6 @@
|
||||||
package no.nav.helse.sprik.plugins
|
package no.nav.helse.sprik.plugins
|
||||||
|
|
||||||
|
import InnkommendeKommentar
|
||||||
import io.ktor.http.*
|
import io.ktor.http.*
|
||||||
import io.ktor.server.routing.*
|
import io.ktor.server.routing.*
|
||||||
import io.ktor.server.response.*
|
import io.ktor.server.response.*
|
||||||
|
@ -70,6 +71,11 @@ fun configureRouting(): ApplicationEngine = embeddedServer(CIO, applicationEngin
|
||||||
feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding)
|
feilmeldingRepository.oppdaterFeilmelding(oppdatertFeilmelding)
|
||||||
call.respond(status = HttpStatusCode.Created, message = "Feilmelding oppdatert")
|
call.respond(status = HttpStatusCode.Created, message = "Feilmelding oppdatert")
|
||||||
}
|
}
|
||||||
|
put("/api/oppdaterkommentar") {
|
||||||
|
val innkommendeKommentar = call.receive<InnkommendeKommentar>()
|
||||||
|
feilmeldingRepository.oppdaterKommentar(innkommendeKommentar.id, innkommendeKommentar.kommentar)
|
||||||
|
call.respond(status = HttpStatusCode.Created, message = "Feilmelding oppdatert")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -28,4 +28,5 @@ private fun oppretteMockData() {
|
||||||
feilmeldingRepository.lagre(Feilmelding(null, "Feil B", "Lorem Ipsum", LocalDateTime.of(2023, 4, 1, 8, 0, 0), 1, true, null))
|
feilmeldingRepository.lagre(Feilmelding(null, "Feil B", "Lorem Ipsum", LocalDateTime.of(2023, 4, 1, 8, 0, 0), 1, true, null))
|
||||||
feilmeldingRepository.lagre(Feilmelding(null, "Feil C", "Lorem Ipsum", LocalDateTime.of(2023, 5, 1, 8, 0, 0), 1, true, null))
|
feilmeldingRepository.lagre(Feilmelding(null, "Feil C", "Lorem Ipsum", LocalDateTime.of(2023, 5, 1, 8, 0, 0), 1, true, null))
|
||||||
feilmeldingRepository.lagre(Feilmelding(null, "Feil D", "Lorem Ipsum", LocalDateTime.of(2023, 6, 1, 8, 0, 0), 0, false, null))
|
feilmeldingRepository.lagre(Feilmelding(null, "Feil D", "Lorem Ipsum", LocalDateTime.of(2023, 6, 1, 8, 0, 0), 0, false, null))
|
||||||
|
feilmeldingRepository.oppdaterKommentar(1, "Test kommentar")
|
||||||
}
|
}
|
||||||
|
|
|
@ -124,5 +124,4 @@ class FeilmeldingTest {
|
||||||
val actual = transaction { FeilmeldingTable.selectAll().single() }
|
val actual = transaction { FeilmeldingTable.selectAll().single() }
|
||||||
assertEquals("Feilen fikses nå!", actual[FeilmeldingTable.kommentar])
|
assertEquals("Feilen fikses nå!", actual[FeilmeldingTable.kommentar])
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -44,6 +44,7 @@ const FeilKort = (props: IFeilKort) => {
|
||||||
dato={props.dato}
|
dato={props.dato}
|
||||||
haster={props.haster}
|
haster={props.haster}
|
||||||
arbeidsstatus={props.arbeidsstatus}
|
arbeidsstatus={props.arbeidsstatus}
|
||||||
|
kommentar={props.kommentar}
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<FeilModal
|
<FeilModal
|
||||||
|
|
|
@ -11,7 +11,7 @@ interface modalInterface {
|
||||||
const FeilModal = (props: modalInterface) => {
|
const FeilModal = (props: modalInterface) => {
|
||||||
return(
|
return(
|
||||||
<Modal
|
<Modal
|
||||||
className="w-3/5 min-w-2/4 p-5"
|
className="w-3/5 p-5"
|
||||||
open={props.open}
|
open={props.open}
|
||||||
aria-label={" modal"}
|
aria-label={" modal"}
|
||||||
onClose={() => props.setOpen(false)}
|
onClose={() => props.setOpen(false)}
|
||||||
|
|
|
@ -21,6 +21,7 @@ export const FeilkortHeader = (props: IFeilmelding) => {
|
||||||
<p>{props.beskrivelse}</p>
|
<p>{props.beskrivelse}</p>
|
||||||
</div>
|
</div>
|
||||||
<TagBar haster={props.haster} arbeidsstatus={props.arbeidsstatus}/>
|
<TagBar haster={props.haster} arbeidsstatus={props.arbeidsstatus}/>
|
||||||
|
<p>{props.kommentar}</p>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,15 +7,17 @@ import Skillelinje from "./Skillelinje"
|
||||||
import axios from "axios"
|
import axios from "axios"
|
||||||
|
|
||||||
const FeilmeldingsInnhold = (props: FeilmeldingsInnholdInterface) => {
|
const FeilmeldingsInnhold = (props: FeilmeldingsInnholdInterface) => {
|
||||||
const [kommentar, setKommentar] = useState("")
|
const [kommentar, setKommentar] = useState(props.kommentar ? props.kommentar : "")
|
||||||
const [kommentarfelt, setKommentarfelt] = useState("")
|
const [kommentarfelt, setKommentarfelt] = useState("")
|
||||||
|
|
||||||
const oppdaterkommentar = async() => {
|
const oppdaterkommentar = async() => {
|
||||||
setKommentar(kommentarfelt)
|
console.log(kommentarfelt)
|
||||||
|
console.log(kommentar);
|
||||||
|
|
||||||
|
|
||||||
const payload = {
|
const payload = {
|
||||||
id: props.id,
|
id: props.id,
|
||||||
tittel: kommentar,
|
kommentar: kommentarfelt,
|
||||||
}
|
}
|
||||||
|
|
||||||
await axios.put("/api/oppdaterkommentar", payload, {
|
await axios.put("/api/oppdaterkommentar", payload, {
|
||||||
|
@ -66,7 +68,10 @@ const FeilmeldingsInnhold = (props: FeilmeldingsInnholdInterface) => {
|
||||||
<KommentarTekstfelt
|
<KommentarTekstfelt
|
||||||
kommentarfelt={kommentarfelt}
|
kommentarfelt={kommentarfelt}
|
||||||
setKommentarfelt={setKommentarfelt}
|
setKommentarfelt={setKommentarfelt}
|
||||||
oppdaterKommentar={() => oppdaterkommentar()}
|
oppdaterKommentar={() => {
|
||||||
|
setKommentar(kommentarfelt)
|
||||||
|
oppdaterkommentar()}
|
||||||
|
}
|
||||||
/>
|
/>
|
||||||
:
|
:
|
||||||
<Kommentar
|
<Kommentar
|
||||||
|
|
|
@ -21,9 +21,10 @@ const KortKonteiner = (props: IKortKonteiner) => {
|
||||||
tittel={feilMelding.tittel}
|
tittel={feilMelding.tittel}
|
||||||
beskrivelse={feilMelding.beskrivelse}
|
beskrivelse={feilMelding.beskrivelse}
|
||||||
dato={new Date()}
|
dato={new Date()}
|
||||||
haster={feilMelding.haster}
|
|
||||||
arbeidsstatus={feilMelding.arbeidsstatus}
|
arbeidsstatus={feilMelding.arbeidsstatus}
|
||||||
|
haster={feilMelding.haster}
|
||||||
reset={props.reset}
|
reset={props.reset}
|
||||||
|
kommentar={feilMelding.kommentar}
|
||||||
/>
|
/>
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,10 +25,10 @@ const RedigeringsVerktoy = (props: redigeringsInterface) => {
|
||||||
beskrivelse: beskrivelse,
|
beskrivelse: beskrivelse,
|
||||||
dato: props.dato.toISOString().replace('Z', ''),
|
dato: props.dato.toISOString().replace('Z', ''),
|
||||||
arbeidsstatus: arbeidsstatus,
|
arbeidsstatus: arbeidsstatus,
|
||||||
haster: haster
|
haster: haster,
|
||||||
}
|
}
|
||||||
|
|
||||||
await axios.put(`/api/oppdaterfeil/${props.id}`, payload, {
|
await axios.put(`/api/oppdaterfeil/`, payload, {
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json'
|
'Content-Type': 'application/json'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/*
|
/**
|
||||||
* I denne filen kan vi legge interfaces som skal brukes over flere steder!
|
* I denne filen kan vi legge interfaces som skal brukes over flere steder!
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
@ -8,8 +8,9 @@ export interface IFeilmelding {
|
||||||
tittel: string,
|
tittel: string,
|
||||||
beskrivelse: string
|
beskrivelse: string
|
||||||
dato: Date
|
dato: Date
|
||||||
haster: boolean
|
|
||||||
arbeidsstatus: number
|
arbeidsstatus: number
|
||||||
|
haster: boolean
|
||||||
|
kommentar?: string
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface FeilmeldingsInnholdInterface extends IFeilmelding {
|
export interface FeilmeldingsInnholdInterface extends IFeilmelding {
|
||||||
|
@ -24,8 +25,9 @@ export class Feilmelding implements IFeilmelding {
|
||||||
tittel: string = "default tittel"
|
tittel: string = "default tittel"
|
||||||
beskrivelse: string = "default beskrivelse"
|
beskrivelse: string = "default beskrivelse"
|
||||||
dato: Date = new Date()
|
dato: Date = new Date()
|
||||||
haster: boolean = false
|
|
||||||
arbeidsstatus: number = 0
|
arbeidsstatus: number = 0
|
||||||
|
haster: boolean = false
|
||||||
|
kommentar?: string = undefined
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Typescript 2.1 syntax som lar deg sende inn et JSON object og mappe det til class.
|
* Typescript 2.1 syntax som lar deg sende inn et JSON object og mappe det til class.
|
||||||
|
@ -37,8 +39,9 @@ export class Feilmelding implements IFeilmelding {
|
||||||
tittel: string
|
tittel: string
|
||||||
beskrivelse: string
|
beskrivelse: string
|
||||||
dato: Date
|
dato: Date
|
||||||
haster: boolean
|
|
||||||
arbeidsstatus: number
|
arbeidsstatus: number
|
||||||
|
haster: boolean
|
||||||
|
kommentar: string
|
||||||
}) {
|
}) {
|
||||||
if (fields) Object.assign(this, fields);
|
if (fields) Object.assign(this, fields);
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue