Pagina iscrizione
This commit is contained in:
@ -54,5 +54,4 @@ public enum RuoloTipo
|
|||||||
Dipendente = 10,
|
Dipendente = 10,
|
||||||
[Description("Libera Professione")]
|
[Description("Libera Professione")]
|
||||||
LiberaProfessione = 100,
|
LiberaProfessione = 100,
|
||||||
|
|
||||||
}
|
}
|
||||||
10
StandManager.Domain/Entita/IscrizioneEventoPerMail.cs
Normal file
10
StandManager.Domain/Entita/IscrizioneEventoPerMail.cs
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
using StandManager.Domain.Entita.Base;
|
||||||
|
|
||||||
|
namespace StandManager.Domain.Entita;
|
||||||
|
|
||||||
|
public class IscrizioneEventoPerMail : EntitaBase
|
||||||
|
{
|
||||||
|
public string Mail { get; set; }
|
||||||
|
public bool Processata { get; set; }
|
||||||
|
public bool Inviata { get; set; }
|
||||||
|
}
|
||||||
@ -17,6 +17,7 @@ public class StandManagerDbContext : OAServiceContext
|
|||||||
public DbSet<Evento> Evento { get; set; }
|
public DbSet<Evento> Evento { get; set; }
|
||||||
public DbSet<InvitoEvento> InvitoEvento { get; set; }
|
public DbSet<InvitoEvento> InvitoEvento { get; set; }
|
||||||
public DbSet<IscrizioneEvento> IscrizioneEvento { get; set; }
|
public DbSet<IscrizioneEvento> IscrizioneEvento { get; set; }
|
||||||
|
public DbSet<IscrizioneEventoPerMail> IscrizioneEventoPerMail { get; set; }
|
||||||
public DbSet<MailQueue> MailQueue { get; set; }
|
public DbSet<MailQueue> MailQueue { get; set; }
|
||||||
public DbSet<Permission> Permission { get; set; }
|
public DbSet<Permission> Permission { get; set; }
|
||||||
public DbSet<ProvinciaIstat> Province { get; set; }
|
public DbSet<ProvinciaIstat> Province { get; set; }
|
||||||
|
|||||||
1333
StandManager.Infrastructure/Migrations/20260120130758_IscrizioneEventoPerMail.Designer.cs
generated
Normal file
1333
StandManager.Infrastructure/Migrations/20260120130758_IscrizioneEventoPerMail.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,61 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace StandManager.Infrastructure.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class IscrizioneEventoPerMail : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "IscrizioneEventoPerMail",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
Id = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
||||||
|
Mail = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
||||||
|
Processata = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
Inviata = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
DataCreazione = table.Column<DateTime>(type: "datetime2", nullable: false),
|
||||||
|
DataModifica = table.Column<DateTime>(type: "datetime2", nullable: true),
|
||||||
|
Eliminato = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
IdUtenteCreazione = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
|
||||||
|
IdUtenteModifica = table.Column<Guid>(type: "uniqueidentifier", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_IscrizioneEventoPerMail", x => x.Id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_IscrizioneEventoPerMail_Utente_IdUtenteCreazione",
|
||||||
|
column: x => x.IdUtenteCreazione,
|
||||||
|
principalTable: "Utente",
|
||||||
|
principalColumn: "Id");
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_IscrizioneEventoPerMail_Utente_IdUtenteModifica",
|
||||||
|
column: x => x.IdUtenteModifica,
|
||||||
|
principalTable: "Utente",
|
||||||
|
principalColumn: "Id");
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_IscrizioneEventoPerMail_IdUtenteCreazione",
|
||||||
|
table: "IscrizioneEventoPerMail",
|
||||||
|
column: "IdUtenteCreazione");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_IscrizioneEventoPerMail_IdUtenteModifica",
|
||||||
|
table: "IscrizioneEventoPerMail",
|
||||||
|
column: "IdUtenteModifica");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "IscrizioneEventoPerMail");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -508,6 +508,46 @@ namespace StandManager.Infrastructure.Migrations
|
|||||||
b.ToTable("IscrizioneEvento");
|
b.ToTable("IscrizioneEvento");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("StandManager.Domain.Entita.IscrizioneEventoPerMail", b =>
|
||||||
|
{
|
||||||
|
b.Property<Guid>("Id")
|
||||||
|
.ValueGeneratedOnAdd()
|
||||||
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<DateTime>("DataCreazione")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b.Property<DateTime?>("DataModifica")
|
||||||
|
.HasColumnType("datetime2");
|
||||||
|
|
||||||
|
b.Property<bool>("Eliminato")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<Guid?>("IdUtenteCreazione")
|
||||||
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<Guid?>("IdUtenteModifica")
|
||||||
|
.HasColumnType("uniqueidentifier");
|
||||||
|
|
||||||
|
b.Property<bool>("Inviata")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.Property<string>("Mail")
|
||||||
|
.IsRequired()
|
||||||
|
.HasColumnType("nvarchar(max)");
|
||||||
|
|
||||||
|
b.Property<bool>("Processata")
|
||||||
|
.HasColumnType("bit");
|
||||||
|
|
||||||
|
b.HasKey("Id");
|
||||||
|
|
||||||
|
b.HasIndex("IdUtenteCreazione");
|
||||||
|
|
||||||
|
b.HasIndex("IdUtenteModifica");
|
||||||
|
|
||||||
|
b.ToTable("IscrizioneEventoPerMail");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("StandManager.Domain.Entita.MailQueue", b =>
|
modelBuilder.Entity("StandManager.Domain.Entita.MailQueue", b =>
|
||||||
{
|
{
|
||||||
b.Property<Guid>("Id")
|
b.Property<Guid>("Id")
|
||||||
@ -1084,6 +1124,21 @@ namespace StandManager.Infrastructure.Migrations
|
|||||||
b.Navigation("UtenteModifica");
|
b.Navigation("UtenteModifica");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("StandManager.Domain.Entita.IscrizioneEventoPerMail", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("IdUtenteCreazione");
|
||||||
|
|
||||||
|
b.HasOne("StandManager.Domain.Entita.Utente", "UtenteModifica")
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("IdUtenteModifica");
|
||||||
|
|
||||||
|
b.Navigation("UtenteCreazione");
|
||||||
|
|
||||||
|
b.Navigation("UtenteModifica");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("StandManager.Domain.Entita.MailQueue", b =>
|
modelBuilder.Entity("StandManager.Domain.Entita.MailQueue", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione")
|
b.HasOne("StandManager.Domain.Entita.Utente", "UtenteCreazione")
|
||||||
|
|||||||
@ -10,8 +10,8 @@
|
|||||||
},
|
},
|
||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"EmailConfig": {
|
"EmailConfig": {
|
||||||
"From": "",
|
"From": "registrazioni@gruppodac.eu",
|
||||||
"ServerAddress": "",
|
"ServerAddress": "https://mailbridge.gruppodac.eu/api/graph/NewMessageHtml",
|
||||||
"MailSplitChar": "#"
|
"MailSplitChar": "#"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -0,0 +1,9 @@
|
|||||||
|
using OAService.Service.Repository;
|
||||||
|
using OAService.Service.Servizi.Interfacce;
|
||||||
|
using StandManager.Domain.Entita;
|
||||||
|
|
||||||
|
namespace StandManager.Service.Interfaces;
|
||||||
|
|
||||||
|
public interface IIscrizioneEventoPerMailService : ITService<IscrizioneEventoPerMail>{
|
||||||
|
Task<IscrizioneEventoPerMail> Salva(IscrizioneEventoPerMail entita);
|
||||||
|
}
|
||||||
@ -9,6 +9,7 @@
|
|||||||
public IFeatureService FeatureService{ get; set; }
|
public IFeatureService FeatureService{ get; set; }
|
||||||
public IInvitoEventoService InvitoEventoService{ get; set; }
|
public IInvitoEventoService InvitoEventoService{ get; set; }
|
||||||
public IIscrizioneEventoService IscrizioneEventoService{ get; set; }
|
public IIscrizioneEventoService IscrizioneEventoService{ get; set; }
|
||||||
|
public IIscrizioneEventoPerMailService IscrizioneEventoPerMailService{ get; set; }
|
||||||
public IMailQueueService MailQueueService{ get; set; }
|
public IMailQueueService MailQueueService{ get; set; }
|
||||||
public IPermissionService PermissionService{ get; set; }
|
public IPermissionService PermissionService{ get; set; }
|
||||||
public IProvinciaIstatService ProvinciaIstatService{ get; set; }
|
public IProvinciaIstatService ProvinciaIstatService{ get; set; }
|
||||||
|
|||||||
33
StandManager.Service/IscrizioneEventoPerMailService.cs
Normal file
33
StandManager.Service/IscrizioneEventoPerMailService.cs
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
using OAService.Service.Servizi.Implementazioni;
|
||||||
|
using StandManager.Domain.Entita;
|
||||||
|
using StandManager.Service.Interfaces;
|
||||||
|
using StandManager.Service.Repository;
|
||||||
|
|
||||||
|
namespace StandManager.Service;
|
||||||
|
|
||||||
|
public class IscrizioneEventoPerMailService : TService<IscrizioneEventoPerMail>, IIscrizioneEventoPerMailService
|
||||||
|
{
|
||||||
|
private readonly IStandManagerUnitOfWork _unitOfWork;
|
||||||
|
|
||||||
|
public IscrizioneEventoPerMailService(IStandManagerUnitOfWork unitOfWork) : base(unitOfWork)
|
||||||
|
{
|
||||||
|
_unitOfWork = unitOfWork;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<IscrizioneEventoPerMail> Salva(IscrizioneEventoPerMail entita)
|
||||||
|
{
|
||||||
|
bool isNuovaEntita = entita.Id == Guid.Empty;
|
||||||
|
|
||||||
|
entita.DataCreazione = isNuovaEntita ? DateTime.Now : entita.DataCreazione;
|
||||||
|
entita.DataModifica = isNuovaEntita == false ? DateTime.Now : null;
|
||||||
|
entita.IdUtenteCreazione = isNuovaEntita ? null : entita.IdUtenteCreazione;
|
||||||
|
entita.IdUtenteModifica = isNuovaEntita == false ? null : null;
|
||||||
|
|
||||||
|
if (isNuovaEntita)
|
||||||
|
await _unitOfWork.GetRepository<IscrizioneEventoPerMail>().Put(entita);
|
||||||
|
|
||||||
|
int result = await _unitOfWork.Salva();
|
||||||
|
|
||||||
|
return entita;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -7,7 +7,7 @@ public class ManagerService : IManagerService
|
|||||||
public ManagerService(IUtenteService utenteService, IClienteService clienteService, IComuneIstatService comuneIstatService, IDestinazioneService destinazioneService,
|
public ManagerService(IUtenteService utenteService, IClienteService clienteService, IComuneIstatService comuneIstatService, IDestinazioneService destinazioneService,
|
||||||
IEventoService eventoService, IInvitoEventoService invitoEventoService, IIscrizioneEventoService iscrizioneEventoService, IReferenteService referenteService,
|
IEventoService eventoService, IInvitoEventoService invitoEventoService, IIscrizioneEventoService iscrizioneEventoService, IReferenteService referenteService,
|
||||||
ITipologiaClienteService tipologiaClienteService, IFeatureService featureService, IPermissionService permissionService, IRuoloService ruoloService,
|
ITipologiaClienteService tipologiaClienteService, IFeatureService featureService, IPermissionService permissionService, IRuoloService ruoloService,
|
||||||
ISezioneService sezioneService, IProvinciaIstatService provinciaIstatService, IMailQueueService mailQueueService)
|
ISezioneService sezioneService, IProvinciaIstatService provinciaIstatService, IMailQueueService mailQueueService, IIscrizioneEventoPerMailService iscrizioneEventoPerMailService)
|
||||||
{
|
{
|
||||||
UtenteService = utenteService;
|
UtenteService = utenteService;
|
||||||
ClienteService = clienteService;
|
ClienteService = clienteService;
|
||||||
@ -24,6 +24,7 @@ public class ManagerService : IManagerService
|
|||||||
SezioneService = sezioneService;
|
SezioneService = sezioneService;
|
||||||
ProvinciaIstatService = provinciaIstatService;
|
ProvinciaIstatService = provinciaIstatService;
|
||||||
MailQueueService = mailQueueService;
|
MailQueueService = mailQueueService;
|
||||||
|
IscrizioneEventoPerMailService = iscrizioneEventoPerMailService;
|
||||||
}
|
}
|
||||||
|
|
||||||
public IUtenteService UtenteService { get; set; }
|
public IUtenteService UtenteService { get; set; }
|
||||||
@ -33,6 +34,7 @@ public class ManagerService : IManagerService
|
|||||||
public IFeatureService FeatureService { get; set; }
|
public IFeatureService FeatureService { get; set; }
|
||||||
public IInvitoEventoService InvitoEventoService{ get; set; }
|
public IInvitoEventoService InvitoEventoService{ get; set; }
|
||||||
public IIscrizioneEventoService IscrizioneEventoService { get; set; }
|
public IIscrizioneEventoService IscrizioneEventoService { get; set; }
|
||||||
|
public IIscrizioneEventoPerMailService IscrizioneEventoPerMailService { get; set; }
|
||||||
public IMailQueueService MailQueueService { get; set; }
|
public IMailQueueService MailQueueService { get; set; }
|
||||||
public IPermissionService PermissionService { get; set; }
|
public IPermissionService PermissionService { get; set; }
|
||||||
public IProvinciaIstatService ProvinciaIstatService { get; set; }
|
public IProvinciaIstatService ProvinciaIstatService { get; set; }
|
||||||
|
|||||||
@ -41,5 +41,6 @@
|
|||||||
<script src="/Plugin/Select2/js/select2.full.min.js"></script>
|
<script src="/Plugin/Select2/js/select2.full.min.js"></script>
|
||||||
<script src="_content/Radzen.Blazor/Radzen.Blazor.js?v=@(typeof(Radzen.Colors).Assembly.GetName().Version)"></script>
|
<script src="_content/Radzen.Blazor/Radzen.Blazor.js?v=@(typeof(Radzen.Colors).Assembly.GetName().Version)"></script>
|
||||||
<script src="/js/BodyClass.js"></script>
|
<script src="/js/BodyClass.js"></script>
|
||||||
|
<script src="/js/site.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|||||||
@ -9,6 +9,8 @@
|
|||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
|
|
||||||
|
@if (ShowNavigation)
|
||||||
|
{
|
||||||
<div class="collapse navbar-collapse" id="navbarContent">
|
<div class="collapse navbar-collapse" id="navbarContent">
|
||||||
<nav class="navbar-nav ms-auto mb-2 mb-lg-0 text-end pe-lg-4">
|
<nav class="navbar-nav ms-auto mb-2 mb-lg-0 text-end pe-lg-4">
|
||||||
|
|
||||||
@ -38,5 +40,11 @@
|
|||||||
|
|
||||||
</nav>
|
</nav>
|
||||||
</div>
|
</div>
|
||||||
|
}
|
||||||
</div>
|
</div>
|
||||||
</header>
|
</header>
|
||||||
|
@code {
|
||||||
|
|
||||||
|
[Parameter] public bool ShowNavigation { get; set; } = true;
|
||||||
|
|
||||||
|
}
|
||||||
@ -1,5 +1,5 @@
|
|||||||
@inherits LayoutComponentBase
|
@inherits LayoutComponentBase
|
||||||
|
<RadzenComponents @rendermode="InteractiveAuto" />
|
||||||
@Body
|
@Body
|
||||||
|
|
||||||
<script src="https://cdn.jsdelivr.net/npm/jsqr@1.4.0/dist/jsQR.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/jsqr@1.4.0/dist/jsQR.js"></script>
|
||||||
|
|||||||
@ -99,12 +99,6 @@
|
|||||||
</RadzenFormField>
|
</RadzenFormField>
|
||||||
<ValidationMessage For="@(() => iscrizione.GiornoPresenza)" />
|
<ValidationMessage For="@(() => iscrizione.GiornoPresenza)" />
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6 mb-3">
|
|
||||||
<RadzenFormField Text="Numero di partecipanti" Variant="Variant.Flat" Style="width: 100%;">
|
|
||||||
<RadzenNumeric ShowUpDown="false" TValue="int" TextAlign="TextAlign.Right" Style="width: 100%" aria-label="Partecipanti" @bind-Value="@iscrizione.Partecipanti" />
|
|
||||||
</RadzenFormField>
|
|
||||||
<ValidationMessage For="@(() => iscrizione.Partecipanti)" />
|
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="row">
|
<div class="row">
|
||||||
@ -208,11 +202,11 @@
|
|||||||
TipologiaClienteId = iscrizione.TipologiaClienteId
|
TipologiaClienteId = iscrizione.TipologiaClienteId
|
||||||
};
|
};
|
||||||
|
|
||||||
if (invito.EventoId != Guid.Empty && iscrizione.DestinazioneId == Guid.Empty)
|
/*if (invito.EventoId != Guid.Empty && iscrizione.DestinazioneId == Guid.Empty)
|
||||||
{
|
{
|
||||||
_dialogService.Alert("Selezionare una destinazione valida.", "Attenzione");
|
_dialogService.Alert("Selezionare una destinazione valida.", "Attenzione");
|
||||||
return;
|
return;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
model = iscrizione.Map(model);
|
model = iscrizione.Map(model);
|
||||||
|
|
||||||
@ -236,7 +230,7 @@
|
|||||||
|
|
||||||
public void NoCliente()
|
public void NoCliente()
|
||||||
{
|
{
|
||||||
destinazioniList = new List<DestinazioneViewModel>() { new DestinazioneViewModel() { RagioneSociale = "--Nessuna" } };
|
destinazioniList = new List<DestinazioneViewModel>() { new() { RagioneSociale = "--Nessuna" } };
|
||||||
hasCliente = false;
|
hasCliente = false;
|
||||||
iscrizione.EsperienzaConDAC = "No";
|
iscrizione.EsperienzaConDAC = "No";
|
||||||
}
|
}
|
||||||
@ -249,7 +243,7 @@
|
|||||||
private async Task onProvinciaChanged(object args)
|
private async Task onProvinciaChanged(object args)
|
||||||
{
|
{
|
||||||
Guid parsed;
|
Guid parsed;
|
||||||
var guidId = Guid.TryParse(args.ToString(), out parsed);
|
Guid.TryParse(args.ToString(), out parsed);
|
||||||
var prov = await _managerService.ProvinciaIstatService.RicercaPer(x => x.Id == parsed);
|
var prov = await _managerService.ProvinciaIstatService.RicercaPer(x => x.Id == parsed);
|
||||||
|
|
||||||
if (prov == null)
|
if (prov == null)
|
||||||
|
|||||||
@ -1,5 +1,6 @@
|
|||||||
@page "/Grazie"
|
@page "/Grazie"
|
||||||
@using StandManager.Components.Layout
|
@using StandManager.Components.Layout
|
||||||
|
@using StandManager.Components.Widget
|
||||||
|
|
||||||
@layout PublicLayout
|
@layout PublicLayout
|
||||||
|
|
||||||
@ -8,6 +9,7 @@
|
|||||||
@rendermode InteractiveServer
|
@rendermode InteractiveServer
|
||||||
|
|
||||||
<PageTitle>Grazie</PageTitle>
|
<PageTitle>Grazie</PageTitle>
|
||||||
|
<AppHeader ShowNavigation="false" />
|
||||||
|
|
||||||
<div class="page page-center">
|
<div class="page page-center">
|
||||||
<div class="container container-tight py-4">
|
<div class="container container-tight py-4">
|
||||||
@ -22,9 +24,9 @@
|
|||||||
</svg>
|
</svg>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<h1 class="mt-2">Ti aspettiamo!</h1>
|
<h1 class="mt-2">Grazie</h1>
|
||||||
<p class="text-secondary">
|
<p class="text-secondary">
|
||||||
Controlla la tua email per verificare di aver ricevuto il QR code di invito.
|
Operazione completata. La tua richiesta di ingresso è stata inoltrata al team DAC. Riceverai presto il tuo invito.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="hr-text hr-text-center hr-text-spaceless"></div>
|
<div class="hr-text hr-text-center hr-text-spaceless"></div>
|
||||||
@ -40,6 +42,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="container">
|
||||||
|
<ShareLink Messaggio="Invita anche i tuoi collaboratori a partecipare: condividi questo link e ricordati che la registrazione è obbligatoria per ottenere l’ingresso omaggio nominale."/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<DacFooter />
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
:root {
|
:root {
|
||||||
--tblr-primary: #D63939;
|
--tblr-primary: #D63939;
|
||||||
@ -55,6 +63,6 @@
|
|||||||
@code {
|
@code {
|
||||||
private void goToHome()
|
private void goToHome()
|
||||||
{
|
{
|
||||||
_navManager.NavigateTo("/");
|
_navManager.NavigateTo("/registrazione");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1,6 +1,5 @@
|
|||||||
@using Microsoft.EntityFrameworkCore
|
@using StandManager.Components.Layout
|
||||||
@using StandManager.Components.Layout
|
@using StandManager.Components.Widget
|
||||||
@using System.Threading.Tasks
|
|
||||||
@using StandManager.Model
|
@using StandManager.Model
|
||||||
|
|
||||||
@page "/Registrazione"
|
@page "/Registrazione"
|
||||||
@ -9,68 +8,86 @@
|
|||||||
@rendermode InteractiveServer
|
@rendermode InteractiveServer
|
||||||
|
|
||||||
<PageTitle>Iscrizione Evento</PageTitle>
|
<PageTitle>Iscrizione Evento</PageTitle>
|
||||||
<AppHeader />
|
<AppHeader ShowNavigation="false" />
|
||||||
<div class="container my-5 py-3">
|
<div class="container my-5 py-3">
|
||||||
<ClienteToggle ValueChanged="onClienteToggleChanged" />
|
<EditForm Model="iscrizione" OnValidSubmit="OnIscrizioneSave" FormName="iscrizioneForm">
|
||||||
@if (showCodiceCliente)
|
<DataAnnotationsValidator />
|
||||||
{
|
|
||||||
<div class="col-12">
|
<div class="col-12">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 mb-3">
|
<div class="col-12 mb-3 text-center">
|
||||||
<RadzenFormField Text="Codice cliente o Partita IVA" Variant="Variant.Flat" Style="width: 100%;">
|
<h1>Ricevi il tuo ingresso in fiera</h1>
|
||||||
<RadzenTextBox Style="width: 100%" aria-label="Codice cliente o Partita IVA" Change="(args => onCodiceFornitoChanged(args))" />
|
<p class="text-secondary fs-3 lh-3">
|
||||||
|
Inserisci il tuo indirizzo email per richiedere il biglietto digitale.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-3"></div>
|
||||||
|
<div class="col-6 mb-3">
|
||||||
|
<RadzenFormField Text="Email" Variant="Variant.Flat" Style="width: 100%;">
|
||||||
|
<RadzenTextBox Style="width: 100%" aria-label="Nome" Placeholder="es. nome@azienda.com" @bind-Value="@iscrizione.Mail"/>
|
||||||
</RadzenFormField>
|
</RadzenFormField>
|
||||||
|
<ValidationMessage For="@(() => iscrizione.Mail)"/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
}
|
|
||||||
|
|
||||||
@if (showForm)
|
|
||||||
{
|
|
||||||
<Component_Registrazione invito="invito" @ref="registrazione" />
|
|
||||||
}
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<Footer />
|
<div class="row">
|
||||||
|
<div class="col-3"></div>
|
||||||
|
<div class="col-6 mb-3">
|
||||||
|
<div class="d-flex align-items-center mb-2">
|
||||||
|
<RadzenCheckBox class="form-check-input" @bind-Value="PresaVisionePrivacy" Name="presaVisionePrivacy" TValue="bool"/>
|
||||||
|
<label class="rz-ms-2" for="presaVisionePrivacy" style="cursor: pointer;">
|
||||||
|
Presa visione dell'informativa Privacy* (<a href="/" target="_blank">leggi</a>)
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="d-flex align-items-center">
|
||||||
|
<RadzenCheckBox class="form-check-input" @bind-Value="PresaVisioneDatiPersonali" Name="presaVisioneDatiPersonali" TValue="bool"/>
|
||||||
|
<label class="rz-ms-2" for="presaVisioneDatiPersonali" style="cursor: pointer;">
|
||||||
|
Autorizzazione al trattamento dati*<br/>
|
||||||
|
I dati forniti saranno utilizzati esclusivamente per l’invio del biglietto. (<a href="/" target="_blank">leggi</a>)
|
||||||
|
</label>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-3"></div>
|
||||||
|
<div class="col-6 mb-3">
|
||||||
|
<button type="submit" class="btn btn-danger w-100" disabled="@(!PresaVisionePrivacy || !PresaVisioneDatiPersonali)">
|
||||||
|
Invia richiesta
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</EditForm>
|
||||||
|
|
||||||
|
<ShareLink Messaggio="Condividi questo link con i collaboratori interessati a partecipare alla fiera: la registrazione è obbligatoria per ciascun partecipante al fine di ottenere l’ingresso omaggio nominale."/>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<DacFooter />
|
||||||
|
|
||||||
@code {
|
@code {
|
||||||
private bool showCodiceCliente { get; set; } = false;
|
private IscrizioneEventoPerMailViewModel iscrizione { get; set; } = new();
|
||||||
private bool showForm { get; set; } = false;
|
|
||||||
private InvitoEventoViewModel invito { get; set; } = new InvitoEventoViewModel();
|
|
||||||
private Component_Registrazione registrazione { get; set; } = new();
|
|
||||||
|
|
||||||
private string codiceFornito { get; set; }
|
private bool PresaVisionePrivacy { get; set; }
|
||||||
|
private bool PresaVisioneDatiPersonali { get; set; }
|
||||||
|
|
||||||
private void onClienteToggleChanged(bool value)
|
private async Task OnIscrizioneSave()
|
||||||
{
|
{
|
||||||
if (!value)
|
var exist = await _managerService.IscrizioneEventoPerMailService.RicercaPer(x => x.Mail == iscrizione.Mail && !x.Eliminato);
|
||||||
registrazione.NoCliente();
|
if (exist != null && exist?.Id != Guid.Empty)
|
||||||
else
|
|
||||||
registrazione.HasCliente();
|
|
||||||
|
|
||||||
showCodiceCliente = value;
|
|
||||||
showForm = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private async Task onCodiceFornitoChanged(string text)
|
|
||||||
{
|
{
|
||||||
codiceFornito = text;
|
await _dialogService.Alert("L'indirizzo mail indicato è già stato utilizzato", "Errore", new ConfirmOptions() { OkButtonText = "Ok" });
|
||||||
invito.CodiceFornito = codiceFornito;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
var destinazione = (await _managerService.DestinazioneService.RicercaPer(
|
var model = new IscrizioneEventoPerMail()
|
||||||
x => x.PartitaIva == codiceFornito || x.CodiceFiscale == codiceFornito || x.Rid == codiceFornito || x.Cliente.Rid == codiceFornito,
|
|
||||||
includi: x => x.Include(y => y.Cliente)));
|
|
||||||
|
|
||||||
if (destinazione != null)
|
|
||||||
{
|
{
|
||||||
invito.ClienteId = destinazione.ClienteId;
|
Mail = iscrizione.Mail
|
||||||
invito.DestinazioneId = destinazione.Id;
|
};
|
||||||
invito.CodiceFornito = codiceFornito;
|
await _managerService.IscrizioneEventoPerMailService.Salva(model);
|
||||||
invito.RagioneSociale = destinazione.Cliente?.RagioneSociale ?? string.Empty;
|
_navManager.NavigateTo("/Grazie");
|
||||||
await registrazione.SetDatiCliente();
|
|
||||||
}
|
|
||||||
|
|
||||||
showForm = true;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
76
StandManager/Components/Pages/RegistrazioneInFiera.razor
Normal file
76
StandManager/Components/Pages/RegistrazioneInFiera.razor
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
@using Microsoft.EntityFrameworkCore
|
||||||
|
@using StandManager.Components.Layout
|
||||||
|
@using System.Threading.Tasks
|
||||||
|
@using StandManager.Model
|
||||||
|
|
||||||
|
@page "/RegistrazioneInFiera"
|
||||||
|
@layout PublicLayout
|
||||||
|
|
||||||
|
@rendermode InteractiveServer
|
||||||
|
|
||||||
|
<PageTitle>Iscrizione Evento</PageTitle>
|
||||||
|
<AppHeader />
|
||||||
|
<div class="container my-5 py-3">
|
||||||
|
<ClienteToggle ValueChanged="onClienteToggleChanged" />
|
||||||
|
@if (showCodiceCliente)
|
||||||
|
{
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-12 mb-3">
|
||||||
|
<RadzenFormField Text="Codice cliente o Partita IVA" Variant="Variant.Flat" Style="width: 100%;">
|
||||||
|
<RadzenTextBox Style="width: 100%" aria-label="Codice cliente o Partita IVA" Change="(args => onCodiceFornitoChanged(args))" />
|
||||||
|
</RadzenFormField>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
}
|
||||||
|
|
||||||
|
@if (showForm)
|
||||||
|
{
|
||||||
|
<Component_Registrazione invito="invito" @ref="registrazione" />
|
||||||
|
}
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<DacFooter />
|
||||||
|
|
||||||
|
@code {
|
||||||
|
private bool showCodiceCliente { get; set; } = false;
|
||||||
|
private bool showForm { get; set; } = false;
|
||||||
|
private InvitoEventoViewModel invito { get; set; } = new InvitoEventoViewModel();
|
||||||
|
private Component_Registrazione registrazione { get; set; } = new();
|
||||||
|
|
||||||
|
private string codiceFornito { get; set; }
|
||||||
|
|
||||||
|
private void onClienteToggleChanged(bool value)
|
||||||
|
{
|
||||||
|
if (!value)
|
||||||
|
registrazione.NoCliente();
|
||||||
|
else
|
||||||
|
registrazione.HasCliente();
|
||||||
|
|
||||||
|
showCodiceCliente = value;
|
||||||
|
showForm = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
private async Task onCodiceFornitoChanged(string text)
|
||||||
|
{
|
||||||
|
codiceFornito = text;
|
||||||
|
invito.CodiceFornito = codiceFornito;
|
||||||
|
|
||||||
|
var destinazione = (await _managerService.DestinazioneService.RicercaPer(
|
||||||
|
x => x.PartitaIva == codiceFornito || x.CodiceFiscale == codiceFornito || x.Rid == codiceFornito || x.Cliente.Rid == codiceFornito,
|
||||||
|
includi: x => x.Include(y => y.Cliente)));
|
||||||
|
|
||||||
|
if (destinazione != null)
|
||||||
|
{
|
||||||
|
invito.ClienteId = destinazione.ClienteId;
|
||||||
|
invito.DestinazioneId = destinazione.Id;
|
||||||
|
invito.CodiceFornito = codiceFornito;
|
||||||
|
invito.RagioneSociale = destinazione.Cliente?.RagioneSociale ?? string.Empty;
|
||||||
|
await registrazione.SetDatiCliente();
|
||||||
|
}
|
||||||
|
|
||||||
|
showForm = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -40,7 +40,7 @@
|
|||||||
<strong>Errore:</strong> @errorMessage
|
<strong>Errore:</strong> @errorMessage
|
||||||
</div>
|
</div>
|
||||||
}
|
}
|
||||||
<Footer />
|
<DacFooter />
|
||||||
@code {
|
@code {
|
||||||
private ElementReference videoRef;
|
private ElementReference videoRef;
|
||||||
private DotNetObjectReference<Scan>? objRef;
|
private DotNetObjectReference<Scan>? objRef;
|
||||||
|
|||||||
75
StandManager/Components/Widget/ShareLink.razor
Normal file
75
StandManager/Components/Widget/ShareLink.razor
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
@inject IJSRuntime JS
|
||||||
|
|
||||||
|
<div class="col-12">
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-4"></div>
|
||||||
|
<div class="col-4 mb-3 text-center">
|
||||||
|
<div class="card card-sm">
|
||||||
|
<div class="card-body d-flex align-items-center gap-3">
|
||||||
|
<div class="flex-fill">
|
||||||
|
<div class="fw-bold">Condividi questo link</div>
|
||||||
|
<div class="text-muted small">
|
||||||
|
@Messaggio
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button class="btn btn-icon @ButtonCss"
|
||||||
|
title="@_label"
|
||||||
|
disabled="@_copied"
|
||||||
|
@onclick="CopyLink">
|
||||||
|
@if (_copied)
|
||||||
|
{
|
||||||
|
<!-- check -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon"
|
||||||
|
width="24" height="24" viewBox="0 0 24 24"
|
||||||
|
stroke-width="2" stroke="currentColor"
|
||||||
|
fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||||
|
<path stroke="none" d="M0 0h24v24H0z"/>
|
||||||
|
<path d="M5 12l5 5l10 -10"/>
|
||||||
|
</svg>
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
<!-- share -->
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" class="icon"
|
||||||
|
width="24" height="24" viewBox="0 0 24 24"
|
||||||
|
stroke-width="2" stroke="currentColor"
|
||||||
|
fill="none" stroke-linecap="round" stroke-linejoin="round">
|
||||||
|
<circle cx="6" cy="12" r="3"/>
|
||||||
|
<circle cx="18" cy="6" r="3"/>
|
||||||
|
<circle cx="18" cy="18" r="3"/>
|
||||||
|
<path d="M8.7 10.7l6.6 -3.4"/>
|
||||||
|
<path d="M8.7 13.3l6.6 3.4"/>
|
||||||
|
</svg>
|
||||||
|
}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@code {
|
||||||
|
[Parameter] public string Messaggio { get; set; } = string.Empty;
|
||||||
|
private string _label = "Copia link";
|
||||||
|
private bool _copied;
|
||||||
|
|
||||||
|
private string ButtonCss =>
|
||||||
|
_copied ? "btn-success" : "btn-outline-primary";
|
||||||
|
|
||||||
|
private async Task CopyLink()
|
||||||
|
{
|
||||||
|
await JS.InvokeVoidAsync(
|
||||||
|
"navigator.clipboard.writeText",
|
||||||
|
"https://registrazioni.gruppodac.eu:666/registrazione"
|
||||||
|
);
|
||||||
|
|
||||||
|
_copied = true;
|
||||||
|
StateHasChanged();
|
||||||
|
|
||||||
|
await Task.Delay(3000);
|
||||||
|
|
||||||
|
_copied = false;
|
||||||
|
StateHasChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
23
StandManager/Model/IscrizioneEventoPerMailViewModel.cs
Normal file
23
StandManager/Model/IscrizioneEventoPerMailViewModel.cs
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
using StandManager.Domain.Entita;
|
||||||
|
|
||||||
|
namespace StandManager.Model;
|
||||||
|
|
||||||
|
public class IscrizioneEventoPerMailViewModel
|
||||||
|
{
|
||||||
|
public Guid Id { get; set; }
|
||||||
|
public string Mail { get; set; }
|
||||||
|
public bool Processata { get; set; }
|
||||||
|
public bool Inviata { get; set; }
|
||||||
|
public static implicit operator IscrizioneEventoPerMailViewModel(IscrizioneEventoPerMail model)
|
||||||
|
{
|
||||||
|
return model == null
|
||||||
|
? null
|
||||||
|
: new IscrizioneEventoPerMailViewModel()
|
||||||
|
{
|
||||||
|
Mail = model.Mail,
|
||||||
|
Id = model.Id,
|
||||||
|
Inviata = model.Inviata,
|
||||||
|
Processata = model.Processata
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -11,7 +11,7 @@ public class IscrizioneEventoViewModel
|
|||||||
public ClienteViewModel Cliente { get; set; }
|
public ClienteViewModel Cliente { get; set; }
|
||||||
public Guid? ClienteId { get; set; }
|
public Guid? ClienteId { get; set; }
|
||||||
public Guid? DestinazioneId { get; set; }
|
public Guid? DestinazioneId { get; set; }
|
||||||
[Range(1, int.MaxValue, ErrorMessage = "Inserire un numero di partecipanti valido")]
|
/*[Range(1, int.MaxValue, ErrorMessage = "Inserire un numero di partecipanti valido")]*/
|
||||||
public int Partecipanti { get; set; }
|
public int Partecipanti { get; set; }
|
||||||
|
|
||||||
public string? Note { get; set; }
|
public string? Note { get; set; }
|
||||||
@ -95,5 +95,4 @@ public class IscrizioneEventoViewModel
|
|||||||
GiornoPresenza = model.GiornoPresenza,
|
GiornoPresenza = model.GiornoPresenza,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -146,3 +146,14 @@ function swalErrorMsg(msg) {
|
|||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
window.TablerToast = function (message) {
|
||||||
|
if (window.Tabler?.toast) {
|
||||||
|
Tabler.toast.show({
|
||||||
|
message: message,
|
||||||
|
type: 'success'
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
alert(message);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user