165 lines
9.4 KiB
Plaintext
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> |