Merge branch 'master' of ssh://float.beyondsoft.de/git/beyondSoft/BeWo

This commit is contained in:
staccatomamba
2016-11-14 14:22:03 +01:00
9 changed files with 2260 additions and 47 deletions

View File

@@ -1195,11 +1195,15 @@ namespace BeWo.ServiceProxy
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/FindAllChatMessages", ReplyAction="http://tempuri.org/ICustomerService/FindAllChatMessagesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/FindAllChatMessagesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> FindAllChatMessages(long senderOid, long empfaengerOid);
System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> FindAllChatMessages(long senderOid, long empfaengerOid, int maxNachricht);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/FindAllChatMessagesFromTeam", ReplyAction="http://tempuri.org/ICustomerService/FindAllChatMessagesFromTeamResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/FindAllChatMessagesFromTeamBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> FindAllChatMessagesFromTeam(long senderOid, long teamEmpfangOid);
System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> FindAllChatMessagesFromTeam(long senderOid, long teamEmpfangOid, int maxNachrichten);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/GetNextChatMessages", ReplyAction="http://tempuri.org/ICustomerService/GetNextChatMessagesResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/GetNextChatMessagesBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> GetNextChatMessages(long senderOid, long EmpfangOid, bool isteam, System.Collections.Generic.List<string> messageIds, int maxMessage);
[System.ServiceModel.OperationContractAttribute(Action="http://tempuri.org/ICustomerService/UpdateIstGelesen", ReplyAction="http://tempuri.org/ICustomerService/UpdateIstGelesenResponse")]
[System.ServiceModel.FaultContractAttribute(typeof(BeWo.ServiceProxy.BeWoFault), Action="http://tempuri.org/ICustomerService/UpdateIstGelesenBeWoFaultFault", Name="BeWoFault", Namespace="http://schemas.datacontract.org/2004/07/BeWo.Service.ServiceContracts")]
@@ -1916,14 +1920,19 @@ namespace BeWo.ServiceProxy
return base.Channel.GetAllChatActiveCustomersCompact(personOid);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> FindAllChatMessages(long senderOid, long empfaengerOid)
public System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> FindAllChatMessages(long senderOid, long empfaengerOid, int maxNachricht)
{
return base.Channel.FindAllChatMessages(senderOid, empfaengerOid);
return base.Channel.FindAllChatMessages(senderOid, empfaengerOid, maxNachricht);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> FindAllChatMessagesFromTeam(long senderOid, long teamEmpfangOid)
public System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> FindAllChatMessagesFromTeam(long senderOid, long teamEmpfangOid, int maxNachrichten)
{
return base.Channel.FindAllChatMessagesFromTeam(senderOid, teamEmpfangOid);
return base.Channel.FindAllChatMessagesFromTeam(senderOid, teamEmpfangOid, maxNachrichten);
}
public System.Collections.Generic.List<BS.Shared.DataContracts.ChatMessageDC> GetNextChatMessages(long senderOid, long EmpfangOid, bool isteam, System.Collections.Generic.List<string> messageIds, int maxMessage)
{
return base.Channel.GetNextChatMessages(senderOid, EmpfangOid, isteam, messageIds, maxMessage);
}
public void UpdateIstGelesen(long senderOid, long empfaengerOid, bool istGelesen)

View File

@@ -250,6 +250,16 @@
<TextBlock VerticalAlignment="Center" Text="{Binding UserMessage}" MinWidth="0" MaxWidth="500" TextWrapping="Wrap" />
</StackPanel>
<!-- ################################## Button Für Weitere Items Laden / Prototyp ############################### -->
<StackPanel DockPanel.Dock="Bottom" Visibility="{Binding LoadNextVisibility}" >
<Button Content="Lade weitere Nachrichten" ToolTip="weitere Nachrichten Herunterladen" HorizontalAlignment="Center" VerticalAlignment="Center" Width="150" Height="25" Tag="{Binding LoadObject}" Click="LadeWeitereBase_OnClick" />
</StackPanel>
<!-- ################################## Ende Prototyp ########################################### -->
<!--############################### Neu versuch ein Button in den Chat hinein zu packen ###############################################-->
<!--Sound bereich

View File

@@ -86,6 +86,13 @@ namespace BeWo.View
//protected IWavePlayer waveOutDevice = null;
//protected AudioFileReader audioFileReader = null;
//Für anzeige MEhr Anzeigen wen mehr als 20 items Vorhanden
int itemGrenze = 5;
List<string> aktuelleChatMessageIDListe = new List<string>();
//versuch oder | probieren geht über studieren
protected Dictionary<string, byte[]> SoundZwischenSpeicher = new Dictionary<string, byte[]>();
protected Dictionary<string, byte[]> BildZwischenSpeicher = new Dictionary<string, byte[]>();
@@ -166,7 +173,7 @@ namespace BeWo.View
curItem.Receivems = "";
Chat.Items.Add(new KontakMessageBuilder(nameclient, text, DateTime.Now.ToString(), personoid,false));
Chat.Items.Add(new KontakMessageBuilder(nameclient, text, DateTime.Now.ToString(), personoid,false,false,null));
Chat.Items.MoveCurrentToLast();
Chat.ScrollIntoView(Chat.Items.CurrentItem);
@@ -1235,7 +1242,7 @@ namespace BeWo.View
{
string msg = Chatbox.Text;
Chat.Items.Add(new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, msg, DateTime.Now.ToString(), BeWoApp.LoggedOnUser.Employee.PersonOid,true));
Chat.Items.Add(new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, msg, DateTime.Now.ToString(), BeWoApp.LoggedOnUser.Employee.PersonOid,true,false,null));
if (tcpClient.Connected)
@@ -1307,21 +1314,28 @@ namespace BeWo.View
{
try
{
SoundZwischenSpeicher.Clear();
BildZwischenSpeicher.Clear();
DokumentZwischenSpeicher.Clear();
//Für anzeige MEhr Anzeigen wen mehr als 20 items Vorhanden
int itemGrenze = 20;
// SoundZwischenSpeicher.Clear();
// BildZwischenSpeicher.Clear();
//DokumentZwischenSpeicher.Clear();
aktuelleChatMessageIDListe.Clear();
if (Curitem.TypeChat == ChatType.Team)
{
int sx = 0;
// int sx = 0;
var allTeamItems =
ServiceFacade.DoCustomerServiceSync(
s => s.FindAllChatMessagesFromTeam(senderoid, empfaengerOid));
s => s.FindAllChatMessagesFromTeam(senderoid, empfaengerOid,itemGrenze));
ShowTeamMessageInChat(allTeamItems,true);
foreach (var item in allTeamItems)
{
aktuelleChatMessageIDListe.Add(item.MessageId);
}
/* Ausgiebig testen wenn alles normal geht dann alles von hier löschen
// List<ChatMessageDC> allTeamItems = new List<ChatMessageDC>();
//ServiceFacade.DoCustomerServiceAsync(
@@ -1333,15 +1347,18 @@ namespace BeWo.View
// });
//original
//long[] longarrays =new long[2];
//longarrays[0] = senderoid;
//longarrays[1] = empfaengerOid;
//Umbauen daraus soll ein Button gemacht werden
//Umbauen / Es sollen Später mal nur max 20 Nachrichten heraus geholt und angezeigt werden.
if (allTeamItems.Count > itemGrenze)
{
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Mehr Nachrichten Vorhanden / Hier ist später mal ein Button -----------------------", "", 0, false));
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Mehr Nachrichten Vorhanden / Hier ist später mal ein Button ----------------------------------", "", 0, false,true,allTeamItems));
}
else
{
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Keine weiteren Nachrichten Verfügbar / Hier ist später mal kein Button -----------------------", "", 0, false));
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Keine weiteren Nachrichten Verfügbar / Hier ist später mal kein Button -----------------------", "", 0, false,false,null));
}
@@ -1375,7 +1392,7 @@ namespace BeWo.View
if (anzeige.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[zahl].FirstName, anzeige.ChatText,anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value, true));
Chat.Items.Add(new KontakMessageBuilder(person[zahl].FirstName, anzeige.ChatText,anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value, true,false,null));
}
else
{
@@ -1423,7 +1440,7 @@ namespace BeWo.View
{
if (sx == 0 && anzeige.IstGelesen != 1 )
{
Chat.Items.Add(new KontakMessageBuilder("","------------------------ Ungelesene Nachrichten -----------------------", "", 0,false));
Chat.Items.Add(new KontakMessageBuilder("","------------------------ Ungelesene Nachrichten -----------------------", "", 0,false,false,null));
sx++;
}
@@ -1433,7 +1450,7 @@ namespace BeWo.View
if (anzeige.MediaDatei == null )
{
Chat.Items.Add(new KontakMessageBuilder(person[zahl].FirstName, anzeige.ChatText,
anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value, false));
anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value, false,false,null));
}
else
{
@@ -1484,15 +1501,23 @@ namespace BeWo.View
}
}
*/
}
else
{
var allitems =
var allitems2 =
ServiceFacade.DoCustomerServiceSync(
s => s.FindAllChatMessages(senderoid, empfaengerOid));
s => s.FindAllChatMessages(senderoid, empfaengerOid, itemGrenze));
ShowMessageInChat(allitems2,true);
foreach (var item in allitems2)
{
aktuelleChatMessageIDListe.Add(item.MessageId);
}
//var allitems = allitems2.OrderBy(r => r.Uhrzeit);
/* List<ChatMessageDC> allitems = new List<ChatMessageDC>();
ServiceFacade.DoCustomerServiceAsync(
@@ -1503,14 +1528,23 @@ namespace BeWo.View
allitems = r;
});*/
/* var allitems = allitems2.OrderBy(dc => dc.Uhrzeit).ToList();
//long[] arraylong = new long[2];
//arraylong[0] = senderoid;
//arraylong[1] = empfaengerOid;
//Umbauen daraus soll ein Button gemacht werden
if (allitems.Count > itemGrenze)
if (allitems.Count == itemGrenze)
{
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Mehr Nachrichten Vorhanden / Hier ist später mal ein Button -----------------------", "", 0, false));
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Mehr Nachrichten Vorhanden / Hier ist später mal ein Button ---------------------------------", "", 0, false, true, allitems));
}
else
{
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Keine weiteren Nachrichten Verfügbar / Hier ist später mal kein Button -----------------------", "", 0, false));
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Keine weiteren Nachrichten Verfügbar / Hier ist später mal kein Button -----------------------", "", 0, false,false,null));
}
List<long> x = new List<long>();
@@ -1535,7 +1569,7 @@ namespace BeWo.View
if (list.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[0].FirstName, list.ChatText,
list.Uhrzeit.ToString(), senderoid,true));
list.Uhrzeit.ToString(), senderoid,true,false,null));
}
else
{
@@ -1582,7 +1616,7 @@ namespace BeWo.View
if (list.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[1].FirstName, list.ChatText,
list.Uhrzeit.ToString(), empfaengerOid, false));
list.Uhrzeit.ToString(), empfaengerOid, false,false,null));
}
else
{
@@ -1634,7 +1668,7 @@ namespace BeWo.View
if (list.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[0].FirstName, list.ChatText,
list.Uhrzeit.ToString(), senderoid, true));
list.Uhrzeit.ToString(), senderoid, true,false,null));
}
else
{
@@ -1680,14 +1714,14 @@ namespace BeWo.View
{
if (i == 0)
{
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Ungelesene Nachrichten -----------------------", "", 0,false));
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Ungelesene Nachrichten -----------------------", "", 0,false,false,null));
i++;
}
if (list.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[1].FirstName, list.ChatText,
list.Uhrzeit.ToString(), empfaengerOid, false));
list.Uhrzeit.ToString(), empfaengerOid, false,false,null));
}
else
{
@@ -1722,7 +1756,7 @@ namespace BeWo.View
}
}
}
ServiceFacade.DoCustomerServiceSync(s => s.UpdateIstGelesen(empfaengerOid, senderoid, true));
ServiceFacade.DoCustomerServiceSync(s => s.UpdateIstGelesen(empfaengerOid, senderoid, true));*/
}
}
catch (Exception edf)
@@ -2523,7 +2557,7 @@ namespace BeWo.View
// slider.Value = (int)audioFileReader.Position;
//}
//Lade Media Daten aus der Datenbank
private void DatenRunterladen_OnClick(object sender, RoutedEventArgs e)
{
System.Windows.Controls.Button x = (System.Windows.Controls.Button)sender;
@@ -2552,6 +2586,541 @@ namespace BeWo.View
Chat.Items.Refresh();
}
//Lade Weitere Nachrichten von der Datenbank.
private void LadeWeitereBase_OnClick(object sender, RoutedEventArgs e)
{
long senderoid, empfaengeroid;
System.Windows.Controls.Button x = (System.Windows.Controls.Button)sender;
List<ChatMessageDC> chatlist = (List<ChatMessageDC>)x.Tag;
//List<string> chatMessageIdList = new List<string>();
//chatMessageIdList = chatlist.Select(c => c.MessageId).ToList();
senderoid = chatlist[0].SenderPersonOid ?? 0;
empfaengeroid = chatlist[0].EmpfängerPersonOid ?? 0;
//empfänger oid ist bei team die Team oid
List<ChatMessageDC> newitems;
if (chatlist[0].TeamOid == 0 || chatlist[0].TeamOid == null)
{
newitems =
ServiceFacade.DoCustomerServiceSync(
s =>
s.GetNextChatMessages(senderoid, empfaengeroid, false, aktuelleChatMessageIDListe,
itemGrenze));
}
else
{
//istTeam | muss noch servertechnisch angepasst werden.
newitems =
ServiceFacade.DoCustomerServiceSync(
s =>
s.GetNextChatMessages(senderoid, empfaengeroid, true, aktuelleChatMessageIDListe,
itemGrenze));
}
if(newitems.Count > 0){
foreach (var item in newitems)
{
aktuelleChatMessageIDListe.Add(item.MessageId);
}
if(chatlist[0].TeamOid == 0)
ShowTeamMessageInChat(newitems,false);
else
ShowMessageInChat(newitems, false);
}
else
{
var itemprop = (KontakMessageBuilder)Chat.Items[0];
if(itemprop.MessagePersonOid == 0)
Chat.Items.RemoveAt(0);
}
}
#region ChatMessagebuilder
private void ShowMessageInChat(List<ChatMessageDC> allitems2,bool firstTime)
{
try
{
SoundZwischenSpeicher.Clear();
BildZwischenSpeicher.Clear();
DokumentZwischenSpeicher.Clear();
var allitems = allitems2.OrderBy(dc => dc.Uhrzeit).ToList();
long senderoid = allitems[0].SenderPersonOid ?? 0;
long empfaengerOid = allitems[0].EmpfängerPersonOid ?? 0;
if (firstTime)
{
if (allitems.Count == itemGrenze)
{
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Mehr Nachrichten Vorhanden ---------------------------------", "", 0, false, true, allitems));
}
else
{
Chat.Items.Add(new KontakMessageBuilder("", "------------------------ Keine weiteren Nachrichten Verfügbar -----------------------", "", 0, false, false, null));
}
}
List<long> x = new List<long>();
x.Add(senderoid);
x.Add(empfaengerOid);
var person = ServiceFacade.DoCustomerServiceSync(s => s.GetPersonsById(x));
int i = 0;
foreach (var list in allitems)
{
//Chat Message dem array übergeben
object[] datenmengen = new object[2];
datenmengen[0] = list;
if (list.IstGelesen == 1 && (list.TeamOid == null || list.TeamOid == 0))
{
if (list.SenderPersonOid == senderoid)
{
if (list.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[0].FirstName, list.ChatText,
list.Uhrzeit.ToString(), senderoid, true, false, null));
}
else
{
if (list.MediaDatei != null && list.MediaTyp == 1)
{
var bild = DecodeBild(list.MediaDatei);
if (!BildZwischenSpeicher.ContainsKey(list.ChatText))
BildZwischenSpeicher.Add(list.ChatText, list.MediaDatei);
KontakMessageBuilder builder =
new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText,
list.Uhrzeit.ToString(), senderoid, true, false, false, false, bild, null,
null, true, datenmengen);
datenmengen[1] = builder;
Chat.Items.Add(builder);
}
//if (list.SoundDatei != null)
//{
// if (!SoundZwischenSpeicher.ContainsKey(list.ChatText))
// SoundZwischenSpeicher.Add(list.ChatText,list.SoundDatei);
// Chat.Items.Add(new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText, list.Uhrzeit.ToString(), senderoid, true, true, false, false, null,null,null));
//}
if (list.MediaDatei != null && list.MediaTyp == 2)
{
if (!DokumentZwischenSpeicher.ContainsKey(list.ChatText))
DokumentZwischenSpeicher.Add(list.ChatText, list.MediaDatei);
KontakMessageBuilder builder =
new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText,
list.Uhrzeit.ToString(), senderoid, true, false, false, false, null,
list.ChatText, list.MediaDatei, true, datenmengen);
datenmengen[1] = builder;
Chat.Items.Add(builder);
}
}
}
else
{
if (list.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[1].FirstName, list.ChatText,
list.Uhrzeit.ToString(), empfaengerOid, false, false, null));
}
else
{
if (list.MediaDatei != null && list.MediaTyp == 1)
{
var bild = DecodeBild(list.MediaDatei);
if (!BildZwischenSpeicher.ContainsKey(list.ChatText))
BildZwischenSpeicher.Add(list.ChatText, list.MediaDatei);
KontakMessageBuilder builder =
new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText,
list.Uhrzeit.ToString(), empfaengerOid, false, false, false, false, bild,
null, null, true, datenmengen);
datenmengen[1] = builder;
Chat.Items.Add(builder);
}
//if (list.SoundDatei != null)
//{
// if (!SoundZwischenSpeicher.ContainsKey(list.ChatText))
// SoundZwischenSpeicher.Add(list.ChatText, list.SoundDatei);
// Chat.Items.Add(new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText, list.Uhrzeit.ToString(), empfaengerOid, true, true, false, false, null,null,null));
//}
if (list.MediaDatei != null && list.MediaTyp == 2)
{
if (!DokumentZwischenSpeicher.ContainsKey(list.ChatText))
DokumentZwischenSpeicher.Add(list.ChatText, list.MediaDatei);
KontakMessageBuilder builder =
new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText,
list.Uhrzeit.ToString(), empfaengerOid, false, false, false, false, null,
list.ChatText, list.MediaDatei, true, datenmengen);
datenmengen[1] = builder;
Chat.Items.Add(builder);
}
}
}
}
else
{
if (list.TeamOid == null || list.TeamOid == 0)
{
if (list.SenderPersonOid == senderoid)
{
if (list.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[0].FirstName, list.ChatText,
list.Uhrzeit.ToString(), senderoid, true, false, null));
}
else
{
if (list.MediaDatei != null && list.MediaTyp == 1)
{
var bild = DecodeBild(list.MediaDatei);
if (!BildZwischenSpeicher.ContainsKey(list.ChatText))
BildZwischenSpeicher.Add(list.ChatText, list.MediaDatei);
KontakMessageBuilder builder =
new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName,
list.ChatText, list.Uhrzeit.ToString(), senderoid, true, false, false,
false, bild, null, null, true, datenmengen);
datenmengen[1] = builder;
Chat.Items.Add(builder);
}
//if (list.SoundDatei != null)
//{
// if (!SoundZwischenSpeicher.ContainsKey(list.ChatText))
// SoundZwischenSpeicher.Add(list.ChatText, list.SoundDatei);
// Chat.Items.Add(new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText, list.Uhrzeit.ToString(), senderoid, true, true, false, false, null,null,null));
//}
if (list.MediaDatei != null && list.MediaTyp == 2)
{
if (!DokumentZwischenSpeicher.ContainsKey(list.ChatText))
DokumentZwischenSpeicher.Add(list.ChatText, list.MediaDatei);
KontakMessageBuilder builder =
new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName,
list.ChatText, list.Uhrzeit.ToString(), senderoid, true, false, false,
false, null, list.ChatText, list.MediaDatei, true, datenmengen);
datenmengen[1] = builder;
Chat.Items.Add(builder);
}
}
}
else
{
if (i == 0)
{
Chat.Items.Add(new KontakMessageBuilder("",
"------------------------ Ungelesene Nachrichten -----------------------", "", 0,
false, false, null));
i++;
}
if (list.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[1].FirstName, list.ChatText,
list.Uhrzeit.ToString(), empfaengerOid, false, false, null));
}
else
{
if (list.MediaDatei != null && list.MediaTyp == 1)
{
var bild = DecodeBild(list.MediaDatei);
if (!BildZwischenSpeicher.ContainsKey(list.ChatText))
BildZwischenSpeicher.Add(list.ChatText, list.MediaDatei);
Chat.Items.Add(new KontakMessageBuilder(
BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText,
list.Uhrzeit.ToString(), empfaengerOid, false, false, false, false, bild,
null, null, true, datenmengen));
}
//if (list.SoundDatei != null)
//{
// if (!SoundZwischenSpeicher.ContainsKey(list.ChatText))
// SoundZwischenSpeicher.Add(list.ChatText, list.SoundDatei);
// Chat.Items.Add(new KontakMessageBuilder(BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText, list.Uhrzeit.ToString(), empfaengerOid, true, true, false, false, null,null,null));
//}
if (list.MediaDatei != null && list.MediaTyp == 2)
{
if (!DokumentZwischenSpeicher.ContainsKey(list.ChatText))
DokumentZwischenSpeicher.Add(list.ChatText, list.MediaDatei);
Chat.Items.Add(new KontakMessageBuilder(
BeWoApp.LoggedOnUser.Employee.FirstName, list.ChatText,
list.Uhrzeit.ToString(), empfaengerOid, false, false, false, false, null,
list.ChatText, list.MediaDatei, true, datenmengen));
}
}
}
}
}
}
ServiceFacade.DoCustomerServiceSync(s => s.UpdateIstGelesen(empfaengerOid, senderoid, true));
var lisadst = Chat.Items.Cast<KontakMessageBuilder>().OrderBy(item => item.SendTime).ToList();
Chat.Items.Clear();
foreach (KontakMessageBuilder listItem in lisadst)
{
Chat.Items.Add(listItem);
}
}
catch (Exception edf)
{
MessageBox.Show("Beim Laden der Nachricht aus der Datenbank ist ein Fehler aufgetreten. " + edf.Message + "\n" + edf.StackTrace, "Fehler: 2320 ", MessageBoxButton.OK);
}
}
#endregion
#region ChatTeamMessageBuilder
private void ShowTeamMessageInChat(List<ChatMessageDC> allTeamItems2,bool firstTime)
{
try
{
SoundZwischenSpeicher.Clear();
BildZwischenSpeicher.Clear();
DokumentZwischenSpeicher.Clear();
int sx = 0;
var allTeamItems = allTeamItems2.OrderBy(dc => dc.Uhrzeit).ToList();
if (firstTime)
{
if (allTeamItems.Count == itemGrenze)
{
Chat.Items.Add(new KontakMessageBuilder("",
"------------------------ Mehr Nachrichten Vorhanden / Hier ist später mal ein Button ----------------------------------",
"", 0, false, true, allTeamItems));
}
else
{
Chat.Items.Add(new KontakMessageBuilder("",
"------------------------ Keine weiteren Nachrichten Verfügbar / Hier ist später mal kein Button -----------------------",
"", 0, false, false, null));
}
}
List<long> x = new List<long>();
foreach (var team in allTeamItems)
{
if (!x.Contains(team.SenderPersonOid.Value))
x.Add(team.SenderPersonOid.Value);
}
x.Sort();
var person = ServiceFacade.DoCustomerServiceSync(s => s.GetPersonsById(x));
foreach (var anzeige in allTeamItems)
{
if (x.Contains(anzeige.SenderPersonOid.Value))
{
//Chat Message dem array übergeben
object[] datenmengen = new object[2];
datenmengen[0] = anzeige;
if (anzeige.SenderPersonOid.Value == BeWoApp.LoggedOnUser.Employee.PersonOid)
{
int zahl = (int) x.IndexOf(anzeige.SenderPersonOid.Value);
if (anzeige.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[zahl].FirstName, anzeige.ChatText,
anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value, true, false, null));
}
else
{
if (anzeige.MediaDatei != null && anzeige.MediaTyp == 1)
{
var bild = DecodeBild(anzeige.MediaDatei);
if (!BildZwischenSpeicher.ContainsKey(anzeige.ChatText))
BildZwischenSpeicher.Add(anzeige.ChatText, anzeige.MediaDatei);
KontakMessageBuilder builder = new KontakMessageBuilder(person[zahl].FirstName,
anzeige.ChatText, anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value,
true, false, false, false, bild, null, null, true, datenmengen);
datenmengen[1] = builder;
//Bearbeiten ,false,null
Chat.Items.Add(builder);
}
//if (anzeige.SoundDatei != null)
//{
// if (!SoundZwischenSpeicher.ContainsKey(anzeige.ChatText))
// SoundZwischenSpeicher.Add(anzeige.ChatText, anzeige.SoundDatei);
// Chat.Items.Add(new KontakMessageBuilder(person[zahl].FirstName, anzeige.ChatText,anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value, true, true, false,false, null,null,null));
//}
if (anzeige.MediaDatei != null && anzeige.MediaTyp == 2)
{
if (!DokumentZwischenSpeicher.ContainsKey(anzeige.ChatText))
DokumentZwischenSpeicher.Add(anzeige.ChatText, anzeige.MediaDatei);
KontakMessageBuilder builder = new KontakMessageBuilder(person[zahl].FirstName,
anzeige.ChatText, anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value,
true, false, false, false, null, anzeige.ChatText, anzeige.MediaDatei, true,
datenmengen);
datenmengen[1] = builder;
Chat.Items.Add(builder);
}
}
}
else
{
if (sx == 0 && anzeige.IstGelesen != 1)
{
Chat.Items.Add(new KontakMessageBuilder("",
"------------------------ Ungelesene Nachrichten -----------------------", "", 0,
false, false, null));
sx++;
}
int zahl = (int) x.IndexOf(anzeige.SenderPersonOid.Value);
if (anzeige.MediaDatei == null)
{
Chat.Items.Add(new KontakMessageBuilder(person[zahl].FirstName, anzeige.ChatText,
anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value, false, false, null));
}
else
{
if (anzeige.MediaDatei != null && anzeige.MediaTyp == 1)
{
var bild = DecodeBild(anzeige.MediaDatei);
if (!BildZwischenSpeicher.ContainsKey(anzeige.ChatText))
BildZwischenSpeicher.Add(anzeige.ChatText, anzeige.MediaDatei);
KontakMessageBuilder builder = new KontakMessageBuilder(person[zahl].FirstName,
anzeige.ChatText, anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value,
false, false, false, false, bild, null, null, true, datenmengen);
datenmengen[1] = builder;
Chat.Items.Add(builder);
}
//if (anzeige.SoundDatei != null)
//{
// if (!SoundZwischenSpeicher.ContainsKey(anzeige.ChatText))
// SoundZwischenSpeicher.Add(anzeige.ChatText, anzeige.SoundDatei);
// Chat.Items.Add(new KontakMessageBuilder(person[zahl].FirstName, anzeige.ChatText,anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value, false, true, false,false, null,null,null));
//}
if (anzeige.MediaDatei != null && anzeige.MediaTyp == 1)
{
if (!DokumentZwischenSpeicher.ContainsKey(anzeige.ChatText))
DokumentZwischenSpeicher.Add(anzeige.ChatText, anzeige.MediaDatei);
KontakMessageBuilder builder = new KontakMessageBuilder(person[zahl].FirstName,
anzeige.ChatText, anzeige.Uhrzeit.ToString(), anzeige.SenderPersonOid.Value,
false, false, false, false, null, anzeige.ChatText, anzeige.MediaDatei, true,
datenmengen);
datenmengen[1] = builder;
Chat.Items.Add(builder);
}
}
}
if (anzeige.IstGelesen != 1)
{
ServiceFacade.DoCustomerServiceSync(
s =>
s.UpdateIstGelesen(anzeige.EmpfängerPersonOid.Value,
anzeige.SenderPersonOid.Value, true));
}
}
}
}
catch (Exception e)
{
MessageBox.Show("Es ist ein Fehler aufgetreten ", "Fehler", MessageBoxButton.OK);
}
}
#endregion
}
public class KontaktlistBuilder : INotifyPropertyChanged
@@ -2722,7 +3291,7 @@ namespace BeWo.View
public class KontakMessageBuilder
{
public KontakMessageBuilder(string username, string message, string sendtime, long messagePersonOid, bool isme)
public KontakMessageBuilder(string username, string message, string sendtime, long messagePersonOid, bool isme, bool loadnext, object loadObject)
{
Username = username;
UserMessage = message;
@@ -2745,7 +3314,20 @@ namespace BeWo.View
Posi = "Left";
}
ChatVisibility = Visibility.Visible;
if (loadnext)
{
LoadNextVisibility = Visibility.Visible;
ChatVisibility = Visibility.Collapsed;
LoadObject = loadObject;
}
else
{
LoadNextVisibility = Visibility.Collapsed;
ChatVisibility = Visibility.Visible;
LoadObject = null;
}
SoundVisibility = Visibility.Collapsed;
_pictureVisibility = Visibility.Collapsed;
DokumentVisibility = Visibility.Collapsed;
@@ -2763,7 +3345,7 @@ namespace BeWo.View
if (isme && messagePersonOid == 0)
{
ChatColor = new SolidColorBrush(Colors.Lavender);
ChatColor = new SolidColorBrush(Colors.CornflowerBlue);
Posi = "Center";
}
else if (isme)
@@ -2854,7 +3436,7 @@ namespace BeWo.View
//array übergabe für Sound ermöglichen
SoundArray = null;
LoadNextVisibility = Visibility.Collapsed;
}
public string Username { get; private set; }
@@ -2865,6 +3447,10 @@ namespace BeWo.View
public int ChatPosition { get; private set; }
public string Posi { get; private set; }
public Visibility ChatVisibility { get; set; }
public Visibility LoadNextVisibility { get; set; }
public object LoadObject { get; set; }
public Visibility SoundVisibility { get; set; }
private Visibility _pictureVisibility;

View File

@@ -1530,7 +1530,7 @@ namespace BeWo.Data.Access
return c.List<Employee2Customer>();
}
public IEnumerable<ChatMessage> FindAllChatMessages(long senderOid, long empfaengerOid)
public IEnumerable<ChatMessage> FindAllChatMessages(long senderOid, long empfaengerOid,int maxNachrichten)
{
var c = CreateCriteriaIsActive<ChatMessage>()
.Add(
@@ -1542,14 +1542,49 @@ namespace BeWo.Data.Access
Restrictions.Eq(ChatMessage.PropertyName_SenderPersonOid, empfaengerOid),
Restrictions.Eq(ChatMessage.PropertyName_EmpfaengerPersonOid, senderOid))));
c.AddOrder(Order.Desc(ChatMessage.PropertyName_Uhrzeit));
c.SetMaxResults(maxNachrichten);
return c.List<ChatMessage>();
}
public IEnumerable<ChatMessage> FindAllChatMessagesFromTeam(long senderOid, long teamOid)
//neue funktion für weitere laden
public IEnumerable<ChatMessage> FindNextChatMessages(long senderOid, long empfaengerOid, int messlateZahl, List<string> list,bool isteam )
{
var c = CreateCriteriaIsActive<ChatMessage>();
if (!isteam)
{
c.Add(
Restrictions.Or(
Restrictions.And(
Restrictions.Eq(ChatMessage.PropertyName_SenderPersonOid, senderOid),
Restrictions.Eq(ChatMessage.PropertyName_EmpfaengerPersonOid, empfaengerOid)),
Restrictions.And(
Restrictions.Eq(ChatMessage.PropertyName_SenderPersonOid, empfaengerOid),
Restrictions.Eq(ChatMessage.PropertyName_EmpfaengerPersonOid, senderOid))));
}
else
{
c.Add(Restrictions.Eq(ChatMessage.PropertyName_TeamOid, empfaengerOid));
}
//geht
c.Add(Restrictions.Not(Restrictions.In(ChatMessage.PropertyName_MessageId, list)));
c.AddOrder(Order.Desc(ChatMessage.PropertyName_Uhrzeit));
c.SetMaxResults(messlateZahl);
return c.List<ChatMessage>();
}
public IEnumerable<ChatMessage> FindAllChatMessagesFromTeam(long senderOid, long teamOid, int messlateZahl)
{
var c = CreateCriteriaIsActive<ChatMessage>()
.Add(Restrictions.Eq(ChatMessage.PropertyName_TeamOid, teamOid));
c.AddOrder(Order.Desc(ChatMessage.PropertyName_Uhrzeit));
c.SetMaxResults(messlateZahl);
return c.List<ChatMessage>();
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,64 @@
using System;
using BeWo.Report.ReportObjects;
using BeWo.Report;
using DevExpress.XtraReports.UI;
using System.Data;
namespace BeWo.Report.DefaultReports
{
public partial class Bericht : DevExpress.XtraReports.UI.XtraReport, IBeWoReport<QueryRO>
{
public Bericht()
{
InitializeComponent();
}
public void SetReportDataSource(QueryRO pRO)
{
InitTable(pRO);
this.bindingSource1.DataSource = pRO;
}
private void InitTable(QueryRO ro)
{
xrTableRowHeader.Cells.Clear();
xrTableRowDetail.Cells.Clear();
int index = 1;
foreach (DataColumn column in ro.DataTable.Columns)
{
Type type = column.DataType;
XRTableCell headerCell = new XRTableCell();
headerCell.Text = column.ColumnName;
headerCell.WidthF = xrTableHeader.WidthF / ro.DataTable.Columns.Count;
this.xrTableRowHeader.Cells.Add(headerCell);
XRTableCell rowCell = new XRTableCell();
rowCell.WidthF = xrTableHeader.WidthF / ro.DataTable.Columns.Count;
if (type == typeof(DateTime))
rowCell.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field" + index, "{0:dd/MM/yyyy}")});
else
rowCell.DataBindings.AddRange(new DevExpress.XtraReports.UI.XRBinding[] {
new DevExpress.XtraReports.UI.XRBinding("Text", null, "Rows.Field" + index)});
this.xrTableRowDetail.Cells.Add(rowCell);
index++;
}
foreach (XRTableCell cell in xrTableRowHeader.Cells)
{
cell.WidthF = xrTableHeader.WidthF / ro.DataTable.Columns.Count;
}
foreach (XRTableCell cell in xrTableRowDetail.Cells)
{
cell.WidthF = xrTableHeader.WidthF / ro.DataTable.Columns.Count;
}
}
}
}

View File

@@ -0,0 +1,123 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="bindingSource1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<value>17, 17</value>
</metadata>
</root>

View File

@@ -591,11 +591,15 @@ namespace BeWo.Service.ServiceContracts
[FaultContract(typeof (BeWoFault))]
[OperationContract]
List<ChatMessageDC> FindAllChatMessages(long senderOid, long empfaengerOid);
List<ChatMessageDC> FindAllChatMessages(long senderOid, long empfaengerOid, int maxNachricht);
[FaultContract(typeof (BeWoFault))]
[OperationContract]
List<ChatMessageDC> FindAllChatMessagesFromTeam(long senderOid, long teamEmpfangOid);
List<ChatMessageDC> FindAllChatMessagesFromTeam(long senderOid, long teamEmpfangOid, int maxNachrichten);
[FaultContract(typeof(BeWoFault))]
[OperationContract]
List<ChatMessageDC> GetNextChatMessages(long senderOid, long EmpfangOid, bool isteam, List<string> messageIds, int maxMessage);
[FaultContract(typeof (BeWoFault))]
[OperationContract]

View File

@@ -3176,11 +3176,11 @@ namespace BeWo.Service.ServiceImplementations
}
}
public List<ChatMessageDC> FindAllChatMessages(long senderOid, long empfaengerOid)
public List<ChatMessageDC> FindAllChatMessages(long senderOid, long empfaengerOid,int maxNachricht)
{
try
{
var messages = DAOFactory.SearchDAO.FindAllChatMessages(senderOid, empfaengerOid);
var messages = DAOFactory.SearchDAO.FindAllChatMessages(senderOid, empfaengerOid, maxNachricht);
return MapperFactory.ChatMessagesDC_ChatMessages.MapToNewDCs(messages);
}
@@ -3190,11 +3190,11 @@ namespace BeWo.Service.ServiceImplementations
}
}
public List<ChatMessageDC> FindAllChatMessagesFromTeam (long senderOid, long teamEmpfangOid)
public List<ChatMessageDC> FindAllChatMessagesFromTeam (long senderOid, long teamEmpfangOid, int maxNachrichten)
{
try
{
var messages = DAOFactory.SearchDAO.FindAllChatMessagesFromTeam(senderOid, teamEmpfangOid);
var messages = DAOFactory.SearchDAO.FindAllChatMessagesFromTeam(senderOid, teamEmpfangOid,maxNachrichten);
return MapperFactory.ChatMessagesDC_ChatMessages.MapToNewDCs(messages);
}
@@ -3204,6 +3204,30 @@ namespace BeWo.Service.ServiceImplementations
}
}
public List<ChatMessageDC> GetNextChatMessages(long senderOid, long EmpfangOid,bool isteam,List<string> messageIds,int maxMessage )
{
try
{
if (isteam)
{
//empfangoid == teamempfang oid
var messages = DAOFactory.SearchDAO.FindNextChatMessages(senderOid, EmpfangOid ,maxMessage,messageIds,true);
return MapperFactory.ChatMessagesDC_ChatMessages.MapToNewDCs(messages);
}
else
{
var messages = DAOFactory.SearchDAO.FindNextChatMessages(senderOid, EmpfangOid, maxMessage,messageIds,false);
return MapperFactory.ChatMessagesDC_ChatMessages.MapToNewDCs(messages);
}
}
catch (Exception e)
{
throw Utils.CreateBeWoFaultException(e);
}
}
public void UpdateIstGelesen(long senderOid, long empfaengerOid, bool istGelesen)
{
try