diff --git a/FSI.Prj.Mgt/FSI.Prj.Mgt/Controllers/OrganizationController.cs b/FSI.Prj.Mgt/FSI.Prj.Mgt/Controllers/OrganizationController.cs index bf81a49..8584a78 100644 --- a/FSI.Prj.Mgt/FSI.Prj.Mgt/Controllers/OrganizationController.cs +++ b/FSI.Prj.Mgt/FSI.Prj.Mgt/Controllers/OrganizationController.cs @@ -21,7 +21,8 @@ namespace FSI.Prj.Mgt.Controllers public async Task Index(string searchString, int? page) { - IQueryable items = _context.Organizations.Include(x => x.Parent); + await UpdateFullShortName(_context.Organizations.ToList()); + IQueryable items = _context.Organizations.Include(x => x.Parent).OrderBy(x => x.FullShortName); if (!string.IsNullOrEmpty(searchString)) { @@ -80,7 +81,7 @@ namespace FSI.Prj.Mgt.Controllers { var item = await _context.Organizations.FindAsync(id); - if (item == null) + if (item == null) // kein Fund { return NotFound(); } @@ -106,6 +107,13 @@ namespace FSI.Prj.Mgt.Controllers ModelState.Remove("Parents"); ModelState.Remove("FullShortName"); + if (string.IsNullOrEmpty(item.FullShortName)) + { + item.FullShortName = GetFullShortName(_context.Organizations.ToList(), item.ParentId, item.ShortName); + } + + item.ModificationTimeStamp = DateTime.Now; // Zeitstempel für Modifikation + if (ModelState.IsValid) { @@ -115,18 +123,22 @@ namespace FSI.Prj.Mgt.Controllers } if (id == 0) // Insert - { - _context.Add(item); - await _context.SaveChangesAsync(); - + { + try + { + item.CreationTimeStamp = item.ModificationTimeStamp; // Zeitstempel für Erstellung + _context.Add(item); + await _context.SaveChangesAsync(); + } + catch (Exception ex) + { + } } else // Update { try - { - _context.Update(item); - + { _context.Update(item); await _context.SaveChangesAsync(); } @@ -142,6 +154,7 @@ namespace FSI.Prj.Mgt.Controllers { var errors = ModelState.SelectMany(x => x.Value.Errors.Select(z => z.Exception)); } + item.Parents.Add(new Organization()); return Json(new { isValid = false, html = Helper.RenderRazorViewToString(this, "AddOrEdit", item) }); } @@ -174,17 +187,17 @@ namespace FSI.Prj.Mgt.Controllers // return RedirectToAction("Index", "Organization"); //} - public async void UpdateFullShortName() + public async Task UpdateFullShortName(List organizations) { - foreach (var organization in _context.Organizations) + foreach (var organization in organizations) { - foreach (var item in _context.Organizations) + foreach (var item in organizations) { - item.FullShortName = GetFullShortName(_context.Organizations.ToList(), item.ParentId, item.ShortName); + item.FullShortName = GetFullShortName(organizations, item.ParentId, item.ShortName); _context.Update(item); - await _context.SaveChangesAsync(); - } - } + } + } + await _context.SaveChangesAsync(); } private string GetFullShortName(List items, int? parentId, string? name) @@ -204,9 +217,7 @@ namespace FSI.Prj.Mgt.Controllers } } - return string.Empty; + return name; } - - } } \ No newline at end of file diff --git a/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20230929113426_Init.Designer.cs b/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20231003081806_Init.Designer.cs similarity index 98% rename from FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20230929113426_Init.Designer.cs rename to FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20231003081806_Init.Designer.cs index b1d3ef9..fa5a6b9 100644 --- a/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20230929113426_Init.Designer.cs +++ b/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20231003081806_Init.Designer.cs @@ -12,7 +12,7 @@ using Microsoft.EntityFrameworkCore.Storage.ValueConversion; namespace FSI.Prj.Mgt.Data.Migrations { [DbContext(typeof(ApplicationDbContext))] - [Migration("20230929113426_Init")] + [Migration("20231003081806_Init")] partial class Init { /// @@ -33,6 +33,9 @@ namespace FSI.Prj.Mgt.Data.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + b.Property("CreationTimeStamp") + .HasColumnType("datetime2"); + b.Property("Description") .HasColumnType("nvarchar(max)"); @@ -40,6 +43,9 @@ namespace FSI.Prj.Mgt.Data.Migrations .IsRequired() .HasColumnType("nvarchar(max)"); + b.Property("ModificationTimeStamp") + .HasColumnType("datetime2"); + b.Property("Name") .IsRequired() .HasColumnType("nvarchar(max)"); diff --git a/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20230929113426_Init.cs b/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20231003081806_Init.cs similarity index 94% rename from FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20230929113426_Init.cs rename to FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20231003081806_Init.cs index 5eab674..1f0b904 100644 --- a/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20230929113426_Init.cs +++ b/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/20231003081806_Init.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore.Migrations; +using System; +using Microsoft.EntityFrameworkCore.Migrations; #nullable disable @@ -21,6 +22,8 @@ namespace FSI.Prj.Mgt.Data.Migrations Description = table.Column(type: "nvarchar(max)", nullable: true), ParentId = table.Column(type: "int", nullable: true), Type = table.Column(type: "int", nullable: false), + CreationTimeStamp = table.Column(type: "datetime2", nullable: false), + ModificationTimeStamp = table.Column(type: "datetime2", nullable: false), FullShortName = table.Column(type: "nvarchar(max)", nullable: false) }, constraints: table => diff --git a/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/ApplicationDbContextModelSnapshot.cs b/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/ApplicationDbContextModelSnapshot.cs index 35e43e5..81d3395 100644 --- a/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/ApplicationDbContextModelSnapshot.cs +++ b/FSI.Prj.Mgt/FSI.Prj.Mgt/Data/Migrations/ApplicationDbContextModelSnapshot.cs @@ -30,6 +30,9 @@ namespace FSI.Prj.Mgt.Data.Migrations SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property("Id")); + b.Property("CreationTimeStamp") + .HasColumnType("datetime2"); + b.Property("Description") .HasColumnType("nvarchar(max)"); @@ -37,6 +40,9 @@ namespace FSI.Prj.Mgt.Data.Migrations .IsRequired() .HasColumnType("nvarchar(max)"); + b.Property("ModificationTimeStamp") + .HasColumnType("datetime2"); + b.Property("Name") .IsRequired() .HasColumnType("nvarchar(max)"); diff --git a/FSI.Prj.Mgt/FSI.Prj.Mgt/Models/Organization.cs b/FSI.Prj.Mgt/FSI.Prj.Mgt/Models/Organization.cs index 80c83b9..aad9e8c 100644 --- a/FSI.Prj.Mgt/FSI.Prj.Mgt/Models/Organization.cs +++ b/FSI.Prj.Mgt/FSI.Prj.Mgt/Models/Organization.cs @@ -38,8 +38,15 @@ namespace FSI.Prj.Mgt.Models [Required(ErrorMessage = "Dieses Feld wird benötigt.")] public OrganizationType Type { get; set; } - [DisplayName("vollständiger Kurzname")] - public virtual string FullShortName { get; set; } + [DisplayName("Erstellungsdatum")] + public DateTime CreationTimeStamp { get; set; } + + [DisplayName("Änderungsdatum")] + public DateTime ModificationTimeStamp { get; set; } + + [DisplayName("vollständiger Kurzname")] + public string FullShortName { get; set; } + } public enum OrganizationType diff --git a/FSI.Prj.Mgt/FSI.Prj.Mgt/Views/Organization/AddOrEdit.cshtml b/FSI.Prj.Mgt/FSI.Prj.Mgt/Views/Organization/AddOrEdit.cshtml index 41dc2c5..3773345 100644 --- a/FSI.Prj.Mgt/FSI.Prj.Mgt/Views/Organization/AddOrEdit.cshtml +++ b/FSI.Prj.Mgt/FSI.Prj.Mgt/Views/Organization/AddOrEdit.cshtml @@ -10,8 +10,10 @@
- - + + + +
@@ -37,8 +39,8 @@
- - + +
diff --git a/FSI.Prj.Mgt/FSI.Prj.Mgt/Views/Organization/_ViewAll.cshtml b/FSI.Prj.Mgt/FSI.Prj.Mgt/Views/Organization/_ViewAll.cshtml index e3e5a2d..372e4b1 100644 --- a/FSI.Prj.Mgt/FSI.Prj.Mgt/Views/Organization/_ViewAll.cshtml +++ b/FSI.Prj.Mgt/FSI.Prj.Mgt/Views/Organization/_ViewAll.cshtml @@ -10,10 +10,10 @@ - @Html.DisplayNameFor(x => x.GetEnumerator().Current.Name) + @Html.DisplayNameFor(x => x.GetEnumerator().Current.ShortName) - @Html.DisplayNameFor(x => x.GetEnumerator().Current.ShortName) + @Html.DisplayNameFor(x => x.GetEnumerator().Current.Name) @Html.DisplayNameFor(x => x.GetEnumerator().Current.Description) @@ -30,7 +30,7 @@ - neue + neu @@ -44,12 +44,12 @@ @Html.DisplayFor(modelItem => item.Id) - - @Html.DisplayFor(modelItem => item.Name) - @Html.DisplayFor(modelItem => item.ShortName) + + @Html.DisplayFor(modelItem => item.Name) + @Html.DisplayFor(modelItem => @item.Description)