Add New Quote
parent
45af5c006e
commit
503fb315d3
@ -0,0 +1,141 @@
|
||||
@page "/Quotes/Add"
|
||||
|
||||
@using Blazorise.Components
|
||||
@using Gremlin_BlazorServer.Data.EntityClasses;
|
||||
@using Gremlin_BlazorServer.Services;
|
||||
@using System.Diagnostics;
|
||||
|
||||
@inject QuoteService quoteService
|
||||
@inject ContactService contactService
|
||||
@inject AccountService accountService
|
||||
@inject NavigationManager navigationManager
|
||||
@inject ClipboardService clipboardService
|
||||
|
||||
<h2>Create New Quote</h2>
|
||||
<hr />
|
||||
|
||||
<h3>Quote Details</h3>
|
||||
<Fields>
|
||||
<Field Horizontal>
|
||||
<FieldLabel>SalesRep:</FieldLabel>
|
||||
<FieldBody>@quote.SalesRep.LastName</FieldBody>
|
||||
</Field>
|
||||
<Field Horizontal>
|
||||
<FieldLabel>QuotationDate:</FieldLabel>
|
||||
<FieldBody>@quote.QuotationDate</FieldBody>
|
||||
</Field>
|
||||
<Field Horizontal>
|
||||
<FieldLabel>QuotationNumber:</FieldLabel>
|
||||
<TextEdit Text="@quote.QuotationNumber"></TextEdit>
|
||||
</Field>
|
||||
<Field Horizontal>
|
||||
<FieldLabel>ValidFor:</FieldLabel>
|
||||
<TextEdit Text="@quote.ValidFor.ToString()"></TextEdit>
|
||||
</Field>
|
||||
</Fields>
|
||||
|
||||
<h3>Recipient</h3>
|
||||
<DataGrid
|
||||
TItem="Contact"
|
||||
Data="@contacts"
|
||||
SelectedRow="@selectedRecipient"
|
||||
SelectedRowChanged="@OnSelectedRowChanged"
|
||||
Bordered
|
||||
Hoverable
|
||||
Filterable
|
||||
Striped
|
||||
ShowPager
|
||||
Responsive>
|
||||
<DataGridCommandColumn />
|
||||
<DataGridColumn Field="@nameof(Contact.ContactId)" Caption="ContactId" Filterable/>
|
||||
<DataGridColumn Field="@nameof(Contact.FirstName)" Caption="FirstName" Filterable/>
|
||||
<DataGridColumn Field="@nameof(Contact.LastName)" Caption="LastName" Filterable/>
|
||||
<DataGridColumn Field="@nameof(Contact.Gender)" Caption="Gender" Filterable/>
|
||||
<DataGridColumn Field="@nameof(Contact.EMail)" Caption="EMail" Filterable/>
|
||||
<DataGridColumn Field="@nameof(Contact.SAPContactNumber)" Caption="SAPContactNumber" Filterable/>
|
||||
</DataGrid>
|
||||
|
||||
<Fields>
|
||||
<Field ><FieldBody>@selectedRecipient.FirstName @selectedRecipient.LastName</FieldBody></Field>
|
||||
<Field ><FieldBody>@correspondingAccount.AccountName</FieldBody></Field>
|
||||
<Field ><FieldBody>@correspondingAccount.Street</FieldBody></Field>
|
||||
<Field ><FieldBody>@correspondingAccount.ZIP @correspondingAccount.City</FieldBody></Field>
|
||||
</Fields>
|
||||
|
||||
<h3>Line Items</h3>
|
||||
@if (quote.LineItems.Count != 0)
|
||||
{
|
||||
<DataGrid
|
||||
TItem="LineItem"
|
||||
Data="@quote.LineItems"
|
||||
Bordered
|
||||
Hoverable
|
||||
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)" Caption="ListPrice" />
|
||||
<DataGridColumn Field="@nameof(LineItem.TotalDiscount)" Caption="TotalDiscount" />
|
||||
<DataGridColumn Field="@nameof(LineItem.Total)" Caption="Total" />
|
||||
</DataGrid>
|
||||
}
|
||||
|
||||
<Button Color="Color.Primary" Clicked="@ImportLineItems">Import Clipboard</Button>
|
||||
<Button Color="Color.Success" Clicked="@CreateQuote">Create Quote</Button>
|
||||
<Button Color="Color.Danger" Clicked="@Cancel">Cancel</Button>
|
||||
|
||||
@code {
|
||||
IEnumerable<Contact> contacts = new List<Contact>();
|
||||
Quote quote = new();
|
||||
Contact selectedRecipient = new();
|
||||
Account correspondingAccount = new();
|
||||
|
||||
protected override async Task OnInitializedAsync()
|
||||
{
|
||||
contacts = await contactService.GetAllContactsAsync();
|
||||
await OnSelectedRowChanged(contacts.FirstOrDefault() ?? new());
|
||||
|
||||
Contact salesRep = await contactService.GetContactAsync("Woitschetzki");
|
||||
quote = new(salesRep, true);
|
||||
|
||||
await base.OnInitializedAsync();
|
||||
}
|
||||
|
||||
protected async Task OnSelectedRowChanged(Contact contact)
|
||||
{
|
||||
selectedRecipient = contact;
|
||||
quote.Recipient = contact;
|
||||
correspondingAccount = await accountService.GetAccountAsync(contact.AccountId) ?? new Account();
|
||||
}
|
||||
|
||||
protected async void CreateQuote()
|
||||
{
|
||||
quote.DataModificationByUser = "Gremlin_BlazorServer";
|
||||
|
||||
if (await quoteService.InsertQuoteAsync(quote))
|
||||
{
|
||||
navigationManager.NavigateTo("Quotes/Index");
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ImportLineItems()
|
||||
{
|
||||
try
|
||||
{
|
||||
string clipboard = await clipboardService.ReadTextAsync();
|
||||
|
||||
if (clipboard != "")
|
||||
{
|
||||
quote = quoteService.ReadLineItems(quote, clipboard);
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
Debug.WriteLine("Cannot read from clipboard");
|
||||
}
|
||||
}
|
||||
|
||||
void Cancel() => navigationManager.NavigateTo("Quotes/Index");
|
||||
}
|
||||
Loading…
Reference in New Issue