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:
@@ -49,7 +49,7 @@ public class AuditLog implements Serializable {
|
||||
private Instant createdAt;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnoreProperties(value = { "liberatories" }, allowSetters = true)
|
||||
@JsonIgnoreProperties(value = { "internalUser", "liberatories" }, allowSetters = true)
|
||||
private UtenteApp utente;
|
||||
|
||||
// jhipster-needle-entity-add-field - JHipster will add fields here
|
||||
|
||||
@@ -34,7 +34,7 @@ public class Conferma implements Serializable {
|
||||
private TipoConferma tipoConferma;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnoreProperties(value = { "liberatories" }, allowSetters = true)
|
||||
@JsonIgnoreProperties(value = { "internalUser", "liberatories" }, allowSetters = true)
|
||||
private UtenteApp confermataDa;
|
||||
|
||||
@JsonIgnoreProperties(value = { "conferma", "utente", "struttura" }, allowSetters = true)
|
||||
|
||||
@@ -30,7 +30,7 @@ public class Liberatoria implements Serializable {
|
||||
private Instant accettata;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnoreProperties(value = { "liberatories" }, allowSetters = true)
|
||||
@JsonIgnoreProperties(value = { "internalUser", "liberatories" }, allowSetters = true)
|
||||
private UtenteApp utente;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
|
||||
@@ -36,7 +36,7 @@ public class Messaggio implements Serializable {
|
||||
private Instant letto;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnoreProperties(value = { "liberatories" }, allowSetters = true)
|
||||
@JsonIgnoreProperties(value = { "internalUser", "liberatories" }, allowSetters = true)
|
||||
private UtenteApp utente;
|
||||
|
||||
// jhipster-needle-entity-add-field - JHipster will add fields here
|
||||
|
||||
@@ -52,7 +52,7 @@ public class Prenotazione implements Serializable {
|
||||
private Conferma conferma;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
@JsonIgnoreProperties(value = { "liberatories" }, allowSetters = true)
|
||||
@JsonIgnoreProperties(value = { "internalUser", "liberatories" }, allowSetters = true)
|
||||
private UtenteApp utente;
|
||||
|
||||
@ManyToOne(fetch = FetchType.LAZY)
|
||||
|
||||
@@ -79,6 +79,10 @@ public class UtenteApp implements Serializable {
|
||||
@Column(name = "email_soc")
|
||||
private String emailSoc;
|
||||
|
||||
@OneToOne(fetch = FetchType.LAZY)
|
||||
@JoinColumn(unique = true)
|
||||
private User internalUser;
|
||||
|
||||
@OneToMany(fetch = FetchType.LAZY, mappedBy = "utente")
|
||||
@Cache(usage = CacheConcurrencyStrategy.READ_WRITE)
|
||||
@JsonIgnoreProperties(value = { "utente", "modelloLiberatoria" }, allowSetters = true)
|
||||
@@ -294,6 +298,19 @@ public class UtenteApp implements Serializable {
|
||||
this.emailSoc = emailSoc;
|
||||
}
|
||||
|
||||
public User getInternalUser() {
|
||||
return this.internalUser;
|
||||
}
|
||||
|
||||
public void setInternalUser(User user) {
|
||||
this.internalUser = user;
|
||||
}
|
||||
|
||||
public UtenteApp internalUser(User user) {
|
||||
this.setInternalUser(user);
|
||||
return this;
|
||||
}
|
||||
|
||||
public Set<Liberatoria> getLiberatories() {
|
||||
return this.liberatories;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,42 @@
|
||||
package it.sw.pa.comune.artegna.repository;
|
||||
|
||||
import it.sw.pa.comune.artegna.domain.UtenteApp;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.jpa.repository.*;
|
||||
import org.springframework.data.repository.query.Param;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* Spring Data JPA repository for the UtenteApp entity.
|
||||
*/
|
||||
@SuppressWarnings("unused")
|
||||
@Repository
|
||||
public interface UtenteAppRepository extends JpaRepository<UtenteApp, Long> {}
|
||||
public interface UtenteAppRepository extends JpaRepository<UtenteApp, Long> {
|
||||
Optional<UtenteApp> findByUsername(String username);
|
||||
|
||||
default Optional<UtenteApp> findOneWithEagerRelationships(Long id) {
|
||||
return this.findOneWithToOneRelationships(id);
|
||||
}
|
||||
|
||||
default List<UtenteApp> findAllWithEagerRelationships() {
|
||||
return this.findAllWithToOneRelationships();
|
||||
}
|
||||
|
||||
default Page<UtenteApp> findAllWithEagerRelationships(Pageable pageable) {
|
||||
return this.findAllWithToOneRelationships(pageable);
|
||||
}
|
||||
|
||||
@Query(
|
||||
value = "select utenteApp from UtenteApp utenteApp left join fetch utenteApp.internalUser",
|
||||
countQuery = "select count(utenteApp) from UtenteApp utenteApp"
|
||||
)
|
||||
Page<UtenteApp> findAllWithToOneRelationships(Pageable pageable);
|
||||
|
||||
@Query("select utenteApp from UtenteApp utenteApp left join fetch utenteApp.internalUser")
|
||||
List<UtenteApp> findAllWithToOneRelationships();
|
||||
|
||||
@Query("select utenteApp from UtenteApp utenteApp left join fetch utenteApp.internalUser where utenteApp.id =:id")
|
||||
Optional<UtenteApp> findOneWithToOneRelationships(@Param("id") Long id);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package it.sw.pa.comune.artegna.service;
|
||||
import it.sw.pa.comune.artegna.service.dto.UtenteAppDTO;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
|
||||
/**
|
||||
* Service Interface for managing {@link it.sw.pa.comune.artegna.domain.UtenteApp}.
|
||||
@@ -39,6 +41,14 @@ public interface UtenteAppService {
|
||||
*/
|
||||
List<UtenteAppDTO> findAll();
|
||||
|
||||
/**
|
||||
* Get all the utenteApps with eager load of many-to-many relationships.
|
||||
*
|
||||
* @param pageable the pagination information.
|
||||
* @return the list of entities.
|
||||
*/
|
||||
Page<UtenteAppDTO> findAllWithEagerRelationships(Pageable pageable);
|
||||
|
||||
/**
|
||||
* Get the "id" utenteApp.
|
||||
*
|
||||
@@ -47,6 +57,14 @@ public interface UtenteAppService {
|
||||
*/
|
||||
Optional<UtenteAppDTO> findOne(Long id);
|
||||
|
||||
/**
|
||||
* Get utenteApp by username.
|
||||
*
|
||||
* @param username the username of the entity.
|
||||
* @return the entity.
|
||||
*/
|
||||
Optional<UtenteAppDTO> findByUsername(String username);
|
||||
|
||||
/**
|
||||
* Delete the "id" utenteApp.
|
||||
*
|
||||
|
||||
@@ -47,6 +47,8 @@ public class UtenteAppDTO implements Serializable {
|
||||
|
||||
private String emailSoc;
|
||||
|
||||
private UserDTO internalUser;
|
||||
|
||||
public Long getId() {
|
||||
return id;
|
||||
}
|
||||
@@ -175,6 +177,14 @@ public class UtenteAppDTO implements Serializable {
|
||||
this.emailSoc = emailSoc;
|
||||
}
|
||||
|
||||
public UserDTO getInternalUser() {
|
||||
return internalUser;
|
||||
}
|
||||
|
||||
public void setInternalUser(UserDTO internalUser) {
|
||||
this.internalUser = internalUser;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o) {
|
||||
if (this == o) {
|
||||
@@ -216,6 +226,7 @@ public class UtenteAppDTO implements Serializable {
|
||||
", codfiscale='" + getCodfiscale() + "'" +
|
||||
", telefonoSoc='" + getTelefonoSoc() + "'" +
|
||||
", emailSoc='" + getEmailSoc() + "'" +
|
||||
", internalUser=" + getInternalUser() +
|
||||
"}";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ import java.util.Optional;
|
||||
import java.util.stream.Collectors;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
@@ -70,11 +72,22 @@ public class UtenteAppServiceImpl implements UtenteAppService {
|
||||
return utenteAppRepository.findAll().stream().map(utenteAppMapper::toDto).collect(Collectors.toCollection(LinkedList::new));
|
||||
}
|
||||
|
||||
public Page<UtenteAppDTO> findAllWithEagerRelationships(Pageable pageable) {
|
||||
return utenteAppRepository.findAllWithEagerRelationships(pageable).map(utenteAppMapper::toDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public Optional<UtenteAppDTO> findOne(Long id) {
|
||||
LOG.debug("Request to get UtenteApp : {}", id);
|
||||
return utenteAppRepository.findById(id).map(utenteAppMapper::toDto);
|
||||
return utenteAppRepository.findOneWithEagerRelationships(id).map(utenteAppMapper::toDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
@Transactional(readOnly = true)
|
||||
public Optional<UtenteAppDTO> findByUsername(String username) {
|
||||
LOG.debug("Request to get UtenteApp by username : {}", username);
|
||||
return utenteAppRepository.findByUsername(username).map(utenteAppMapper::toDto);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,6 +1,8 @@
|
||||
package it.sw.pa.comune.artegna.service.mapper;
|
||||
|
||||
import it.sw.pa.comune.artegna.domain.User;
|
||||
import it.sw.pa.comune.artegna.domain.UtenteApp;
|
||||
import it.sw.pa.comune.artegna.service.dto.UserDTO;
|
||||
import it.sw.pa.comune.artegna.service.dto.UtenteAppDTO;
|
||||
import org.mapstruct.*;
|
||||
|
||||
@@ -8,4 +10,13 @@ import org.mapstruct.*;
|
||||
* Mapper for the entity {@link UtenteApp} and its DTO {@link UtenteAppDTO}.
|
||||
*/
|
||||
@Mapper(componentModel = "spring")
|
||||
public interface UtenteAppMapper extends EntityMapper<UtenteAppDTO, UtenteApp> {}
|
||||
public interface UtenteAppMapper extends EntityMapper<UtenteAppDTO, UtenteApp> {
|
||||
@Mapping(target = "internalUser", source = "internalUser", qualifiedByName = "userLogin")
|
||||
UtenteAppDTO toDto(UtenteApp s);
|
||||
|
||||
@Named("userLogin")
|
||||
@BeanMapping(ignoreByDefault = true)
|
||||
@Mapping(target = "id", source = "id")
|
||||
@Mapping(target = "login", source = "login")
|
||||
UserDTO toDtoUserLogin(User user);
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package it.sw.pa.comune.artegna.web.rest;
|
||||
|
||||
import it.sw.pa.comune.artegna.repository.UtenteAppRepository;
|
||||
import it.sw.pa.comune.artegna.security.SecurityUtils;
|
||||
import it.sw.pa.comune.artegna.service.UtenteAppService;
|
||||
import it.sw.pa.comune.artegna.service.dto.UtenteAppDTO;
|
||||
import it.sw.pa.comune.artegna.web.rest.errors.BadRequestAlertException;
|
||||
@@ -133,10 +134,13 @@ public class UtenteAppResource {
|
||||
/**
|
||||
* {@code GET /utente-apps} : get all the utenteApps.
|
||||
*
|
||||
* @param eagerload flag to eager load entities from relationships (This is applicable for many-to-many).
|
||||
* @return the {@link ResponseEntity} with status {@code 200 (OK)} and the list of utenteApps in body.
|
||||
*/
|
||||
@GetMapping("")
|
||||
public List<UtenteAppDTO> getAllUtenteApps() {
|
||||
public List<UtenteAppDTO> getAllUtenteApps(
|
||||
@RequestParam(name = "eagerload", required = false, defaultValue = "true") boolean eagerload
|
||||
) {
|
||||
LOG.debug("REST request to get all UtenteApps");
|
||||
return utenteAppService.findAll();
|
||||
}
|
||||
@@ -154,6 +158,16 @@ public class UtenteAppResource {
|
||||
return ResponseUtil.wrapOrNotFound(utenteAppDTO);
|
||||
}
|
||||
|
||||
@GetMapping("/current")
|
||||
public ResponseEntity<UtenteAppDTO> getCurrentUser() {
|
||||
LOG.debug("REST request to get current user");
|
||||
|
||||
return SecurityUtils.getCurrentUserLogin()
|
||||
.flatMap(utenteAppService::findByUsername)
|
||||
.map(ResponseEntity::ok)
|
||||
.orElse(ResponseEntity.notFound().build());
|
||||
}
|
||||
|
||||
/**
|
||||
* {@code DELETE /utente-apps/:id} : delete the "id" utenteApp.
|
||||
*
|
||||
|
||||
@@ -59,6 +59,9 @@
|
||||
<column name="email_soc" type="varchar(255)">
|
||||
<constraints nullable="true" />
|
||||
</column>
|
||||
<column name="internal_user_id" type="bigint">
|
||||
<constraints nullable="true" unique="true" uniqueConstraintName="ux_utente_app__internal_user_id" />
|
||||
</column>
|
||||
<!-- jhipster-needle-liquibase-add-column - JHipster will add columns here -->
|
||||
</createTable>
|
||||
</changeSet>
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<databaseChangeLog
|
||||
xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
|
||||
xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-latest.xsd
|
||||
http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd">
|
||||
<!--
|
||||
Added the constraints for entity UtenteApp.
|
||||
-->
|
||||
<changeSet id="20251210161127-2" author="jhipster">
|
||||
|
||||
<addForeignKeyConstraint baseColumnNames="internal_user_id"
|
||||
baseTableName="utente_app"
|
||||
constraintName="fk_utente_app__internal_user_id"
|
||||
referencedColumnNames="id"
|
||||
referencedTableName="jhi_user"
|
||||
/>
|
||||
</changeSet>
|
||||
</databaseChangeLog>
|
||||
@@ -31,6 +31,7 @@
|
||||
<include file="config/liquibase/changelog/20251210161128_added_entity_constraints_Liberatoria.xml" relativeToChangelogFile="false"/>
|
||||
<include file="config/liquibase/changelog/20251210161129_added_entity_constraints_ModelloLiberatoria.xml" relativeToChangelogFile="false"/>
|
||||
<include file="config/liquibase/changelog/20251210161130_added_entity_constraints_Messaggio.xml" relativeToChangelogFile="false"/>
|
||||
<include file="config/liquibase/changelog/20251210161127_added_entity_constraints_UtenteApp.xml" relativeToChangelogFile="false"/>
|
||||
<!-- jhipster-needle-liquibase-add-constraints-changelog - JHipster will add liquibase constraints changelogs here -->
|
||||
<!-- jhipster-needle-liquibase-add-incremental-changelog - JHipster will add incremental liquibase changelogs here -->
|
||||
</databaseChangeLog>
|
||||
|
||||
@@ -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