GetAll and ConvertToVM functions in AccountVM and ContactVM

pull/1/head
Sascha Woitschetzki 2021-06-23 12:10:43 +07:00 committed by Sascha Woitschetzki
parent 8be164c803
commit ac13aee422
5 changed files with 93 additions and 29 deletions

@ -31,9 +31,9 @@
<Button Content="Import Custom Descriptions from CSV..." Margin="10,5,10,5" Name="btnImportCDFromCSV" Click="BtnImportCDFromCSV_Click" /> <Button Content="Import Custom Descriptions from CSV..." Margin="10,5,10,5" Name="btnImportCDFromCSV" Click="BtnImportCDFromCSV_Click" />
</StackPanel> </StackPanel>
<StackPanel x:Name="Work" Grid.Row="1" Grid.Column="1" Orientation="Vertical" > <StackPanel x:Name="Work" Grid.Row="1" Grid.Column="1" Orientation="Vertical" >
<Button Content="Select a quote..." VerticalAlignment="top" Margin="10,5,10,3" Name="btnOpenQuote" Click="BtnOpenQuote_Click" /> <Button Content="Select a quote..." VerticalAlignment="top" Margin="10,5,10,5" Name="btnOpenQuote" Click="BtnOpenQuote_Click" />
<Button Content="Refresh Account List" VerticalAlignment="top" Margin="10,5,10,3" Name ="btnRefreshAccountList" Click="BtnRefreshAccountList_Click"/> <Button Content="Show Account List" VerticalAlignment="top" Margin="10,5,10,5" Name ="btnShowAccountList" Click="BtnShowAccountList_Click"/>
<Button Content="Test" VerticalAlignment="Top" Margin="10,50,10,3" Name="btnTest" Click="BtnTest_Click" Height="60" /> <Button Content="Show Contact List" VerticalAlignment="top" Margin="10,5,10,5" Name ="btnShowContactList" Click="BtnShowContactList_Click"/>
<Button Content="Open QuoteUI" VerticalAlignment="top" Margin="10,5,10,5" Name="btnQuoteUI" Click="BtnQuoteUI_Click" /> <Button Content="Open QuoteUI" VerticalAlignment="top" Margin="10,5,10,5" Name="btnQuoteUI" Click="BtnQuoteUI_Click" />
</StackPanel> </StackPanel>
<StackPanel x:Name="DB" Grid.Row="2" Grid.Column="2" Orientation="Vertical"> <StackPanel x:Name="DB" Grid.Row="2" Grid.Column="2" Orientation="Vertical">

@ -3,6 +3,7 @@ using Gremlin.GremlinUtilities;
using Gremlin.GremlinData.EntityClasses; using Gremlin.GremlinData.EntityClasses;
using Gremlin.GremlinUI.ViewModels; using Gremlin.GremlinUI.ViewModels;
using Gremlin.Models; using Gremlin.Models;
using Gremlin.ViewModels;
using Microsoft.Win32; using Microsoft.Win32;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
@ -86,17 +87,13 @@ namespace Gremlin.GremlinUI
_ = await DbHelper.ImportLSAGContactListToolDataAsync(); _ = await DbHelper.ImportLSAGContactListToolDataAsync();
} }
private void BtnRefreshAccountList_Click(object sender, RoutedEventArgs e)
{
ObservableCollection<Account> accounts = new(AccountVM.GetAccounts());
dg_Test.ItemsSource = accounts;
}
private void BtnChooseDb_Click(object sender, RoutedEventArgs e) private void BtnChooseDb_Click(object sender, RoutedEventArgs e)
{ {
ChooseDB chooseDB = new(); ChooseDB chooseDB = new();
if ((bool)chooseDB.ShowDialog()) if (chooseDB.ShowDialog() == true)
{
UpdateUI(); UpdateUI();
}
} }
private void BtnResetDb_Click(object sender, RoutedEventArgs e) private void BtnResetDb_Click(object sender, RoutedEventArgs e)
@ -137,5 +134,17 @@ namespace Gremlin.GremlinUI
QuoteUI quoteUI = new(); QuoteUI quoteUI = new();
_ = quoteUI.ShowDialog(); _ = quoteUI.ShowDialog();
} }
private void BtnShowAccountList_Click(object sender, RoutedEventArgs e)
{
ObservableCollection<AccountVM> accounts = new(AccountVM.GetAllAccountsVM());
dg_Test.ItemsSource = accounts;
}
private void BtnShowContactList_Click(object sender, RoutedEventArgs e)
{
ObservableCollection<ContactVM> contacts = new(ContactVM.GetAllContactsVM());
dg_Test.ItemsSource = contacts;
}
} }
} }

@ -29,7 +29,7 @@ namespace Gremlin.GremlinUI
private void LoadContacts() private void LoadContacts()
{ {
listCollectionContacts = new(ContactVM.GetContacts()); listCollectionContacts = new(ContactVM.GetAllContactsVM());
listCollectionContacts.Filter = ContactVM.SearchContact(listCollectionContacts, tbContactSearch.Text); listCollectionContacts.Filter = ContactVM.SearchContact(listCollectionContacts, tbContactSearch.Text);
dgFoundContacts.ItemsSource = listCollectionContacts; dgFoundContacts.ItemsSource = listCollectionContacts;
UpdateUI(); UpdateUI();

@ -1,6 +1,9 @@
using Gremlin.GremlinData.DBClasses; using Gremlin.GremlinData.DBClasses;
using Gremlin.GremlinData.EntityClasses; using Gremlin.GremlinData.EntityClasses;
using Gremlin.ViewModels;
using Microsoft.EntityFrameworkCore;
using System; using System;
using System.Collections.Generic;
using System.Collections.ObjectModel; using System.Collections.ObjectModel;
using System.Linq; using System.Linq;
@ -8,13 +11,34 @@ namespace Gremlin.GremlinUI.ViewModels
{ {
internal class AccountVM : BaseVM internal class AccountVM : BaseVM
{ {
public static ObservableCollection<Account> GetAccounts() public uint SAPAccountNumber { get; set; }
public string AccountName { get; set; }
public string Street { get; set; }
public uint ZIP { get; set; }
public string City { get; set; }
public string PhoneNumber { get; set; }
public string FaxNumber { get; set; }
public string Webpage { get; set; }
public string EMail { get; set; }
public ICollection<ContactVM> Contacts { get; set; }
public AccountType AccountType { get; set; }
public SubMarket SubMarket { get; set; }
public static ObservableCollection<AccountVM> GetAllAccountsVM()
{ {
try try
{ {
using (GremlinContext gremlinContext = new()) using (GremlinContext gremlinContext = new())
{ {
return new ObservableCollection<Account>(gremlinContext.Accounts.ToList()); List<Account> accounts = gremlinContext.Accounts.Include(account => account.Contacts).ToList();
ObservableCollection<AccountVM> accountsVM = new();
foreach (Account account in accounts)
{
accountsVM.Add(ConvertAccountToVM(account));
}
return accountsVM;
} }
} }
catch (Exception ex) catch (Exception ex)
@ -24,5 +48,31 @@ namespace Gremlin.GremlinUI.ViewModels
throw; throw;
} }
} }
public static AccountVM ConvertAccountToVM(Account account)
{
AccountVM accountVM = new();
accountVM.AccountType = account.AccountType;
accountVM.SubMarket = account.SubMarket;
accountVM.AccountName = account.AccountName;
accountVM.Street = account.Street;
accountVM.ZIP = account.ZIP;
accountVM.City = account.City;
accountVM.PhoneNumber = account.PhoneNumber;
accountVM.FaxNumber = account.FaxNumber;
accountVM.Webpage = account.Webpage;
accountVM.EMail = account.EMail;
accountVM.SAPAccountNumber = account.SAPAccountNumber;
List<ContactVM> contactsVM = new();
foreach (Contact contact in account.Contacts)
{
contactsVM.Add(ContactVM.ConvertContactToVM(contact));
}
accountVM.Contacts = contactsVM;
return accountVM;
}
} }
} }

@ -121,33 +121,21 @@ namespace Gremlin.ViewModels
} }
} }
public static ObservableCollection<ContactVM> GetContacts() public static ObservableCollection<ContactVM> GetAllContactsVM()
{ {
try try
{ {
using (GremlinContext gremlinContext = new()) using (GremlinContext gremlinContext = new())
{ {
List<Contact> contacts = gremlinContext.Contacts.Include(contact => contact.Account).ToList(); List<Contact> contacts = gremlinContext.Contacts.Include(contact => contact.Account).ToList();
ObservableCollection<ContactVM> contactsViewModel = new(); ObservableCollection<ContactVM> contactsVM = new();
foreach (Contact contact in contacts) foreach (Contact contact in contacts)
{ {
ContactVM contactViewModel = new(); contactsVM.Add(ConvertContactToVM(contact));
contactViewModel.Gender = contact.Gender;
contactViewModel.LastName = contact.LastName;
contactViewModel.FirstName = contact.FirstName;
contactViewModel.EMail = contact.EMail;
if (contact.Account != null)
{
contactViewModel.AccountName = contact.Account.AccountName;
contactViewModel.AccountStreet = contact.Account.Street;
contactViewModel.AccountZIP = contact.Account.ZIP;
contactViewModel.AccountCity = contact.Account.City;
}
contactsViewModel.Add(contactViewModel);
} }
return contactsViewModel; return contactsVM;
} }
} }
catch (Exception ex) catch (Exception ex)
@ -158,6 +146,23 @@ namespace Gremlin.ViewModels
} }
} }
public static ContactVM ConvertContactToVM(Contact contact)
{
ContactVM contactVM = new();
contactVM.Gender = contact.Gender;
contactVM.LastName = contact.LastName;
contactVM.FirstName = contact.FirstName;
contactVM.EMail = contact.EMail;
if (contact.Account != null)
{
contactVM.AccountName = contact.Account.AccountName;
contactVM.AccountStreet = contact.Account.Street;
contactVM.AccountZIP = contact.Account.ZIP;
contactVM.AccountCity = contact.Account.City;
}
return contactVM;
}
internal static StringBuilder CreateBriefkopf(ContactVM contactVM, bool tex = false) internal static StringBuilder CreateBriefkopf(ContactVM contactVM, bool tex = false)
{ {
StringBuilder briefkopf = new(); StringBuilder briefkopf = new();