diff --git a/StandManager/Components/Pages/Management/Clienti.razor b/StandManager/Components/Pages/Management/Clienti.razor
index 307b931..1060124 100644
--- a/StandManager/Components/Pages/Management/Clienti.razor
+++ b/StandManager/Components/Pages/Management/Clienti.razor
@@ -27,6 +27,8 @@
+
+
Nuovo cliente
@@ -145,4 +147,25 @@
await _dialogService.Alert("Si è verificato un errore durante l'importazione del file.", "Errore");
}
}
+
+ private async Task onUploadProvince(UploadChangeEventArgs args)
+ {
+ var file = args.Files.FirstOrDefault();
+ if (file == null ||
+ !file.Name.EndsWith(".xlsx", StringComparison.OrdinalIgnoreCase))
+ {
+ await _dialogService.Alert("Sono supportati solo file Excel .xlsx", "Errore");
+ return;
+ }
+ try
+ {
+ // await using var uploadStream = file.OpenReadStream(10_000_000);
+ await _dialogService.OpenAsync("Importazione province", new Dictionary() { { "args", args } });
+ }
+ catch (Exception ex)
+ {
+ var er = ex.Message;
+ await _dialogService.Alert("Si è verificato un errore durante l'importazione del file.", "Errore");
+ }
+ }
}
diff --git a/StandManager/Components/Pages/Management/Clienti_Import.razor b/StandManager/Components/Pages/Management/Clienti_Import.razor
index f3af828..5a4e61e 100644
--- a/StandManager/Components/Pages/Management/Clienti_Import.razor
+++ b/StandManager/Components/Pages/Management/Clienti_Import.razor
@@ -40,11 +40,11 @@
var codiciAgente = rows.Select(r => new { CodiceAgente = r.Agente, Nome = r.DescrizioneAgente, Capoarea = r.CapoArea }).Distinct().ToList();
var codiciCapoarea = rows.Select(r => new { CodiceCapoarea = r.CapoArea, Nome = r.DescrizioneCapoArea }).Distinct().ToList();
-
+
foreach (var fileCapoarea in codiciCapoarea)
{
var capoarea = await _managerService.UtenteService.RicercaPer(x => x.CodiceAgente == fileCapoarea.CodiceCapoarea, solaLettura: false);
-
+
capoarea = await mapCapoArea(capoarea ?? new Utente(), fileCapoarea.CodiceCapoarea, fileCapoarea.Nome);
await _managerService.UtenteService.Salva(capoarea, idClaim);
}
@@ -59,11 +59,11 @@
agente = await mapAgente(agente ?? new Utente(), fileAgente.CodiceAgente, fileAgente.Nome, capoarea?.Id);
await _managerService.UtenteService.Salva(agente, idClaim);
}
-
+
var ragioniSociali = rows.Select(r => new { Rid = r.CodCli, RagioneSociale = r.RagSocCliente }).Distinct().ToList();
clientiTotali = ragioniSociali.Count;
counterLabel = " di " + clientiTotali;
-
+
foreach (var cliente in ragioniSociali)
{
var righeCliente = rows.Where(r => r.CodCli == cliente.Rid).ToList();
@@ -93,7 +93,7 @@
model.Rid = firstRow.CodCli;
model.RagioneSociale = firstRow.RagSocCliente;
model.PartitaIva = firstRow.PartitaIva;
- // TODO: TipologiaCliente da inserire (pesco a db)
+ model.TipologiaGestionale = firstRow.Tipologia;
model.Destinazioni ??= new();
foreach (var destinazioneRiga in rows)
@@ -109,8 +109,6 @@
private async Task mapDestinazione(Destinazione model, Guid clienteId, ClienteExcelViewModel row, Guid? agenteId)
{
-
- // TODO: Comune da inserire (pesco a db)
model.Rid = row.CodDes;
model.RagioneSociale = row.RagSocDestinazione;
model.PartitaIva = row.PartitaIva;
diff --git a/StandManager/Components/Pages/Management/Province_Import.razor b/StandManager/Components/Pages/Management/Province_Import.razor
new file mode 100644
index 0000000..01cc4d2
--- /dev/null
+++ b/StandManager/Components/Pages/Management/Province_Import.razor
@@ -0,0 +1,69 @@
+@using ClosedXML.Excel
+@using Microsoft.EntityFrameworkCore
+@using StandManager.Model
+@attribute [Authorize]
+
+@rendermode InteractiveServer
+
+@inject AuthenticationStateProvider auth
+
+
+
+
+
+@code {
+ [CascadingParameter] private Dialog _dialog { get; set; }
+ [Parameter] public UploadChangeEventArgs args { get; set; }
+
+ private int provinceTotali { get; set; } = 0;
+ private int counter { get; set; } = 0;
+ private string counterLabel { get; set; } = string.Empty;
+
+ protected override async Task OnInitializedAsync()
+ {
+ base.OnInitializedAsync();
+ var file = args.Files.FirstOrDefault();
+ await using var uploadStream = file.OpenReadStream(10_000_000);
+ var idClaim = await MembershipUtils.GetUserId(auth);
+
+ await using var ms = new MemoryStream();
+ await uploadStream.CopyToAsync(ms);
+ ms.Position = 0;
+
+ using var workbook = new XLWorkbook(ms);
+ var ws = workbook.Worksheet(1);
+ var usedRange = ws.RangeUsed();
+ var rows = new List(usedRange.RowCount() - 1);
+
+ foreach (var row in usedRange.RowsUsed().Skip(1))
+ rows.Add(new ProvinciaIstatExcelViewModel(row));
+
+
+ var province = rows.ToList();
+ provinceTotali = province.Count;
+ counterLabel = " di " + provinceTotali;
+
+ foreach (var provincia in province)
+ {
+ var provinciaDb = await _managerService.ProvinciaIstatService.RicercaPer(
+ x => x.Sigla == provincia.Sigla && x.Eliminato == false,
+ solaLettura: false) ?? new ProvinciaIstat();
+
+ provinciaDb = await mapProvincia(provinciaDb, provincia);
+ await _managerService.ProvinciaIstatService.Salva(provinciaDb, idClaim);
+ counter += 1;
+ StateHasChanged();
+ }
+
+ ms.Close();
+ _dialogService.Close();
+ }
+
+ private async Task mapProvincia(ProvinciaIstat model, ProvinciaIstatExcelViewModel row)
+ {
+ model.Sigla = row.Sigla;
+ model.Provincia = row.Provincia;
+
+ return model;
+ }
+}
diff --git a/StandManager/Model/ProvinciaIstatExcelViewModel.cs b/StandManager/Model/ProvinciaIstatExcelViewModel.cs
new file mode 100644
index 0000000..a9fc16b
--- /dev/null
+++ b/StandManager/Model/ProvinciaIstatExcelViewModel.cs
@@ -0,0 +1,15 @@
+using ClosedXML.Excel;
+
+namespace StandManager.Model;
+
+public class ProvinciaIstatExcelViewModel
+{
+ public ProvinciaIstatExcelViewModel(IXLRangeRow row)
+ {
+ Sigla = row.Cell(1).GetString();
+ Provincia = row.Cell(2).GetString();
+ }
+ public string Sigla { get; set; }
+ public string Provincia { get; set; }
+
+}