Gremlin/Gremlin_BlazorServer/Pages/Contacts.razor

165 lines
9.4 KiB
Plaintext

@page "/Contacts"
@using Gremlin_BlazorServer.Services
@using Gremlin_BlazorServer.Data.EntityClasses
@inject GenericController GenericController
@inject GenericImporter GenericImporter
<AuthorizeView>
<Authorized Context="auth">
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is4">Contacts</Heading>
<Paragraph>
<DataGrid TItem="Contact"
Data="@contacts"
SelectedRow="@selectedContact"
SelectedRowChanged="@OnSelectedContactChanged"
RowInserted="@OnRowInsertedAsync"
RowUpdated="@OnRowUpdatedAsync"
RowRemoved="@OnRowRemovedAsync"
CommandMode="DataGridCommandMode.ButtonRow"
EditMode="DataGridEditMode.Popup"
UseValidation Narrow FixedHeader Editable ShowPager Bordered Hoverable Sortable Filterable Striped Responsive>
<DataGridColumns>
<DataGridCommandColumn NewCommandAllowed="false" EditCommandAllowed="false" DeleteCommandAllowed="false">
<SaveCommandTemplate>
<Button ElementId="btnSave" Type="ButtonType.Submit" PreventDefaultOnSubmit Color="Color.Primary" Clicked="context.Clicked">context.LocalizationString</Button>
</SaveCommandTemplate>
<CancelCommandTemplate>
<Button ElementId="btnCancel" Color="Color.Secondary" Clicked="context.Clicked">context.LocalizationString</Button>
</CancelCommandTemplate>
</DataGridCommandColumn>
<DataGridMultiSelectColumn/>
<DataGridColumn Field="@nameof(Contact.ContactId)" Caption="ContactId" Filterable Sortable>
<EditTemplate>
<NumericEdit TValue="uint" Value="((uint)context.CellValue)" ValueChanged="(v => context.CellValue = v)"/>
</EditTemplate>
</DataGridColumn>
<DataGridColumn Field="@nameof(Contact.AccountId)" Caption="AccountId" Filterable Sortable Editable>
<EditTemplate>
<NumericEdit TValue="uint" Value="((uint)context.CellValue)" ValueChanged="(v => context.CellValue = v)"/>
</EditTemplate>
</DataGridColumn>
<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>
<EditTemplate>
<NumericEdit TValue="byte" Value="((byte)context.CellValue)" ValueChanged="(v => context.CellValue = v)"/>
</EditTemplate>
</DataGridColumn>
<DataGridColumn Field="@nameof(Contact.PhoneNumber)" Caption="PhoneNumber" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.MobileNumber)" Caption="MobileNumber" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.EMail)" Caption="EMail" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.OptInStatus)" Caption="OptInStatus" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.IsReference)" Caption="IsReference" Filterable Sortable Editable/>
<DataGridColumn Field="@nameof(Contact.SapContactNumber)" Caption="SAPContactNumber" Filterable Sortable Editable>
<EditTemplate>
<NumericEdit TValue="uint" Value="((uint)context.CellValue)" ValueChanged="(v => context.CellValue = v)"/>
</EditTemplate>
</DataGridColumn>
</DataGridColumns>
<ButtonRowTemplate>
<Button Color="Color.Success" Clicked="context.NewCommand.Clicked">New</Button>
<Button Color="Color.Primary" Disabled="selectedContact is null" Clicked="context.EditCommand.Clicked">Edit</Button>
<Button Color="Color.Danger" Disabled="selectedContact is null" Clicked="context.DeleteCommand.Clicked">Delete</Button>
<Button Color="Color.Secondary" Clicked="context.ClearFilterCommand.Clicked">Clear Filter</Button>
</ButtonRowTemplate>
</DataGrid>
</Paragraph>
</Div>
@if (selectedContact != null) {
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is5">Quotes for SelectedContact: @selectedContact.FirstName @selectedContact.LastName</Heading>
<Paragraph>
<DataGrid TItem="Quote"
Data="@selectedContact.Quotes"
SelectedRow="@selectedQuote"
SelectedRowChanged="@OnSelectedQuoteChanged"
Narrow FixedHeader Bordered Hoverable 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>
</Paragraph>
</Div>
@if (selectedQuote?.LineItems != null) {
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is5">LineItems in SelectedQuote: @selectedQuote.QuotationNumber</Heading>
<Paragraph>
<DataGrid TItem="LineItem" Data="@selectedQuote.LineItems" ShowPager Bordered Hoverable Striped Responsive>
<DataGridCommandColumn/>
<DataGridColumn Field="@nameof(LineItem.Position)" Caption="Position"/>
<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.SapShortDescription)" Caption="SapShortDescription"/>
<DataGridColumn Field="@nameof(LineItem.ListPrice)" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Caption="ListPrice"/>
<DataGridColumn Field="@nameof(LineItem.TotalDiscount)" DisplayFormat="{0:n2}%" Caption="TotalDiscount"/>
<DataGridColumn Field="@nameof(LineItem.Total)" DisplayFormat="{0:C}" DisplayFormatProvider=cultureInfo Caption="Total"/>
</DataGrid>
</Paragraph>
</Div>
}
}
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is6">Import Contacts from CSV</Heading>
<Paragraph>
<Field>
<FileEdit Filter=".csv" Changed="@OnImportContacts"/>
</Field>
</Paragraph>
</Div>
</Authorized>
<NotAuthorized>
<Div Margin="Margin.Is3"
Border="Border.Dark.OnAll"
Padding="Padding.Is3"
style="box-shadow: 10px 10px #343A40">
<Heading Size="HeadingSize.Is3">Authentication Failure!</Heading>
<Paragraph>You're not signed in. Please click on the upper right to either register or log in.</Paragraph>
</Div>
</NotAuthorized>
</AuthorizeView>