- Import Province
This commit is contained in:
@ -27,6 +27,8 @@
|
||||
|
||||
<RadzenUpload class="btn-5 d-none d-sm-inline-block" Change=@onUploadComuni ChooseText="Importa comuni da excel" />
|
||||
|
||||
<RadzenUpload class="btn-5 d-none d-sm-inline-block" Change=@onUploadProvince ChooseText="Importa province da excel" />
|
||||
|
||||
<a href="/management/Clienti/Modifica" class="btn btn-primary btn-5 d-none d-sm-inline-block">
|
||||
Nuovo cliente
|
||||
</a>
|
||||
@ -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<Province_Import>("Importazione province", new Dictionary<string, object>() { { "args", args } });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
var er = ex.Message;
|
||||
await _dialogService.Alert("Si è verificato un errore durante l'importazione del file.", "Errore");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -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<Destinazione> 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;
|
||||
|
||||
@ -0,0 +1,69 @@
|
||||
@using ClosedXML.Excel
|
||||
@using Microsoft.EntityFrameworkCore
|
||||
@using StandManager.Model
|
||||
@attribute [Authorize]
|
||||
|
||||
@rendermode InteractiveServer
|
||||
|
||||
@inject AuthenticationStateProvider auth
|
||||
|
||||
<RadzenStack Gap="1rem" class="rz-m-12">
|
||||
<RadzenProgressBar Value="@counter" Max="@provinceTotali" Unit="@counterLabel" AriaLabel="" />
|
||||
</RadzenStack>
|
||||
|
||||
@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<ProvinciaIstatExcelViewModel>(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<ProvinciaIstat> mapProvincia(ProvinciaIstat model, ProvinciaIstatExcelViewModel row)
|
||||
{
|
||||
model.Sigla = row.Sigla;
|
||||
model.Provincia = row.Provincia;
|
||||
|
||||
return model;
|
||||
}
|
||||
}
|
||||
15
StandManager/Model/ProvinciaIstatExcelViewModel.cs
Normal file
15
StandManager/Model/ProvinciaIstatExcelViewModel.cs
Normal file
@ -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; }
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user