Beispiel #1
0
 /// <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
     }));
 }
Beispiel #2
0
        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));
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        /// <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));
        }
Beispiel #6
0
 /// <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));
 }
Beispiel #7
0
 /// <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));
 }
Beispiel #8
0
 /// <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));
 }
Beispiel #9
0
 /// <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));
 }