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; }
//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; }

@ -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; }
}
}

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

@ -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);

@ -102,19 +102,20 @@
</AuthorizeView>
@code {
private Task<AuthenticationState> authenticationStateTask { get; set; }
private Task<AuthenticationState>? authenticationStateTask { get; set; }
private IList<Quote>? quotes;
private Quote? selectedQuote;
private Contact? recipient;
//private Contact? recipient;
private IList<LineItem>? lineItemsInSelectedQuote;
private readonly CultureInfo cultureInfo = new("de-DE");
protected override async Task OnInitializedAsync()
protected override Task OnInitializedAsync()
{
quotes = genericController.GetAll<Quote>("Recipient");
return Task.CompletedTask;
}
private async Task OnSelectedQuoteChanged(Quote sQ)
private void OnSelectedQuoteChanged(Quote sQ)
{
selectedQuote = null;
//recipient = genericController.Get<Contact>(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");
}

@ -28,12 +28,12 @@ namespace Gremlin_BlazorServer.Services
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));
}
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));
}

@ -51,9 +51,9 @@ namespace Gremlin_BlazorServer.Services
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!");
return texString;
}

@ -10,14 +10,14 @@ namespace Gremlin_BlazorServer.Services
private readonly GenericTypeController<Account> accountService = 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());
return new(correctedTex);
}
private async Task<StringBuilder> 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<StringBuilder> 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<string> 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<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?
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<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));
if (customDescription == null) return null;
CustomDescription? customDescription = genericController.Get<CustomDescription>(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<string> 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)