Files
OurUmbraco/uEvents/Relations/EventRelation.cs
T
Sebastiaan Janssen 810cbd267f Initial commit
2012-12-17 09:41:11 +01:00

120 lines
3.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using umbraco.cms.businesslogic.relation;
using umbraco.DataLayer;
namespace uEvents.Relations
{
public class EventRelation
{
private static string _event = "event";
private static string _waitinglist = "waitinglist";
public static void RelateMemberToEvent(int memberId, int eventId, string comment)
{
if (!Relation.IsRelated(eventId, memberId))
{
RelationType rt = RelationType.GetByAlias(_event);
Relation.MakeNew(eventId, memberId, rt, comment);
}
}
public static void PutMemberOnWaitingList(int memberId, int eventId, string comment)
{
if (!Relation.IsRelated(eventId, memberId))
{
RelationType rt = RelationType.GetByAlias(_waitinglist);
Relation.MakeNew(eventId, memberId, rt, comment);
}
}
private static int GetRelations(string alias, int parentId)
{
ISqlHelper sqlhelper = umbraco.BusinessLogic.Application.SqlHelper;
int result = sqlhelper.ExecuteScalar<int>(
@"
SELECT count(umbracoRelation.id)
FROM umbracoRelation
INNER JOIN umbracoRelationType ON umbracoRelationType.id = umbracoRelation.relType AND umbracoRelationType.alias = @alias
where parentId = @parent
"
,
sqlhelper.CreateParameter("@parent", parentId),
sqlhelper.CreateParameter("@alias", alias)
);
return result;
}
public static int GetSignedUp(int eventId)
{
return GetRelations(_event, eventId);
}
public static int GetWaiting(int eventId)
{
return GetRelations(_waitinglist, eventId);
}
private static List<Relation> GetRelations(string alias, string sort, int parentId, int number)
{
List<Relation> retval = new List<Relation>();
ISqlHelper sqlhelper = umbraco.BusinessLogic.Application.SqlHelper;
IRecordsReader rr = sqlhelper.ExecuteReader(
string.Format(@"
SELECT TOP {0} umbracoRelation.id
FROM umbracoRelation
INNER JOIN umbracoRelationType ON umbracoRelationType.id = umbracoRelation.relType AND umbracoRelationType.alias = @alias
where parentId = @parent
ORDER BY datetime {1}
", number, sort)
,
sqlhelper.CreateParameter("@parent", parentId),
sqlhelper.CreateParameter("@alias", alias)
);
while (rr.Read())
{
retval.Add( new Relation( rr.GetInt("id") ) );
}
rr.Close();
rr.Dispose();
return retval;
}
public static List<Relation> GetPeopleWaiting(int eventId, int number)
{
return GetRelations(_waitinglist, "ASC", eventId, number);
}
public static List<Relation> GetPeopleSignedUpLast(int eventId, int number)
{
return GetRelations(_event, "DESC", eventId, number);
}
public static void ClearRelations(int memberId, int eventId)
{
if (Relation.IsRelated(eventId, memberId))
{
foreach (Relation r in Relation.GetRelations(eventId))
{
if (r.Child.Id == memberId)
{
r.Delete();
break;
}
}
}
}
}
}