Esempio n. 1
0
        public ActionResult UpdateParticipation(Peanut peanut, PeanutParticipation peanutParticipation,
                                                PeanutParticipationUpdateCommand peanutParticipationUpdateCommand, User currentUser)
        {
            Require.NotNull(peanut, "peanut");
            Require.NotNull(peanutParticipation, "peanutParticipation");
            Require.NotNull(peanutParticipationUpdateCommand, "peanutParticipationUpdateCommand");
            Require.IsTrue(() => peanut.Equals(peanutParticipation.Peanut), "peanutParticipation");

            if (!ModelState.IsValid)
            {
                return(RedirectToAction("Show", new { peanut = peanut.BusinessId }));
            }

            Dictionary <UserGroupMembership, PeanutParticipationDto> participationUpdates =
                new Dictionary <UserGroupMembership, PeanutParticipationDto> {
                {
                    peanutParticipation.UserGroupMembership,
                    new PeanutParticipationDto(peanutParticipationUpdateCommand.PeanutParticipationType,
                                               peanutParticipation.ParticipationState)
                }
            };

            PeanutService.AddOrUpdateParticipations(peanut,
                                                    participationUpdates,
                                                    currentUser);

            return(RedirectToAction("Show", new { peanut = peanut.BusinessId }));
        }
Esempio n. 2
0
        public ActionResult DeclineParticipation(Peanut peanut, PeanutParticipation peanutParticipation, User currentUser)
        {
            Require.NotNull(peanut, "peanut");
            Require.NotNull(peanutParticipation, "peanutParticipation");
            Require.IsTrue(() => peanutParticipation.Peanut.Equals(peanut), "peanutParticipation");

            PeanutService.RemoveParticipations(peanut, new List <UserGroupMembership> {
                peanutParticipation.UserGroupMembership
            }, currentUser);

            return(RedirectToAction("Day", new { year = peanut.Day.Year, month = peanut.Day.Month, day = peanut.Day.Day }));
        }
Esempio n. 3
0
        public PeanutShowViewModel(Core.Domain.Peanuts.Peanut peanut, PeanutParticipation usersPeanutParticipation,
                                   IList <UserGroupMembership> invitableUsers, IList <PeanutParticipationType> participationTypes, PeanutEditOptions peanutEditOptions)
        {
            Require.NotNull(peanut, "peanut");
            Require.NotNull(peanutEditOptions, "peanutEditOptions");
            Require.NotNull(participationTypes, "participationTypes");
            Require.NotNull(invitableUsers, "invitableUsers");

            Peanut = peanut;
            UsersPeanutParticipation = usersPeanutParticipation;
            PeanutEditOptions        = peanutEditOptions;
            InviteableUsers          = invitableUsers;
            ParticipationTypes       = participationTypes;
        }
Esempio n. 4
0
        public IList <PeanutParticipation> AddOrUpdateParticipations(Peanut peanut,
                                                                     IDictionary <UserGroupMembership, PeanutParticipationDto> participations, User user)
        {
            Require.NotNull(peanut, "peanut");
            Require.NotNull(participations, "participations");
            Require.NotNull(user, "user");

            if (peanut.IsFixed)
            {
                throw new InvalidOperationException("Einem fixierten Peanut können keine weiteren Teilnehmer hinzugefügt werden.");
            }

            foreach (UserGroupMembership membership in participations.Keys)
            {
                PeanutParticipation existingParticipation = peanut.Participations.SingleOrDefault(part => part.UserGroupMembership.Equals(membership));
                if (existingParticipation != null)
                {
                    /*Der Nutzer nimmt bereits teil. In diesem Falle wird die Art der Teilnahme angepasst und der Status auf Confirmed gesetzt.*/
                    if (!existingParticipation.GetDto().Equals(participations[membership]))
                    {
                        existingParticipation.Update(participations[membership], new EntityChangedDto(user, DateTime.Now));
                    }
                }
                else
                {
                    /*Es handelt sich um einen neuen Teilnehmer*/
                    PeanutParticipation newParticipation = new PeanutParticipation(peanut,
                                                                                   membership,
                                                                                   participations[membership],
                                                                                   new EntityCreatedDto(user, DateTime.Now));
                    peanut.AddParticipators(new EntityChangedDto(user, DateTime.Now), newParticipation);
                }
            }

            return(new ReadOnlyCollection <PeanutParticipation>(peanut.Participations));
        }
Esempio n. 5
0
        public PeanutParticipationUpdateCommand(PeanutParticipation participation)
        {
            Require.NotNull(participation, "participation");

            PeanutParticipationType = participation.ParticipationType;
        }
 public PeanutParticipationUpdateViewModel(PeanutParticipation peanutParticipation, IList <PeanutParticipationType> participationTypes, PeanutParticipationUpdateCommand peanutParticipationUpdateCommand)
 {
     PeanutParticipation = peanutParticipation;
     ParticipationTypes  = participationTypes;
     PeanutParticipationUpdateCommand = peanutParticipationUpdateCommand;
 }