moving TexService to GenericController

pull/1/head
Sascha Woitschetzki 2023-01-17 14:59:42 +07:00
parent 1fa05c54c0
commit f913ceedc8
8 changed files with 45 additions and 36 deletions

@ -14,8 +14,8 @@
public Account? Supplier { get; set; } public Account? Supplier { get; set; }
//class properties: //class properties:
public string ProductNumber { get; set; } public string? ProductNumber { get; set; }
public string OptionNumber { get; set; } public string? OptionNumber { get; set; }
public string? Heading { get; set; } public string? Heading { get; set; }
public string? DescriptionText { get; set; } public string? DescriptionText { get; set; }
public string? CoverletterText { get; set; } public string? CoverletterText { get; set; }

@ -3,12 +3,12 @@
public interface IMetadata public interface IMetadata
{ {
DateTime DataCreationDate { get; set; } DateTime DataCreationDate { get; set; }
string DataModificationByUser { get; set; } string? DataModificationByUser { get; set; }
DateTime DataModificationDate { get; set; } DateTime DataModificationDate { get; set; }
string DataStatus { get; set; } string DataStatus { get; set; }
DateTime DataValidFrom { get; set; } DateTime DataValidFrom { get; set; }
DateTime DataValidUntil { get; set; } DateTime DataValidUntil { get; set; }
string DataVersionComment { get; set; } string? DataVersionComment { get; set; }
uint DataVersionNumber { get; set; } uint DataVersionNumber { get; set; }
} }
} }

@ -49,11 +49,11 @@
</DataGrid> </DataGrid>
} }
@code { @code {
private IList<Contact> contacts; private IList<Contact>? contacts;
private Contact selectedContact; private Contact? selectedContact;
private Quote selectedQuote; private Quote? selectedQuote;
private IList<Quote> quotesOfSelectedContact; private IList<Quote>? quotesOfSelectedContact;
private IList<LineItem> lineItemsInSelectedQuote; private IList<LineItem>? lineItemsInSelectedQuote;
private readonly CultureInfo cultureInfo = new("de-DE"); private readonly CultureInfo cultureInfo = new("de-DE");
protected override Task OnInitializedAsync() protected override Task OnInitializedAsync()

@ -172,11 +172,12 @@
if (await QuoteService.InsertAsync(quote)) navigationManager.NavigateTo("Quotes/QuoteIndex"); 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(); quote.Tex = texStringBuilder.ToString();
FileService.WriteTexFile(quote); FileService.WriteTexFile(quote);
return Task.CompletedTask;
} }
private void OnCreatePdf() => PdfService.CreatePdf(quote); private void OnCreatePdf() => PdfService.CreatePdf(quote);

@ -102,19 +102,20 @@
</AuthorizeView> </AuthorizeView>
@code { @code {
private Task<AuthenticationState> authenticationStateTask { get; set; } private Task<AuthenticationState>? authenticationStateTask { get; set; }
private IList<Quote>? quotes; private IList<Quote>? quotes;
private Quote? selectedQuote; private Quote? selectedQuote;
private Contact? recipient; //private Contact? recipient;
private IList<LineItem>? lineItemsInSelectedQuote; private IList<LineItem>? lineItemsInSelectedQuote;
private readonly CultureInfo cultureInfo = new("de-DE"); private readonly CultureInfo cultureInfo = new("de-DE");
protected override async Task OnInitializedAsync() protected override Task OnInitializedAsync()
{ {
quotes = genericController.GetAll<Quote>("Recipient"); quotes = genericController.GetAll<Quote>("Recipient");
return Task.CompletedTask;
} }
private async Task OnSelectedQuoteChanged(Quote sQ) private void OnSelectedQuoteChanged(Quote sQ)
{ {
selectedQuote = null; selectedQuote = null;
//recipient = genericController.Get<Contact>(contact => contact == sQ.Recipient, "Account"); //recipient = genericController.Get<Contact>(contact => contact == sQ.Recipient, "Account");
@ -122,5 +123,5 @@
selectedQuote = sQ; selectedQuote = sQ;
} }
private async Task OnCreateNewQuote() => navigationManager.NavigateTo("Quotes/QuoteAdd"); private void OnCreateNewQuote() => navigationManager.NavigateTo("Quotes/QuoteAdd");
} }

@ -28,12 +28,12 @@ namespace Gremlin_BlazorServer.Services
return gremlinDb.Set<TResult>().Include(include).AsEnumerable().Where(t => search(t)).ToList(); return gremlinDb.Set<TResult>().Include(include).AsEnumerable().Where(t => search(t)).ToList();
} }
public TResult Get<TResult>(Predicate<TResult> search) where TResult : class, IMetadata public TResult? Get<TResult>(Predicate<TResult> search) where TResult : class, IMetadata
{ {
return gremlinDb.Set<TResult>().AsEnumerable().FirstOrDefault(t => search(t)); return gremlinDb.Set<TResult>().AsEnumerable().FirstOrDefault(t => search(t));
} }
public TResult Get<TResult>(Predicate<TResult> search, string include) where TResult : class, IMetadata public TResult? Get<TResult>(Predicate<TResult> search, string include) where TResult : class, IMetadata
{ {
return gremlinDb.Set<TResult>().Include(include).AsEnumerable().FirstOrDefault(t => search(t)); return gremlinDb.Set<TResult>().Include(include).AsEnumerable().FirstOrDefault(t => search(t));
} }

@ -51,9 +51,9 @@ namespace Gremlin_BlazorServer.Services
return true; return true;
} }
public async Task<StringBuilder> 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!"); Debug.WriteLine(texString.Length > 0 ? "Creating TexFile succesfully." : "Error during TexFile creation!");
return texString; return texString;
} }

@ -10,14 +10,14 @@ namespace Gremlin_BlazorServer.Services
private readonly GenericTypeController<Account> accountService = new(); private readonly GenericTypeController<Account> accountService = new();
private readonly GenericTypeController<CustomDescription> customDescriptionService = new(); private readonly GenericTypeController<CustomDescription> customDescriptionService = new();
public async Task<StringBuilder> CreateTexAsync(Quote quote) public StringBuilder CreateTex(Quote quote)
{ {
StringBuilder texStringBuilder = await CreateTexFileAsync(quote); StringBuilder texStringBuilder = CreateTexFile(quote);
string correctedTex = Replace(texStringBuilder.ToString()); string correctedTex = Replace(texStringBuilder.ToString());
return new(correctedTex); return new(correctedTex);
} }
private async Task<StringBuilder> CreateBriefkopfAsync(Contact recipient, bool tex = false) private StringBuilder CreateBriefkopf(Contact recipient, bool tex = false)
{ {
StringBuilder briefkopf = new(); StringBuilder briefkopf = new();
@ -42,7 +42,7 @@ namespace Gremlin_BlazorServer.Services
return briefkopf; return briefkopf;
} }
private async Task<StringBuilder> CreateTexFileAsync(Quote quote) private StringBuilder CreateTexFile(Quote quote)
{ {
const string rand = "2"; //RUSettingModel.GetSettingValue(Properties.Settings.Default.userSettingID, "texRand"); 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($"Mobil:&{quote.SalesRep.MobileNumber}\\\\");
texFile.AppendLine($"E-Mail:&\\href{{mailto:{quote.SalesRep.EMail}}}{{{quote.SalesRep.EMail}}}\\\\"); 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.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 "); texFile.AppendLine("&\\\\\n&\\\\\n\\end{tabular}\n\\vspace{1cm}\\par ");
//Anrede //Anrede
@ -105,10 +105,10 @@ namespace Gremlin_BlazorServer.Services
: texFile.AppendLine($"Sehr geehrte Frau {quote.Recipient.LastName},\\par "); : texFile.AppendLine($"Sehr geehrte Frau {quote.Recipient.LastName},\\par ");
//Anschreiben //Anschreiben
texFile.AppendLine(await CreateCoverletterAsync(quote)); texFile.AppendLine(CreateCoverletter(quote));
//RB-Disclaimer //RB-Disclaimer
if (quote.QuoteContainsRb) texFile.AppendLine(await CreateRbDisclaimerAsync(quote)); if (quote.QuoteContainsRb) texFile.AppendLine(CreateRbDisclaimer(quote));
//Tabelle //Tabelle
texFile.AppendLine("\\begin{center}"); texFile.AppendLine("\\begin{center}");
@ -213,7 +213,7 @@ namespace Gremlin_BlazorServer.Services
return texFile; return texFile;
} }
private async Task<string> CreateRbDisclaimerAsync(Quote quote) private string CreateRbDisclaimer(Quote quote)
{ {
Random r = new(); Random r = new();
@ -226,10 +226,17 @@ namespace Gremlin_BlazorServer.Services
foreach (LineItem lineItemWithRb in lineItemsWithRb) foreach (LineItem lineItemWithRb in lineItemsWithRb)
{ {
CustomDescription customDescription = genericController.Get<CustomDescription>(cD => cD.ProductNumber.Equals(lineItemWithRb.ProductNumber) && cD.OptionNumber.Equals(lineItemWithRb.OptionNumber)); CustomDescription? customDescription = genericController.Get<CustomDescription>(cD => cD.ProductNumber.Equals(lineItemWithRb.ProductNumber) && cD.OptionNumber.Equals(lineItemWithRb.OptionNumber));
int rbcount = 4; //Get count of RB? if (customDescription != null)
rbDisclaimer += $"{lineItemWithRb.ProductNumber} & {customDescription.Heading} & {rbcount}\\\\ \n"; {
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"; rbDisclaimer += "\\end{tabular}\n\\end{center}\n";
@ -262,16 +269,16 @@ namespace Gremlin_BlazorServer.Services
return dreipp; return dreipp;
} }
private async Task<string> GetCoverletterRowAsync(LineItem lineItem) private string GetCoverletterRow(LineItem lineItem)
{ {
CustomDescription customDescription = genericController.Get<CustomDescription>(cD => cD.ProductNumber.Equals(lineItem.ProductNumber) && cD.OptionNumber.Equals(lineItem.OptionNumber)); CustomDescription? customDescription = genericController.Get<CustomDescription>(cD => cD.ProductNumber.Equals(lineItem.ProductNumber) && cD.OptionNumber.Equals(lineItem.OptionNumber));
if (customDescription == null) return null; if (customDescription == null) return string.Empty;
return customDescription.CoverletterText == "" return customDescription.CoverletterText == ""
? $"\\item {customDescription.Heading} (\\#{lineItem.Position})\n" ? $"\\item {customDescription.Heading} (\\#{lineItem.Position})\n"
: $"\\item {customDescription.CoverletterText} (\\#{lineItem.Position})\n"; : $"\\item {customDescription.CoverletterText} (\\#{lineItem.Position})\n";
} }
private async Task<string> CreateCoverletterAsync(Quote quote) private string CreateCoverletter(Quote quote)
{ {
bool subitem = false; 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"; 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 += "\\begin{itemize}\n";
} }
} }
coverLetter += await GetCoverletterRowAsync(lineItem); coverLetter += GetCoverletterRow(lineItem);
} }
if (subitem) if (subitem)