updated to new vs version

pull/1/head
DJh2o2 2022-11-09 09:14:18 +07:00
parent 602dd98352
commit b7529ab03d
21 changed files with 358 additions and 377 deletions

@ -1,4 +1,4 @@
namespace Gat
namespace Gremlin.Gat
{
internal class Controls
{

@ -70,8 +70,8 @@ namespace Gremlin.GremlinData.DBClasses
{
using (GremlinContext gremlinContext = new())
{
gremlinContext.Database.EnsureDeleted();
gremlinContext.Database.EnsureCreated();
_ = gremlinContext.Database.EnsureDeleted();
_ = gremlinContext.Database.EnsureCreated();
}
}
@ -115,7 +115,7 @@ namespace Gremlin.GremlinData.DBClasses
using (GremlinContext gremlinContext = new())
{
_ = gremlinContext.ProductLines.Add(PlToBeAdded);
gremlinContext.SaveChanges();
_ = gremlinContext.SaveChanges();
}
}
@ -138,13 +138,13 @@ namespace Gremlin.GremlinData.DBClasses
AccountTypeDescription = AccountTypeDescription[i],
DataStatus = Status.Active.ToString(),
};
MetaDataSetter.ForImport(ATtoBeAdded, "DbInitializer", "DbInitializer");
_ = MetaDataSetter.ForImport(ATtoBeAdded, "DbInitializer", "DbInitializer");
using (GremlinContext db = new())
{
db.AccountTypes.Add(ATtoBeAdded);
db.SaveChanges();
_ = db.AccountTypes.Add(ATtoBeAdded);
_ = db.SaveChanges();
}
}
@ -166,13 +166,13 @@ namespace Gremlin.GremlinData.DBClasses
SubMarketDescription = SubMarketDescriptions[i],
DataStatus = Status.Active.ToString(),
};
MetaDataSetter.ForImport(SMtoBeAdded, "DbInitializer", "DbInitializer");
_ = MetaDataSetter.ForImport(SMtoBeAdded, "DbInitializer", "DbInitializer");
using (GremlinContext db = new())
{
db.SubMarkets.Add(SMtoBeAdded);
db.SaveChanges();
_ = db.SubMarkets.Add(SMtoBeAdded);
_ = db.SaveChanges();
}
}
@ -385,7 +385,7 @@ namespace Gremlin.GremlinData.DBClasses
// AccountType und SubMarket aus DB laden, damit der Datensatz vom Context verfolgt wird und EF Core nicht versucht, diesen standardmäßig neu anzulegen.
account.AccountType = ResolveAccountType(db, account.AccountType.AccountTypeCode);
account.SubMarket = ResolveSubmarket(db, account.SubMarket.SubMarketCode);
MetaDataSetter.ForImport(account, "DbInitializer", "Function DbHelper.DbInitializer");
_ = MetaDataSetter.ForImport(account, "DbInitializer", "Function DbHelper.DbInitializer");
}
db.Accounts.AddRange(seedAccounts);
@ -501,7 +501,7 @@ namespace Gremlin.GremlinData.DBClasses
Gender = (byte)Gender.Male,
Department = RandomString(9),
};
MetaDataSetter.ForImport(newContact, "Tester", "Seeding data for testing.");
_ = MetaDataSetter.ForImport(newContact, "Tester", "Seeding data for testing.");
Account newAccount = new()
@ -514,7 +514,7 @@ namespace Gremlin.GremlinData.DBClasses
EMail = RandomString(9) + "@" + RandomString(9) + "." + RandomString(3),
PhoneNumber = "+49 " + r.Next().ToString(),
};
MetaDataSetter.ForImport(newAccount, "Tester", "Seeding data for testing.");
_ = MetaDataSetter.ForImport(newAccount, "Tester", "Seeding data for testing.");
AccountType accountType = db.AccountTypes
@ -570,7 +570,7 @@ namespace Gremlin.GremlinData.DBClasses
// Skip the row with the column names:
if (dataHasHeading)
{
csvParser.ReadLine();
_ = csvParser.ReadLine();
}
while (!csvParser.EndOfData)
@ -667,15 +667,15 @@ namespace Gremlin.GremlinData.DBClasses
// AccountID aus DB laden, damit der Datensatz vom Context verfolgt wird und EF Core nicht versucht, diesen standardmäßig neu anzulegen.
contact.Account = ResolveAccountById(db, uint.Parse(contact.Notes));
contact.Notes = "";
MetaDataSetter.ForImport(contact, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportContactsFromCSV)");
_ = MetaDataSetter.ForImport(contact, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportContactsFromCSV)");
}
db.Contacts.AddRange(ContactsReadFromFile);
db.SaveChanges();
_ = db.SaveChanges();
}
}
//Bestätigung senden
MessageBox.Show($"Es wurden {ContactsReadFromFile.Count} Contacts erfolgreich der Datenbank hinzugefügt.");
_ = MessageBox.Show($"Es wurden {ContactsReadFromFile.Count} Contacts erfolgreich der Datenbank hinzugefügt.");
return true;
}
@ -728,7 +728,7 @@ namespace Gremlin.GremlinData.DBClasses
// Skip the row with the column names:
if (dataHasHeading)
{
csvParser.ReadLine();
_ = csvParser.ReadLine();
}
while (!csvParser.EndOfData)
@ -868,14 +868,14 @@ namespace Gremlin.GremlinData.DBClasses
//Default
account.SubMarket = ResolveSubmarket(db, "COT");
}
MetaDataSetter.ForImport(account, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportAccountsFromCSV)");
_ = MetaDataSetter.ForImport(account, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportAccountsFromCSV)");
}
db.Accounts.AddRange(AccountsReadFromFile);
db.SaveChanges();
_ = db.SaveChanges();
//Bestätigung senden
MessageBox.Show($"Es wurden {AccountsReadFromFile.Count} Accounts erfolgreich der Datenbank hinzugefügt.");
_ = MessageBox.Show($"Es wurden {AccountsReadFromFile.Count} Accounts erfolgreich der Datenbank hinzugefügt.");
}
}
return true;
@ -1024,7 +1024,7 @@ namespace Gremlin.GremlinData.DBClasses
//Validierten Account der Liste hinzufügen:
if (DataHasError == false)
{
ImportedAccount.AddIfUniqueTo(AccountsReadFromFile);
_ = ImportedAccount.AddIfUniqueTo(AccountsReadFromFile);
}
@ -1141,7 +1141,7 @@ namespace Gremlin.GremlinData.DBClasses
account.SubMarket = subMarket;
account.AccountType = ResolveAccountType(db, account.AccountType.AccountTypeCode);
account.SubMarket = ResolveSubmarket(db, account.SubMarket.SubMarketCode);
MetaDataSetter.ForImport(account, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportAccountsFromCSV)");
_ = MetaDataSetter.ForImport(account, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportAccountsFromCSV)");
}
db.Accounts.AddRange(AccountsReadFromFile);
@ -1157,7 +1157,7 @@ namespace Gremlin.GremlinData.DBClasses
{
contact.Account = ResolveAccountById(db, uint.Parse(contact.Notes));
contact.Notes = "";
MetaDataSetter.ForImport(contact, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportContactsFromCSV)");
_ = MetaDataSetter.ForImport(contact, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportContactsFromCSV)");
}
db.Contacts.AddRange(ContactsReadFromFile);
@ -1238,7 +1238,7 @@ namespace Gremlin.GremlinData.DBClasses
AccountName = fields[2] is "" or "RB" ? "Agilent Technologies" : fields[2]
}
};
MetaDataSetter.ForImport(ImportedCD, "Importer", "Initial Importer by CD-ImporterFomCsv");
_ = MetaDataSetter.ForImport(ImportedCD, "Importer", "Initial Importer by CD-ImporterFomCsv");
CDsReadFromFile.Add(ImportedCD);
}
@ -1274,7 +1274,7 @@ namespace Gremlin.GremlinData.DBClasses
ProductLine = ResolveProductLine(db, "3P")
};
new3PPProduct.CustomDescription.Supplier = ResolveAccountByName(db, new3PPProduct.CustomDescription.Supplier.AccountName);
MetaDataSetter.ForImport(new3PPProduct, "Custom Desciption Importer", "Created at import from Custom Descriptions.");
_ = MetaDataSetter.ForImport(new3PPProduct, "Custom Desciption Importer", "Created at import from Custom Descriptions.");
thirdPartyProductsFromImportedCDs.Add(new3PPProduct);
}
@ -1314,16 +1314,16 @@ namespace Gremlin.GremlinData.DBClasses
continue;
}
CD.Supplier = agilent;
MetaDataSetter.ForImport(CD, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportCustomDescriptionsFromCsv)");
_ = MetaDataSetter.ForImport(CD, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportCustomDescriptionsFromCsv)");
//add to final list of CDs, that will go into the db.
importedCDsWithEFReferences.Add(CD);
}
db.CustomDescriptions.AddRange(importedCDsWithEFReferences);
db.SaveChanges();
_ = db.SaveChanges();
//Bestätigung senden
MessageBox.Show($"Es wurden {importedCDsWithEFReferences.Count} eigene Beschreibungen erfolgreich der Datenbank hinzugefügt.{Environment.NewLine}Es wurden {thirdPartyProductsFromImportedCDs.Count} 3PP-Produkte neu angelegt.");
_ = MessageBox.Show($"Es wurden {importedCDsWithEFReferences.Count} eigene Beschreibungen erfolgreich der Datenbank hinzugefügt.{Environment.NewLine}Es wurden {thirdPartyProductsFromImportedCDs.Count} 3PP-Produkte neu angelegt.");
}
return true;
}
@ -1386,7 +1386,7 @@ namespace Gremlin.GremlinData.DBClasses
importedCD.ProductNumber = stringsRead.ElementAt(0);
importedCD.OptionNumber = stringsRead.ElementAt(1) == "" ? null : stringsRead.ElementAt(1);
importedCD.Supplier.AccountName = stringsRead.ElementAt(2) == "" || stringsRead.ElementAt(2) == "RB" ? "Agilent Technologies" : stringsRead.ElementAt(2);
importedCD.Supplier.AccountName = stringsRead.ElementAt(2) is "" or "RB" ? "Agilent Technologies" : stringsRead.ElementAt(2);
importedCD.Heading = stringsRead.ElementAt(3);
importedCD.DescriptionText = stringsRead.ElementAt(4);
importedCD.CoverletterText = stringsRead.ElementAt(5);
@ -1431,7 +1431,7 @@ namespace Gremlin.GremlinData.DBClasses
ProductLine = ResolveProductLine(db, "3P")
};
new3PPProduct.CustomDescription.Supplier = ResolveAccountByName(db, new3PPProduct.CustomDescription.Supplier.AccountName);
MetaDataSetter.ForImport(new3PPProduct, "Custom Desciption Importer", "Created at import from Custom Descriptions.");
_ = MetaDataSetter.ForImport(new3PPProduct, "Custom Desciption Importer", "Created at import from Custom Descriptions.");
thirdPartyProductsFromImportedCDs.Add(new3PPProduct);
}
@ -1469,7 +1469,7 @@ namespace Gremlin.GremlinData.DBClasses
CDsWithoutEFReferences.Add(CD);
continue;
}
MetaDataSetter.ForImport(CD, "DocxImporter", "Initial import by CSV Importer (Function DbHelper.ImportCustomDescriptionsFromDocx)");
_ = MetaDataSetter.ForImport(CD, "DocxImporter", "Initial import by CSV Importer (Function DbHelper.ImportCustomDescriptionsFromDocx)");
//add to final list of CDs, that will go into the db.
importedCDsWithEFReferences.Add(CD);
@ -1599,7 +1599,7 @@ namespace Gremlin.GremlinData.DBClasses
SapShortDescription = product.SapShortDescription,
Weight = product.Weight,
};
MetaDataSetter.ForImport(UpdatedProduct, "CPL Updater", "Product Update");
_ = MetaDataSetter.ForImport(UpdatedProduct, "CPL Updater", "Product Update");
UpdatedProduct.ProductLine = product.ProductLine.ProductLineCode == ExistingProduct.ProductLine.ProductLineCode
@ -1928,13 +1928,13 @@ namespace Gremlin.GremlinData.DBClasses
foreach (Product product in products)
{
product.ProductLine = productLines.Find(x => x.ProductLineCode == product.ProductLine.ProductLineCode);
MetaDataSetter.ForImport(product, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportProductsFromCSV)");
_ = MetaDataSetter.ForImport(product, "CSVImporter", "Initial import by CSV Importer (Function DbHelper.ImportProductsFromCSV)");
}
db.Products.AddRange(products);
db.SaveChanges();
_ = db.SaveChanges();
//Bestätigung senden
MessageBox.Show($"Es wurden {products.Count} Produkte erfolgreich der Datenbank hinzugefügt.");
_ = MessageBox.Show($"Es wurden {products.Count} Produkte erfolgreich der Datenbank hinzugefügt.");
return true;
}
}
@ -1944,21 +1944,14 @@ namespace Gremlin.GremlinData.DBClasses
string errorMessage = $"Source: {ex.Source}{Environment.NewLine}" +
$"Message: {ex.Message}{Environment.NewLine}{Environment.NewLine}" +
$"Contact: {errorRaiser}";
MessageBox.Show(errorMessage);
_ = MessageBox.Show(errorMessage);
}
internal static string ExtractFileName(string filepath, bool withExtension = false)
{
string[] fields = filepath.Split(@"\");
string[] filename = fields[fields.Length - 1].Split(".");
if (withExtension)
{
return fields[fields.Length - 1];
}
else
{
return filename[0];
}
return withExtension ? fields[fields.Length - 1] : filename[0];
}
private static string Normalize(string input)

@ -9,40 +9,40 @@ namespace Gremlin.GremlinData.DBClasses
public void Configure(EntityTypeBuilder<Account> entity)
{
entity.HasKey(e => e.AccountId);
entity.HasMany(d => d.Contacts).WithOne(p => p.Account).IsRequired(true);
entity.HasOne(d => d.AccountType).WithMany(p => p.Accounts).IsRequired(true).OnDelete(DeleteBehavior.Restrict);
entity.HasOne(d => d.SubMarket).WithMany(p => p.Accounts).IsRequired(true).OnDelete(DeleteBehavior.Restrict);
entity.HasAlternateKey(e => e.SAPAccountNumber); // =Unique
entity.Property(e => e.AccountId).ValueGeneratedOnAdd();
entity.Property(e => e.ParentAccountId);
entity.Property(e => e.AccountName).IsRequired(true).HasMaxLength(250);
_ = entity.HasKey(e => e.AccountId);
_ = entity.HasMany(d => d.Contacts).WithOne(p => p.Account).IsRequired(true);
_ = entity.HasOne(d => d.AccountType).WithMany(p => p.Accounts).IsRequired(true).OnDelete(DeleteBehavior.Restrict);
_ = entity.HasOne(d => d.SubMarket).WithMany(p => p.Accounts).IsRequired(true).OnDelete(DeleteBehavior.Restrict);
_ = entity.HasAlternateKey(e => e.SAPAccountNumber); // =Unique
_ = entity.Property(e => e.AccountId).ValueGeneratedOnAdd();
_ = entity.Property(e => e.ParentAccountId);
_ = entity.Property(e => e.AccountName).IsRequired(true).HasMaxLength(250);
//.HasColumnType("VARCHAR(250)") ist überflüssig, da .HasMaxLength(250) VARCHAR(250) impliziert.
entity.Property(e => e.Notes);
entity.Property(e => e.Street).IsRequired(true).HasMaxLength(100);
entity.Property(e => e.ZIP).IsRequired(true).HasColumnType("Char(5)");
entity.Property(e => e.City).IsRequired(true).HasMaxLength(50);
entity.Property(e => e.FloorOrBuilding).HasMaxLength(50);
entity.Property(e => e.Longitude);
entity.Property(e => e.Latitude);
entity.Property(e => e.PhoneNumber).IsRequired(true).HasMaxLength(30);
entity.Property(e => e.FaxNumber).HasMaxLength(30);
entity.Property(e => e.Webpage).HasMaxLength(250);
entity.Property(e => e.EMail).HasMaxLength(150);
entity.Property(e => e.SAPAccountNumber).IsRequired(true);
entity.Property(e => e.AccountCreatedInSAPOn).IsRequired(true);
entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
entity.Property(e => e.DataVersionComment).HasDefaultValue("");
entity.Property(e => e.DataStatus).IsRequired(true);
_ = entity.Property(e => e.Notes);
_ = entity.Property(e => e.Street).IsRequired(true).HasMaxLength(100);
_ = entity.Property(e => e.ZIP).IsRequired(true).HasColumnType("Char(5)");
_ = entity.Property(e => e.City).IsRequired(true).HasMaxLength(50);
_ = entity.Property(e => e.FloorOrBuilding).HasMaxLength(50);
_ = entity.Property(e => e.Longitude);
_ = entity.Property(e => e.Latitude);
_ = entity.Property(e => e.PhoneNumber).IsRequired(true).HasMaxLength(30);
_ = entity.Property(e => e.FaxNumber).HasMaxLength(30);
_ = entity.Property(e => e.Webpage).HasMaxLength(250);
_ = entity.Property(e => e.EMail).HasMaxLength(150);
_ = entity.Property(e => e.SAPAccountNumber).IsRequired(true);
_ = entity.Property(e => e.AccountCreatedInSAPOn).IsRequired(true);
_ = entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
_ = entity.Property(e => e.DataVersionComment).HasDefaultValue("");
_ = entity.Property(e => e.DataStatus).IsRequired(true);
//.HasDefaultValue("Active") //Default-Wert wird nicht gesetzt?!? Bug in EF Core?
entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
//.IsRowVersion() impliziert .ValueGeneratedOnAddOrUpdate() und .IsConcurrencyToken(true)
entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -50,32 +50,32 @@ namespace Gremlin.GremlinData.DBClasses
{
public void Configure(EntityTypeBuilder<Contact> entity)
{
entity.HasKey(e => e.ContactId);
entity.HasOne(p => p.Account).WithMany(d => d.Contacts).IsRequired(true);
_ = entity.HasKey(e => e.ContactId);
_ = entity.HasOne(p => p.Account).WithMany(d => d.Contacts).IsRequired(true);
//entity.HasAlternateKey(e => e.SAPContactNumber);
entity.Property(e => e.ContactId);
entity.Property(e => e.SAPContactNumber).IsRequired(true);
entity.Property(e => e.AcademicTitle);
entity.Property(e => e.FirstName);
entity.Property(e => e.LastName).IsRequired(true);
entity.Property(e => e.Gender);
_ = entity.Property(e => e.ContactId);
_ = entity.Property(e => e.SAPContactNumber).IsRequired(true);
_ = entity.Property(e => e.AcademicTitle);
_ = entity.Property(e => e.FirstName);
_ = entity.Property(e => e.LastName).IsRequired(true);
_ = entity.Property(e => e.Gender);
//.IsRequired(true) darf nicht gesetzt werden, da sonst vom DB-Engine NULL nicht erlaubt wird (trotz Definition als Bool? im Code. MySQL kennt kein Bool, sondern wandelt das intern in Tinyint um).
entity.Property(e => e.OptInStatus).HasDefaultValue(null);
entity.Property(e => e.IsReference).HasDefaultValue(false);
entity.Property(e => e.Notes);
entity.Property(e => e.ValidatedContact).HasDefaultValue(false);
entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
entity.Property(e => e.DataVersionComment).HasDefaultValue("");
entity.Property(e => e.DataStatus).IsRequired(true);
_ = entity.Property(e => e.OptInStatus).HasDefaultValue(null);
_ = entity.Property(e => e.IsReference).HasDefaultValue(false);
_ = entity.Property(e => e.Notes);
_ = entity.Property(e => e.ValidatedContact).HasDefaultValue(false);
_ = entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
_ = entity.Property(e => e.DataVersionComment).HasDefaultValue("");
_ = entity.Property(e => e.DataStatus).IsRequired(true);
//.HasDefaultValue("Active") //Default-Wert wird nicht gesetzt?!? Bug in EF Core?
entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
//.IsRowVersion() impliziert .ValueGeneratedOnAddOrUpdate() und .IsConcurrencyToken(true)
entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -84,35 +84,35 @@ namespace Gremlin.GremlinData.DBClasses
{
public void Configure(EntityTypeBuilder<Quote> entity)
{
entity.HasKey(e => e.QuoteId);
entity.HasMany(d => d.LineItems).WithOne(p => p.Quote).IsRequired(false).OnDelete(DeleteBehavior.Cascade);
entity.Property(e => e.QuotationNumber).HasColumnType("VARCHAR(255)").IsRequired(true).ValueGeneratedOnAdd();
entity.Property(e => e.QuotationDate).IsRequired(true).ValueGeneratedOnAdd();
entity.Property(e => e.ValidUntil);
entity.Property(e => e.ValidFor).IsRequired(true);
entity.Ignore("SalesRep");
entity.Property(e => e.TotalListprice);
entity.Property(e => e.TotalDiscount);
entity.Property(e => e.TotalNet);
entity.Property(e => e.VAT);
entity.Property(e => e.TotalGross);
entity.Property(e => e.QuoteContains3PP).HasDefaultValue(false);
entity.Property(e => e.QuoteContainsRB).HasDefaultValue(false);
entity.Property(e => e.QuoteTemplate);
entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
entity.Property(e => e.DataVersionComment).HasDefaultValue("");
entity.Property(e => e.DataStatus).IsRequired(true);
_ = entity.HasKey(e => e.QuoteId);
_ = entity.HasMany(d => d.LineItems).WithOne(p => p.Quote).IsRequired(false).OnDelete(DeleteBehavior.Cascade);
_ = entity.Property(e => e.QuotationNumber).HasColumnType("VARCHAR(255)").IsRequired(true).ValueGeneratedOnAdd();
_ = entity.Property(e => e.QuotationDate).IsRequired(true).ValueGeneratedOnAdd();
_ = entity.Property(e => e.ValidUntil);
_ = entity.Property(e => e.ValidFor).IsRequired(true);
_ = entity.Ignore("SalesRep");
_ = entity.Property(e => e.TotalListprice);
_ = entity.Property(e => e.TotalDiscount);
_ = entity.Property(e => e.TotalNet);
_ = entity.Property(e => e.VAT);
_ = entity.Property(e => e.TotalGross);
_ = entity.Property(e => e.QuoteContains3PP).HasDefaultValue(false);
_ = entity.Property(e => e.QuoteContainsRB).HasDefaultValue(false);
_ = entity.Property(e => e.QuoteTemplate);
_ = entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
_ = entity.Property(e => e.DataVersionComment).HasDefaultValue("");
_ = entity.Property(e => e.DataStatus).IsRequired(true);
//.HasDefaultValue("Active") //Default-Wert wird nicht gesetzt?!? Bug in EF Core?
entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
//.IsRowVersion() impliziert .ValueGeneratedOnAddOrUpdate() und .IsConcurrencyToken(true)
entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -120,36 +120,36 @@ namespace Gremlin.GremlinData.DBClasses
{
public void Configure(EntityTypeBuilder<LineItem> entity)
{
entity.HasKey(e => e.LineItemId);
entity.HasOne(p => p.Quote).WithMany(d => d.LineItems).HasForeignKey(fk => fk.QuoteId).IsRequired(true).OnDelete(DeleteBehavior.Cascade);
entity.Property(e => e.Position).IsRequired(true);
entity.Property(e => e.Amount).IsRequired(true);
entity.Property(e => e.ProductNumber).IsRequired(true);
entity.Property(e => e.OptionNumber);
entity.Property(e => e.SapShortDescription);
entity.Property(e => e.SapLongDescription);
entity.Property(e => e.ProductLine);
entity.Property(e => e.TotalDiscount).IsRequired(true).HasDefaultValue(0);
entity.Property(e => e.SalesDiscount).IsRequired(true).HasDefaultValue(0);
entity.Property(e => e.PromotionalDiscount).IsRequired(true).HasDefaultValue(0);
entity.Property(e => e.ContractualDiscount).IsRequired(true).HasDefaultValue(0);
entity.Property(e => e.DemoDiscount).IsRequired(true).HasDefaultValue(0);
entity.Property(e => e.ListPrice).IsRequired(true);
entity.Property(e => e.ExtendedListPrice).IsRequired(true);
entity.Property(e => e.NetPrice).IsRequired(true);
entity.Property(e => e.Total).IsRequired(true);
entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
entity.Property(e => e.DataVersionComment).HasDefaultValue("");
entity.Property(e => e.DataStatus).IsRequired(true);
_ = entity.HasKey(e => e.LineItemId);
_ = entity.HasOne(p => p.Quote).WithMany(d => d.LineItems).HasForeignKey(fk => fk.QuoteId).IsRequired(true).OnDelete(DeleteBehavior.Cascade);
_ = entity.Property(e => e.Position).IsRequired(true);
_ = entity.Property(e => e.Amount).IsRequired(true);
_ = entity.Property(e => e.ProductNumber).IsRequired(true);
_ = entity.Property(e => e.OptionNumber);
_ = entity.Property(e => e.SapShortDescription);
_ = entity.Property(e => e.SapLongDescription);
_ = entity.Property(e => e.ProductLine);
_ = entity.Property(e => e.TotalDiscount).IsRequired(true).HasDefaultValue(0);
_ = entity.Property(e => e.SalesDiscount).IsRequired(true).HasDefaultValue(0);
_ = entity.Property(e => e.PromotionalDiscount).IsRequired(true).HasDefaultValue(0);
_ = entity.Property(e => e.ContractualDiscount).IsRequired(true).HasDefaultValue(0);
_ = entity.Property(e => e.DemoDiscount).IsRequired(true).HasDefaultValue(0);
_ = entity.Property(e => e.ListPrice).IsRequired(true);
_ = entity.Property(e => e.ExtendedListPrice).IsRequired(true);
_ = entity.Property(e => e.NetPrice).IsRequired(true);
_ = entity.Property(e => e.Total).IsRequired(true);
_ = entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
_ = entity.Property(e => e.DataVersionComment).HasDefaultValue("");
_ = entity.Property(e => e.DataStatus).IsRequired(true);
//.HasDefaultValue("Active") //Default-Wert wird nicht gesetzt?!? Bug in EF Core?
entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
//.IsRowVersion() impliziert .ValueGeneratedOnAddOrUpdate() und .IsConcurrencyToken(true)
entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -157,31 +157,31 @@ namespace Gremlin.GremlinData.DBClasses
{
public void Configure(EntityTypeBuilder<Product> entity)
{
entity.HasKey(e => e.ProductId);
entity.HasOne(d => d.CustomDescription).WithMany(p => p.Products).HasForeignKey("CustomDescriptionId").IsRequired(false).OnDelete(DeleteBehavior.SetNull); //.IsRequired() is just fyi, because it is overwritten by FK property nullability (nullable = optional relationship, non-nullable = required relationship)!
entity.HasOne(p => p.ProductLine).WithMany(d => d.Products).HasForeignKey("ProductLineCode").IsRequired(true).OnDelete(DeleteBehavior.Restrict);
entity.Property(e => e.CustomDescriptionId).IsRequired(false);
entity.Property(e => e.ProductNumber).IsRequired(true);
entity.Property(e => e.OptionNumber);
entity.Property(e => e.SapShortDescription);
entity.Property(e => e.SapLongDescription);
entity.Property(e => e.Weight);
entity.Property(e => e.ProductStatus);
entity.Property(e => e.IntroductionDate);
entity.Property(e => e.ListPrice).IsRequired(true);
entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
entity.Property(e => e.DataVersionComment).HasDefaultValue("");
entity.Property(e => e.DataStatus).IsRequired(true);
_ = entity.HasKey(e => e.ProductId);
_ = entity.HasOne(d => d.CustomDescription).WithMany(p => p.Products).HasForeignKey("CustomDescriptionId").IsRequired(false).OnDelete(DeleteBehavior.SetNull); //.IsRequired() is just fyi, because it is overwritten by FK property nullability (nullable = optional relationship, non-nullable = required relationship)!
_ = entity.HasOne(p => p.ProductLine).WithMany(d => d.Products).HasForeignKey("ProductLineCode").IsRequired(true).OnDelete(DeleteBehavior.Restrict);
_ = entity.Property(e => e.CustomDescriptionId).IsRequired(false);
_ = entity.Property(e => e.ProductNumber).IsRequired(true);
_ = entity.Property(e => e.OptionNumber);
_ = entity.Property(e => e.SapShortDescription);
_ = entity.Property(e => e.SapLongDescription);
_ = entity.Property(e => e.Weight);
_ = entity.Property(e => e.ProductStatus);
_ = entity.Property(e => e.IntroductionDate);
_ = entity.Property(e => e.ListPrice).IsRequired(true);
_ = entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
_ = entity.Property(e => e.DataVersionComment).HasDefaultValue("");
_ = entity.Property(e => e.DataStatus).IsRequired(true);
//.HasDefaultValue("Active") //Default-Wert wird nicht gesetzt?!? Bug in EF Core?
entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
//.IsRowVersion() impliziert .ValueGeneratedOnAddOrUpdate() und .IsConcurrencyToken(true)
entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -189,27 +189,27 @@ namespace Gremlin.GremlinData.DBClasses
{
public void Configure(EntityTypeBuilder<CustomDescription> entity)
{
entity.HasKey(e => e.CustomDescriptionId);
entity.HasMany(p => p.Products).WithOne(d => d.CustomDescription).IsRequired(false);
entity.HasOne(p => p.Supplier).WithMany(d => d.CustomDescriptions).IsRequired(true);
entity.Property(e => e.ProductNumber).IsRequired(true);
entity.Property(e => e.OptionNumber);
entity.Property(e => e.Heading).IsRequired(true);
entity.Property(e => e.DescriptionText);
entity.Property(e => e.CoverletterText);
entity.Property(e => e.Notes);
entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
entity.Property(e => e.DataVersionComment).HasDefaultValue("");
entity.Property(e => e.DataStatus).IsRequired(true);
_ = entity.HasKey(e => e.CustomDescriptionId);
_ = entity.HasMany(p => p.Products).WithOne(d => d.CustomDescription).IsRequired(false);
_ = entity.HasOne(p => p.Supplier).WithMany(d => d.CustomDescriptions).IsRequired(true);
_ = entity.Property(e => e.ProductNumber).IsRequired(true);
_ = entity.Property(e => e.OptionNumber);
_ = entity.Property(e => e.Heading).IsRequired(true);
_ = entity.Property(e => e.DescriptionText);
_ = entity.Property(e => e.CoverletterText);
_ = entity.Property(e => e.Notes);
_ = entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
_ = entity.Property(e => e.DataVersionComment).HasDefaultValue("");
_ = entity.Property(e => e.DataStatus).IsRequired(true);
//.HasDefaultValue("Active") //Default-Wert wird nicht gesetzt?!? Bug in EF Core?
entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
//.IsRowVersion() impliziert .ValueGeneratedOnAddOrUpdate() und .IsConcurrencyToken(true)
entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -217,20 +217,20 @@ namespace Gremlin.GremlinData.DBClasses
{
public void Configure(EntityTypeBuilder<ProductLine> entity)
{
entity.HasMany(p => p.Products).WithOne(d => d.ProductLine).IsRequired(true).OnDelete(DeleteBehavior.Restrict);
_ = entity.HasMany(p => p.Products).WithOne(d => d.ProductLine).IsRequired(true).OnDelete(DeleteBehavior.Restrict);
entity.Property(e => e.ProductLineDescription).IsRequired(true);
_ = entity.Property(e => e.ProductLineDescription).IsRequired(true);
entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
entity.Property(e => e.DataVersionComment).HasDefaultValue("");
entity.Property(e => e.DataStatus).IsRequired(true);
_ = entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
_ = entity.Property(e => e.DataVersionComment).HasDefaultValue("");
_ = entity.Property(e => e.DataStatus).IsRequired(true);
//.HasDefaultValue("Active") //Default-Wert wird nicht gesetzt?!? Bug in EF Core?
entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
//.IsRowVersion() impliziert .ValueGeneratedOnAddOrUpdate() und .IsConcurrencyToken(true)
entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -240,19 +240,19 @@ namespace Gremlin.GremlinData.DBClasses
{
//entity.HasKey(e => e.AccountTypeCode);
//entity.HasMany(p => p.Accounts).WithOne(d => d.AccountType); //already defined in class Account
entity.Property(e => e.AccountTypeCode).IsRequired(true).HasColumnType("Char(3)");
entity.Property(e => e.AccountTypeDescription).HasColumnType("Varchar(1000)").IsRequired(true);
entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
entity.Property(e => e.DataVersionComment).HasDefaultValue("");
entity.Property(e => e.DataStatus).IsRequired(true);
_ = entity.Property(e => e.AccountTypeCode).IsRequired(true).HasColumnType("Char(3)");
_ = entity.Property(e => e.AccountTypeDescription).HasColumnType("Varchar(1000)").IsRequired(true);
_ = entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
_ = entity.Property(e => e.DataVersionComment).HasDefaultValue("");
_ = entity.Property(e => e.DataStatus).IsRequired(true);
//.HasDefaultValue("Active") //Default-Wert wird nicht gesetzt?!? Bug in EF Core?
entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
//.IsRowVersion() impliziert .ValueGeneratedOnAddOrUpdate() und .IsConcurrencyToken(true)
entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -262,19 +262,19 @@ namespace Gremlin.GremlinData.DBClasses
{
//entity.HasKey(e => e.SubMarketCode);
//entity.HasMany(p => p.Accounts).WithOne(d => d.SubMarket); //already defined in class Account
entity.Property(e => e.SubMarketCode).HasColumnType("Char(3)");
entity.Property(e => e.SubMarketDescription).HasColumnType("Varchar(1000)").IsRequired(true);
entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
entity.Property(e => e.DataVersionComment).HasDefaultValue("");
entity.Property(e => e.DataStatus).IsRequired(true);
_ = entity.Property(e => e.SubMarketCode).HasColumnType("Char(3)");
_ = entity.Property(e => e.SubMarketDescription).HasColumnType("Varchar(1000)").IsRequired(true);
_ = entity.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidFrom).HasColumnType("DATETIME").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataValidUntil).HasColumnType("DATETIME").HasDefaultValueSql("'9999-12-31 23:59:59.000000'").ValueGeneratedOnAdd();
_ = entity.Property(e => e.DataVersionNumber).HasDefaultValue(1).IsRequired(true);
_ = entity.Property(e => e.DataVersionComment).HasDefaultValue("");
_ = entity.Property(e => e.DataStatus).IsRequired(true);
//.HasDefaultValue("Active") //Default-Wert wird nicht gesetzt?!? Bug in EF Core?
entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = entity.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
//.IsRowVersion() impliziert .ValueGeneratedOnAddOrUpdate() und .IsConcurrencyToken(true)
entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = entity.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").IsRequired(true).HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -282,15 +282,15 @@ namespace Gremlin.GremlinData.DBClasses
{
public void Configure(EntityTypeBuilder<RegisteredUser> builder)
{
builder.HasKey(e => e.RegisteredUserID);
_ = builder.HasKey(e => e.RegisteredUserID);
builder.HasMany(d => d.RUSettings).WithOne(p => p.RegisteredUser).IsRequired(true);
builder.Property(e => e.UserName).IsRequired(true);
builder.Property(e => e.PasswordHash).IsRequired(true);
_ = builder.HasMany(d => d.RUSettings).WithOne(p => p.RegisteredUser).IsRequired(true);
_ = builder.Property(e => e.UserName).IsRequired(true);
_ = builder.Property(e => e.PasswordHash).IsRequired(true);
builder.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
builder.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
builder.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = builder.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = builder.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = builder.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
@ -298,15 +298,15 @@ namespace Gremlin.GremlinData.DBClasses
{
public void Configure(EntityTypeBuilder<RUSettings> builder)
{
builder.HasKey(e => e.RUSettingsID);
_ = builder.HasKey(e => e.RUSettingsID);
builder.HasOne(d => d.RegisteredUser).WithMany(p => p.RUSettings).IsRequired(true);
builder.Property(e => e.SettingKey).IsRequired(true);
builder.Property(e => e.SettingValue).IsRequired(true);
_ = builder.HasOne(d => d.RegisteredUser).WithMany(p => p.RUSettings).IsRequired(true);
_ = builder.Property(e => e.SettingKey).IsRequired(true);
_ = builder.Property(e => e.SettingValue).IsRequired(true);
builder.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
builder.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
builder.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
_ = builder.Property(e => e.DataCreationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP").ValueGeneratedOnAdd();
_ = builder.Property(e => e.DataModificationDate).HasColumnType("TIMESTAMP").HasDefaultValueSql("CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP").ValueGeneratedOnAddOrUpdate().IsConcurrencyToken(true);
_ = builder.Property(e => e.DataModificationByUser).HasColumnType("TINYTEXT").HasDefaultValueSql("ON INSERT CURRENT_USER() ON UPDATE CURRENT_USER()");
}
}
}

@ -20,7 +20,6 @@ namespace Gremlin.GremlinData.DBClasses
private static TextFieldParser _csvParser;
private static string _filepath;
private static bool _dataHasHeadings;
private static Encoding _encoding;
internal static GremlinContext db = new();
@ -48,10 +47,7 @@ namespace Gremlin.GremlinData.DBClasses
}
}
public static bool DataHasHeadings {
get => _dataHasHeadings;
set => _dataHasHeadings = value;
}
public static bool DataHasHeadings { get; set; }
public static Encoding Encoding {
get => _encoding;
@ -132,13 +128,13 @@ namespace Gremlin.GremlinData.DBClasses
}
Separators = new string[] { separator };
ImportFile();
_ = ImportFile();
return true;
}
public static async Task<bool> RunAsync(string filepath, string separator, string encoding)
{
if (filepath == "" || filepath == null)
if (filepath is "" or null)
{
return false;
}
@ -159,7 +155,7 @@ namespace Gremlin.GremlinData.DBClasses
public static string GuessSeparator(string filepath, string encoding)
{
if (filepath == "" || filepath == null)
if (filepath is "" or null)
{
return null;
}
@ -259,35 +255,35 @@ namespace Gremlin.GremlinData.DBClasses
//check for detectedDataTypes = empty (possible when DataIdentificator.Identify(MustMatchAllQualifer = true) and no dataset matches all qualifiers of a type)
if (detectedDataTypes.Count == 0)
{
MessageBox.Show($"DataIdentificator.Identify() konnte die Datenart nicht bestimmen!{Environment.NewLine}Versuchen Sie den Import mit einer dezidierten Importerfunktion.");
_ = MessageBox.Show($"DataIdentificator.Identify() konnte die Datenart nicht bestimmen!{Environment.NewLine}Versuchen Sie den Import mit einer dezidierten Importerfunktion.");
return false;
}
switch (detectedDataTypes[0])
{
case "ProductLine":
ImportProductLine(_csvParser, mappingTable);
_ = ImportProductLine(_csvParser, mappingTable);
break;
case "AccountType":
ImportAccountType(_csvParser, mappingTable);
_ = ImportAccountType(_csvParser, mappingTable);
break;
case "SubMarket":
ImportSubMarket(_csvParser, mappingTable);
_ = ImportSubMarket(_csvParser, mappingTable);
break;
case "Account":
ImportAccounts(mappingTable);
_ = ImportAccounts(mappingTable);
break;
case "Contact":
ImportContacts(mappingTable);
_ = ImportContacts(mappingTable);
break;
case "LSAG":
ImportLSAG(mappingTable);
_ = ImportLSAG(mappingTable);
break;
case "Product":
ImportProducts(mappingTable);
_ = ImportProducts(mappingTable);
break;
case "CustomDescription":
ImportCustomDescriptions();// mappingTable);
_ = ImportCustomDescriptions();// mappingTable);
break;
default:
return false;
@ -309,7 +305,7 @@ namespace Gremlin.GremlinData.DBClasses
using (_csvParser)
{
// Skip the row with the column names:
_csvParser.ReadLine();
_ = _csvParser.ReadLine();
while (!_csvParser.EndOfData)
{
@ -418,9 +414,9 @@ namespace Gremlin.GremlinData.DBClasses
}
db.CustomDescriptions.AddRange(importedCDsWithEFReferences);
db.SaveChanges();
_ = db.SaveChanges();
//Bestätigung senden
MessageBox.Show($"Es wurden {importedCDsWithEFReferences.Count} eigene Beschreibungen erfolgreich der Datenbank hinzugefügt.{Environment.NewLine}Es wurden {thirdPartyProductsFromImportedCDs.Count} 3PP-Produkte neu angelegt.");
_ = MessageBox.Show($"Es wurden {importedCDsWithEFReferences.Count} eigene Beschreibungen erfolgreich der Datenbank hinzugefügt.{Environment.NewLine}Es wurden {thirdPartyProductsFromImportedCDs.Count} 3PP-Produkte neu angelegt.");
}
return true;
}
@ -450,9 +446,9 @@ namespace Gremlin.GremlinData.DBClasses
}
db.Products.AddRange(products);
db.SaveChanges();
_ = db.SaveChanges();
//Bestätigung senden
MessageBox.Show($"Es wurden {products.Count} Produkte erfolgreich der Datenbank hinzugefügt.");
_ = MessageBox.Show($"Es wurden {products.Count} Produkte erfolgreich der Datenbank hinzugefügt.");
return true;
}
}
@ -723,11 +719,11 @@ namespace Gremlin.GremlinData.DBClasses
}
db.Contacts.AddRange(ContactsReadFromFile);
db.SaveChanges();
_ = db.SaveChanges();
}
}
//Bestätigung senden
MessageBox.Show($"Es wurden {ContactsReadFromFile.Count} Contacts erfolgreich der Datenbank hinzugefügt.");
_ = MessageBox.Show($"Es wurden {ContactsReadFromFile.Count} Contacts erfolgreich der Datenbank hinzugefügt.");
return true;
}
@ -871,7 +867,7 @@ namespace Gremlin.GremlinData.DBClasses
//Validierten Account der Liste hinzufügen:
if (DataHasError == false)
{
ImportedAccount.AddIfUniqueTo(AccountsReadFromFile);
_ = ImportedAccount.AddIfUniqueTo(AccountsReadFromFile);
}
}
@ -900,10 +896,10 @@ namespace Gremlin.GremlinData.DBClasses
}
db.Accounts.AddRange(AccountsReadFromFile);
db.SaveChanges();
_ = db.SaveChanges();
//Bestätigung senden
MessageBox.Show($"Es wurden {AccountsReadFromFile.Count} Accounts erfolgreich der Datenbank hinzugefügt.");
_ = MessageBox.Show($"Es wurden {AccountsReadFromFile.Count} Accounts erfolgreich der Datenbank hinzugefügt.");
return true;
}
@ -932,7 +928,7 @@ namespace Gremlin.GremlinData.DBClasses
}
db.ProductLines.AddRange(productLinesReadFromFile);
db.SaveChanges();
_ = db.SaveChanges();
return true;
}
@ -959,7 +955,7 @@ namespace Gremlin.GremlinData.DBClasses
}
db.AccountTypes.AddRange(accountTypesReadFromFile);
db.SaveChanges();
_ = db.SaveChanges();
return true;
}
@ -986,7 +982,7 @@ namespace Gremlin.GremlinData.DBClasses
}
db.SubMarkets.AddRange(subMarketsReadFromFile);
db.SaveChanges();
_ = db.SaveChanges();
return true;
}

@ -31,7 +31,7 @@ namespace Gremlin.GremlinData.DBClasses
try
{
optionsBuilder
_ = optionsBuilder
.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString))
//mySqlOptionsAction => mySqlOptionsAction.CharSetBehavior(Pomelo.EntityFrameworkCore.MySql.Infrastructure.CharSetBehavior.NeverAppend)).EnableDetailedErrors()
.EnableSensitiveDataLogging()
@ -55,7 +55,7 @@ namespace Gremlin.GremlinData.DBClasses
////alle Fluent-Konfigurationen aufrufen:
//TO BE TESTED!
modelBuilder.ApplyConfigurationsFromAssembly(typeof(GremlinContext).Assembly);
_ = modelBuilder.ApplyConfigurationsFromAssembly(typeof(GremlinContext).Assembly);
////Fluent-Konfiguration einzeln für eine Entity aufrufen:
//new AccountConfiguration().Configure(modelBuilder.Entity<Account>());

@ -17,7 +17,7 @@ namespace Gremlin.GremlinData.DBClasses
string dataversioncomment = "",
[CallerMemberName] string callername = "")
{
SetMetaData(entity, datamodifiedby, dataversioncomment, callername);
_ = SetMetaData(entity, datamodifiedby, dataversioncomment, callername);
return entity;
}
@ -38,7 +38,7 @@ namespace Gremlin.GremlinData.DBClasses
//set metadata
foreach (IMetadata entity in entities)
{
SetMetaData(entity, datamodifiedby, dataversioncomment, callername);
_ = SetMetaData(entity, datamodifiedby, dataversioncomment, callername);
}
return entities;
}

@ -1,7 +1,7 @@
using Gremlin.GremlinData.EntityClasses;
using System.Collections.ObjectModel;
namespace Gremlin.DataAccessLayer
namespace Gremlin.GremlinDataAccess
{
internal class ContactDAL
{

@ -6,59 +6,55 @@ namespace Gremlin.GremlinUtilities.GUClasses
{
internal class DataIdType
{
private readonly string _dataType;
private readonly List<string> _qualifiers;
private readonly List<string> _matchedQualifiers;
private readonly int _numberOfQualifiers;
private int _score = 0;
private bool _allQualifierMatched = false;
public string DataType => _dataType;
public string DataType { get; }
public List<string> Qualifiers => _qualifiers;
public List<string> Qualifiers { get; }
public int Score => _score;
public int Score { get; private set; } = 0;
public bool AllQualifierMatched => _allQualifierMatched;
public bool AllQualifierMatched { get; private set; } = false;
public DataIdType(string DataType, IEnumerable<string> Qualifiers)
{
_dataType = DataType;
_qualifiers = Qualifiers.ToList();
_numberOfQualifiers = _qualifiers.Count;
this.DataType = DataType;
this.Qualifiers = Qualifiers.ToList();
_numberOfQualifiers = this.Qualifiers.Count;
_matchedQualifiers = new();
}
public void AddFoundQualfier(string QualifierFound)
{
_matchedQualifiers.Add(QualifierFound);
_score++;
_allQualifierMatched = (_matchedQualifiers.Count == _numberOfQualifiers);
Score++;
AllQualifierMatched = _matchedQualifiers.Count == _numberOfQualifiers;
}
public bool CheckForQualifier(string qualifier)
{
return _qualifiers.Contains(qualifier);
return Qualifiers.Contains(qualifier);
}
public void IncreaseScore(int value = 1)
{
_score += value;
Score += value;
}
public void ResetScore()
{
_score = 0;
Score = 0;
}
public override bool Equals(object obj)
{
return obj is DataIdType type
&& _dataType == type._dataType;
&& DataType == type.DataType;
}
public override int GetHashCode()
{
return HashCode.Combine(_dataType);
return HashCode.Combine(DataType);
}
}
}

@ -88,27 +88,27 @@ namespace Gremlin.GremlinUtilities.GUClasses
{
if (winners.Contains("ProductLine"))
{
winners.Remove("ProductLine");
_ = winners.Remove("ProductLine");
}
if (winners.Contains("AccountType"))
{
winners.Remove("AccountType");
_ = winners.Remove("AccountType");
}
if (winners.Contains("SubMarket"))
{
winners.Remove("SubMarket");
_ = winners.Remove("SubMarket");
}
if (winners.Contains("Account"))
{
winners.Remove("Account");
_ = winners.Remove("Account");
}
if (winners.Contains("Contact"))
{
winners.Remove("Contact");
_ = winners.Remove("Contact");
}
}
@ -116,17 +116,17 @@ namespace Gremlin.GremlinUtilities.GUClasses
{
if (winners.Contains("ProductLine"))
{
winners.Remove("ProductLine");
_ = winners.Remove("ProductLine");
}
if (winners.Contains("AccountType"))
{
winners.Remove("AccountType");
_ = winners.Remove("AccountType");
}
if (winners.Contains("SubMarket"))
{
winners.Remove("SubMarket");
_ = winners.Remove("SubMarket");
}
}

@ -1,5 +1,5 @@
using Gremlin.GremlinData.EntityClasses;
using Gremlin.Models;
using Gremlin.MVVM.Models;
using Gremlin.MVVM.ViewModels;
using System;
using System.Collections.Generic;
@ -64,13 +64,13 @@ namespace Gremlin.GremlinUtilities
}
_ = briefkopf.AppendLine($"{AccountName}");
if (tex) { briefkopf.AppendLine($"\\\\"); }
if (tex) { _ = briefkopf.AppendLine($"\\\\"); }
_ = briefkopf.AppendLine($"{contactVM.AccountStreet}");
if (tex) { briefkopf.AppendLine($"\\\\"); }
if (tex) { _ = briefkopf.AppendLine($"\\\\"); }
_ = briefkopf.AppendLine($"{contactVM.AccountZIP} {contactVM.AccountCity}");
if (tex) { briefkopf.AppendLine($"\\\\"); }
if (tex) { _ = briefkopf.AppendLine($"\\\\"); }
return briefkopf;
}

@ -1,4 +1,5 @@
using Caliburn.Micro;
using Gremlin.MVVM.ViewModels;
namespace Gremlin.MVVM
{

@ -1,4 +1,4 @@
using Gremlin.Models;
using Gremlin.MVVM.Models;
using System.Windows;
namespace Gremlin.MVVM

@ -1,5 +1,5 @@
using Gremlin.GremlinData.DBClasses;
using Gremlin.Models;
using Gremlin.MVVM.Models;
using Gremlin.MVVM.ViewModels;
using System.Collections.ObjectModel;
using System.Windows;
@ -99,7 +99,7 @@ namespace Gremlin.MVVM
private void BtnGenericImporter_Click(object sender, RoutedEventArgs e)
{
DataImport dataImport = new();
dataImport.ShowDialog();
_ = dataImport.ShowDialog();
}
private void BtnQuoteUI_Click(object sender, RoutedEventArgs e)

@ -5,7 +5,7 @@ using Gremlin.MVVM.Views;
using System;
using System.Collections.Generic;
namespace Gremlin.Models
namespace Gremlin.MVVM.Models
{
public class CustomDescriptionModel
{
@ -49,8 +49,8 @@ namespace Gremlin.Models
using (GremlinContext gremlinContext = new())
{
gremlinContext.Add(customDescription);
gremlinContext.SaveChanges();
_ = gremlinContext.Add(customDescription);
_ = gremlinContext.SaveChanges();
return true;
}
}

@ -1,7 +1,7 @@
using Gremlin.GremlinData.EntityClasses;
using System.Collections.Generic;
namespace Gremlin.Models
namespace Gremlin.MVVM.Models
{
internal class ProductModel
{

@ -1,12 +1,11 @@
using Gremlin.GremlinData.DBClasses;
using Gremlin.GremlinData.EntityClasses;
using Gremlin.MVVM;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace Gremlin.Models
namespace Gremlin.MVVM.Models
{
internal class RUSettingModel
{
@ -71,7 +70,7 @@ namespace Gremlin.Models
rsfruid.Add(settingKey, settingValue);
}
}
catch (System.Exception ex)
catch (Exception ex)
{
ErrorHandler.ShowErrorInMessageBox(ex);
throw;

@ -2,7 +2,7 @@
using Gremlin.GremlinData.EntityClasses;
using System.Linq;
namespace Gremlin.Models
namespace Gremlin.MVVM.Models
{
internal class RegisteredUserModel
{

@ -4,10 +4,7 @@ namespace Gremlin.MVVM.ViewModels
{
internal class CheckNewCustomDescriptionViewModel : PropertyChangedBase
{
private LineItemViewModel lineItemViewModel;
private CustomDescriptionViewModel customDescriptionViewModel;
public LineItemViewModel LineItemViewModel { get => lineItemViewModel; set => lineItemViewModel = value; }
public CustomDescriptionViewModel CustomDescriptionViewModel { get => customDescriptionViewModel; set => customDescriptionViewModel = value; }
public LineItemViewModel LineItemViewModel { get; set; }
public CustomDescriptionViewModel CustomDescriptionViewModel { get; set; }
}
}

@ -17,10 +17,9 @@ namespace Gremlin.MVVM.ViewModels
private string accountStreet = "accountStreet";
private uint accountZIP;
private string accountCity = "accountCity";
private uint contactID;
private string accountTypeCode;
public uint ContactID { get => contactID; set => contactID = value; }
public uint ContactID { get; set; }
public Enums.Gender Gender { get => gender; set { gender = value; NotifyOfPropertyChange(() => Gender); } }
public string FirstName { get => firstName; set { firstName = value; NotifyOfPropertyChange(() => FirstName); } }
public string LastName { get => lastName; set { lastName = value; NotifyOfPropertyChange(() => LastName); } }

@ -2,7 +2,7 @@
using Gremlin.GremlinData.DBClasses;
using Gremlin.GremlinData.EntityClasses;
using Gremlin.GremlinUtilities;
using Gremlin.Models;
using Gremlin.MVVM.Models;
using System.Linq;
namespace Gremlin.MVVM.ViewModels

@ -8,10 +8,10 @@ namespace Gremlin.Migrations
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterDatabase()
_ = migrationBuilder.AlterDatabase()
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "AccountTypes",
columns: table => new {
AccountTypeCode = table.Column<string>(type: "Char(3)", nullable: false)
@ -31,11 +31,11 @@ namespace Gremlin.Migrations
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table => {
table.PrimaryKey("PK_AccountTypes", x => x.AccountTypeCode);
_ = table.PrimaryKey("PK_AccountTypes", x => x.AccountTypeCode);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "ProductLines",
columns: table => new {
ProductLineCode = table.Column<string>(type: "varchar(255)", nullable: false)
@ -55,11 +55,11 @@ namespace Gremlin.Migrations
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table => {
table.PrimaryKey("PK_ProductLines", x => x.ProductLineCode);
_ = table.PrimaryKey("PK_ProductLines", x => x.ProductLineCode);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "RegisteredUser",
columns: table => new {
RegisteredUserID = table.Column<uint>(type: "int unsigned", nullable: false)
@ -74,11 +74,11 @@ namespace Gremlin.Migrations
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table => {
table.PrimaryKey("PK_RegisteredUser", x => x.RegisteredUserID);
_ = table.PrimaryKey("PK_RegisteredUser", x => x.RegisteredUserID);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "SubMarkets",
columns: table => new {
SubMarketCode = table.Column<string>(type: "Char(3)", nullable: false)
@ -98,11 +98,11 @@ namespace Gremlin.Migrations
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table => {
table.PrimaryKey("PK_SubMarkets", x => x.SubMarketCode);
_ = table.PrimaryKey("PK_SubMarkets", x => x.SubMarketCode);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "RUSettings",
columns: table => new {
RUSettingsID = table.Column<uint>(type: "int unsigned", nullable: false)
@ -118,8 +118,8 @@ namespace Gremlin.Migrations
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table => {
table.PrimaryKey("PK_RUSettings", x => x.RUSettingsID);
table.ForeignKey(
_ = table.PrimaryKey("PK_RUSettings", x => x.RUSettingsID);
_ = table.ForeignKey(
name: "FK_RUSettings_RegisteredUser_RegisteredUserID",
column: x => x.RegisteredUserID,
principalTable: "RegisteredUser",
@ -128,7 +128,7 @@ namespace Gremlin.Migrations
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "Accounts",
columns: table => new {
AccountId = table.Column<uint>(type: "int unsigned", nullable: false)
@ -175,15 +175,15 @@ namespace Gremlin.Migrations
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table => {
table.PrimaryKey("PK_Accounts", x => x.AccountId);
table.UniqueConstraint("AK_Accounts_SAPAccountNumber", x => x.SAPAccountNumber);
table.ForeignKey(
_ = table.PrimaryKey("PK_Accounts", x => x.AccountId);
_ = table.UniqueConstraint("AK_Accounts_SAPAccountNumber", x => x.SAPAccountNumber);
_ = table.ForeignKey(
name: "FK_Accounts_AccountTypes_AccountTypeCode",
column: x => x.AccountTypeCode,
principalTable: "AccountTypes",
principalColumn: "AccountTypeCode",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
_ = table.ForeignKey(
name: "FK_Accounts_SubMarkets_SubMarketCode",
column: x => x.SubMarketCode,
principalTable: "SubMarkets",
@ -192,7 +192,7 @@ namespace Gremlin.Migrations
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "Contacts",
columns: table => new {
ContactId = table.Column<uint>(type: "int unsigned", nullable: false)
@ -253,8 +253,8 @@ namespace Gremlin.Migrations
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table => {
table.PrimaryKey("PK_Contacts", x => x.ContactId);
table.ForeignKey(
_ = table.PrimaryKey("PK_Contacts", x => x.ContactId);
_ = table.ForeignKey(
name: "FK_Contacts_Accounts_AccountId",
column: x => x.AccountId,
principalTable: "Accounts",
@ -263,7 +263,7 @@ namespace Gremlin.Migrations
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "CustomDescriptions",
columns: table => new {
CustomDescriptionId = table.Column<uint>(type: "int unsigned", nullable: false)
@ -294,8 +294,8 @@ namespace Gremlin.Migrations
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table => {
table.PrimaryKey("PK_CustomDescriptions", x => x.CustomDescriptionId);
table.ForeignKey(
_ = table.PrimaryKey("PK_CustomDescriptions", x => x.CustomDescriptionId);
_ = table.ForeignKey(
name: "FK_CustomDescriptions_Accounts_AccountId",
column: x => x.AccountId,
principalTable: "Accounts",
@ -304,7 +304,7 @@ namespace Gremlin.Migrations
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "Quotes",
columns: table => new {
QuoteId = table.Column<uint>(type: "int unsigned", nullable: false)
@ -338,8 +338,8 @@ namespace Gremlin.Migrations
DataVersionNumber = table.Column<uint>(type: "int unsigned", nullable: false, defaultValue: 1u)
},
constraints: table => {
table.PrimaryKey("PK_Quotes", x => x.QuoteId);
table.ForeignKey(
_ = table.PrimaryKey("PK_Quotes", x => x.QuoteId);
_ = table.ForeignKey(
name: "FK_Quotes_Contacts_RecipientContactId",
column: x => x.RecipientContactId,
principalTable: "Contacts",
@ -348,7 +348,7 @@ namespace Gremlin.Migrations
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "Products",
columns: table => new {
ProductId = table.Column<uint>(type: "int unsigned", nullable: false)
@ -385,14 +385,14 @@ namespace Gremlin.Migrations
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table => {
table.PrimaryKey("PK_Products", x => x.ProductId);
table.ForeignKey(
_ = table.PrimaryKey("PK_Products", x => x.ProductId);
_ = table.ForeignKey(
name: "FK_Products_CustomDescriptions_CustomDescriptionId",
column: x => x.CustomDescriptionId,
principalTable: "CustomDescriptions",
principalColumn: "CustomDescriptionId",
onDelete: ReferentialAction.Restrict);
table.ForeignKey(
_ = table.ForeignKey(
name: "FK_Products_ProductLines_ProductLineCode",
column: x => x.ProductLineCode,
principalTable: "ProductLines",
@ -401,7 +401,7 @@ namespace Gremlin.Migrations
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
_ = migrationBuilder.CreateTable(
name: "LineItems",
columns: table => new {
LineItemId = table.Column<uint>(type: "int unsigned", nullable: false)
@ -441,8 +441,8 @@ namespace Gremlin.Migrations
DataVersionNumber = table.Column<uint>(type: "int unsigned", nullable: false, defaultValue: 1u)
},
constraints: table => {
table.PrimaryKey("PK_LineItems", x => x.LineItemId);
table.ForeignKey(
_ = table.PrimaryKey("PK_LineItems", x => x.LineItemId);
_ = table.ForeignKey(
name: "FK_LineItems_Quotes_QuoteId",
column: x => x.QuoteId,
principalTable: "Quotes",
@ -451,47 +451,47 @@ namespace Gremlin.Migrations
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateIndex(
_ = migrationBuilder.CreateIndex(
name: "IX_Accounts_AccountTypeCode",
table: "Accounts",
column: "AccountTypeCode");
migrationBuilder.CreateIndex(
_ = migrationBuilder.CreateIndex(
name: "IX_Accounts_SubMarketCode",
table: "Accounts",
column: "SubMarketCode");
migrationBuilder.CreateIndex(
_ = migrationBuilder.CreateIndex(
name: "IX_Contacts_AccountId",
table: "Contacts",
column: "AccountId");
migrationBuilder.CreateIndex(
_ = migrationBuilder.CreateIndex(
name: "IX_CustomDescriptions_AccountId",
table: "CustomDescriptions",
column: "AccountId");
migrationBuilder.CreateIndex(
_ = migrationBuilder.CreateIndex(
name: "IX_LineItems_QuoteId",
table: "LineItems",
column: "QuoteId");
migrationBuilder.CreateIndex(
_ = migrationBuilder.CreateIndex(
name: "IX_Products_CustomDescriptionId",
table: "Products",
column: "CustomDescriptionId");
migrationBuilder.CreateIndex(
_ = migrationBuilder.CreateIndex(
name: "IX_Products_ProductLineCode",
table: "Products",
column: "ProductLineCode");
migrationBuilder.CreateIndex(
_ = migrationBuilder.CreateIndex(
name: "IX_Quotes_RecipientContactId",
table: "Quotes",
column: "RecipientContactId");
migrationBuilder.CreateIndex(
_ = migrationBuilder.CreateIndex(
name: "IX_RUSettings_RegisteredUserID",
table: "RUSettings",
column: "RegisteredUserID");
@ -499,37 +499,37 @@ namespace Gremlin.Migrations
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "LineItems");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "Products");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "RUSettings");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "Quotes");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "CustomDescriptions");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "ProductLines");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "RegisteredUser");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "Contacts");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "Accounts");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "AccountTypes");
migrationBuilder.DropTable(
_ = migrationBuilder.DropTable(
name: "SubMarkets");
}
}