diff --git a/Gremlin_BlazorServer/Data/EntityClasses/CustomDescription.cs b/Gremlin_BlazorServer/Data/EntityClasses/CustomDescription.cs index ea811a7..327606f 100644 --- a/Gremlin_BlazorServer/Data/EntityClasses/CustomDescription.cs +++ b/Gremlin_BlazorServer/Data/EntityClasses/CustomDescription.cs @@ -14,8 +14,8 @@ public Account? Supplier { get; set; } //class properties: - public string ProductNumber { get; set; } - public string OptionNumber { get; set; } + public string? ProductNumber { get; set; } + public string? OptionNumber { get; set; } public string? Heading { get; set; } public string? DescriptionText { get; set; } public string? CoverletterText { get; set; } diff --git a/Gremlin_BlazorServer/Data/EntityClasses/IMetadata.cs b/Gremlin_BlazorServer/Data/EntityClasses/IMetadata.cs index 29770b8..4db7a0d 100644 --- a/Gremlin_BlazorServer/Data/EntityClasses/IMetadata.cs +++ b/Gremlin_BlazorServer/Data/EntityClasses/IMetadata.cs @@ -3,12 +3,12 @@ public interface IMetadata { DateTime DataCreationDate { get; set; } - string DataModificationByUser { get; set; } + string? DataModificationByUser { get; set; } DateTime DataModificationDate { get; set; } string DataStatus { get; set; } DateTime DataValidFrom { get; set; } DateTime DataValidUntil { get; set; } - string DataVersionComment { get; set; } + string? DataVersionComment { get; set; } uint DataVersionNumber { get; set; } } } \ No newline at end of file diff --git a/Gremlin_BlazorServer/Pages/Contacts/ContactIndex.razor b/Gremlin_BlazorServer/Pages/Contacts/ContactIndex.razor index 8170324..07543cb 100644 --- a/Gremlin_BlazorServer/Pages/Contacts/ContactIndex.razor +++ b/Gremlin_BlazorServer/Pages/Contacts/ContactIndex.razor @@ -49,11 +49,11 @@ } @code { - private IList contacts; - private Contact selectedContact; - private Quote selectedQuote; - private IList quotesOfSelectedContact; - private IList lineItemsInSelectedQuote; + private IList? contacts; + private Contact? selectedContact; + private Quote? selectedQuote; + private IList? quotesOfSelectedContact; + private IList? lineItemsInSelectedQuote; private readonly CultureInfo cultureInfo = new("de-DE"); protected override Task OnInitializedAsync() diff --git a/Gremlin_BlazorServer/Pages/Quotes/QuoteAdd.razor b/Gremlin_BlazorServer/Pages/Quotes/QuoteAdd.razor index f0536f8..9594dda 100644 --- a/Gremlin_BlazorServer/Pages/Quotes/QuoteAdd.razor +++ b/Gremlin_BlazorServer/Pages/Quotes/QuoteAdd.razor @@ -172,11 +172,12 @@ if (await QuoteService.InsertAsync(quote)) navigationManager.NavigateTo("Quotes/QuoteIndex"); } - private async void OnCreateTex() + private Task OnCreateTex() { - StringBuilder texStringBuilder = await QuoteHandling.CreateTex(quote); + StringBuilder texStringBuilder = QuoteHandling.CreateTex(quote); quote.Tex = texStringBuilder.ToString(); FileService.WriteTexFile(quote); + return Task.CompletedTask; } private void OnCreatePdf() => PdfService.CreatePdf(quote); diff --git a/Gremlin_BlazorServer/Pages/Quotes/QuoteIndex.razor b/Gremlin_BlazorServer/Pages/Quotes/QuoteIndex.razor index 52f07ac..a13be70 100644 --- a/Gremlin_BlazorServer/Pages/Quotes/QuoteIndex.razor +++ b/Gremlin_BlazorServer/Pages/Quotes/QuoteIndex.razor @@ -102,19 +102,20 @@ @code { - private Task authenticationStateTask { get; set; } + private Task? authenticationStateTask { get; set; } private IList? quotes; private Quote? selectedQuote; - private Contact? recipient; + //private Contact? recipient; private IList? lineItemsInSelectedQuote; private readonly CultureInfo cultureInfo = new("de-DE"); - protected override async Task OnInitializedAsync() + protected override Task OnInitializedAsync() { quotes = genericController.GetAll("Recipient"); + return Task.CompletedTask; } - private async Task OnSelectedQuoteChanged(Quote sQ) + private void OnSelectedQuoteChanged(Quote sQ) { selectedQuote = null; //recipient = genericController.Get(contact => contact == sQ.Recipient, "Account"); @@ -122,5 +123,5 @@ selectedQuote = sQ; } - private async Task OnCreateNewQuote() => navigationManager.NavigateTo("Quotes/QuoteAdd"); + private void OnCreateNewQuote() => navigationManager.NavigateTo("Quotes/QuoteAdd"); } \ No newline at end of file diff --git a/Gremlin_BlazorServer/Services/GenericController.cs b/Gremlin_BlazorServer/Services/GenericController.cs index 5a64475..88f84e0 100644 --- a/Gremlin_BlazorServer/Services/GenericController.cs +++ b/Gremlin_BlazorServer/Services/GenericController.cs @@ -28,12 +28,12 @@ namespace Gremlin_BlazorServer.Services return gremlinDb.Set().Include(include).AsEnumerable().Where(t => search(t)).ToList(); } - public TResult Get(Predicate search) where TResult : class, IMetadata + public TResult? Get(Predicate search) where TResult : class, IMetadata { return gremlinDb.Set().AsEnumerable().FirstOrDefault(t => search(t)); } - public TResult Get(Predicate search, string include) where TResult : class, IMetadata + public TResult? Get(Predicate search, string include) where TResult : class, IMetadata { return gremlinDb.Set().Include(include).AsEnumerable().FirstOrDefault(t => search(t)); } diff --git a/Gremlin_BlazorServer/Services/QuoteHandling.cs b/Gremlin_BlazorServer/Services/QuoteHandling.cs index 10adefa..1e43dda 100644 --- a/Gremlin_BlazorServer/Services/QuoteHandling.cs +++ b/Gremlin_BlazorServer/Services/QuoteHandling.cs @@ -51,9 +51,9 @@ namespace Gremlin_BlazorServer.Services return true; } - public async Task CreateTex(Quote quote) + public StringBuilder CreateTex(Quote quote) { - StringBuilder texString = await texService.CreateTexAsync(quote); + StringBuilder texString = texService.CreateTex(quote); Debug.WriteLine(texString.Length > 0 ? "Creating TexFile succesfully." : "Error during TexFile creation!"); return texString; } diff --git a/Gremlin_BlazorServer/Services/TexService.cs b/Gremlin_BlazorServer/Services/TexService.cs index dc4f544..d60f7be 100644 --- a/Gremlin_BlazorServer/Services/TexService.cs +++ b/Gremlin_BlazorServer/Services/TexService.cs @@ -10,14 +10,14 @@ namespace Gremlin_BlazorServer.Services private readonly GenericTypeController accountService = new(); private readonly GenericTypeController customDescriptionService = new(); - public async Task CreateTexAsync(Quote quote) + public StringBuilder CreateTex(Quote quote) { - StringBuilder texStringBuilder = await CreateTexFileAsync(quote); + StringBuilder texStringBuilder = CreateTexFile(quote); string correctedTex = Replace(texStringBuilder.ToString()); return new(correctedTex); } - private async Task CreateBriefkopfAsync(Contact recipient, bool tex = false) + private StringBuilder CreateBriefkopf(Contact recipient, bool tex = false) { StringBuilder briefkopf = new(); @@ -42,7 +42,7 @@ namespace Gremlin_BlazorServer.Services return briefkopf; } - private async Task CreateTexFileAsync(Quote quote) + private StringBuilder CreateTexFile(Quote quote) { const string rand = "2"; //RUSettingModel.GetSettingValue(Properties.Settings.Default.userSettingID, "texRand"); @@ -96,7 +96,7 @@ namespace Gremlin_BlazorServer.Services texFile.AppendLine($"Mobil:&{quote.SalesRep.MobileNumber}\\\\"); texFile.AppendLine($"E-Mail:&\\href{{mailto:{quote.SalesRep.EMail}}}{{{quote.SalesRep.EMail}}}\\\\"); texFile.AppendLine("\\textbf{Auftragsannahme:}&\\href{mailto:salesservices\\_germany@agilent.com}{salesservices\\_germany@agilent.com}\\\\\n\\hline\n\\end{tabular}\n}\\\\"); - texFile.Append(await CreateBriefkopfAsync(quote.Recipient, true)); + texFile.Append(CreateBriefkopf(quote.Recipient, true)); texFile.AppendLine("&\\\\\n&\\\\\n\\end{tabular}\n\\vspace{1cm}\\par "); //Anrede @@ -105,10 +105,10 @@ namespace Gremlin_BlazorServer.Services : texFile.AppendLine($"Sehr geehrte Frau {quote.Recipient.LastName},\\par "); //Anschreiben - texFile.AppendLine(await CreateCoverletterAsync(quote)); + texFile.AppendLine(CreateCoverletter(quote)); //RB-Disclaimer - if (quote.QuoteContainsRb) texFile.AppendLine(await CreateRbDisclaimerAsync(quote)); + if (quote.QuoteContainsRb) texFile.AppendLine(CreateRbDisclaimer(quote)); //Tabelle texFile.AppendLine("\\begin{center}"); @@ -213,7 +213,7 @@ namespace Gremlin_BlazorServer.Services return texFile; } - private async Task CreateRbDisclaimerAsync(Quote quote) + private string CreateRbDisclaimer(Quote quote) { Random r = new(); @@ -226,10 +226,17 @@ namespace Gremlin_BlazorServer.Services foreach (LineItem lineItemWithRb in lineItemsWithRb) { - CustomDescription customDescription = genericController.Get(cD => cD.ProductNumber.Equals(lineItemWithRb.ProductNumber) && cD.OptionNumber.Equals(lineItemWithRb.OptionNumber)); + CustomDescription? customDescription = genericController.Get(cD => cD.ProductNumber.Equals(lineItemWithRb.ProductNumber) && cD.OptionNumber.Equals(lineItemWithRb.OptionNumber)); - int rbcount = 4; //Get count of RB? - rbDisclaimer += $"{lineItemWithRb.ProductNumber} & {customDescription.Heading} & {rbcount}\\\\ \n"; + if (customDescription != null) + { + int rbcount = 4; //Get count of RB? + rbDisclaimer += $"{lineItemWithRb.ProductNumber} & {customDescription.Heading} & {rbcount}\\\\ \n"; + } + else + { + //TODO: Create new cD + } } rbDisclaimer += "\\end{tabular}\n\\end{center}\n"; @@ -262,16 +269,16 @@ namespace Gremlin_BlazorServer.Services return dreipp; } - private async Task GetCoverletterRowAsync(LineItem lineItem) + private string GetCoverletterRow(LineItem lineItem) { - CustomDescription customDescription = genericController.Get(cD => cD.ProductNumber.Equals(lineItem.ProductNumber) && cD.OptionNumber.Equals(lineItem.OptionNumber)); - if (customDescription == null) return null; + CustomDescription? customDescription = genericController.Get(cD => cD.ProductNumber.Equals(lineItem.ProductNumber) && cD.OptionNumber.Equals(lineItem.OptionNumber)); + if (customDescription == null) return string.Empty; return customDescription.CoverletterText == "" ? $"\\item {customDescription.Heading} (\\#{lineItem.Position})\n" : $"\\item {customDescription.CoverletterText} (\\#{lineItem.Position})\n"; } - private async Task CreateCoverletterAsync(Quote quote) + private string CreateCoverletter(Quote quote) { bool subitem = false; string coverLetter = $"nachfolgend erhalten Sie Ihr gewünschtes Angebot über ein(e) {quote.Description}.\\\\\n" + "Es umfasst im Einzelnen:\n" + "\\begin{itemize}\n"; @@ -297,7 +304,7 @@ namespace Gremlin_BlazorServer.Services coverLetter += "\\begin{itemize}\n"; } } - coverLetter += await GetCoverletterRowAsync(lineItem); + coverLetter += GetCoverletterRow(lineItem); } if (subitem)