Merge branch 'release/AliasAddLogicalDelete'

This commit is contained in:
Samuele Locatelli
2024-04-04 12:18:29 +02:00
21 changed files with 459 additions and 24 deletions
+5
View File
@@ -17,5 +17,10 @@ namespace EgwProxy.MagMan.DTO
/// Codice Alias in cui viene convertito
/// </summary>
public string ValAlias { get; set; } = "";
/// <summary>
/// Indica se il record sia attivo/valido (per cancellazione logica online e fisica in remoto)
/// </summary>
public bool IsActive { get; set; } = true;
}
}
+5
View File
@@ -17,5 +17,10 @@ namespace MagMan.Core.DTO
/// Codice Alias in cui viene convertito
/// </summary>
public string ValAlias { get; set; } = "";
/// <summary>
/// Indica se il record sia attivo/valido (per cancellazione logica online e fisica in remoto)
/// </summary>
public bool IsActive { get; set; } = true;
}
}
@@ -47,9 +47,12 @@ namespace MagMan.Data.Tenant.Controllers
.FirstOrDefault();
if (currData != null)
{
dbCtx
.DbSetAlias
.Remove(currData);
// 2024.04.04: cancellazione logica al posto di delete!
//dbCtx
// .DbSetAlias
// .Remove(currData);
currData.IsActive = false;
dbCtx.Entry(currData).State = EntityState.Modified;
dbCtx.SaveChanges();
done = true;
@@ -105,11 +108,9 @@ namespace MagMan.Data.Tenant.Controllers
.FirstOrDefault();
if (currData != null)
{
if (currData.ValueAlias != rec2upd.ValueAlias)
{
currData.ValueAlias = rec2upd.ValueAlias;
dbCtx.Entry(currData).State = EntityState.Modified;
}
currData.ValueAlias = rec2upd.ValueAlias;
currData.IsActive = rec2upd.IsActive;
dbCtx.Entry(currData).State = EntityState.Modified;
}
else
{
@@ -30,6 +30,11 @@ namespace MagMan.Data.Tenant.DbModels
/// </summary>
public string ValueAlias { get; set; } = "";
/// <summary>
/// Indica se il record sia attivo/valido (per cancellazione logica online e fisica in remoto)
/// </summary>
public bool IsActive { get; set; } = true;
public override bool Equals(object? obj)
{
if (obj == null)
+3
View File
@@ -67,6 +67,9 @@ namespace MagMan.Data.Tenant
{
if (!optionsBuilder.IsConfigured)
{
#if DEBUG
connString = "Server=localhost;port=3306;database=MagMan_000470;uid=MagMan_DbUser;pwd=viad@nte16!;sslmode=None;";
#endif
var serverVersion = ServerVersion.AutoDetect(connString);
optionsBuilder.UseMySql(connString, serverVersion);
}
@@ -0,0 +1,351 @@
// <auto-generated />
using System;
using MagMan.Data.Tenant;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
#nullable disable
namespace MagMan.Data.Tenant.Migrations
{
[DbContext(typeof(MagManContext))]
[Migration("20240404092207_AddAliasLogicalDelete")]
partial class AddAliasLogicalDelete
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.25")
.HasAnnotation("Relational:MaxIdentifierLength", 64);
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.AliasModel", b =>
{
b.Property<string>("Family")
.HasColumnType("varchar(255)");
b.Property<string>("ValueOriginal")
.HasColumnType("varchar(255)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<string>("ValueAlias")
.IsRequired()
.HasColumnType("longtext");
b.HasKey("Family", "ValueOriginal");
b.ToTable("AliasList");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.ConfigModel", b =>
{
b.Property<string>("KeyName")
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnOrder(0);
b.Property<string>("Note")
.IsRequired()
.HasMaxLength(250)
.HasColumnType("varchar(250)")
.HasColumnOrder(3);
b.Property<string>("Val")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnOrder(1);
b.Property<string>("ValStd")
.IsRequired()
.HasMaxLength(50)
.HasColumnType("varchar(50)")
.HasColumnOrder(2)
.HasComment("Valore di default/riferimento per la variabile");
b.HasKey("KeyName");
b.ToTable("Config");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.MaterialModel", b =>
{
b.Property<int>("MatId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<decimal>("HMm")
.HasColumnType("decimal(65,30)");
b.Property<decimal>("LMm")
.HasColumnType("decimal(65,30)");
b.Property<string>("MatCode")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("MatDesc")
.IsRequired()
.HasColumnType("longtext");
b.Property<decimal>("WMm")
.HasColumnType("decimal(65,30)");
b.HasKey("MatId");
b.ToTable("MaterialsList");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.MovMagModel", b =>
{
b.Property<int>("MovID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtRec")
.HasColumnType("datetime(6)");
b.Property<string>("Note")
.IsRequired()
.HasColumnType("longtext");
b.Property<int>("QtyRec")
.HasColumnType("int");
b.Property<int>("RawItemId")
.HasColumnType("int");
b.Property<string>("UserId")
.IsRequired()
.HasColumnType("longtext");
b.HasKey("MovID");
b.HasIndex("RawItemId");
b.ToTable("MovMag");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.ProjModel", b =>
{
b.Property<int>("ProjDbId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<string>("BTLFileName")
.IsRequired()
.HasColumnType("longtext");
b.Property<DateTime>("DtCreated")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtLastAction")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtSchedule")
.HasColumnType("datetime(6)");
b.Property<DateTime>("DtStartProd")
.HasColumnType("datetime(6)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<bool>("IsArchived")
.HasColumnType("tinyint(1)");
b.Property<int>("KeyNum")
.HasColumnType("int");
b.Property<string>("ListName")
.IsRequired()
.HasColumnType("longtext");
b.Property<string>("Machine")
.IsRequired()
.HasColumnType("longtext");
b.Property<int>("MachineID")
.HasColumnType("int");
b.Property<int>("PType")
.HasColumnType("int");
b.Property<double>("ProcTimeEst")
.HasColumnType("double");
b.Property<double>("ProcTimeReal")
.HasColumnType("double");
b.Property<string>("ProjDescription")
.IsRequired()
.HasColumnType("longtext");
b.Property<int>("ProjExtDbId")
.HasColumnType("int");
b.Property<int>("ProjExtId")
.HasColumnType("int");
b.HasKey("ProjDbId");
b.HasIndex("IsActive");
b.HasIndex("IsArchived");
b.HasIndex("KeyNum");
b.HasIndex("MachineID");
b.HasIndex("ProjExtDbId");
b.ToTable("ProjList");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.RawItemModel", b =>
{
b.Property<int>("RawItemId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<decimal>("HMm")
.HasColumnType("decimal(65,30)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<bool>("IsRemn")
.HasColumnType("tinyint(1)");
b.Property<decimal>("LMm")
.HasColumnType("decimal(65,30)");
b.Property<string>("Location")
.IsRequired()
.HasColumnType("longtext");
b.Property<int>("MatId")
.HasColumnType("int");
b.Property<string>("Note")
.IsRequired()
.HasColumnType("longtext");
b.Property<int>("QtyAvail")
.HasColumnType("int");
b.Property<decimal>("WMm")
.HasColumnType("decimal(65,30)");
b.HasKey("RawItemId");
b.HasIndex("MatId");
b.ToTable("RawItemList");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.RequestPlanModel", b =>
{
b.Property<int>("RequestId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<DateTime>("DtRequest")
.HasColumnType("datetime(6)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<int>("ProjDbId")
.HasColumnType("int");
b.Property<int>("ReqState")
.HasColumnType("int");
b.HasKey("RequestId");
b.ToTable("RequestPlan");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.ResourceModel", b =>
{
b.Property<int>("ResourceId")
.ValueGeneratedOnAdd()
.HasColumnType("int");
b.Property<int>("Qty")
.HasColumnType("int");
b.Property<int>("RawItemId")
.HasColumnType("int");
b.Property<int>("RequestId")
.HasColumnType("int");
b.HasKey("ResourceId");
b.HasIndex("RawItemId");
b.HasIndex("RequestId");
b.ToTable("ResourceList");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.MovMagModel", b =>
{
b.HasOne("MagMan.Data.Tenant.DbModels.RawItemModel", "ItemNav")
.WithMany()
.HasForeignKey("RawItemId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("ItemNav");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.RawItemModel", b =>
{
b.HasOne("MagMan.Data.Tenant.DbModels.MaterialModel", "MaterialNav")
.WithMany("RawItemList")
.HasForeignKey("MatId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("MaterialNav");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.ResourceModel", b =>
{
b.HasOne("MagMan.Data.Tenant.DbModels.RawItemModel", "ItemNav")
.WithMany()
.HasForeignKey("RawItemId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.HasOne("MagMan.Data.Tenant.DbModels.RequestPlanModel", "RequestNav")
.WithMany("ResourcesList")
.HasForeignKey("RequestId")
.OnDelete(DeleteBehavior.Restrict)
.IsRequired();
b.Navigation("ItemNav");
b.Navigation("RequestNav");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.MaterialModel", b =>
{
b.Navigation("RawItemList");
});
modelBuilder.Entity("MagMan.Data.Tenant.DbModels.RequestPlanModel", b =>
{
b.Navigation("ResourcesList");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,26 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace MagMan.Data.Tenant.Migrations
{
public partial class AddAliasLogicalDelete : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<bool>(
name: "IsActive",
table: "AliasList",
type: "tinyint(1)",
nullable: false,
defaultValue: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "IsActive",
table: "AliasList");
}
}
}
@@ -27,6 +27,9 @@ namespace MagMan.Data.Tenant.Migrations
b.Property<string>("ValueOriginal")
.HasColumnType("varchar(255)");
b.Property<bool>("IsActive")
.HasColumnType("tinyint(1)");
b.Property<string>("ValueAlias")
.IsRequired()
.HasColumnType("longtext");
+2 -1
View File
@@ -93,7 +93,8 @@ namespace MagMan.Data.Tenant.Services
{
Family = family,
ValueOriginal = origItem.ValOrig,
ValueAlias = origItem.ValAlias
ValueAlias = origItem.ValAlias,
IsActive = origItem.IsActive
};
return answ;
}
+11 -1
View File
@@ -11,7 +11,17 @@
<input type="text" class="form-control" @bind="@CurrRecord.ValueAlias">
<label class="small">Valore Alias</label>
</div>
<button class="btn btn-success" @onclick="() => DoSave()"><i class="fa-solid fa-floppy-disk"></i> Save</button>
<div class="form-floating">
<div class="form-control">
<div class="form-check form-switch">
<input type="checkbox" class="form-check-input" @bind="@CurrRecord.IsActive">
<label class="form-check-label" for="flexSwitchCheckDefault">@textActive</label>
</div>
</div>
<label class="small">Attivo / Eliminato</label>
</div>
<button class="btn btn-success" @onclick="() => DoSave()"><i class="fa-solid fa-floppy-disk"></i> Save</button>
</div>
</div>
</div>
+13
View File
@@ -36,6 +36,19 @@ namespace MagMan.UI.Components
await EC_update.InvokeAsync(true);
}
protected string textActive
{
get
{
string answ = "ND";
if (CurrRecord != null)
{
answ = CurrRecord.IsActive ? "Attivo" : "Eliminato";
}
return answ;
}
}
protected async Task DoSave()
{
bool fatto = false;
+9 -3
View File
@@ -50,11 +50,10 @@
<tbody>
@foreach (var item in ListRecords)
{
<tr class="align-middle @CheckSel(item)">
<tr class="align-middle @rowCss(item)">
<td>
@if (CurrItem == null)
{
@* <button class="btn btn-info btn-sm" @onclick="() => DoSelect(item)"><i class="fa-solid fa-search"></i></button> *@
<button class="btn btn-primary btn-sm" @onclick="() => DoSelect(item)"><i class="fa-solid fa-edit"></i></button>
}
else
@@ -72,7 +71,14 @@
<AuthorizeView Roles="SuperAdmin, Admin">
<Authorized>
<td class="text-end">
<button class="btn btn-danger btn-sm" @onclick="() => DeleteRecord(item)"><i class="fa-solid fa-trash"></i></button>
@if(item.IsActive)
{
<button class="btn btn-danger btn-sm" @onclick="() => DeleteRecord(item)"><i class="fa-solid fa-trash"></i></button>
}
else
{
<button class="btn btn-secondary btn-sm" disabled><i class="fa-solid fa-trash"></i></button>
}
</td>
</Authorized>
</AuthorizeView>
+6 -1
View File
@@ -52,9 +52,14 @@ namespace MagMan.UI.Components
#region Protected Methods
protected string CheckSel(AliasModel curItem)
protected string rowCss(AliasModel curItem)
{
string answ = curItem.Equals(CurrItem) ? "table-info" : "";
// verifico se attivo...
if(!curItem.IsActive)
{
answ += " text-strike";
}
return answ;
}
+3 -1
View File
@@ -22,7 +22,9 @@
<div class="col-md-1">
<div class="form-floating">
<span class="form-control">
<input type="checkbox" class="form-check-input" @bind="@CurrRecord.IsActive">
<div class="form-check form-switch">
<input type="checkbox" class="form-check-input" @bind="@CurrRecord.IsActive">
</div>
</span>
<label class="small">Att.</label>
</div>
+1 -1
View File
@@ -74,7 +74,7 @@ namespace MagMan.UI.Controllers
var rawData = await TService.AliasGetFilt(nKey, "MatCode");
if (rawData != null && rawData.Count > 0)
{
ListDto = rawData.Select(x => new AliasDTO() { ValOrig = x.ValueOriginal, ValAlias = x.ValueAlias }).ToList();
ListDto = rawData.Select(x => new AliasDTO() { ValOrig = x.ValueOriginal, ValAlias = x.ValueAlias, IsActive = x.IsActive }).ToList();
}
return ListDto;
}
+1 -1
View File
@@ -2,7 +2,7 @@
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<Version>1.0.2403.0108</Version>
<Version>1.0.2404.0412</Version>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<EnableNETAnalyzers>true</EnableNETAnalyzers>
-1
View File
@@ -15,7 +15,6 @@
</div>
</CascadingValue>
</CascadingValue>
@* <article class="content px-4"> *@
<article class="content pt-1 pt-lg-2 mb-5 px-0 px-lg-1">
@Body
</article>
+1 -1
View File
@@ -1,6 +1,6 @@
<body>
<i>MagMan - Wood Warehouse Management System</i>
<h4>Versione: 1.0.2403.0108</h4>
<h4>Versione: 1.0.2404.0412</h4>
<br /> Note di rilascio:
<ul>
<li>
+1 -1
View File
@@ -1 +1 @@
1.0.2403.0108
1.0.2404.0412
+1 -1
View File
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<item>
<version>1.0.2403.0108</version>
<version>1.0.2404.0412</version>
<url>http://nexus.steamware.net/repository/SWS/MagMan/stable/0/MagMan.UI.zip</url>
<changelog>http://nexus.steamware.net/repository/SWS/MagMan/stable/0/ChangeLog.html</changelog>
<mandatory>false</mandatory>
+3 -3
View File
@@ -178,14 +178,14 @@ namespace DemoApp
Console.WriteLine(sep);
foreach (var itemAlias in listAlias)
{
Console.WriteLine($"{itemAlias.ValOrig} --> {itemAlias.ValAlias}");
Console.WriteLine($"{itemAlias.ValOrig} --> {itemAlias.ValAlias} | active: {itemAlias.IsActive} ");
}
Console.WriteLine(sep);
}
List<AliasDTO> alias2send = new List<AliasDTO>();
alias2send.Add(new AliasDTO() { ValOrig = "Item01", ValAlias = "Gl24h" });
alias2send.Add(new AliasDTO() { ValOrig = "Item02", ValAlias = "Gl24h" });
alias2send.Add(new AliasDTO() { ValOrig = "Item01", ValAlias = "Gl24h", IsActive = true });
alias2send.Add(new AliasDTO() { ValOrig = "Item02", ValAlias = "Gl24h", IsActive = true });
var resAliasSend = commLib.AliasSend(alias2send);
Console.WriteLine("Enter to close");