/// <summary> /// Liefert alle Peanuts der Gruppe /// </summary> /// <param name="userGroup"></param> /// <returns></returns> public IPage <Peanut> FindAllPeanutsInGroup(UserGroup userGroup) { Require.NotNull(userGroup, "userGroup"); return(PeanutDao.FindPeanutsInGroups(PageRequest.All, new List <UserGroup>() { userGroup })); }
public int GetUserGroupMemberKarma(UserGroupMembership userGroupMembership) { Require.NotNull(userGroupMembership, "userGroupMembership"); IList <Peanut> allPeanutsInGroup = PeanutDao.FindPeanutsInGroups(PageRequest.All, new List <UserGroup> { userGroupMembership.UserGroup }, new DateTime(2000, 1, 1), new DateTime(3000, 1, 1)).ToList(); return(GetUserGroupMemberKarma(userGroupMembership, allPeanutsInGroup)); }
public Peanut Create(UserGroup userGroup, PeanutDto peanutDto, IList <RequirementDto> requirements, IDictionary <UserGroupMembership, PeanutParticipationDto> initialParticipators, User user) { foreach (UserGroupMembership groupMembership in initialParticipators.Keys) { if (!userGroup.Equals(groupMembership.UserGroup)) { throw new InvalidOperationException("Ein Peanut kann nur für Mitglieder der selben Gruppe erstellt werden."); } } Peanut peanut = new Peanut(userGroup, peanutDto, requirements, initialParticipators, new EntityCreatedDto(user, DateTime.Now)); PeanutDao.Save(peanut); return(peanut); }
public PeanutsUserGroupMembershipStatistics GetPeanutsUserGroupMembershipStatistics(UserGroupMembership userGroupMembership) { Require.NotNull(userGroupMembership, "userGroupMembership"); List <Peanut> allPeanutsInGroup = PeanutDao.FindPeanutsInGroups(PageRequest.All, new List <UserGroup> { userGroupMembership.UserGroup }, new DateTime(2000, 1, 1), new DateTime(3000, 1, 1)).ToList(); List <PeanutParticipation> allParticipationsOfMember = allPeanutsInGroup.SelectMany(p => p.Participations).Where(part => part.UserGroupMembership.Equals(userGroupMembership)).ToList(); if (!allPeanutsInGroup.Any()) { return(null); } return(new PeanutsUserGroupMembershipStatistics(userGroupMembership, allPeanutsInGroup, allParticipationsOfMember)); }
/// <summary> /// Ruft die Karmas der aktiven Gruppenmitglieder ab. /// </summary> /// <param name="userGroup"></param> /// <returns></returns> public IDictionary <UserGroupMembership, int> GetUserGroupMembersKarma(UserGroup userGroup) { Require.NotNull(userGroup, "userGroup"); List <UserGroupMembership> userGroupMemberships = UserGroupService.FindMembershipsByGroups(PageRequest.All, new List <UserGroup> { userGroup }, UserGroupMembership.ActiveTypes) .ToList(); IList <Peanut> allPeanutsInGroup = PeanutDao.FindPeanutsInGroups(PageRequest.All, new List <UserGroup> { userGroup }, new DateTime(2000, 1, 1), new DateTime(3000, 1, 1)).ToList(); return (userGroupMemberships.ToDictionary(u => u, u => GetUserGroupMemberKarma(u, allPeanutsInGroup)) .OrderBy(b => b.Value) .ToDictionary(d => d.Key, d => d.Value)); }
/// <summary> /// Ruft alle Teilnahmen eines Nutzers an Peanuts in einem bestimmten Zeitraum seitenweise ab. /// Die Sortierung erfolgt nach Datum des Peanuts. /// </summary> /// <param name="pageRequest">Seiteninformationen</param> /// <param name="forUser">Die Teilnahmen welches Nutzers sollen abgerufen werden?</param> /// <param name="from">Frühester Termin ab dem Peanuts gefunden werden</param> /// <param name="to">Spätester Termin bis zu dem Peanuts gefunden werden</param> /// <returns></returns> public IPage <PeanutParticipation> FindParticipationsOfUser(IPageable pageRequest, User forUser, DateTime from, DateTime to, IList <PeanutParticipationState> participationStates = null) { return(PeanutDao.FindParticipationsOfUser(pageRequest, forUser, from, to, participationStates)); }
/// <summary> /// Sucht nach dem Peanut, aus dem die Rechnung erstellt wurde. /// Wurde die Rechnung unabhängig von einem Peanut erstellt, wird null geliefert. /// </summary> /// <param name="bill"></param> /// <returns></returns> public Peanut FindFromBill(Bill bill) { return(PeanutDao.FindFromBill(bill)); }
/// <summary> /// Sucht seitenweise nach abgerechneten Peanuts in einem bestimmten Zeitraum. /// </summary> /// <param name="pageRequest"></param> /// <param name="userGroup">Die Gruppe, in welcher gesucht werden soll</param> /// <param name="from"> /// Der früheste Zeitpunkt für einen zu berücksichtigenden Peanut oder null, wenn ab dem ersten Peanut /// gesucht werden soll. /// </param> /// <param name="to"> /// Der späteste Zeitpunkt für einen zu berücksichtigenden Peanut oder null, wenn bis zum letzten Peanut /// gesucht werden soll. /// </param> /// <returns></returns> public IPage <Peanut> FindBilledPeanutsInGroup(IPageable pageRequest, UserGroup userGroup, DateTime?from = null, DateTime?to = null) { return(PeanutDao.FindBilledPeanutsInGroup(pageRequest, userGroup, from, to)); }
/// <summary> /// Sucht nach Peanuts, an denen der Nutzer teilnehmen kann, da das Peanut in seiner Gruppe erstellt wurde und er /// bisher nicht als Teilnehmer eingetragen ist bzw. seine Teilnahme nicht bestätigt hat. /// </summary> /// <param name="pageRequest"></param> /// <param name="user"></param> /// <param name="from"></param> /// <param name="to"></param> /// <returns></returns> public IPage <Peanut> FindAttendablePeanutsForUser(IPageable pageRequest, User user, DateTime from, DateTime to) { return(PeanutDao.FindAttendablePeanutsForUser(pageRequest, user, from, to)); }