public void GetInvitedToEventReturnsOnlyPeopleInvitedToAnEvent()
        {
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                Event e1 = new Event();
                e1.Brief = "User 1 Event";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

                Invite i1 = new Invite();
                i1.AppUser = user2;
                i1.Event = e1;
                i1.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i1);

                Invite i2 = new Invite();
                i2.AppUser = user3;
                i2.Event = e1;
                i2.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i2);

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var e1 = context.Events.Single(t => t.Brief == "User 1 Event");
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                var invited = eventUoW.Invites.GetInvitedToEvent(e1);
                invited.Should().HaveCount(2);
                invited.Any(t => t.AppUser == null).Should().BeFalse();
                invited.Any(t => t.AppUser == user1).Should().BeFalse();
                invited.Any(t => t.AppUser == user2).Should().BeTrue();
                invited.Any(t => t.AppUser == user3).Should().BeTrue();
            }
        }
        public void TransferInviteOwnershipShouldTransferAllInvites()
        {
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                Event e1 = new Event();
                e1.Brief = "User 1 Event 1";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

                Event e2 = new Event();
                e2.Brief = "User 1 Event 2";
                e2.Visibility = EventVisibility.Private;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser = user1;
                eventUoW.Events.Attach(e2);

                Invite i1 = new Invite();
                i1.AppUser = user2;
                i1.Event = e1;
                i1.Status = InviteStatus.Pending;
                i1.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i1);

                Invite i2 = new Invite();
                i2.AppUser = user2;
                i2.Event = e2;
                i2.Status = InviteStatus.Pending;
                i2.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i2);

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                eventUoW.Invites.TransferInviteOwnership(user2, user3);
                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                context.Invites.Where(t => t.AppUserId == user2.Id).ToList().Should().HaveCount(0);
                context.Invites.Where(t => t.AppUserId == user3.Id).ToList().Should().HaveCount(2);
            }
        }
        public void RemoveInvitesByHostRemovesAllInvitesByASpecificHost()
        {
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                Event e1 = new Event();
                e1.Brief = "User 1 Event 1";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

                Event e2 = new Event();
                e2.Brief = "User 3 Event 1";
                e2.Visibility = EventVisibility.Private;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser = user3;
                eventUoW.Events.Attach(e2);

                Invite i1 = new Invite();
                i1.AppUser = user2;
                i1.Event = e1;
                i1.Status = InviteStatus.Pending;
                i1.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i1);

                Invite i2 = new Invite();
                i2.AppUser = user2;
                i2.Event = e2;
                i2.Status = InviteStatus.Pending;
                i2.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i2);

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                eventUoW.Invites.RemoveInvitesByHost(user2, user1);
                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                var invites = context.Invites.Include(t => t.Event).Where(t => t.AppUserId == user2.Id).ToList();

                invites.Any(t => t.Event.OwnerId == user1.Id).Should().BeFalse();
            }
        }
        public void IsInvitedIsOnlyTrueWhenTheUserIsInvitedToAnEvent()
        {
            int id = 0;
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                Event e1 = new Event();
                e1.Brief = "User 1 Event";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

                Invite i1 = new Invite();
                i1.AppUser = user2;
                i1.Event = e1;
                i1.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i1);

                eventUoW.Save();
                id = e1.Id;
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");
                var e = eventUoW.Events.GetEventByID(id);

                eventUoW.Invites.IsInvited(e, user2).Should().BeTrue();
                eventUoW.Invites.IsInvited(e, user3).Should().BeFalse();
            }
        }
        public void MarkAllInvitesAsSeenShouldResetTheUnseenInviteCount()
        {
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");

                Event e1 = new Event();
                e1.Brief = "User 1 Event 1";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

                Event e2 = new Event();
                e2.Brief = "User 1 Event 2";
                e2.Visibility = EventVisibility.Private;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser = user1;
                eventUoW.Events.Attach(e2);

                Invite i1 = new Invite();
                i1.AppUser = user2;
                i1.Event = e1;
                i1.Status = InviteStatus.Pending;
                i1.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i1);

                Invite i2 = new Invite();
                i2.AppUser = user2;
                i2.Event = e2;
                i2.Status = InviteStatus.Pending;
                i2.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i2);

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");

                var count = eventUoW.Invites.GetUnseenPendingInvitesCount(user2);
                count.Should().Be(2);

                eventUoW.Invites.MarkAllInvitesAsSeen(user2);
                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");

                var count = eventUoW.Invites.GetUnseenPendingInvitesCount(user2);
                count.Should().Be(0);
            }
        }
        public void GetPendingInvitesWithEventGraphReturnsOnlyEventsTheUserIsInvitedTo()
        {
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                Event e1 = new Event();
                e1.Brief = "User 1 Event 1";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

                Event e2 = new Event();
                e2.Brief = "User 1 Event 2";
                e2.Visibility = EventVisibility.Private;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser = user1;
                eventUoW.Events.Attach(e2);

                Event e3 = new Event();
                e3.Brief = "User 2 Event";
                e3.Visibility = EventVisibility.Private;
                e3.ModificationState = ModificationState.Added;
                e3.AppUser = user2;
                eventUoW.Events.Attach(e3);

                Invite i1 = new Invite();
                i1.AppUser = user2;
                i1.Event = e1;
                i1.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i1);

                Invite i2 = new Invite();
                i2.AppUser = user3;
                i2.Event = e1;
                i2.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i2);

                Invite i3 = new Invite();
                i3.AppUser = user1;
                i3.Event = e2;
                i3.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i3);

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");
                var user3 = context.Users.Single(t => t.UserName == "TestUser3");

                var invites = eventUoW.Invites.GetPendingInvitesWithEventGraph(user2);

                invites.Should().HaveCount(1);
                invites.Single().Event.Brief.Should().Be("User 1 Event 1");
            }
        }
Beispiel #7
0
        public ActionResult JoinEvent(int eventId)
        {
            var _event = eventUoW.Events.GetEventByID(eventId);
            if(_event == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.NotFound);
            }

            if (_event.Visibility == EventVisibility.Private)
            {
                return new HttpStatusCodeResult(HttpStatusCode.NotFound);
            }

            var user = eventUoW.Users.GetUserById(User.Identity.GetUserId());
            if(user == null)
            {
                return new HttpStatusCodeResult(HttpStatusCode.NotFound);
            }

            if(eventUoW.Invites.IsInvited(_event, user))
            {
                return new HttpStatusCodeResult(HttpStatusCode.Forbidden);
            }

            Invite invite = new Invite();
            invite.EventId = eventId;
            invite.AppUserId = user.Id;
            invite.ModificationState = ModificationState.Added;
            invite.Seen = true;
            invite.Status = InviteStatus.Accepted;
            eventUoW.Invites.Attach(invite);
            eventUoW.Save();

            return RedirectToAction("Details", "Event", new { id = eventId});
        }
Beispiel #8
0
        public ActionResult InviteByUsername(int eventId, string username)
        {
            InviteUsernameViewModel result = new InviteUsernameViewModel();
            Event e = eventUoW.Events.GetEventByID(eventId);
            if (e == null)
            {
                result.InviteResult = InviteUsernameViewModel.Result.EventNotFound;
                return Json(result);
            }

            if (User.Identity.GetUserId() != e.OwnerId)
            {
                result.InviteResult = InviteUsernameViewModel.Result.InviterIsNotOwner;
                return Json(result);
            }

            AppUser user = eventUoW.Users.GetUserByUsername(username);
            if (user == null)
            {
                result.InviteResult = InviteUsernameViewModel.Result.UserNotFound;
                return Json(result);
            }

            if (user.Id == e.OwnerId)
            {
                result.InviteResult = InviteUsernameViewModel.Result.UserIsOwner;
                return Json(result);
            }

            if (eventUoW.Invites.IsInvited(e, user))
            {
                result.InviteResult = InviteUsernameViewModel.Result.UserIsAlreadyInvited;
                return Json(result);
            }

            Invite invite = new Invite { Event = e, AppUser = user, Status = InviteStatus.Pending, ModificationState = ModificationState.Added };
            eventUoW.Invites.Attach(invite);
            eventUoW.Save();

            result.InviteResult = InviteUsernameViewModel.Result.Invited;
            return Json(result);
        }
 public void Attach(Invite entity)
 {
     context.Invites.Add(entity);
     ContextStateHelper.ApplyStateChanges(context);
 }
        public void GetAllInvitedEventsOnlyReturnsEventsThisUserIsInvitedTo()
        {
            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user1 = context.Users.Single(t => t.UserName == "TestUser");
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");

                Event e1 = new Event();
                e1.Brief = "User 1 Event";
                e1.Visibility = EventVisibility.Private;
                e1.ModificationState = ModificationState.Added;
                e1.AppUser = user1;
                eventUoW.Events.Attach(e1);

                Event e2 = new Event();
                e2.Brief = "User 2 Event";
                e2.Visibility = EventVisibility.Private;
                e2.ModificationState = ModificationState.Added;
                e2.AppUser = user2;
                eventUoW.Events.Attach(e2);

                Event e3 = new Event();
                e3.Brief = "User 1 Public Event";
                e3.Visibility = EventVisibility.Public;
                e3.ModificationState = ModificationState.Added;
                e3.AppUser = user1;
                eventUoW.Events.Attach(e3);

                Invite i = new Invite();
                i.AppUser = user2;
                i.Event = e1;
                i.ModificationState = ModificationState.Added;
                eventUoW.Invites.Attach(i);

                eventUoW.Save();
            }

            using (var context = new EventContext())
            {
                var eventUoW = new EventUnitOfWork(context);
                var userManager = new UserManager<AppUser>(new UserStore<AppUser>(context));
                var user2 = context.Users.Single(t => t.UserName == "TestUser2");

                List<Event> events = eventUoW.Events.GetAllInvitedEvents(user2);

                events.Should().HaveCount(1);
                events[0].Brief.Should().Be("User 1 Event");
            }
        }