Add user reservation form feature
- Created new user-friendly reservation form component (prenotazione-form-user) - Added getCurrentUser() method to UtenteAppService - Added route /prenotazione/nuova for user reservation form - Added Italian translations for new UI elements - Form includes booking details and auto-populated user data - Radio button toggle for private/company data display - Form validation with required facility selection - Created comprehensive documentation in frontend-changes.md 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,129 @@
|
||||
import { type Ref, type ComputedRef, computed, defineComponent, inject, ref, onMounted } from 'vue';
|
||||
import { useI18n } from 'vue-i18n';
|
||||
import { useRouter } from 'vue-router';
|
||||
|
||||
import { useVuelidate } from '@vuelidate/core';
|
||||
import { required } from '@vuelidate/validators';
|
||||
|
||||
import StrutturaService from '@/entities/struttura/struttura.service';
|
||||
import UtenteAppService from '@/entities/utente-app/utente-app.service';
|
||||
import { useAlertService } from '@/shared/alert/alert.service';
|
||||
import { useDateFormat } from '@/shared/composables';
|
||||
import { type IPrenotazione, Prenotazione } from '@/shared/model/prenotazione.model';
|
||||
import { type IStruttura } from '@/shared/model/struttura.model';
|
||||
import { type IUtenteApp } from '@/shared/model/utente-app.model';
|
||||
import { StatoPrenotazione } from '@/shared/model/enumerations/stato-prenotazione.model';
|
||||
|
||||
import PrenotazioneService from './prenotazione.service';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'PrenotazioneFormUser',
|
||||
setup() {
|
||||
const authenticated = inject<ComputedRef<boolean>>('authenticated');
|
||||
|
||||
const prenotazioneService = inject('prenotazioneService', () => new PrenotazioneService());
|
||||
const alertService = inject('alertService', () => useAlertService(), true);
|
||||
|
||||
const prenotazione: Ref<IPrenotazione> = ref(new Prenotazione());
|
||||
|
||||
const utenteAppService = inject('utenteAppService', () => new UtenteAppService());
|
||||
const currentUser: Ref<IUtenteApp | null> = ref(null);
|
||||
const userType: Ref<'privato' | 'societa'> = ref('privato');
|
||||
|
||||
const strutturaService = inject('strutturaService', () => new StrutturaService());
|
||||
const strutturas: Ref<IStruttura[]> = ref([]);
|
||||
|
||||
const isSaving = ref(false);
|
||||
const isLoading = ref(true);
|
||||
const currentLanguage = inject('currentLanguage', () => computed(() => navigator.language ?? 'it'), true);
|
||||
|
||||
const router = useRouter();
|
||||
|
||||
const { t: t$ } = useI18n();
|
||||
|
||||
// Initialize prenotazione with RICHIESTA status
|
||||
prenotazione.value.stato = 'RICHIESTA';
|
||||
|
||||
const validationRules = {
|
||||
oraInizio: {},
|
||||
oraFine: {},
|
||||
stato: {},
|
||||
motivoEvento: {},
|
||||
numeroPartecipanti: {},
|
||||
noteUtente: {},
|
||||
struttura: { required },
|
||||
};
|
||||
const v$ = useVuelidate(validationRules, prenotazione as any);
|
||||
|
||||
const initData = async () => {
|
||||
try {
|
||||
isLoading.value = true;
|
||||
|
||||
// Fetch current user
|
||||
const userData = await utenteAppService().getCurrentUser();
|
||||
currentUser.value = userData;
|
||||
prenotazione.value.utente = userData;
|
||||
|
||||
// Fetch struttura list
|
||||
const res = await strutturaService().retrieve();
|
||||
strutturas.value = res.data;
|
||||
|
||||
isLoading.value = false;
|
||||
} catch (error) {
|
||||
isLoading.value = false;
|
||||
alertService.showHttpError(error.response);
|
||||
}
|
||||
};
|
||||
|
||||
onMounted(() => {
|
||||
initData();
|
||||
});
|
||||
|
||||
const resetForm = () => {
|
||||
prenotazione.value = new Prenotazione();
|
||||
prenotazione.value.stato = 'RICHIESTA';
|
||||
prenotazione.value.utente = currentUser.value;
|
||||
v$.value.$reset();
|
||||
};
|
||||
|
||||
return {
|
||||
authenticated,
|
||||
prenotazioneService,
|
||||
alertService,
|
||||
prenotazione,
|
||||
currentUser,
|
||||
userType,
|
||||
strutturas,
|
||||
isSaving,
|
||||
isLoading,
|
||||
currentLanguage,
|
||||
v$,
|
||||
resetForm,
|
||||
...useDateFormat({ entityRef: prenotazione }),
|
||||
t$,
|
||||
};
|
||||
},
|
||||
methods: {
|
||||
save(): void {
|
||||
this.isSaving = true;
|
||||
this.v$.$validate();
|
||||
|
||||
if (this.v$.$invalid) {
|
||||
this.isSaving = false;
|
||||
return;
|
||||
}
|
||||
|
||||
this.prenotazioneService()
|
||||
.create(this.prenotazione)
|
||||
.then(param => {
|
||||
this.isSaving = false;
|
||||
this.alertService.showSuccess(this.t$('smartbookingApp.prenotazione.created', { param: param.id }).toString());
|
||||
this.$router.push({ name: 'Prenotazione' });
|
||||
})
|
||||
.catch(error => {
|
||||
this.isSaving = false;
|
||||
this.alertService.showHttpError(error.response);
|
||||
});
|
||||
},
|
||||
},
|
||||
});
|
||||
@@ -0,0 +1,238 @@
|
||||
<template>
|
||||
<div class="d-flex justify-content-center">
|
||||
<div class="col-10">
|
||||
<h2 id="page-heading" data-cy="PrenotazioneFormUserHeading">
|
||||
<span>{{ t$('smartbookingApp.prenotazione.userForm.title') }}</span>
|
||||
</h2>
|
||||
|
||||
<div v-if="isLoading" class="text-center my-5">
|
||||
<div class="spinner-border" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<form v-else name="userBookingForm" novalidate @submit.prevent="save()">
|
||||
<!-- Booking Details Section -->
|
||||
<div class="card mb-4">
|
||||
<div class="card-header">
|
||||
<h4>{{ t$('smartbookingApp.prenotazione.userForm.bookingDetails') }}</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label" for="prenotazione-oraInizio">
|
||||
{{ t$('smartbookingApp.prenotazione.oraInizio') }}
|
||||
</label>
|
||||
<input
|
||||
id="prenotazione-oraInizio"
|
||||
data-cy="oraInizio"
|
||||
type="datetime-local"
|
||||
class="form-control"
|
||||
name="oraInizio"
|
||||
:class="{ valid: !v$.oraInizio.$invalid, invalid: v$.oraInizio.$invalid }"
|
||||
:value="convertDateTimeFromServer(v$.oraInizio.$model)"
|
||||
@change="updateInstantField('oraInizio', $event)"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label" for="prenotazione-oraFine">
|
||||
{{ t$('smartbookingApp.prenotazione.oraFine') }}
|
||||
</label>
|
||||
<input
|
||||
id="prenotazione-oraFine"
|
||||
data-cy="oraFine"
|
||||
type="datetime-local"
|
||||
class="form-control"
|
||||
name="oraFine"
|
||||
:class="{ valid: !v$.oraFine.$invalid, invalid: v$.oraFine.$invalid }"
|
||||
:value="convertDateTimeFromServer(v$.oraFine.$model)"
|
||||
@change="updateInstantField('oraFine', $event)"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label" for="prenotazione-struttura">
|
||||
{{ t$('smartbookingApp.prenotazione.struttura') }} <span class="text-danger">*</span>
|
||||
</label>
|
||||
<select
|
||||
class="form-control"
|
||||
id="prenotazione-struttura"
|
||||
data-cy="struttura"
|
||||
name="struttura"
|
||||
v-model="prenotazione.struttura"
|
||||
:class="{ valid: !v$.struttura.$invalid, invalid: v$.struttura.$invalid }"
|
||||
>
|
||||
<option :value="null">{{ t$('global.item.select') }}</option>
|
||||
<option :value="strutturaOption" v-for="strutturaOption in strutturas" :key="strutturaOption.id">
|
||||
{{ strutturaOption.nome }}
|
||||
</option>
|
||||
</select>
|
||||
<div v-if="v$.struttura.$invalid && v$.struttura.$dirty" class="invalid-feedback d-block">
|
||||
{{ t$('entity.validation.required') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label" for="prenotazione-stato">
|
||||
{{ t$('smartbookingApp.prenotazione.stato') }}
|
||||
</label>
|
||||
<select class="form-control" name="stato" id="prenotazione-stato" data-cy="stato" v-model="v$.stato.$model" disabled>
|
||||
<option value="RICHIESTA">
|
||||
{{ t$('smartbookingApp.StatoPrenotazione.RICHIESTA') }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="prenotazione-motivoEvento">
|
||||
{{ t$('smartbookingApp.prenotazione.motivoEvento') }}
|
||||
</label>
|
||||
<input
|
||||
type="text"
|
||||
class="form-control"
|
||||
name="motivoEvento"
|
||||
id="prenotazione-motivoEvento"
|
||||
data-cy="motivoEvento"
|
||||
v-model="v$.motivoEvento.$model"
|
||||
/>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-3">
|
||||
<label class="form-label" for="prenotazione-numeroPartecipanti">
|
||||
{{ t$('smartbookingApp.prenotazione.numeroPartecipanti') }}
|
||||
</label>
|
||||
<input
|
||||
type="number"
|
||||
class="form-control"
|
||||
name="numeroPartecipanti"
|
||||
id="prenotazione-numeroPartecipanti"
|
||||
data-cy="numeroPartecipanti"
|
||||
v-model.number="v$.numeroPartecipanti.$model"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mb-3">
|
||||
<label class="form-label" for="prenotazione-noteUtente">
|
||||
{{ t$('smartbookingApp.prenotazione.noteUtente') }}
|
||||
</label>
|
||||
<textarea
|
||||
class="form-control"
|
||||
name="noteUtente"
|
||||
id="prenotazione-noteUtente"
|
||||
data-cy="noteUtente"
|
||||
rows="3"
|
||||
v-model="v$.noteUtente.$model"
|
||||
></textarea>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- User Data Section -->
|
||||
<div class="card mb-4" v-if="currentUser">
|
||||
<div class="card-header">
|
||||
<h4>{{ t$('smartbookingApp.prenotazione.userForm.userData') }}</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<!-- Personal Data -->
|
||||
<div class="mb-4">
|
||||
<h5 class="mb-3">{{ t$('smartbookingApp.prenotazione.userForm.personalData') }}</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.nome') }}:</strong>
|
||||
{{ currentUser.nome || '-' }}
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.cognome') }}:</strong>
|
||||
{{ currentUser.cognome || '-' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.luogoNascita') }}:</strong>
|
||||
{{ currentUser.luogoNascita || '-' }}
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.dataNascita') }}:</strong>
|
||||
{{ currentUser.dataNascita || '-' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.residente') }}:</strong>
|
||||
{{ currentUser.residente || '-' }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- User Type Radio Buttons -->
|
||||
<div class="mb-3">
|
||||
<label class="form-label">{{ t$('smartbookingApp.prenotazione.userForm.userType') }}</label>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="userType" id="userTypePrivato" value="privato" v-model="userType" />
|
||||
<label class="form-check-label" for="userTypePrivato">
|
||||
{{ t$('smartbookingApp.prenotazione.userForm.privato') }}
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-check">
|
||||
<input class="form-check-input" type="radio" name="userType" id="userTypeSocieta" value="societa" v-model="userType" />
|
||||
<label class="form-check-label" for="userTypeSocieta">
|
||||
{{ t$('smartbookingApp.prenotazione.userForm.societa') }}
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Company Data (conditional) -->
|
||||
<div v-if="userType === 'societa'" class="mt-4">
|
||||
<h5 class="mb-3">{{ t$('smartbookingApp.prenotazione.userForm.companyData') }}</h5>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.societa') }}:</strong>
|
||||
{{ currentUser.societa || '-' }}
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.sede') }}:</strong>
|
||||
{{ currentUser.sede || '-' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.codfiscale') }}:</strong>
|
||||
{{ currentUser.codfiscale || '-' }}
|
||||
</div>
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.telefonoSoc') }}:</strong>
|
||||
{{ currentUser.telefonoSoc || '-' }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6 mb-2">
|
||||
<strong>{{ t$('smartbookingApp.utenteApp.emailSoc') }}:</strong>
|
||||
{{ currentUser.emailSoc || '-' }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Action Buttons -->
|
||||
<div class="d-flex justify-content-between">
|
||||
<button type="button" class="btn btn-secondary" @click="resetForm()" :disabled="isSaving">
|
||||
<font-awesome-icon icon="undo"></font-awesome-icon>
|
||||
<span>{{ t$('smartbookingApp.prenotazione.userForm.reset') }}</span>
|
||||
</button>
|
||||
<button type="submit" class="btn btn-primary" :disabled="v$.$invalid || isSaving">
|
||||
<font-awesome-icon icon="save"></font-awesome-icon>
|
||||
<span>{{ t$('smartbookingApp.prenotazione.userForm.submit') }}</span>
|
||||
</button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
<script lang="ts" src="./prenotazione-form-user.component.ts"></script>
|
||||
@@ -96,6 +96,12 @@
|
||||
<dd>
|
||||
<span>{{ utenteApp.emailSoc }}</span>
|
||||
</dd>
|
||||
<dt>
|
||||
<span>{{ t$('smartbookingApp.utenteApp.internalUser') }}</span>
|
||||
</dt>
|
||||
<dd>
|
||||
{{ utenteApp.internalUser ? utenteApp.internalUser.login : '' }}
|
||||
</dd>
|
||||
</dl>
|
||||
<button type="submit" @click.prevent="previousState()" class="btn btn-info" data-cy="entityDetailsBackButton">
|
||||
<font-awesome-icon icon="arrow-left"></font-awesome-icon> <span>{{ t$('entity.action.back') }}</span>
|
||||
|
||||
@@ -4,6 +4,7 @@ import { type RouteLocation } from 'vue-router';
|
||||
import { type MountingOptions, shallowMount } from '@vue/test-utils';
|
||||
import sinon, { type SinonStubbedInstance } from 'sinon';
|
||||
|
||||
import UserService from '@/entities/user/user.service';
|
||||
import AlertService from '@/shared/alert/alert.service';
|
||||
|
||||
import UtenteAppUpdate from './utente-app-update.vue';
|
||||
@@ -52,6 +53,11 @@ describe('Component Tests', () => {
|
||||
provide: {
|
||||
alertService,
|
||||
utenteAppService: () => utenteAppServiceStub,
|
||||
|
||||
userService: () =>
|
||||
sinon.createStubInstance<UserService>(UserService, {
|
||||
retrieve: sinon.stub().resolves({}),
|
||||
} as any),
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
@@ -4,6 +4,7 @@ import { useRoute, useRouter } from 'vue-router';
|
||||
|
||||
import { useVuelidate } from '@vuelidate/core';
|
||||
|
||||
import UserService from '@/entities/user/user.service';
|
||||
import { useAlertService } from '@/shared/alert/alert.service';
|
||||
import { useValidation } from '@/shared/composables';
|
||||
import { Ruolo } from '@/shared/model/enumerations/ruolo.model';
|
||||
@@ -18,6 +19,8 @@ export default defineComponent({
|
||||
const alertService = inject('alertService', () => useAlertService(), true);
|
||||
|
||||
const utenteApp: Ref<IUtenteApp> = ref(new UtenteApp());
|
||||
const userService = inject('userService', () => new UserService());
|
||||
const users: Ref<Array<any>> = ref([]);
|
||||
const ruoloValues: Ref<string[]> = ref(Object.keys(Ruolo));
|
||||
const isSaving = ref(false);
|
||||
const currentLanguage = inject('currentLanguage', () => computed(() => navigator.language ?? 'it'), true);
|
||||
@@ -40,7 +43,13 @@ export default defineComponent({
|
||||
retrieveUtenteApp(route.params.utenteAppId);
|
||||
}
|
||||
|
||||
const initRelationships = () => {};
|
||||
const initRelationships = () => {
|
||||
userService()
|
||||
.retrieve()
|
||||
.then(res => {
|
||||
users.value = res.data;
|
||||
});
|
||||
};
|
||||
|
||||
initRelationships();
|
||||
|
||||
@@ -70,6 +79,7 @@ export default defineComponent({
|
||||
codfiscale: {},
|
||||
telefonoSoc: {},
|
||||
emailSoc: {},
|
||||
internalUser: {},
|
||||
liberatories: {},
|
||||
};
|
||||
const v$ = useVuelidate(validationRules, utenteApp as any);
|
||||
@@ -83,6 +93,7 @@ export default defineComponent({
|
||||
ruoloValues,
|
||||
isSaving,
|
||||
currentLanguage,
|
||||
users,
|
||||
v$,
|
||||
t$,
|
||||
};
|
||||
|
||||
@@ -209,6 +209,25 @@
|
||||
v-model="v$.emailSoc.$model"
|
||||
/>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-control-label" for="utente-app">{{ t$('smartbookingApp.utenteApp.internalUser') }}</label>
|
||||
<select
|
||||
class="form-control"
|
||||
id="utente-app-internalUser"
|
||||
data-cy="internalUser"
|
||||
name="internalUser"
|
||||
v-model="utenteApp.internalUser"
|
||||
>
|
||||
<option :value="null"></option>
|
||||
<option
|
||||
:value="utenteApp.internalUser && userOption.id === utenteApp.internalUser.id ? utenteApp.internalUser : userOption"
|
||||
v-for="userOption in users"
|
||||
:key="userOption.id"
|
||||
>
|
||||
{{ userOption.login }}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<button type="button" id="cancel-save" data-cy="entityCreateCancelButton" class="btn btn-secondary" @click="previousState()">
|
||||
|
||||
@@ -18,6 +18,19 @@ export default class UtenteAppService {
|
||||
});
|
||||
}
|
||||
|
||||
getCurrentUser(): Promise<IUtenteApp> {
|
||||
return new Promise<IUtenteApp>((resolve, reject) => {
|
||||
axios
|
||||
.get(`${baseApiUrl}/current`)
|
||||
.then(res => {
|
||||
resolve(res.data);
|
||||
})
|
||||
.catch(err => {
|
||||
reject(err);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
retrieve(): Promise<any> {
|
||||
return new Promise<any>((resolve, reject) => {
|
||||
axios
|
||||
|
||||
@@ -76,6 +76,9 @@
|
||||
<th scope="col">
|
||||
<span>{{ t$('smartbookingApp.utenteApp.emailSoc') }}</span>
|
||||
</th>
|
||||
<th scope="col">
|
||||
<span>{{ t$('smartbookingApp.utenteApp.internalUser') }}</span>
|
||||
</th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -99,6 +102,9 @@
|
||||
<td>{{ utenteApp.codfiscale }}</td>
|
||||
<td>{{ utenteApp.telefonoSoc }}</td>
|
||||
<td>{{ utenteApp.emailSoc }}</td>
|
||||
<td>
|
||||
{{ utenteApp.internalUser ? utenteApp.internalUser.login : '' }}
|
||||
</td>
|
||||
<td class="text-end">
|
||||
<div class="btn-group">
|
||||
<router-link
|
||||
|
||||
@@ -16,6 +16,7 @@ const NotificaDetails = () => import('@/entities/notifica/notifica-details.vue')
|
||||
const Prenotazione = () => import('@/entities/prenotazione/prenotazione.vue');
|
||||
const PrenotazioneUpdate = () => import('@/entities/prenotazione/prenotazione-update.vue');
|
||||
const PrenotazioneDetails = () => import('@/entities/prenotazione/prenotazione-details.vue');
|
||||
const PrenotazioneNuova = () => import('@/entities/prenotazione/prenotazione-form-user.vue');
|
||||
|
||||
const Conferma = () => import('@/entities/conferma/conferma.vue');
|
||||
const ConfermaUpdate = () => import('@/entities/conferma/conferma-update.vue');
|
||||
@@ -143,6 +144,12 @@ export default {
|
||||
component: PrenotazioneDetails,
|
||||
meta: { authorities: [Authority.USER] },
|
||||
},
|
||||
{
|
||||
path: 'prenotazione/nuova',
|
||||
name: 'PrenotazioneNuova',
|
||||
component: PrenotazioneNuova,
|
||||
meta: { authorities: [Authority.USER] },
|
||||
},
|
||||
{
|
||||
path: 'conferma',
|
||||
name: 'Conferma',
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import { type Ruolo } from '@/shared/model/enumerations/ruolo.model';
|
||||
import { type IUser } from '@/shared/model/user.model';
|
||||
|
||||
export interface IUtenteApp {
|
||||
id?: number;
|
||||
username?: string;
|
||||
@@ -16,6 +18,7 @@ export interface IUtenteApp {
|
||||
codfiscale?: string | null;
|
||||
telefonoSoc?: string | null;
|
||||
emailSoc?: string | null;
|
||||
internalUser?: IUser | null;
|
||||
}
|
||||
|
||||
export class UtenteApp implements IUtenteApp {
|
||||
@@ -36,6 +39,7 @@ export class UtenteApp implements IUtenteApp {
|
||||
public codfiscale?: string | null,
|
||||
public telefonoSoc?: string | null,
|
||||
public emailSoc?: string | null,
|
||||
public internalUser?: IUser | null,
|
||||
) {
|
||||
this.attivo = this.attivo ?? false;
|
||||
}
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Audit Log",
|
||||
"notFound": "No Audit Logs found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Audit Log con identificatore { param }",
|
||||
"updated": "È stato aggiornato Audit Log identificato da { param }",
|
||||
"deleted": "È stato eliminato Audit Log con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Audit Log con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Audit Log identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Audit Log con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Audit Log { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Audit Log {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Audit Log"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Conferma",
|
||||
"notFound": "No Confermas found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Conferma con identificatore { param }",
|
||||
"updated": "È stato aggiornato Conferma identificato da { param }",
|
||||
"deleted": "È stato eliminato Conferma con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Conferma con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Conferma identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Conferma con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Conferma { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Conferma {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Conferma"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Disponibilita",
|
||||
"notFound": "No Disponibilitas found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Disponibilita con identificatore { param }",
|
||||
"updated": "È stato aggiornato Disponibilita identificato da { param }",
|
||||
"deleted": "È stato eliminato Disponibilita con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Disponibilita con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Disponibilita identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Disponibilita con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Disponibilita { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Disponibilita {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Disponibilita"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Liberatoria",
|
||||
"notFound": "No Liberatorias found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Liberatoria con identificatore { param }",
|
||||
"updated": "È stato aggiornato Liberatoria identificato da { param }",
|
||||
"deleted": "È stato eliminato Liberatoria con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Liberatoria con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Liberatoria identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Liberatoria con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Liberatoria { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Liberatoria {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Liberatoria"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Messaggio",
|
||||
"notFound": "No Messaggios found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Messaggio con identificatore { param }",
|
||||
"updated": "È stato aggiornato Messaggio identificato da { param }",
|
||||
"deleted": "È stato eliminato Messaggio con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Messaggio con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Messaggio identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Messaggio con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Messaggio { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Messaggio {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Messaggio"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Modello Liberatoria",
|
||||
"notFound": "No Modello Liberatorias found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Modello Liberatoria con identificatore { param }",
|
||||
"updated": "È stato aggiornato Modello Liberatoria identificato da { param }",
|
||||
"deleted": "È stato eliminato Modello Liberatoria con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Modello Liberatoria con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Modello Liberatoria identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Modello Liberatoria con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Modello Liberatoria { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Modello Liberatoria {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Modello Liberatoria"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Notifica",
|
||||
"notFound": "No Notificas found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Notifica con identificatore { param }",
|
||||
"updated": "È stato aggiornato Notifica identificato da { param }",
|
||||
"deleted": "È stato eliminato Notifica con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Notifica con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Notifica identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Notifica con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Notifica { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Notifica {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Notifica"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Prenotazione",
|
||||
"notFound": "No Prenotaziones found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Prenotazione con identificatore { param }",
|
||||
"updated": "È stato aggiornato Prenotazione identificato da { param }",
|
||||
"deleted": "È stato eliminato Prenotazione con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Prenotazione con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Prenotazione identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Prenotazione con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Prenotazione { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Prenotazione {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Prenotazione"
|
||||
@@ -26,7 +26,22 @@
|
||||
"noteUtente": "Note Utente",
|
||||
"conferma": "Conferma",
|
||||
"utente": "Utente",
|
||||
"struttura": "Struttura"
|
||||
"struttura": "Struttura",
|
||||
"userForm": {
|
||||
"title": "Nuova Prenotazione",
|
||||
"bookingDetails": "Dettagli",
|
||||
"userData": "Chi prenota",
|
||||
"personalData": "Persona incaricata",
|
||||
"userType": "richiede di usufruire come",
|
||||
"privato": "privato",
|
||||
"societa": "società/associazione",
|
||||
"companyData": "Dati della società/associazione",
|
||||
"reset": "Annulla",
|
||||
"submit": "Invia richiesta"
|
||||
},
|
||||
"StatoPrenotazione": {
|
||||
"RICHIESTA": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Struttura",
|
||||
"notFound": "No Strutturas found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Struttura con identificatore { param }",
|
||||
"updated": "È stato aggiornato Struttura identificato da { param }",
|
||||
"deleted": "È stato eliminato Struttura con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Struttura con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Struttura identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Struttura con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Struttura { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Struttura {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Struttura"
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
"createLabel": "Crea un nuovo utente",
|
||||
"createOrEditLabel": "Crea o modifica un utente"
|
||||
},
|
||||
"created": "È stato creato un nuovo utente con identificativo { param }",
|
||||
"updated": "Sono stato aggiornati i dati dell'utente identificato da { param }",
|
||||
"deleted": "È stato eliminato l'utente identificato da { param }",
|
||||
"created": "È stato creato un nuovo utente con identificativo {{ param }}",
|
||||
"updated": "Sono stato aggiornati i dati dell'utente identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato l'utente identificato da {{ param }}",
|
||||
"delete": {
|
||||
"question": "Si è sicuri di volere eliminare l'utente { login }?"
|
||||
"question": "Si è sicuri di volere eliminare l'utente {{ login }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Utente"
|
||||
|
||||
@@ -8,11 +8,11 @@
|
||||
"createOrEditLabel": "Genera o modifica un Utente App",
|
||||
"notFound": "No Utente Apps found"
|
||||
},
|
||||
"created": "È stato generato un nuovo Utente App con identificatore { param }",
|
||||
"updated": "È stato aggiornato Utente App identificato da { param }",
|
||||
"deleted": "È stato eliminato Utente App con identificatore { param }",
|
||||
"created": "È stato generato un nuovo Utente App con identificatore {{ param }}",
|
||||
"updated": "È stato aggiornato Utente App identificato da {{ param }}",
|
||||
"deleted": "È stato eliminato Utente App con identificatore {{ param }}",
|
||||
"delete": {
|
||||
"question": "Sei sicuro di volere eliminare Utente App { id }?"
|
||||
"question": "Sei sicuro di volere eliminare Utente App {{ id }}?"
|
||||
},
|
||||
"detail": {
|
||||
"title": "Utente App"
|
||||
@@ -33,6 +33,7 @@
|
||||
"codfiscale": "Codfiscale",
|
||||
"telefonoSoc": "Telefono Soc",
|
||||
"emailSoc": "Email Soc",
|
||||
"internalUser": "Internal User",
|
||||
"liberatorie": "Liberatorie"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user