Gremlin/Gremlin_BlazorServer/Pages/Contacts.razor

87 lines
4.3 KiB
Plaintext

@page "/Contacts"
@using Gremlin_BlazorServer.Data.EntityClasses;
@using Gremlin_BlazorServer.Services;
@using System.Globalization;
@inject GenericController genericController
<h1>Contacts</h1>
<AuthorizeView>
<Authorized>
<DataGrid TItem="Contact" Data="@contacts" SelectedRow="@selectedContact" SelectedRowChanged="@OnSelectedContactChanged" Editable ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGridCommandColumn />
<DataGridColumn Field="@nameof(Contact.ContactId)" Caption="ContactId" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.AccountId)" Caption="AccountId" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.LastName)" Caption="LastName" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.FirstName)" Caption="FirstName" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.Gender)" Caption="Gender" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.EMail)" Caption="EMail" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.SapContactNumber)" Caption="SAPContactNumber" Filterable Sortable Editable/>
</DataGrid>
@if (selectedContact != null)
{
<h2>Quotes for SelectedContact: @selectedContact.FirstName @selectedContact.LastName</h2>
<DataGrid TItem=" Quote" Data="@selectedContact.Quotes" SelectedRow="@selectedQuote" SelectedRowChanged="@OnSelectedQuoteChanged" Editable ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGridCommandColumn />
<DataGridColumn Field="@nameof(Quote.QuoteId)" Caption="#" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.QuotationNumber)" Caption="QuotationNumber" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.QuotationDate)" Caption="Date" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.ValidUntil)" Caption="ValidUntil" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.TotalNet)" Caption="TotalNet" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.TotalGross)" Caption="TotalGross" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.QuoteContains3Pp)" Caption="3PP" Filterable Sortable/>
<DataGridColumn Field="@nameof(Quote.QuoteContainsRb)" Caption="RB" Filterable Sortable/>
</DataGrid>
}
</Authorized>
<NotAuthorized>
<h3>Authentication Failure!</h3>
<p>You're not signed in. Please click on the upper right to either register or log in.</p>
</NotAuthorized>
</AuthorizeView>
@if (selectedQuote != null)
{
<h2>LineItems in SelectedQuote: @selectedQuote.QuotationNumber</h2>
<DataGrid TItem="LineItem" Data="@selectedQuote.LineItems" Editable ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGridCommandColumn />
<DataGridColumn Field="@nameof(LineItem.Amount)" Caption="Amount" />
<DataGridColumn Field="@nameof(LineItem.ProductNumber)" Caption="ProductNumber" />
<DataGridColumn Field="@nameof(LineItem.OptionNumber)" Caption="OptionNumber" />
<DataGridColumn Field="@nameof(LineItem.ListPrice)" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Caption="ListPrice" />
<DataGridColumn Field="@nameof(LineItem.TotalDiscount)" Caption="TotalDiscount" DisplayFormat="{0.00%}." DisplayFormatProvider=cultureInfo />
<DataGridColumn Field="@nameof(LineItem.Total)" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Caption="Total" />
</DataGrid>
}
@code {
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()
{
contacts = genericController.GetAll<Contact>();
return base.OnInitializedAsync();
}
private Task OnSelectedContactChanged(Contact sC)
{
selectedContact = null;
quotesOfSelectedContact = genericController.GetAll<Quote>(q => q.Recipient == sC);
selectedContact = sC;
return Task.CompletedTask;
}
private Task OnSelectedQuoteChanged(Quote sQ)
{
selectedQuote = null;
lineItemsInSelectedQuote = genericController.GetAll<LineItem>(l => l.Quote == sQ);
selectedQuote = sQ;
return Task.CompletedTask;
}
}