OwnChat Teams eingebaut
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
<EnableSecurityDebugging>true</EnableSecurityDebugging>
|
||||
<TargetZone>Internet</TargetZone>
|
||||
<GenerateManifests>true</GenerateManifests>
|
||||
<SignManifests>false</SignManifests>
|
||||
<SignManifests>true</SignManifests>
|
||||
<ManifestKeyFile>
|
||||
</ManifestKeyFile>
|
||||
<ManifestCertificateThumbprint>8E3A8E81F1C6F67A1C6D239593544EA33D8AC6A7</ManifestCertificateThumbprint>
|
||||
@@ -43,12 +43,12 @@
|
||||
<TargetCulture>de-DE</TargetCulture>
|
||||
<ProductName>BeWoPlaner</ProductName>
|
||||
<PublisherName>ownSoft GmbH</PublisherName>
|
||||
<MinimumRequiredVersion>2.0.1.277</MinimumRequiredVersion>
|
||||
<MinimumRequiredVersion>2.0.1.279</MinimumRequiredVersion>
|
||||
<CreateWebPageOnPublish>true</CreateWebPageOnPublish>
|
||||
<WebPage>publish.htm</WebPage>
|
||||
<OpenBrowserOnPublish>false</OpenBrowserOnPublish>
|
||||
<TrustUrlParameters>true</TrustUrlParameters>
|
||||
<ApplicationRevision>278</ApplicationRevision>
|
||||
<ApplicationRevision>279</ApplicationRevision>
|
||||
<ApplicationVersion>2.0.1.%2a</ApplicationVersion>
|
||||
<UseApplicationTrust>false</UseApplicationTrust>
|
||||
<CreateDesktopShortcut>true</CreateDesktopShortcut>
|
||||
|
||||
@@ -58,7 +58,7 @@ namespace BeWo
|
||||
|
||||
public static string ShortVersion = "3.27";
|
||||
|
||||
public static string Version = "Version 3.27.2";
|
||||
public static string Version = "Version 3.27.3";
|
||||
|
||||
public static int RenderTier = 0;
|
||||
public static bool IsInDesignMode = DesignerProperties.GetIsInDesignMode(new DependencyObject());
|
||||
|
||||
@@ -24,8 +24,9 @@ namespace BeWo
|
||||
/// <summary>
|
||||
/// Wird verwendet, wenn keine DebugConfig geladen wurde oder DefaultProfilename empty ist
|
||||
/// </summary>
|
||||
public static string ServerUrl { get; set; }
|
||||
= "http://localhost:3777/Host";
|
||||
public static string ServerUrl { get; set; }
|
||||
//= "https://app5.bewoplaner.de/service";
|
||||
= "http://localhost:3777/Host";
|
||||
// = "http://178.63.79.124/service";
|
||||
|
||||
public DebugConfigMode DebugConfigMode { get; set; }
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace BeWo.View.Controls
|
||||
c.shine.Visibility = Visibility.Visible;
|
||||
c.tb.Text = vm.Sign;
|
||||
c.border.Background = vm.Brush;
|
||||
c.border.ToolTip = vm.Description;
|
||||
c.border.ToolTip = vm.DataContract.Tooltip;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
Height="Auto" Width="Auto" HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch" Focusable="True">
|
||||
<GroupBox Name="root" Header="Aktuell definierte Leistungskategorien" Style="{StaticResource ObjectEditGroupBox}">
|
||||
|
||||
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto" />
|
||||
@@ -114,11 +115,11 @@
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn x:Name="column_position" FieldName="Position" Header="Position" Width="60" />
|
||||
<dxg:GridColumn x:Name="column_position" FieldName="Position" Header="Position" Width="50" />
|
||||
<dxg:GridColumn FieldName="Name" Header="Bezeichnung" Width="200" />
|
||||
<dxg:GridColumn FieldName="Abbreviation" Header="Kürzel" Width="50" />
|
||||
<dxg:GridColumn FieldName="IsBillable" Header="Abrechenbar" Width="100" />
|
||||
<dxg:GridColumn FieldName="Percentage" Header="Prozent Abrechenbar" Width="130" EditSettings="{dxe:TextSettings DisplayFormat=0.##, Mask=f2, MaskType=Numeric}"/>
|
||||
<dxg:GridColumn FieldName="IsBillable" Header="Abrechenbar" Width="80" />
|
||||
<dxg:GridColumn FieldName="Percentage" Header="Prozent Abrechenbar" Width="120" EditSettings="{dxe:TextSettings DisplayFormat=0.##, Mask=f2, MaskType=Numeric}"/>
|
||||
<dxg:GridColumn FieldName="ProzentBudget" Header="Prozent Budget" Width="100" EditSettings="{dxe:TextSettings DisplayFormat=0.##, Mask=f2, MaskType=Numeric}"/>
|
||||
<dxg:GridColumn FieldName="ProzentStundenkonto" Header="Prozent Stundenkonto" Width="130" EditSettings="{dxe:TextSettings DisplayFormat=0.##, Mask=f2, MaskType=Numeric}"/>
|
||||
<dxg:GridColumn x:Name="column_visibility" FieldName="OhneHilfeplan" Header="Sichtbarkeit" Width="150" />
|
||||
@@ -156,5 +157,6 @@
|
||||
</Border>
|
||||
</Popup>
|
||||
</Grid>
|
||||
|
||||
</GroupBox>
|
||||
</localView:BeWoView>
|
||||
@@ -120,7 +120,7 @@
|
||||
</DataTemplate>
|
||||
</dxg:GridColumn.CellTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn FieldName="Position" Header="Position" Width="70" />
|
||||
<dxg:GridColumn FieldName="Position" Header="Position" Width="50" />
|
||||
<dxg:GridColumn FieldName="Name" Header="Bezeichnung" Width="200" />
|
||||
<dxg:GridColumn x:Name="column_category" FieldName="ServiceCategory" Header="Kategorie" Width="200" SortOrder="Ascending" />
|
||||
|
||||
@@ -133,8 +133,8 @@
|
||||
</ControlTemplate>
|
||||
</dxg:GridColumn.EditTemplate>
|
||||
</dxg:GridColumn>
|
||||
<dxg:GridColumn x:Name="column_interval" FieldName="AccountingInterval" Header="Abrechnungsintervall" Width="130" />
|
||||
<dxg:GridColumn FieldName="ProzentAbrechenbar" Header="Prozent Abrechenbar" Width="130" EditSettings="{dxe:TextSettings DisplayFormat=0.##, Mask=f2, MaskType=Numeric}"/>
|
||||
<dxg:GridColumn x:Name="column_interval" FieldName="AccountingInterval" Header="Abrechnungsintervall" Width="120" />
|
||||
<dxg:GridColumn FieldName="ProzentAbrechenbar" Header="Prozent Abrechenbar" Width="120" EditSettings="{dxe:TextSettings DisplayFormat=0.##, Mask=f2, MaskType=Numeric}"/>
|
||||
<dxg:GridColumn FieldName="ProzentBudget" Header="Prozent Budget" Width="100" EditSettings="{dxe:TextSettings DisplayFormat=0.##, Mask=f2, MaskType=Numeric}"/>
|
||||
<dxg:GridColumn FieldName="ProzentStundenkonto" Header="Prozent Stundenkonto" Width="130" EditSettings="{dxe:TextSettings DisplayFormat=0.##, Mask=f2, MaskType=Numeric}"/>
|
||||
</dxg:GridControl.Columns>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<localView:BeWoView x:Class="BeWo.View.Detail.TeamView" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:localView="clr-namespace:BeWo.View" xmlns:localSearchView="clr-namespace:BeWo.View.Search" xmlns:val="clr-namespace:BeWo.Validation" xmlns:uc="clr-namespace:BeWo.Controls;assembly=BeWo.Controls"
|
||||
xmlns:markup="clr-namespace:BeWo.MultiLanguage.Markup"
|
||||
xmlns:dxg="http://schemas.devexpress.com/winfx/2008/xaml/grid"
|
||||
Height="Auto" Width="Auto" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" Focusable="True">
|
||||
<Grid x:Name="teamViewMainGrid">
|
||||
<Grid.Resources>
|
||||
@@ -92,6 +93,17 @@
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
<ContextMenu
|
||||
x:Key="OwnChatTreeListContextMenu"
|
||||
x:Name="OwnChatTreeListContextMenu"
|
||||
MenuItem.Click="OwnChatTreeListContextMenu_Click"
|
||||
Opened="OwnChatTreeListContextMenu_Opened">
|
||||
<MenuItem Header="Ausgewählte Personen entfernen">
|
||||
<MenuItem.Icon>
|
||||
<Image Source="..\Ressources\Icons\Delete24.png" />
|
||||
</MenuItem.Icon>
|
||||
</MenuItem>
|
||||
</ContextMenu>
|
||||
</Grid.Resources>
|
||||
<uc:ShadowChrome>
|
||||
<GroupBox Style="{StaticResource MainContentGroupBoxStyle}">
|
||||
@@ -128,6 +140,7 @@
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
@@ -136,17 +149,66 @@
|
||||
|
||||
<Label>Teamname</Label>
|
||||
<Label Grid.Row="1">Leitung</Label>
|
||||
<Label Grid.Column="2">Notiz</Label>
|
||||
|
||||
<TextBox Grid.Column="1" Height="23" Margin="3" Text="{val:ValidationBinding Path=Name, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<Label Grid.Column="2">Notiz</Label>
|
||||
<CheckBox x:Name="CheckBoxIstOwnChatGruppe" Grid.Row="2" Margin="3" Grid.ColumnSpan="2" Content="{markup:Translate ownChat Gruppe}" IsChecked="{Binding Path=IsOwnChatTeam, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<TextBox Grid.Column="1" Height="23" Margin="3" Text="{val:ValidationBinding Path=Name, UpdateSourceTrigger=PropertyChanged}" />
|
||||
<uc:PopUpEdit IsReadOnly="True" Name="popupedit_leader"
|
||||
Grid.Row="1" Grid.Column="1" Height="23"
|
||||
DeleteButtonVisibility="Visible" Margin="3"
|
||||
PopUpClick="PopUpEdit_PopUpClick" Text="{val:ValidationBinding Path=LeaderString}"
|
||||
Cursor="Arrow" PreviewMouseDoubleClick="Popupedit_leader_OnPreviewMouseDoubleClick"/>
|
||||
<TextBox Grid.Column="3" Grid.RowSpan="3" MaxHeight="78" AcceptsReturn="True" Margin="3" Text="{Binding Path=Notice,UpdateSourceTrigger=PropertyChanged}" VerticalScrollBarVisibility="Auto" MinWidth="100" />
|
||||
<TextBox Grid.Column="3" Grid.RowSpan="4" MaxHeight="78" AcceptsReturn="True" Margin="3" Text="{Binding Path=Notice,UpdateSourceTrigger=PropertyChanged}" VerticalScrollBarVisibility="Auto" MinWidth="100" />
|
||||
|
||||
<GroupBox Grid.Row="3" Grid.ColumnSpan="4" Header="Mitglieder hinzufügen" Margin="3,15,3,3" Style="{DynamicResource ObjectEditGroupBox}">
|
||||
<GroupBox x:Name="GroupBoxOwnChat" Grid.Row="4" Grid.ColumnSpan="4" Header="Personen hinzufügen" Margin="3,15,3,3" Style="{DynamicResource ObjectEditGroupBox}" Visibility="{Binding Path=IsOwnChatTeam, Converter={StaticResource BoolVisibilityConverter}}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
<ColumnDefinition Width="Auto" />
|
||||
<ColumnDefinition Width="*" />
|
||||
</Grid.ColumnDefinitions>
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="*" />
|
||||
</Grid.RowDefinitions>
|
||||
|
||||
<Label VerticalAlignment="Bottom" Content="{markup:Translate zugeordnete Personen}">
|
||||
|
||||
</Label>
|
||||
|
||||
<dxg:TreeListControl x:Name="treelistcontrol_ownChatMember" Grid.Row="1" DefaultSorting="Name" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" SelectionMode="Row">
|
||||
<dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListColumn FieldName="Person.DetailDescription" AllowSorting="True"/>
|
||||
</dxg:TreeListControl.Columns>
|
||||
<dxg:TreeListControl.View>
|
||||
<dxg:TreeListView x:Name="TreeView_template" ShowColumnHeaders="False" ShowIndicator="False" ShowHorizontalLines="False" ShowVerticalLines="False" AutoWidth="True"
|
||||
AllowEditing="False" ShowNodeImages="False" PrintNodeImages="True"
|
||||
ContextMenu="{StaticResource OwnChatTreeListContextMenu}">
|
||||
</dxg:TreeListView>
|
||||
</dxg:TreeListControl.View>
|
||||
</dxg:TreeListControl>
|
||||
|
||||
<Button Name="button_add_ownChatPerson" Content="<" FontWeight="Bold" Width="25" Grid.Row="2" Grid.Column="1" VerticalAlignment="Center" Height="25" MinWidth="30" Margin="3" ToolTip="{markup:Translate Ausgewählte Personen dem Team hinzufügen}" Click="button_addOwnChatMember_Click" />
|
||||
|
||||
<Label VerticalAlignment="Bottom" Grid.Column="2" Content="{markup:Translate verfügbare Personen}">
|
||||
|
||||
</Label>
|
||||
|
||||
<TabControl x:Name="TabControlOwnChatPersonen" Grid.Column="2" Grid.Row="1" BorderThickness="0,0,0,0" FontSize="14">
|
||||
<TabItem Header="{markup:Translate Mitarbeiter}" IsSelected="True">
|
||||
<localSearchView:EmployeeSearchView x:Name="ownChatemployeesearchview" IsMultiSelect="True" />
|
||||
</TabItem>
|
||||
<TabItem Header="{markup:Translate Klienten}">
|
||||
<localSearchView:CustomerSearchView x:Name="ownChatcustomersearchview" IsMultiSelect="True" />
|
||||
</TabItem>
|
||||
<TabItem Header="{markup:Translate Personen}">
|
||||
<localSearchView:PersonSearchView x:Name="ownChatpersonsearchview" IsMultiSelect="True" />
|
||||
</TabItem>
|
||||
</TabControl>
|
||||
|
||||
</Grid>
|
||||
</GroupBox>
|
||||
|
||||
<GroupBox x:Name="GroupBoxTeam" Grid.Row="4" Grid.ColumnSpan="4" Header="Mitglieder hinzufügen" Margin="3,15,3,3" Style="{DynamicResource ObjectEditGroupBox}" Visibility="{Binding Path=IsOwnChatTeam, Converter={StaticResource BoolVisibilityConverter}, ConverterParameter=Reverse}">
|
||||
<Grid>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="*" />
|
||||
@@ -195,7 +257,7 @@
|
||||
</GroupBox>
|
||||
|
||||
|
||||
<Popup Grid.Row="4" Grid.ColumnSpan="4" Margin="10" Name="popup_employee" StaysOpen="False" Placement="MousePoint" Width="370" Height="250" Opened="popup_Opened" Closed="popup_Closed">
|
||||
<Popup Grid.Row="5" Grid.ColumnSpan="4" Margin="10" Name="popup_employee" StaysOpen="False" Placement="MousePoint" Width="370" Height="250" Opened="popup_Opened" Closed="popup_Closed">
|
||||
<localSearchView:EmployeeSearchView ItemSelected="EmployeeSearchView_EmployeeSelected" x:Name="leaderSearchView" />
|
||||
</Popup>
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.ServiceModel;
|
||||
using System.Windows;
|
||||
@@ -16,6 +17,8 @@ using BS.Shared.Core;
|
||||
using BS.Shared.DataContracts;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
using BS.Shared.Extensions;
|
||||
using BS.Shared.Translation;
|
||||
using DevExpress.Xpf.Grid;
|
||||
|
||||
namespace BeWo.View.Detail
|
||||
{
|
||||
@@ -45,6 +48,19 @@ namespace BeWo.View.Detail
|
||||
{
|
||||
tabitem_varFields.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
|
||||
if (!BeWoApp.LoggedOnUser.HasRight(UserRightType.ChatSettings) || !BeWoApp.AppSettings.ShowOwnChat)
|
||||
{
|
||||
CheckBoxIstOwnChatGruppe.Visibility = Visibility.Collapsed;
|
||||
//GroupBoxOwnChat.Visibility = Visibility.Collapsed;
|
||||
}
|
||||
//else
|
||||
//{
|
||||
// ToggleOwnChatGroupBox();
|
||||
//}
|
||||
|
||||
RebuildOwnChatMemberTree();
|
||||
|
||||
}
|
||||
|
||||
public override bool IsDirty => ViewModel != null && ViewModel.IsDirty;
|
||||
@@ -126,6 +142,107 @@ namespace BeWo.View.Detail
|
||||
ViewModel.Member.AddRange(employeesearchview.SelectedItems.Where(em => !ViewModel.Member.Contains(em)));
|
||||
}
|
||||
|
||||
private void button_addOwnChatMember_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
ViewModel.OwnChatMember.AddRange(ConvertToPerson2TeamList(ConvertToPersonDC(ownChatemployeesearchview.SelectedItems).Where(p => !ViewModel.OwnChatMember.Select(p2c => p2c.Person).Contains(p)).ToList()));
|
||||
ViewModel.OwnChatMember.AddRange(ConvertToPerson2TeamList(ConvertToPersonDC(ownChatcustomersearchview.SelectedItems).Where(p => !ViewModel.OwnChatMember.Select(p2c => p2c.Person).Contains(p)).ToList()));
|
||||
ViewModel.OwnChatMember.AddRange(ConvertToPerson2TeamList(ownChatpersonsearchview.SelectedItems.Where(p => !ViewModel.OwnChatMember.Select(p2c => p2c.Person).Contains(p)).ToList()));
|
||||
|
||||
RebuildOwnChatMemberTree();
|
||||
}
|
||||
|
||||
private void RebuildOwnChatMemberTree()
|
||||
{
|
||||
treelistcontrol_ownChatMember.BeginDataUpdate();
|
||||
|
||||
TreeListNode mRootNode = null;
|
||||
TreeListNode cRootNode = null;
|
||||
TreeListNode pRootNode = null;
|
||||
|
||||
if (treelistcontrol_ownChatMember.View.Nodes.Count == 0)
|
||||
{
|
||||
mRootNode = new TreeListNode();
|
||||
mRootNode.Content = new Person2TeamDC() { Person = new CompactPersonDC { LastName = Translator.Translate("Mitarbeiter") } };
|
||||
mRootNode.IsExpandButtonVisible = DevExpress.Utils.DefaultBoolean.True;
|
||||
mRootNode.IsExpanded = true;
|
||||
treelistcontrol_ownChatMember.View.Nodes.Add(mRootNode);
|
||||
|
||||
cRootNode = new TreeListNode();
|
||||
cRootNode.Content = new Person2TeamDC() { Person = new CompactPersonDC { LastName = Translator.Translate("Klienten") } };
|
||||
cRootNode.IsExpandButtonVisible = DevExpress.Utils.DefaultBoolean.True;
|
||||
cRootNode.IsExpanded = true;
|
||||
treelistcontrol_ownChatMember.View.Nodes.Add(cRootNode);
|
||||
|
||||
pRootNode = new TreeListNode();
|
||||
pRootNode.Content = new Person2TeamDC() { Person = new CompactPersonDC { LastName = Translator.Translate("Personen") } };
|
||||
pRootNode.IsExpandButtonVisible = DevExpress.Utils.DefaultBoolean.True;
|
||||
pRootNode.IsExpanded = true;
|
||||
treelistcontrol_ownChatMember.View.Nodes.Add(pRootNode);
|
||||
}
|
||||
else
|
||||
{
|
||||
mRootNode = treelistcontrol_ownChatMember.View.Nodes[0];
|
||||
cRootNode = treelistcontrol_ownChatMember.View.Nodes[1];
|
||||
pRootNode = treelistcontrol_ownChatMember.View.Nodes[2];
|
||||
|
||||
mRootNode.Nodes.Clear();
|
||||
cRootNode.Nodes.Clear();
|
||||
pRootNode.Nodes.Clear();
|
||||
}
|
||||
|
||||
foreach (var p in ViewModel.OwnChatMember)
|
||||
{
|
||||
TreeListNode node = new TreeListNode();
|
||||
node.Content = p;
|
||||
if (p.Person.PersonType == PersonType.Employee)
|
||||
{
|
||||
mRootNode.Nodes.Add(node);
|
||||
}
|
||||
else if (p.Person.PersonType == PersonType.Customer)
|
||||
{
|
||||
cRootNode.Nodes.Add(node);
|
||||
}
|
||||
else
|
||||
{
|
||||
pRootNode.Nodes.Add(node);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
treelistcontrol_ownChatMember.EndDataUpdate();
|
||||
}
|
||||
|
||||
private IList<Person2TeamDC> ConvertToPerson2TeamList(List<CompactPersonDC> plist)
|
||||
{
|
||||
var list = new List<Person2TeamDC>();
|
||||
foreach (var item in plist)
|
||||
{
|
||||
list.Add(new Person2TeamDC { Person = item, OwnChatRole = 0 });
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private IList<CompactPersonDC> ConvertToPersonDC(List<CompactEmployeeDC> employees)
|
||||
{
|
||||
var list = new List<CompactPersonDC>();
|
||||
foreach (var item in employees)
|
||||
{
|
||||
list.Add(new CompactPersonDC { FirstName = item.FirstName, LastName = item.LastName, PersonType = PersonType.Employee, PersonOid = item.PersonOid, EmployeeOid = item.EmployeeOid });
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private IEnumerable<CompactPersonDC> ConvertToPersonDC(List<CompactCustomerDC> customer)
|
||||
{
|
||||
var list = new List<CompactPersonDC>();
|
||||
foreach (var item in customer)
|
||||
{
|
||||
list.Add(new CompactPersonDC { FirstName = item.FirstName, LastName = item.LastName, PersonType = PersonType.Customer, PersonOid = item.PersonOid, CustomerOid = item.CustomerOid});
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
private void button_remove_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
ViewModel.Member.Remove((CompactEmployeeDC)((Button)sender).Tag);
|
||||
@@ -183,5 +300,46 @@ namespace BeWo.View.Detail
|
||||
() => BeWoUtils.OpenModalViewWindow<EmployeeVM, EmployeeDC, TeamView>(cb, this, () => this.Dispatch(
|
||||
() => BeWoUtils.UpdateAllViews(employee)))));
|
||||
}
|
||||
|
||||
private void OwnChatTreeListContextMenu_Opened(object sender, RoutedEventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
private void OwnChatTreeListContextMenu_Click(object sender, RoutedEventArgs e)
|
||||
{
|
||||
if (e.OriginalSource is MenuItem)
|
||||
{
|
||||
var twi = e.OriginalSource as MenuItem;
|
||||
|
||||
var selection = treelistcontrol_ownChatMember.GetSelectedNodes();
|
||||
|
||||
if (selection != null && selection.Length > 0)
|
||||
{
|
||||
var persons = selection.Select(s => s.Content as Person2TeamDC).ToList();
|
||||
ViewModel.OwnChatMember.RemoveRange(persons);
|
||||
|
||||
RebuildOwnChatMemberTree();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//private void ToggleOwnChatGroupBox_Checked_Unchecked(object sender, RoutedEventArgs e)
|
||||
//{
|
||||
// ToggleOwnChatGroupBox();
|
||||
//}
|
||||
|
||||
//private void ToggleOwnChatGroupBox()
|
||||
//{
|
||||
// if (CheckBoxIstOwnChatGruppe.IsChecked == true)
|
||||
// {
|
||||
// GroupBoxOwnChat.Visibility = Visibility.Visible;
|
||||
// GroupBoxTeam.Visibility = Visibility.Collapsed;
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// GroupBoxOwnChat.Visibility = Visibility.Collapsed;
|
||||
// GroupBoxTeam.Visibility = Visibility.Visible;
|
||||
// }
|
||||
//}
|
||||
}
|
||||
}
|
||||
@@ -27,6 +27,10 @@ namespace BeWo.ViewModel
|
||||
|
||||
private ObservableCollection<CompactEmployeeDC> _Member;
|
||||
|
||||
private ObservableCollection<Person2TeamDC> _OwnChatMember;
|
||||
|
||||
private bool _IsOwnChatTeam;
|
||||
|
||||
private string _Name;
|
||||
|
||||
private string _Notice;
|
||||
@@ -45,6 +49,21 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsOwnChatTeam
|
||||
{
|
||||
get { return _IsOwnChatTeam; }
|
||||
|
||||
set
|
||||
{
|
||||
if (AreDifferent(_IsOwnChatTeam, value))
|
||||
{
|
||||
_IsOwnChatTeam = value;
|
||||
StoreDirtyInformation(AreDifferent(DataContract.IsOwnChatTeam, value), nameof(IsOwnChatTeam));
|
||||
FirePropertyChanged(nameof(IsOwnChatTeam));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public CompactEmployeeDC Leader
|
||||
{
|
||||
get { return this._Leader; }
|
||||
@@ -84,6 +103,20 @@ namespace BeWo.ViewModel
|
||||
}
|
||||
}
|
||||
|
||||
public ObservableCollection<Person2TeamDC> OwnChatMember
|
||||
{
|
||||
get { return this._OwnChatMember; }
|
||||
|
||||
set
|
||||
{
|
||||
if (this.AreDifferent(this._OwnChatMember, value))
|
||||
{
|
||||
this._OwnChatMember = value;
|
||||
this.FirePropertyChanged(nameof(OwnChatMember));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[ValidationAttribute(ValidationRule = ValidationRules.NotNullOrStringEmpty)]
|
||||
public string Name
|
||||
{
|
||||
@@ -132,9 +165,10 @@ namespace BeWo.ViewModel
|
||||
protected override void InitByDataContract(TeamDC pDataContract)
|
||||
{
|
||||
this._Member = new ObservableCollection<CompactEmployeeDC>();
|
||||
|
||||
this._OwnChatMember = new ObservableCollection<Person2TeamDC>();
|
||||
if (!this.IsNew)
|
||||
{
|
||||
this._IsOwnChatTeam = pDataContract.IsOwnChatTeam;
|
||||
this._Name = pDataContract.Name;
|
||||
this._Notice = pDataContract.Notice;
|
||||
this._Leader = pDataContract.Leader;
|
||||
@@ -143,19 +177,25 @@ namespace BeWo.ViewModel
|
||||
{
|
||||
this._Member.AddRange(pDataContract.Member.OrderBy(m => string.Format("{0},{1}", m.LastName, m.FirstName)));
|
||||
}
|
||||
if (pDataContract.OwnChatMember != null)
|
||||
{
|
||||
this._OwnChatMember.AddRange(pDataContract.OwnChatMember.OrderBy(m => string.Format("{0},{1}", m.Person.LastName, m.Person.FirstName)));
|
||||
}
|
||||
}
|
||||
|
||||
_VarFields = new VarFieldListVM(pDataContract.TeamVarFields);
|
||||
this._Member.CollectionChanged += (s, e) => this.StoreDirtyInformation(!pDataContract.Member.ContainsSameItemsAs(this._Member), PropertyName_Member);
|
||||
this._OwnChatMember.CollectionChanged += (s, e) => this.StoreDirtyInformation(!pDataContract.OwnChatMember.ContainsSameItemsAs(this._OwnChatMember), nameof(OwnChatMember));
|
||||
}
|
||||
|
||||
protected override TeamDC MapToDataContract(TeamDC pDataContract, bool doCommit)
|
||||
{
|
||||
pDataContract.IsOwnChatTeam = this._IsOwnChatTeam;
|
||||
pDataContract.Leader = this._Leader;
|
||||
pDataContract.Name = this._Name;
|
||||
pDataContract.Notice = this._Notice;
|
||||
pDataContract.Member = this._Member.ToList();
|
||||
|
||||
pDataContract.OwnChatMember = this._OwnChatMember.ToList();
|
||||
if (_VarFields != null)
|
||||
{
|
||||
pDataContract.TeamVarFields = _VarFields.CopyToDCList(doCommit);
|
||||
|
||||
@@ -14,18 +14,18 @@
|
||||
<binding name="BeWoBasicEndpoint" closeTimeout="00:05:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<!--<security mode="None" />-->
|
||||
<security mode="None" />
|
||||
<security mode="Transport" />
|
||||
<!-- mode="Transport" für https und "None" sonst-->
|
||||
</binding>
|
||||
<binding name="BeWoStreamingEndpoint" receiveTimeout="10:10:00" sendTimeout="10:01:00" maxBufferSize="65536" maxReceivedMessageSize="67108864" transferMode="StreamedRequest" useDefaultWebProxy="true" messageEncoding="Text">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<!--<security mode="None" />-->
|
||||
<security mode="None" />
|
||||
<security mode="Transport" />
|
||||
<!-- mode="Transport" für https und "None" sonst-->
|
||||
</binding>
|
||||
<binding name="QueryServiceEndpoint" closeTimeout="00:10:00" openTimeout="00:10:00" receiveTimeout="00:10:00" sendTimeout="00:10:00" allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" maxBufferPoolSize="524288" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" textEncoding="utf-8" transferMode="Buffered" useDefaultWebProxy="true" messageEncoding="Text">
|
||||
<readerQuotas maxDepth="32" maxStringContentLength="2147483647" maxArrayLength="16384" maxBytesPerRead="4096" maxNameTableCharCount="16384" />
|
||||
<security mode="None">
|
||||
<security mode="Transport">
|
||||
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
|
||||
<message clientCredentialType="UserName" algorithmSuite="Default" />
|
||||
</security>
|
||||
|
||||
@@ -43,24 +43,27 @@ namespace BeWoDatabaseTerminator
|
||||
ServicePointManager.ServerCertificateValidationCallback = PinPublicKey;
|
||||
}
|
||||
|
||||
private const String PUB_KEY_X3 = "9CD30CF05AE52E47B7725D3783B3686330EAD735261925E1BDBE35F170922FB7B84B4105ABA99E350858ECB12AC468870BA3E375E4E6F3A76271BA7981601FD7919A9FF3D0786771C8690E9591CFFEE699E9603C48CC7ECA4D7712249D471B5AEBB9EC1E37001C9CAC7BA705EACE4AEBBD41E53698B9CBFD6D3C9668DF232A42900C867467C87FA59AB8526114133F65E98287CBDBFA0E56F68689F3853F9786AFB0DC1AEF6B0D95167DC42BA065B299043675806BAC4AF31B9049782FA2964F2A20252904C674C0D031CD8F31389516BAA833B843F1B11FC3307FA27931133D2D36F8E3FCF2336AB93931C5AFC48D0D1D641633AAFA8429B6D40BC0D87DC3930203010001";
|
||||
private static String PUB_KEY_X3 = "9CD30CF05AE52E47B7725D3783B3686330EAD735261925E1BDBE35F170922FB7B84B4105ABA99E350858ECB12AC468870BA3E375E4E6F3A76271BA7981601FD7919A9FF3D0786771C8690E9591CFFEE699E9603C48CC7ECA4D7712249D471B5AEBB9EC1E37001C9CAC7BA705EACE4AEBBD41E53698B9CBFD6D3C9668DF232A42900C867467C87FA59AB8526114133F65E98287CBDBFA0E56F68689F3853F9786AFB0DC1AEF6B0D95167DC42BA065B299043675806BAC4AF31B9049782FA2964F2A20252904C674C0D031CD8F31389516BAA833B843F1B11FC3307FA27931133D2D36F8E3FCF2336AB93931C5AFC48D0D1D641633AAFA8429B6D40BC0D87DC3930203010001";
|
||||
|
||||
private const String PUB_KEY_R3 = "BB021528CCF6A094D30F12EC8D5592C3F882F199A67A4288A75D26AAB52BB9C54CB1AF8E6BF975C8A3D70F4794145535578C9EA8A23919F5823C42A94E6EF53BC32EDB8DC0B05CF35938E7EDCF69F05A0B1BBEC094242587FA3771B313E71CACE19BEFDBE43B45524596A9C153CE34C852EEB5AEED8FDE6070E2A554ABB66D0E97A540346B2BD3BC66EB66347CFA6B8B8F572999F830175DBA726FFB81C5ADD286583D17C7E709BBF12BF786DCC1DA715DD446E3CCAD25C188BC60677566B3F118F7A25CE653FF3A88B647A5FF1318EA9809773F9D53F9CF01E5F5A6701714AF63A4FF99B3939DDC53A706FE48851DA169AE2575BB13CC5203F5ED51A18BDB150203010001";
|
||||
private static String PUB_KEY_R3 = "BB021528CCF6A094D30F12EC8D5592C3F882F199A67A4288A75D26AAB52BB9C54CB1AF8E6BF975C8A3D70F4794145535578C9EA8A23919F5823C42A94E6EF53BC32EDB8DC0B05CF35938E7EDCF69F05A0B1BBEC094242587FA3771B313E71CACE19BEFDBE43B45524596A9C153CE34C852EEB5AEED8FDE6070E2A554ABB66D0E97A540346B2BD3BC66EB66347CFA6B8B8F572999F830175DBA726FFB81C5ADD286583D17C7E709BBF12BF786DCC1DA715DD446E3CCAD25C188BC60677566B3F118F7A25CE653FF3A88B647A5FF1318EA9809773F9D53F9CF01E5F5A6701714AF63A4FF99B3939DDC53A706FE48851DA169AE2575BB13CC5203F5ED51A18BDB150203010001";
|
||||
|
||||
private const String PUB_KEY_E1 = "245c2da22afd1c4ba65d97732731acb2a06962ef65e8a6b0f0ac4b9fff1c0b700fd3982f4dfc0f009b37f074055732972e05ef2a4325a3fb6e342713f64f7e69d302995eeb244792c1249be6b1218fc12481fc68cc1f69ba58f51922f774c616";
|
||||
private static String PUB_KEY_E1 = "245c2da22afd1c4ba65d97732731acb2a06962ef65e8a6b0f0ac4b9fff1c0b700fd3982f4dfc0f009b37f074055732972e05ef2a4325a3fb6e342713f64f7e69d302995eeb244792c1249be6b1218fc12481fc68cc1f69ba58f51922f774c616";
|
||||
|
||||
private const String PUB_KEY_E5 = "0d0b3a8a6b618eb6efdc5f58e7c6424554ab63f66661480a2e5975b481023750b73f1679dc98eca1289772201c2ccfd57c52204e54785b84146bc090ae85ecc051413c5a877f064dd4fe60d1fa6c2de17d951088a208540f991a4ce6ea0aacd8";
|
||||
private static String PUB_KEY_E5 = "0d0b3a8a6b618eb6efdc5f58e7c6424554ab63f66661480a2e5975b481023750b73f1679dc98eca1289772201c2ccfd57c52204e54785b84146bc090ae85ecc051413c5a877f064dd4fe60d1fa6c2de17d951088a208540f991a4ce6ea0aacd8";
|
||||
|
||||
private const String PUB_KEY_E6 = "d9f19e4687f8217160a826eba3fab9eada1db912a7d426d95114b1617c7596bf220b391fd5bed10a46aa2d3c4a09842ebe409555e91940376675ed324e770449f8707bc318e7cef77110feac74d800d4ed6d1c731633109c3ab2ea6c62f4bdb8";
|
||||
private static String PUB_KEY_E6 = "d9f19e4687f8217160a826eba3fab9eada1db912a7d426d95114b1617c7596bf220b391fd5bed10a46aa2d3c4a09842ebe409555e91940376675ed324e770449f8707bc318e7cef77110feac74d800d4ed6d1c731633109c3ab2ea6c62f4bdb8";
|
||||
|
||||
private const String PUB_KEY_R10 = "CF57E5E6C45412EDB447FEC92758764650288C1D3E88DF059DD5B51829BDDDB55ABFFAF6CEA3BEAF00214B625A5A3C012FC55803F689FF8E1143EBC1B5E01407968F6F1FD7E7BA8139097565B7C2AF185B372628E7A3F4072B6D1AFFAB58BC95AE40FFE9CB57C4B55B7F780D1861BC17E754C6BB4991CD6E18D18085EEA66536BC74EABC504CEAFC21F338169394BAB0D36B3806CD16127ACA5275C8AD76B2C29C5D98455C6F617BC62DEE3C13528601D957E6381CDF8DB51F92919AE74A1CCC45A87255F0B0E6A307ECFDA71B669E3F488B71847158C93AFAEF5EF25B442B3C74E78FB247C1076ACD9AB70D96F712812651540AEC61F6F7F5E2F28AC8950D8D0203010001";
|
||||
private static String PUB_KEY_E7 = "0441e8049308587fbe37300cc0a041eafe56da84933ec900dbab6712cff94f5309e8a82fab29e59f1546f45b624e0fd4834199b79f4072451c2c5c4a32a6c2dbc6056a65ffdadaf075b4403b146895b6a8e26a71e274655153de16d41e27c133fd";
|
||||
|
||||
private const String PUB_KEY_R11 = "BA87BC5C1B0039CBCA0ACDD46710F9013CA54EA561CB26CA52FB1501B7B928F5281EED27B324183967090C08ECE03AB03B770EBDF3E53954410C4EAE41D69974DE51DBEF7BFF58BDA8B713F6DE31D5F272C9726A0B8374959C4600641499F3B1D922D9CDA892AA1C267A3FFEEF58057B089581DB710F8EFBE33109BB09BE504D5F8F91763D5A9D9E83F2E9C466B3E106664348188065A037189A9B843297B1B2BDC4F815009D2788FBE26317966C9B27674BC4DB285E69C279F0495CE02450E1C4BCA105AC7B406D00B4C2413FA758B82FC55C9BA5BB099EF1FEEBB08539FDA80AEF45C478EB652AC2CF5F3CDEE35C4D1BF70B272BAA0B4277534F796A1D87D90203010001";
|
||||
private static String PUB_KEY_E8 = "04d165f25edc4bb40c029cd2b2faeee96cab3aae38a1f4d4393233c542d4cc330c34c7212090705ce8622f1c71b342d779be460dc1db47a113a0c7df8126633bd48d1df63d823332f6f42be7f5963ab41367187b6b3e8d48d9eadeedae6d3e874c";
|
||||
|
||||
private const String PUB_KEY_R12 = "da982874adbe94fe3be01ee2e54b75ab2c127feda703327e3697ece8318fa5138d0b992e1ecd01513d4ce5286e095531aaa5225d72f42d07c24d403cdf0123b97837f51a653234e686719d04ef84085bbd021a99eba601009a73906d8fa207a0d097d3da456181353d14f9c4c05f6adc0b961ab09fe32aeabd2ad698c79b71ab3b740f3cdbb260be5a4b4e18e9db2a735c8961659efeed3ca6cb4e6fe49ef90046b3ff194d2a63b38e66c6188570c750656f3b74e548830f08585d2d239d5ea3fee8db00a1d2f4e3194df2ee7af6279ee5cd9c2da2f27f9c17adef133739d1b4c82c41d686c0e9ec21f8591b7fb93a7c9f5c019d6204c228bd0aad3cca10ec1b0203010001";
|
||||
private static String PUB_KEY_R10 = "CF57E5E6C45412EDB447FEC92758764650288C1D3E88DF059DD5B51829BDDDB55ABFFAF6CEA3BEAF00214B625A5A3C012FC55803F689FF8E1143EBC1B5E01407968F6F1FD7E7BA8139097565B7C2AF185B372628E7A3F4072B6D1AFFAB58BC95AE40FFE9CB57C4B55B7F780D1861BC17E754C6BB4991CD6E18D18085EEA66536BC74EABC504CEAFC21F338169394BAB0D36B3806CD16127ACA5275C8AD76B2C29C5D98455C6F617BC62DEE3C13528601D957E6381CDF8DB51F92919AE74A1CCC45A87255F0B0E6A307ECFDA71B669E3F488B71847158C93AFAEF5EF25B442B3C74E78FB247C1076ACD9AB70D96F712812651540AEC61F6F7F5E2F28AC8950D8D0203010001";
|
||||
|
||||
private const String PUB_KEY_R13 = "a567708dd0568164151761cdb906d4ad19908c2650379816639254dbd9cc840593ecd3ec081ba0605143487d2bc748969eb42dda9dc8273b57a19fabf0d60ed40e30ca6f9bb1d1d6a49d323e584e356f4558687117fc3ed85d82a02fb2516cb01a5db859ce3565c88ba1af1037ffe39c5dc2491734ff8c2b8b8df0bc712c930c1d05c4bac7cdaac95e7cd1c901f79c03f6fc0a5df4da7be6db764270ebf44d22da00776fd6c95f17fdda752ea5570cf6ea5cb6e073a568cfa174e275827e109fc1f5a2eb01e938b10a44ccd3c289f54935820a34b31ce988c2474e820e0a36f0474f8af1290475dacde19a5cff5e9d9895ba9a43d04aa21705010430d332b38f0203010001";
|
||||
private static String PUB_KEY_R11 = "BA87BC5C1B0039CBCA0ACDD46710F9013CA54EA561CB26CA52FB1501B7B928F5281EED27B324183967090C08ECE03AB03B770EBDF3E53954410C4EAE41D69974DE51DBEF7BFF58BDA8B713F6DE31D5F272C9726A0B8374959C4600641499F3B1D922D9CDA892AA1C267A3FFEEF58057B089581DB710F8EFBE33109BB09BE504D5F8F91763D5A9D9E83F2E9C466B3E106664348188065A037189A9B843297B1B2BDC4F815009D2788FBE26317966C9B27674BC4DB285E69C279F0495CE02450E1C4BCA105AC7B406D00B4C2413FA758B82FC55C9BA5BB099EF1FEEBB08539FDA80AEF45C478EB652AC2CF5F3CDEE35C4D1BF70B272BAA0B4277534F796A1D87D90203010001";
|
||||
|
||||
private static String PUB_KEY_R12 = "00da982874adbe94fe3be01ee2e54b75ab2c127feda703327e3697ece8318fa5138d0b992e1ecd01513d4ce5286e095531aaa5225d72f42d07c24d403cdf0123b97837f51a653234e686719d04ef84085bbd021a99eba601009a73906d8fa207a0d097d3da456181353d14f9c4c05f6adc0b961ab09fe32aeabd2ad698c79b71ab3b740f3cdbb260be5a4b4e18e9db2a735c8961659efeed3ca6cb4e6fe49ef90046b3ff194d2a63b38e66c6188570c750656f3b74e548830f08585d2d239d5ea3fee8db00a1d2f4e3194df2ee7af6279ee5cd9c2da2f27f9c17adef133739d1b4c82c41d686c0e9ec21f8591b7fb93a7c9f5c019d6204c228bd0aad3cca10";
|
||||
|
||||
private static String PUB_KEY_R13 = "00a567708dd0568164151761cdb906d4ad19908c2650379816639254dbd9cc840593ecd3ec081ba0605143487d2bc748969eb42dda9dc8273b57a19fabf0d60ed40e30ca6f9bb1d1d6a49d323e584e356f4558687117fc3ed85d82a02fb2516cb01a5db859ce3565c88ba1af1037ffe39c5dc2491734ff8c2b8b8df0bc712c930c1d05c4bac7cdaac95e7cd1c901f79c03f6fc0a5df4da7be6db764270ebf44d22da00776fd6c95f17fdda752ea5570cf6ea5cb6e073a568cfa174e275827e109fc1f5a2eb01e938b10a44ccd3c289f54935820a34b31ce988c2474e820e0a36f0474f8af1290475dacde19a5cff5e9d9895ba9a43d04aa21705010430d332b38f";
|
||||
|
||||
|
||||
private static bool PinPublicKey(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslpolicyerrors)
|
||||
@@ -81,6 +84,8 @@ namespace BeWoDatabaseTerminator
|
||||
pk.Contains(PUB_KEY_E1.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E5.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E6.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E7.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_E8.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R10.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R11.ToLower()) ||
|
||||
pk.Contains(PUB_KEY_R12.ToLower()) ||
|
||||
|
||||
@@ -251,6 +251,7 @@
|
||||
<Compile Include="Entities\Light\InvoiceBaseLight.cs" />
|
||||
<Compile Include="Entities\Light\LightEntity.cs" />
|
||||
<Compile Include="Entities\Light\OrganisationLight.cs" />
|
||||
<Compile Include="Entities\Person2Team.cs" />
|
||||
<Compile Include="Entities\StoredFile.cs" />
|
||||
<Compile Include="Entities\TwoFactorCode.cs" />
|
||||
<Compile Include="Entities\AbwesenheitsInformationPrint.cs" />
|
||||
@@ -856,6 +857,7 @@
|
||||
<EmbeddedResource Include="Mappings\OrganisationLight.hbm.xml">
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Mappings\Person2Team.hbm.xml" />
|
||||
<Content Include="Mappings\Timesheet2Mail.hbm.xml" />
|
||||
<EmbeddedResource Include="Mappings\ContactHistory.hbm.xml">
|
||||
<SubType>Designer</SubType>
|
||||
|
||||
@@ -900,7 +900,7 @@ namespace BeWo.Data.Entities
|
||||
{
|
||||
if (name.Length > 0)
|
||||
name += ", ";
|
||||
name = t2c.Team.Name;
|
||||
name += t2c.Team.Name;
|
||||
}
|
||||
|
||||
return name;
|
||||
|
||||
24
Data/Entities/Person2Team.cs
Normal file
24
Data/Entities/Person2Team.cs
Normal file
@@ -0,0 +1,24 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using BS.Shared;
|
||||
|
||||
namespace BeWo.Data.Entities
|
||||
{
|
||||
public class Person2Team : BeWoEntityBase
|
||||
{
|
||||
|
||||
public Person2Team() { _Tid = TableID.Person2Team; }
|
||||
|
||||
public virtual Person Person { get; set; }
|
||||
public virtual Team Team { get; set; }
|
||||
|
||||
public virtual int? OwnChatRole { get; set; }
|
||||
|
||||
public virtual long? TeamOid { get; set; }
|
||||
public virtual long? PersonOid { get; set; }
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -18,6 +18,8 @@ namespace BeWo.Data.Entities
|
||||
|
||||
private IList<Employee> _MemberList;
|
||||
|
||||
private IList<Person2Team> _OwnChatMember;
|
||||
|
||||
private string _Name;
|
||||
|
||||
private IList<VarFieldValue> _VarFieldValueList;
|
||||
@@ -27,6 +29,8 @@ namespace BeWo.Data.Entities
|
||||
_Tid = TableID.Team;
|
||||
}
|
||||
|
||||
public virtual bool IsOwnChatTeam { get; set; }
|
||||
|
||||
public virtual Employee Leader
|
||||
{
|
||||
get
|
||||
@@ -59,6 +63,22 @@ namespace BeWo.Data.Entities
|
||||
}
|
||||
}
|
||||
|
||||
public virtual IList<Person2Team> OwnChatMember
|
||||
{
|
||||
get
|
||||
{
|
||||
return _OwnChatMember ?? (_OwnChatMember = new List<Person2Team>());
|
||||
}
|
||||
|
||||
set
|
||||
{
|
||||
if (AreDifferent(_OwnChatMember, value))
|
||||
{
|
||||
_OwnChatMember = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public virtual IList<VarFieldValue> VarFieldValueList
|
||||
{
|
||||
get { return _VarFieldValueList ?? (_VarFieldValueList = new List<VarFieldValue>()); }
|
||||
|
||||
22
Data/Mappings/Person2Team.hbm.xml
Normal file
22
Data/Mappings/Person2Team.hbm.xml
Normal file
@@ -0,0 +1,22 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2">
|
||||
<class name="BeWo.Data.Entities.Person2Team,BeWo.Data" table="Person2Team" >
|
||||
<id name="Oid" column="Oid" type="Int64" unsaved-value="null" >
|
||||
<generator class="identity"/>
|
||||
</id>
|
||||
<version type="Int64" column="Version" name="Version" />
|
||||
<property column="Tid" type="BS.Shared.TableID, BS.Shared" name="_Tid" access="field" />
|
||||
<property column="Notice" type="String" name="Notice" length="1024" />
|
||||
<property column="InsTs" type="DateTime" name="InsTs" />
|
||||
<property column="InsUser" type="String" name="InsUser" length="256" />
|
||||
<property column="UpdTs" type="DateTime" name="UpdTs" />
|
||||
<property column="UdpUser" type="String" name="UdpUser" length="256" />
|
||||
<property column="IsActive" type="BS.Shared.ActivationTypeId, BS.Shared" name="IsActive" />
|
||||
<property column="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" name="SystemEntryID" />
|
||||
<property name="OwnChatRole" type="Int32"/>
|
||||
<property column="TeamOid" type="Int64" name="TeamOid" update="false" insert="false"/>
|
||||
<property column="PersonOid" type="Int64" name="PersonOid" update="false" insert="false"/>
|
||||
<many-to-one name="Person" column="PersonOid" class="BeWo.Data.Entities.Person,BeWo.Data" cascade="none" />
|
||||
<many-to-one name="Team" column="TeamOid" class="BeWo.Data.Entities.Team,BeWo.Data" cascade="none" />
|
||||
</class>
|
||||
</hibernate-mapping>
|
||||
@@ -14,11 +14,16 @@
|
||||
<property column="SystemEntryID" type="BS.Shared.SystemEntryID, BS.Shared" name="SystemEntryID" />
|
||||
<property column="UdpUser" type="String" name="UdpUser" length="256" />
|
||||
<property column="Notice" type="String" name="Notice" length="1024" />
|
||||
<property name="IsOwnChatTeam" />
|
||||
<many-to-one name="Leader" column="EmployeeOid" class="BeWo.Data.Entities.Employee,BeWo.Data" cascade="none" />
|
||||
<bag name="MemberList" table="Employee2Team" generic="true" cascade="none" batch-size="250">
|
||||
<key column="TeamOid" />
|
||||
<many-to-many column="EmployeeOid" class="BeWo.Data.Entities.Employee,BeWo.Data" />
|
||||
</bag>
|
||||
<bag name="OwnChatMember" table="Person2Team" generic="true" cascade="all-delete-orphan" batch-size="250">
|
||||
<key column="TeamOid" />
|
||||
<one-to-many class="BeWo.Data.Entities.Person2Team,BeWo.Data" />
|
||||
</bag>
|
||||
<bag name="VarFieldValueList" table="VarFieldValue" generic="true" cascade="all-delete-orphan" where="ObjectTid = 30 AND IsActive=1" batch-size="250">
|
||||
<key column="ObjectOid" />
|
||||
<one-to-many class="BeWo.Data.Entities.VarFieldValue, BeWo.Data" />
|
||||
|
||||
21
Model/Changes_2025-10-06_Person2Team.txt
Normal file
21
Model/Changes_2025-10-06_Person2Team.txt
Normal file
@@ -0,0 +1,21 @@
|
||||
|
||||
CREATE TABLE `person2team` (
|
||||
`Oid` bigint NOT NULL AUTO_INCREMENT,
|
||||
`PersonOid` bigint DEFAULT NULL,
|
||||
`TeamOid` bigint DEFAULT NULL,
|
||||
`OwnChatRole` int DEFAULT NULL,
|
||||
`Tid` int DEFAULT NULL,
|
||||
`Notice` varchar(1024) DEFAULT NULL,
|
||||
`InsTs` datetime DEFAULT NULL,
|
||||
`InsUser` varchar(256) DEFAULT NULL,
|
||||
`Version` bigint DEFAULT NULL,
|
||||
`UpdTs` datetime DEFAULT NULL,
|
||||
`UdpUser` varchar(256) DEFAULT NULL,
|
||||
`IsActive` tinyint DEFAULT NULL,
|
||||
`SystemEntryID` int DEFAULT NULL,
|
||||
PRIMARY KEY (`Oid`),
|
||||
KEY `IdxPerson2TeamPerson` (`PersonOid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
ALTER TABLE `Team`
|
||||
ADD COLUMN `IsOwnChatTeam` int DEFAULT NULL;
|
||||
@@ -1675,3 +1675,25 @@ ADD COLUMN `VgaType` int DEFAULT NULL;
|
||||
|
||||
ALTER TABLE `SignatureHistory`
|
||||
ADD COLUMN `DataBild` longtext DEFAULT NULL;
|
||||
|
||||
|
||||
CREATE TABLE `person2team` (
|
||||
`Oid` bigint NOT NULL AUTO_INCREMENT,
|
||||
`PersonOid` bigint DEFAULT NULL,
|
||||
`TeamOid` bigint DEFAULT NULL,
|
||||
`OwnChatRole` int DEFAULT NULL,
|
||||
`Tid` int DEFAULT NULL,
|
||||
`Notice` varchar(1024) DEFAULT NULL,
|
||||
`InsTs` datetime DEFAULT NULL,
|
||||
`InsUser` varchar(256) DEFAULT NULL,
|
||||
`Version` bigint DEFAULT NULL,
|
||||
`UpdTs` datetime DEFAULT NULL,
|
||||
`UdpUser` varchar(256) DEFAULT NULL,
|
||||
`IsActive` tinyint DEFAULT NULL,
|
||||
`SystemEntryID` int DEFAULT NULL,
|
||||
PRIMARY KEY (`Oid`),
|
||||
KEY `IdxPerson2TeamPerson` (`PersonOid`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
|
||||
|
||||
ALTER TABLE `Team`
|
||||
ADD COLUMN `IsOwnChatTeam` int DEFAULT NULL;
|
||||
@@ -11,6 +11,7 @@ namespace BeWo.Service.DCEntityMapper
|
||||
pDataContract.AssessmentSheetValueOid = pEntity.Oid;
|
||||
pDataContract.AssessmentSheetValueVersion = pEntity.Version;
|
||||
pDataContract.Description = pEntity.Description;
|
||||
pDataContract.Tooltip = string.Format("{0}, {1:dd.MM.yyyy HH:mm} von {2}", pEntity.Description, pEntity.InsTs, pEntity.InsUser);
|
||||
pDataContract.Color = pEntity.Color;
|
||||
pDataContract.ShortcutKey = pEntity.ShortcutKey;
|
||||
pDataContract.Sign = pEntity.Sign;
|
||||
|
||||
@@ -311,6 +311,8 @@ namespace BeWo.Service.DCEntityMapper
|
||||
|
||||
private static CustomerWohnhilfeDC_CustomerWohnhilfe _CustomerWohnhilfeDC_CustomerWohnhilfe;
|
||||
|
||||
private static Person2TeamDC_Person2Team _Person2TeamDC_Person2Team;
|
||||
|
||||
private static AiSettingsDC_AiSettings _AiSettingsDC_AiSettings;
|
||||
|
||||
private static GkvAbrechnungLightDC_GkvAbrechnungLight _GkvAbrechnungLightDC_GkvAbrechnungLight;
|
||||
@@ -512,6 +514,9 @@ namespace BeWo.Service.DCEntityMapper
|
||||
public static CompactTeamDC_Team CompactTeamDC_Team =>
|
||||
_CompactTeamDC_Team ?? (_CompactTeamDC_Team = new CompactTeamDC_Team());
|
||||
|
||||
public static Person2TeamDC_Person2Team Person2TeamDC_Person2Team =>
|
||||
_Person2TeamDC_Person2Team ?? (_Person2TeamDC_Person2Team = new Person2TeamDC_Person2Team());
|
||||
|
||||
public static CompactGroupOfPeopleDC_GroupOfPeople CompactGroupOfPeopleDC_GroupOfPeople =>
|
||||
_CompactGroupOfPeopleDC_GroupOfPeople ?? (_CompactGroupOfPeopleDC_GroupOfPeople = new CompactGroupOfPeopleDC_GroupOfPeople());
|
||||
|
||||
|
||||
45
Service/DCEntityMapper/Person2TeamDC_Person2Team.cs
Normal file
45
Service/DCEntityMapper/Person2TeamDC_Person2Team.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using BeWo.Data.Access;
|
||||
using BeWo.Data.Entities;
|
||||
using BS.Shared.DataContracts;
|
||||
|
||||
|
||||
namespace BeWo.Service.DCEntityMapper
|
||||
{
|
||||
public class Person2TeamDC_Person2Team : AbstractIDCEntityMapper<Person2Team, Person2TeamDC>
|
||||
{
|
||||
public override Person2TeamDC MergeWithDC(Person2Team pEntity, Person2TeamDC pDataContract)
|
||||
{
|
||||
pDataContract.Oid = pEntity.Oid;
|
||||
pDataContract.Version = pEntity.Version;
|
||||
pDataContract.TeamOid = pEntity.TeamOid;
|
||||
pDataContract.OwnChatRole = pEntity.OwnChatRole;
|
||||
pDataContract.Person = MapperFactory.CompactPersonDC_Person.MapToNewDC(pEntity.Person);
|
||||
|
||||
|
||||
return pDataContract;
|
||||
}
|
||||
|
||||
public override Person2Team MergeWithEntity(Person2TeamDC pDataContract, Person2Team pEntity)
|
||||
{
|
||||
ConcurrencyCheck(pDataContract.Version, pEntity);
|
||||
pEntity.Oid = pDataContract.Oid;
|
||||
|
||||
pEntity.TeamOid = pDataContract.TeamOid;
|
||||
if (pDataContract.Person != null)
|
||||
pEntity.Person = DAOFactory.GenericDAO.LoadByID<Person>(pDataContract.Person.PersonOid);
|
||||
|
||||
pEntity.OwnChatRole = pDataContract.OwnChatRole;
|
||||
|
||||
return pEntity;
|
||||
}
|
||||
|
||||
protected override bool AreDCAndEntityEqual(Person2TeamDC pDC, Person2Team pEntity)
|
||||
{
|
||||
if (pDC.Oid == null)
|
||||
return false;
|
||||
return pDC.Oid == pEntity.Oid;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -10,12 +10,14 @@ namespace BeWo.Service.DCEntityMapper
|
||||
{
|
||||
public override TeamDC MergeWithDC(Team pEntity, TeamDC pDataContract)
|
||||
{
|
||||
pDataContract.IsOwnChatTeam = pEntity.IsOwnChatTeam;
|
||||
pDataContract.Name = pEntity.Name;
|
||||
pDataContract.TeamOid = pEntity.Oid;
|
||||
pDataContract.TeamVersion = pEntity.Version;
|
||||
pDataContract.Notice = pEntity.Notice;
|
||||
pDataContract.Leader = MapperFactory.CompactEmployeeDC_Employee.MapToNewDC(pEntity.Leader);
|
||||
pDataContract.Member = MapperFactory.CompactEmployeeDC_Employee.MapToNewDCs(pEntity.MemberList);
|
||||
pDataContract.OwnChatMember = MapperFactory.Person2TeamDC_Person2Team.MapToNewDCs(pEntity.OwnChatMember);
|
||||
|
||||
IList<VarFieldDef> defs = DAOFactory.SearchDAO.GetVarFieldDefs(TableID.Team);
|
||||
pDataContract.TeamVarFields = MapperFactory.VarFieldDC_VarField.VarFieldMapToDCs(defs, pEntity.VarFieldValueList);
|
||||
@@ -28,6 +30,7 @@ namespace BeWo.Service.DCEntityMapper
|
||||
this.ConcurrencyCheck(pDataContract.TeamVersion, pEntity);
|
||||
|
||||
pEntity.Oid = pDataContract.TeamOid;
|
||||
pEntity.IsOwnChatTeam = pDataContract.IsOwnChatTeam;
|
||||
pEntity.Notice = pDataContract.Notice;
|
||||
pEntity.Name = pDataContract.Name;
|
||||
|
||||
@@ -37,6 +40,7 @@ namespace BeWo.Service.DCEntityMapper
|
||||
}
|
||||
|
||||
MapperFactory.CompactEmployeeDC_Employee.MergeWithEntitys(pDataContract.Member, pEntity.MemberList);
|
||||
MapperFactory.Person2TeamDC_Person2Team.MergeWithEntitys(pDataContract.OwnChatMember, pEntity.OwnChatMember);
|
||||
|
||||
pEntity.VarFieldValueList = MapperFactory.VarFieldDC_VarField.VarFieldMergeToEntity(pEntity.VarFieldValueList, pDataContract.TeamVarFields, pEntity);
|
||||
|
||||
|
||||
@@ -180,6 +180,7 @@ namespace BeWo.Service.Plugins
|
||||
var dc = new CompactCustomerDC();
|
||||
|
||||
dc.CustomerOid = pEntity.Oid.Value;
|
||||
dc.PersonOid = pEntity.Person.Oid.Value;
|
||||
dc.CustomerVersion = pEntity.Version.Value;
|
||||
dc.FirstName = pEntity.Person.FirstName;
|
||||
dc.LastName = pEntity.Person.LastName;
|
||||
|
||||
@@ -32,7 +32,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "0216265667"; // LH Hannover
|
||||
//t = "1774789565"; // LH Essen
|
||||
//t = "9342168675"; // ABC Betreuungen - jetzt Schubkraft
|
||||
t = "1193188501"; // Aids Hilfe Dortmund
|
||||
//t = "1193188501"; // Aids Hilfe Dortmund
|
||||
//t = "7860351957"; // SKF Alsdorf
|
||||
//t = "3311520228"; // Die Düne
|
||||
//t = "1352143437"; // Sewo
|
||||
@@ -242,7 +242,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "7622428090"; // Freie gemeinnützige Beratungsstelle für Psychotherapie e.V. (BfpDus) (Panama)
|
||||
//t = "0206140343"; // Lebenswelt Gabriel
|
||||
//t = "6916712798"; // LH Rodenkirchen Bewo
|
||||
//t = "6255521162"; // KCM GmbH
|
||||
t = "6255521162"; // KCM GmbH
|
||||
//t = "2697528233"; // Diakonisches Werk Wesel
|
||||
//t = "2547623489"; // Sprungbrett
|
||||
//t = "5076807716"; // Psychosoziale Hilfen Bochum e.V.
|
||||
@@ -333,7 +333,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "7663765314"; // Christina Frommen (Frommen BeWo)
|
||||
//t = "5462295916"; // BeWo Dellbrueck
|
||||
//t = "2120989920"; // Sozialbüro Schüßler und Wilckens GbR
|
||||
//t = "9815376800"; // Haus Dülken GmbH + Co. KG
|
||||
t = "9815376800"; // Haus Dülken GmbH + Co. KG
|
||||
//t = "6917917884"; // AMBEWO Müller/Gerhards
|
||||
//t = "5240630948"; // Caritasverband der Diözese Rottenburg-Stuttgart e.V. - Rechtsträger der Caritas Heilbronn Hohenlohe e.V. (Projekt heißt CaritasHeilbronnHohenlohe)
|
||||
//t = "7748694330"; // Caritasverband der Diözese Rottenburg-Stuttgart e.V. als Rechtsträger der Caritas Ludwigsburg-Waiblingen-Enz (Projekt heißt CaritasLudwigsburgWaiblingenEnz)
|
||||
@@ -352,7 +352,7 @@ namespace BeWo.Service.Plugins
|
||||
//t = "3226307161"; // Roman Roger Puth
|
||||
//t = "3522103738"; // AWO Münsterland-Recklinghausen
|
||||
//t = "5592509446"; // Kontakt Verein für psychosoziale Hilfen e.V
|
||||
t = "5344902949"; // SHK Service GmbH SBD
|
||||
//t = "5344902949"; // SHK Service GmbH SBD
|
||||
//t = "1422963536"; // Malteser-Johanniter-Johanneshaus gGmbH
|
||||
//t = "5433105975"; // aha e.V.
|
||||
//t = "1701920223"; // SKFM Monheim
|
||||
|
||||
@@ -245,6 +245,7 @@
|
||||
<Compile Include="DCEntityMapper\BargeldtransaktionshistoryDC_Bargeldtransaktionshistory.cs" />
|
||||
<Compile Include="DCEntityMapper\BeWoDataContract_BeWoEntityBase.cs" />
|
||||
<Compile Include="DCEntityMapper\CompactInvoiceBaseDC_InvoiceBase.cs" />
|
||||
<Compile Include="DCEntityMapper\Person2TeamDC_Person2Team.cs" />
|
||||
<Compile Include="DCEntityMapper\Light\GkvAbrechnungLightDC_GkvAbrechnungLight.cs" />
|
||||
<Compile Include="DCEntityMapper\ConfirmationReceiptSignatureDC_ConfirmationReceiptSignature.cs" />
|
||||
<Compile Include="DCEntityMapper\CustomerVermittlungArbeitDC_CustomerVermittlungArbeit.cs" />
|
||||
|
||||
@@ -190,7 +190,8 @@ namespace BS.Shared
|
||||
AiConversationMessage = 180,
|
||||
AiContext2BeWoObject = 181,
|
||||
AiConfig = 182,
|
||||
StoredFile = 183
|
||||
StoredFile = 183,
|
||||
Person2Team = 184
|
||||
}
|
||||
|
||||
public enum SystemEntryID
|
||||
|
||||
@@ -17,6 +17,9 @@ namespace BS.Shared.DataContracts
|
||||
[DataMember]
|
||||
public string Description { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public string Tooltip { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int Position { get; set; }
|
||||
|
||||
|
||||
@@ -28,6 +28,54 @@ namespace BS.Shared.DataContracts
|
||||
}
|
||||
}
|
||||
|
||||
public string OrderedDisplayName
|
||||
{
|
||||
get
|
||||
{
|
||||
var test = GetTempName(DisplayName, "99999");
|
||||
return test;
|
||||
}
|
||||
}
|
||||
|
||||
private static string GetTempName(string name, string maxNumberPrefix)
|
||||
{
|
||||
String tempName = name;
|
||||
if (!String.IsNullOrEmpty(maxNumberPrefix))
|
||||
{
|
||||
var prefix = GetNumberPrefix(name);
|
||||
if (!String.IsNullOrEmpty(prefix))
|
||||
{
|
||||
while (prefix.Length < maxNumberPrefix.Length)
|
||||
{
|
||||
prefix = "0" + prefix;
|
||||
tempName = "0" + tempName;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return tempName;
|
||||
}
|
||||
|
||||
private static string GetNumberPrefix(string name)
|
||||
{
|
||||
int numberOfDigitsAtStart = 0;
|
||||
for (var i = 0; i < name.Length; i++)
|
||||
{
|
||||
if (!char.IsNumber(name[i]))
|
||||
{
|
||||
break;
|
||||
}
|
||||
|
||||
numberOfDigitsAtStart++;
|
||||
}
|
||||
|
||||
if (numberOfDigitsAtStart > 0)
|
||||
{
|
||||
return name.Substring(0, numberOfDigitsAtStart);
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public String Prefix { get; set; }
|
||||
|
||||
public ValueListEntryDC CatalogItem { get; set; }
|
||||
|
||||
@@ -206,7 +206,7 @@ namespace BS.Shared.DataContracts.Compact
|
||||
if (obj is CompactPersonDC)
|
||||
{
|
||||
CompactPersonDC compactPerson = obj as CompactPersonDC;
|
||||
|
||||
var test = this.PersonOid == compactPerson.PersonOid && this.Organisation == compactPerson.Organisation;
|
||||
return this.PersonOid == compactPerson.PersonOid && this.Organisation == compactPerson.Organisation;
|
||||
}
|
||||
|
||||
|
||||
41
Shared/DataContracts/Person2TeamDC.cs
Normal file
41
Shared/DataContracts/Person2TeamDC.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
using System.Runtime.Serialization;
|
||||
using BS.Shared.DataContracts.Compact;
|
||||
|
||||
namespace BS.Shared.DataContracts
|
||||
{
|
||||
[DataContract]
|
||||
public class Person2TeamDC
|
||||
{
|
||||
[DataMember]
|
||||
public CompactPersonDC Person { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public long? TeamOid { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public long? Oid { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public long? Version { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public int? OwnChatRole { get; set; }
|
||||
|
||||
public override bool Equals(object obj)
|
||||
{
|
||||
if (obj is Person2TeamDC)
|
||||
{
|
||||
Person2TeamDC compactPerson = obj as Person2TeamDC;
|
||||
return this.Oid == compactPerson.Oid;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public override int GetHashCode()
|
||||
{
|
||||
return this.GetType().Name.GetHashCode() ^ this.Oid.GetHashCode();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -8,12 +8,16 @@ namespace BS.Shared.DataContracts
|
||||
[DataContract]
|
||||
public class TeamDC : IDataContract
|
||||
{
|
||||
[DataMember]
|
||||
public bool IsOwnChatTeam { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public CompactEmployeeDC Leader { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public List<CompactEmployeeDC> Member { get; set; }
|
||||
|
||||
[DataMember]
|
||||
public List<Person2TeamDC> OwnChatMember { get; set; }
|
||||
[DataMember]
|
||||
public string Name { get; set; }
|
||||
|
||||
|
||||
@@ -187,6 +187,7 @@
|
||||
<Compile Include="DataContracts\AdminService\AdminServiceSumResponseDetailDC.cs" />
|
||||
<Compile Include="DataContracts\AdminService\IAdminServiceDC.cs" />
|
||||
<Compile Include="DataContracts\AdminService\AdminServiceSumReqDC.cs" />
|
||||
<Compile Include="DataContracts\Person2TeamDC.cs" />
|
||||
<Compile Include="DataContracts\Feature\AI\AiConfigDC.cs" />
|
||||
<Compile Include="DataContracts\Feature\AI\AiConversationDC.cs" />
|
||||
<Compile Include="DataContracts\Feature\AI\AiConversationMessageDC.cs" />
|
||||
|
||||
Reference in New Issue
Block a user