Änderungen an der App

Chunkweises Herunterladen von Chatnachrichten
This commit is contained in:
staccatomamba
2016-11-09 11:48:46 +01:00
parent de51aef179
commit 1bd2c4e647
17 changed files with 530 additions and 314 deletions

View File

@@ -1,18 +1,18 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using BeWo.Data.Entities;
using BS.Shared.Extensions;
using NHibernate.Criterion;
using NHibernate.SqlCommand;
using BS.Shared.Core;
using BS.Shared;
using BS.Shared.DataContracts.Compact;
using NHibernate.Linq.Functions;
using NHibernate.Transform;
using Login = BeWo.Data.Entities.Login;
namespace BeWo.Data.Access
@@ -1619,8 +1619,8 @@ namespace BeWo.Data.Access
Restrictions.And(
Restrictions.Eq(ChatMessage.PropertyName_SenderPersonOid, pRecipientOid),
Restrictions.Eq(ChatMessage.PropertyName_EmpfaengerPersonOid, pSenderOid))))
.Add(Restrictions.Not(Restrictions.In(ChatMessage.PropertyName_MessageId, pExceptions)))
.Add(Restrictions.IsNull(ChatMessage.PropertyName_TeamOid));
.Add(Restrictions.Not(Restrictions.In(ChatMessage.PropertyName_MessageId, pExceptions)))
.Add(Restrictions.IsNull(ChatMessage.PropertyName_TeamOid));
if(pForTeam)
{
@@ -1673,6 +1673,7 @@ namespace BeWo.Data.Access
return c.List<ChatMessage>();
}
//TODO: Anpassen. Ist fehlerhaft.
public IEnumerable<ChatMessage> FindNewestChatMessages(long pRecipientPersonOid)
{
var query2 = Session.CreateSQLQuery(string.Format("SELECT MAX({0}) FROM chatmessages WHERE ({1} = {2} OR {3} = {2}) AND {4} IS NULL OR {4} IS NOT NULL AND {1} IN (SELECT t.{0} FROM Team t JOIN employee2team e ON e.{4} = t.{0}) GROUP BY {1}, {3}",
@@ -1692,5 +1693,40 @@ namespace BeWo.Data.Access
return liste.Select(s => s.MessageId);
}
public IEnumerable<ChatMessage> LoadChatMessagesChunkwise(string pMessageId, long pRecipientOid, long pSenderOid, bool pForTeam, List<string> pExceptions)
{
var c = CreateCriteriaIsActive<ChatMessage>()
.Add(Restrictions.Or(
Restrictions.And(
Restrictions.Eq(ChatMessage.PropertyName_SenderPersonOid, pSenderOid),
Restrictions.Eq(ChatMessage.PropertyName_EmpfaengerPersonOid, pRecipientOid)),
Restrictions.And(
Restrictions.Eq(ChatMessage.PropertyName_SenderPersonOid, pRecipientOid),
Restrictions.Eq(ChatMessage.PropertyName_EmpfaengerPersonOid, pSenderOid))));
c.Add(Restrictions.IsNull(ChatMessage.PropertyName_TeamOid));
if (pForTeam)
{
c = CreateCriteriaIsActive<ChatMessage>()
.Add(Restrictions.Eq(ChatMessage.PropertyName_TeamOid, pRecipientOid));
}
if (!string.IsNullOrEmpty(pMessageId))
{
var c1 = CreateCriteriaIsActive<ChatMessage>()
.Add(Restrictions.Eq(ChatMessage.PropertyName_MessageId, pMessageId));
var lastLoadedChatMessage = c1.UniqueResult<ChatMessage>();
c.Add(Restrictions.Not(Restrictions.In(ChatMessage.PropertyName_MessageId, pExceptions)));
c.Add(Restrictions.Gt(BeWoEntityBase.PropertyName_InsTs, lastLoadedChatMessage.InsTs));
}
c.AddOrder(Order.Desc(BeWoEntityBase.PropertyName_InsTs));
c.SetMaxResults(15);
return c.List<ChatMessage>();
}
}
}