Skip to content

Commit

Permalink
Merge pull request #248 from Sterbenfr/feat/modify
Browse files Browse the repository at this point in the history
feat(modify): add required
  • Loading branch information
Aurelienschmi authored Jul 29, 2024
2 parents 2b8a1d7 + 0ce0658 commit 208794a
Show file tree
Hide file tree
Showing 13 changed files with 838 additions and 426 deletions.
2 changes: 1 addition & 1 deletion app/api/dons/[donsID]/route.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ export async function GET(
const donsID = params.donsID
try {
const [rows] = await connection.query(
'SELECT Dons.code_Don, Entite.raison_sociale, date_proposition_don,users.nom as contact_entite_donatrice, TypesDons.libelle as TD_libelle, TypesCompetences.libelle as TC_libelle,TypesProduits.libelle as TP_libelle, ModeConservationProduits.libelle as MCP_libelle, date_debut_mise_disposition, date_fin_mise_disposition, Dons.commentaires, Dons.pieces_associees, Utilisateur_saisie_don.nom as Utilisateur_saisie_don, statut_acceptation_don, date_acceptation_refus_don, Utilisateur_accepte_refuse_don.nom as Utilisateur_accepte_refuse_don, Sites.designation_longue,indicateur_remerciement,date_remerciement, nom_destinataire_cerfa,adresse_destinataire_cerfa,telephone_destinataire_cerfa,valeur_cerfa,cerfa_fait,date_cerfa,Dons.cerfa FROM Dons LEFT JOIN Entite ON Dons.code_Entite_donatrice = Entite.code_Entite LEFT JOIN ContactEntite ON Dons.code_contact_Entite_donatrice = ContactEntite.code_entite LEFT JOIN Utilisateurs as users ON ContactEntite.code_utilisateur_suivant = users.code_utilisateur LEFT JOIN TypesDons ON Dons.code_type_don = TypesDons.code_type_don LEFT JOIN TypesCompetences ON Dons.code_type_competences = TypesCompetences.code_type_competence LEFT JOIN TypesProduits ON Dons.code_type_produits = TypesProduits.code_type_produits LEFT JOIN ModeConservationProduits ON Dons.code_mode_conservation_produits = ModeConservationProduits.code_mode_conservation_produits LEFT JOIN Utilisateurs as Utilisateur_saisie_don ON Dons.code_Utilisateur_saisie_don = Utilisateur_saisie_don.code_utilisateur LEFT JOIN Utilisateurs as Utilisateur_accepte_refuse_don ON Dons.code_Utilisateur_accepte_refuse_don = Utilisateur_accepte_refuse_don.code_utilisateur LEFT JOIN Sites ON Dons.code_site_beneficiaire_don = Sites.code_site WHERE Dons.code_don = ?;',
'SELECT Dons.code_Don, titre_don, Entite.raison_sociale, date_proposition_don,users.nom as contact_entite_donatrice, TypesDons.libelle as TD_libelle, TypesCompetences.libelle as TC_libelle,TypesProduits.libelle as TP_libelle, ModeConservationProduits.libelle as MCP_libelle, date_debut_mise_disposition, date_fin_mise_disposition, Dons.commentaires, Dons.pieces_associees, Utilisateur_saisie_don.nom as Utilisateur_saisie_don, statut_acceptation_don, date_acceptation_refus_don, Utilisateur_accepte_refuse_don.nom as Utilisateur_accepte_refuse_don, Sites.designation_longue,indicateur_remerciement,date_remerciement, nom_destinataire_cerfa,adresse_destinataire_cerfa,telephone_destinataire_cerfa,valeur_cerfa,cerfa_fait,date_cerfa,Dons.cerfa FROM Dons LEFT JOIN Entite ON Dons.code_Entite_donatrice = Entite.code_Entite LEFT JOIN ContactEntite ON Dons.code_contact_Entite_donatrice = ContactEntite.code_entite LEFT JOIN Utilisateurs as users ON ContactEntite.code_utilisateur_suivant = users.code_utilisateur LEFT JOIN TypesDons ON Dons.code_type_don = TypesDons.code_type_don LEFT JOIN TypesCompetences ON Dons.code_type_competences = TypesCompetences.code_type_competence LEFT JOIN TypesProduits ON Dons.code_type_produits = TypesProduits.code_type_produits LEFT JOIN ModeConservationProduits ON Dons.code_mode_conservation_produits = ModeConservationProduits.code_mode_conservation_produits LEFT JOIN Utilisateurs as Utilisateur_saisie_don ON Dons.code_Utilisateur_saisie_don = Utilisateur_saisie_don.code_utilisateur LEFT JOIN Utilisateurs as Utilisateur_accepte_refuse_don ON Dons.code_Utilisateur_accepte_refuse_don = Utilisateur_accepte_refuse_don.code_utilisateur LEFT JOIN Sites ON Dons.code_site_beneficiaire_don = Sites.code_site WHERE Dons.code_don = ?;',
[donsID],
)
return NextResponse.json(rows)
Expand Down
163 changes: 114 additions & 49 deletions app/dons/[donsID]/modalites-livraison/[modalites_livraisonID]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,7 @@ function Modalites_livraisonPage({
const [modify, setModify] = useState<boolean>(false)
const [modifiedModalite_livraison, setModifiedModalite_livraison] =
useState<Partial<Modalite_livraisonID>>({})
let [canSubmit] = useState<boolean>(true)

useEffect(() => {
const fetchSessionAndModalites_livraison = async () => {
Expand Down Expand Up @@ -245,46 +246,6 @@ function Modalites_livraisonPage({
}
}

const handleSubmit = async () => {
const filePaths = await fileUpload('../../../../api/upload/piece')

console.log(modalite_livraison[0].code_Prestataire_transporteur)
const jsonPayload = {
...modifiedModalite_livraison,
pieces_associees: filePaths[0],
}

// Convert non-file data to JSON
const body = JSON.stringify(jsonPayload)

try {
const res = await fetch(
`../../../../api/dons/${params.donsID}/modalites-livraison/${params.modalites_livraisonID}`,
{
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: body,
},
)

if (!res.ok) {
const errorDetail = await res.text()
console.error('Failed to update data:', errorDetail)
throw new Error('Failed to update data')
}

const updatedModalite_livraison: Modalite_livraisonID[] =
await res.json()
setModalites_livraison(updatedModalite_livraison)
setModify(false)
} catch (error) {
console.error('Error submitting form:', error)
}
window.location.reload()
}

if (
!Array.isArray(modalite_livraison) ||
modalite_livraison.length === 0 ||
Expand All @@ -296,6 +257,110 @@ function Modalites_livraisonPage({
</div>
)

const requiredValue = () => {
const keysToCheck = [
'code_type_livraison',
'date_prevue_livraison',
'heure_prevue_livraison',
'adresse_enlevement',
'telephone_contact_enlevement',
'mail_contact_enlevement',
'adresse_livraison',
'telephone_contact_livraison',
'mail_contact_livraison',
'nombre_palettes_prevu',
'nombre_palettes_consignees_prevu',
'nombre_cartons_prevu',
]

keysToCheck.forEach(key => {
if (
modifiedModalite_livraison[
key as keyof Modalite_livraisonID
] === null ||
modifiedModalite_livraison[
key as keyof Modalite_livraisonID
] === ''
) {
setModifiedModalite_livraison(prevState => ({
...prevState,
[key]: modalite_livraison[0][
key as keyof Modalite_livraisonID
],
}))
}
})
}

const handleSubmit = async () => {
requiredValue()

if (
!modifiedModalite_livraison.heure_prevue_livraison ||
modifiedModalite_livraison.heure_prevue_livraison.trim() === '' ||
!modifiedModalite_livraison.adresse_enlevement ||
modifiedModalite_livraison.adresse_enlevement.trim() === '' ||
!modifiedModalite_livraison.nombre_palettes_prevu ||
modifiedModalite_livraison.nombre_palettes_prevu === 0 ||
!modifiedModalite_livraison.nombre_palettes_consignees_prevu ||
modifiedModalite_livraison.nombre_palettes_consignees_prevu === 0 ||
!modifiedModalite_livraison.nombre_cartons_prevu ||
modifiedModalite_livraison.nombre_cartons_prevu === 0 ||
!(
modifiedModalite_livraison.telephone_contact_enlevement ||
modifiedModalite_livraison.mail_contact_enlevement
) ||
!(
modifiedModalite_livraison.telephone_contact_livraison ||
modifiedModalite_livraison.mail_contact_livraison
)
) {
canSubmit = false
} else {
canSubmit = true
}

if (canSubmit) {
const filePaths = await fileUpload('../../../../api/upload/piece')

console.log(modalite_livraison[0].code_Prestataire_transporteur)
const jsonPayload = {
...modifiedModalite_livraison,
pieces_associees: filePaths[0],
}

// Convert non-file data to JSON
const body = JSON.stringify(jsonPayload)

try {
const res = await fetch(
`../../../../api/dons/${params.donsID}/modalites-livraison/${params.modalites_livraisonID}`,
{
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: body,
},
)

if (!res.ok) {
const errorDetail = await res.text()
console.error('Failed to update data:', errorDetail)
throw new Error('Failed to update data')
}

const updatedModalite_livraison: Modalite_livraisonID[] =
await res.json()
setModalites_livraison(updatedModalite_livraison)
setModify(false)
} catch (error) {
console.error('Error submitting form:', error)
}
window.location.reload()
}
}

const initialValue = () => {
const keysToCheck = [
'heure_prevue_livraison',
Expand Down Expand Up @@ -544,7 +609,7 @@ function Modalites_livraisonPage({
type='input'
name='heure_prevue_livraison'
value={
modifiedModalite_livraison.heure_prevue_livraison
modifiedModalite_livraison.heure_prevue_livraison ?? ''
}
placeholder={
modalite_livraison[0]
Expand Down Expand Up @@ -693,7 +758,7 @@ function Modalites_livraisonPage({
type='number'
name='telephone_contact_enlevement'
value={
modifiedModalite_livraison.telephone_contact_enlevement
modifiedModalite_livraison.telephone_contact_enlevement ?? ''
}
placeholder={
modalite_livraison[0]
Expand Down Expand Up @@ -743,7 +808,7 @@ function Modalites_livraisonPage({
type='mail'
name='mail_contact_enlevement'
value={
modifiedModalite_livraison.mail_contact_enlevement
modifiedModalite_livraison.mail_contact_enlevement ?? ''
}
placeholder={
modalite_livraison[0]
Expand Down Expand Up @@ -784,7 +849,7 @@ function Modalites_livraisonPage({
type='input'
name='adresse_enlevement'
value={
modifiedModalite_livraison.adresse_enlevement
modifiedModalite_livraison.adresse_enlevement ?? ''
}
placeholder={
modalite_livraison[0]
Expand Down Expand Up @@ -968,7 +1033,7 @@ function Modalites_livraisonPage({
type='number'
name='telephone_contact_livraison'
value={
modifiedModalite_livraison.telephone_contact_livraison
modifiedModalite_livraison.telephone_contact_livraison ?? ''
}
placeholder={
modalite_livraison[0]
Expand Down Expand Up @@ -1017,7 +1082,7 @@ function Modalites_livraisonPage({
type='mail'
name='mail_contact_livraison'
value={
modifiedModalite_livraison.mail_contact_livraison
modifiedModalite_livraison.mail_contact_livraison ?? ''
}
placeholder={
modalite_livraison[0]
Expand Down Expand Up @@ -1058,7 +1123,7 @@ function Modalites_livraisonPage({
type='number'
name='nombre_palettes_prevu'
value={
modifiedModalite_livraison.nombre_palettes_prevu
modifiedModalite_livraison.nombre_palettes_prevu ?? ''
}
placeholder={
modalite_livraison[0]
Expand Down Expand Up @@ -1107,7 +1172,7 @@ function Modalites_livraisonPage({
type='number'
name='nombre_palettes_consignees_prevu'
value={
modifiedModalite_livraison.nombre_palettes_consignees_prevu
modifiedModalite_livraison.nombre_palettes_consignees_prevu ?? ''
}
placeholder={
modalite_livraison[0]
Expand Down Expand Up @@ -1157,7 +1222,7 @@ function Modalites_livraisonPage({
type='number'
name='nombre_cartons_prevu'
value={
modifiedModalite_livraison.nombre_cartons_prevu
modifiedModalite_livraison.nombre_cartons_prevu ?? ''
}
placeholder={
modalite_livraison[0]
Expand Down
16 changes: 13 additions & 3 deletions app/dons/[donsID]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ interface ExtendedSession extends Session {

interface DonID {
code_Don: number
titre_don: string
raison_sociale: string
date_proposition_don: Date
contact_entite_donatrice: string
Expand Down Expand Up @@ -352,6 +353,15 @@ function DonPage({ params }: { params: { donsID: string } }) {
</p>
</div>

<div className={style.info}>
<p className={style.titre}>Titre du don :</p>
<p>
{don[0].titre_don == null
? '/'
: don[0].titre_don}
</p>
</div>

<div className={style.info}>
<p className={style.titre}>Raison sociale :</p>
<p>
Expand Down Expand Up @@ -379,7 +389,7 @@ function DonPage({ params }: { params: { donsID: string } }) {
Contact de l&apos;entité donatrice :
</p>
<p>
{don[0].contact_entite_donatrice == null
{don[0].contact_entite_donatrice == (null || '')
? '/'
: don[0].contact_entite_donatrice}
</p>
Expand Down Expand Up @@ -454,7 +464,7 @@ function DonPage({ params }: { params: { donsID: string } }) {
Utilisateur saisie de don :
</p>
<p>
{don[0].Utilisateur_saisie_don == null
{don[0].Utilisateur_saisie_don == (null || '')
? '/'
: don[0].Utilisateur_saisie_don}
</p>
Expand Down Expand Up @@ -575,7 +585,7 @@ function DonPage({ params }: { params: { donsID: string } }) {
) : (
<p>
{don[0].Utilisateur_accepte_refuse_don ==
null
(null || '')
? '/'
: don[0].Utilisateur_accepte_refuse_don}
</p>
Expand Down
Loading

0 comments on commit 208794a

Please sign in to comment.