示例#1
0
        public async Task Attendee_Forbidden_4_CannotAddGuest()
        {
            var setup = await SetupEventRelationshipAsync();

            var user = CreateUser();

            _Context.Users.Add(user);
            await _Context.SaveChangesAsync();

            var rel = new AttendeeRelationship
            {
                EventId  = setup.secondEvent.Id,
                PersonId = user.Person.Id,
                Type     = AttendeeTypes.Helper
            };

            _Context.AttendeeRelationships.Add(rel);
            await _Context.SaveChangesAsync();

            var r = await _Client.PostAsync($"api/event/{setup.secondEvent.Id}/attendees/{user.Person.Id}", new AttendeeRelationship
            {
                EventId  = -1,
                PersonId = -1,
                Type     = AttendeeTypes.Guest
            }.ToStringContent());

            var error = JsonConvert.DeserializeObject <ExceptionDTO>(await r.Content.ReadAsStringAsync());

            Assert.Equal(HttpStatusCode.Forbidden, r.StatusCode);
            Assert.Equal(Guid.Parse(AttendeeErrorCodes.NO_PERMISSION_TO_ADD_GUEST), error.ErrorCode);
        }
 public void ValidateAttendeeRelationshipDoesntTargetHost(AttendeeRelationship relationship)
 {
     if (_dataContext.Events.Any(x => x.Id == relationship.EventId && x.HostId == relationship.PersonId))
     {
         throw new ConflictException("Host cannot be added as Guest or Helper", Guid.Parse(AttendeeErrorCodes.CANNOT_ADD_HOST_AS_GUEST));
     }
 }
示例#3
0
 public Task <AttendeeRelationship> UpdateAttendeeRelationshipAsync(AttendeeRelationship relationship)
 {
     _eventValidator.ValidateEventExists(relationship.EventId);
     _personValidator.ValidatePersonExists(relationship.PersonId);
     _attendeeValidator.ValidateAttendeeRelationshipExists(relationship);
     _attendeeValidator.CanWriteRelationship(relationship);
     return(null);
 }
示例#4
0
        public async Task <AttendeeRelationship> UpdateAttendeeRelationshipAsync(AttendeeRelationship relationship)
        {
            var dbRelationship = await _dataContext.AttendeeRelationships.FirstOrDefaultAsync(x => x.EventId == relationship.EventId && x.PersonId == relationship.PersonId);

            dbRelationship.Type = relationship.Type;
            await _dataContext.SaveChangesAsync();

            return(dbRelationship);
        }
示例#5
0
        public async Task <AttendeeRelationship> CreateAttendeeRelationshipAsync(AttendeeRelationship relationship)
        {
            var rel = new AttendeeRelationship {
                EventId = relationship.EventId, PersonId = relationship.PersonId, Type = relationship.Type
            };

            _dataContext.AttendeeRelationships.Add(rel);
            await _dataContext.SaveChangesAsync();

            return(rel);
        }
        public void CanWriteRelationship(AttendeeRelationship relationship)
        {
            var person  = _personService.GetPersonForUserAsync().Result;
            var dbevent = _dataContext.Events
                          .Include(x => x.AttendeeRelationships)
                          .FirstOrDefault(x => x.Id == relationship.EventId);

            if (dbevent.HostId == person.Id)
            {
                return;
            }

            if (relationship.Type == AttendeeTypes.Helper)
            {
                throw new ForbiddenException("User doent have permission to add a Helper", Guid.Parse(AttendeeErrorCodes.NO_PERMISSION_TO_ADD_HELPER));
            }

            if (dbevent.AttendeeRelationships.FirstOrDefault(x => x.PersonId == person.Id && x.Type == AttendeeTypes.Helper) == null)
            {
                throw new ForbiddenException("User doent have permission to add a Guest", Guid.Parse(AttendeeErrorCodes.NO_PERMISSION_TO_ADD_GUEST));
            }
        }
示例#7
0
        protected async Task <(User firstUser, Event firstEvent, AttendeeRelationship secondHelperAtFirst, User secondUser, Event secondEvent, AttendeeRelationship firstGuestAtSecond)> SetupEventRelationshipAsync()
        {
            var setup = await SetupEventAsync();

            var secondHelperAtFirst = new AttendeeRelationship
            {
                EventId  = setup.firstEvent.Id,
                PersonId = setup.secondUser.Person.Id,
                Type     = AttendeeTypes.Helper
            };

            var firstGuestAtSecond = new AttendeeRelationship
            {
                EventId  = setup.secondEvent.Id,
                PersonId = setup.first.Person.Id,
                Type     = AttendeeTypes.Guest
            };

            _Context.AttendeeRelationships.AddRange(secondHelperAtFirst, firstGuestAtSecond);
            await _Context.SaveChangesAsync();

            return(setup.first, setup.firstEvent, secondHelperAtFirst, setup.secondUser, setup.secondEvent, firstGuestAtSecond);
        }
        public async Task GetEventOverview_Success()
        {
            var setup = await SetupAsync();

            var firstname = Guid.NewGuid().ToString();
            var lastname  = Guid.NewGuid().ToString();

            var otherUser = new User
            {
                EMail  = Guid.NewGuid() + "@a.de",
                Person = new RealPerson
                {
                    Firstname = firstname,
                    Lastname  = lastname
                }
            };
            var guestEvent = new Event
            {
                Name   = "guest",
                Start  = DateTime.UtcNow,
                End    = DateTime.UtcNow,
                Budget = 0,
                Host   = otherUser.Person
            };
            var helperEvent = new Event
            {
                Name   = "helper",
                Start  = DateTime.UtcNow,
                End    = DateTime.UtcNow,
                Budget = 0,
                Host   = otherUser.Person
            };
            var noEvent = new Event
            {
                Name   = "ERROR",
                Start  = DateTime.UtcNow,
                End    = DateTime.UtcNow,
                Budget = 0,
                Host   = otherUser.Person
            };

            var helperRelation = new AttendeeRelationship
            {
                Event    = helperEvent,
                PersonId = setup.host.Person.Id,
                Type     = AttendeeTypes.Helper
            };

            var guestRelation = new AttendeeRelationship
            {
                Event    = guestEvent,
                PersonId = setup.host.Person.Id,
                Type     = AttendeeTypes.Guest
            };

            var ctx = CreateDataContext();

            ctx.Users.Add(otherUser);
            ctx.RealPeople.Add(otherUser.Person);
            ctx.Events.Add(guestEvent);
            ctx.Events.Add(helperEvent);
            ctx.Events.Add(noEvent);
            ctx.AttendeeRelationships.AddRange(helperRelation, guestRelation);

            await ctx.SaveChangesAsync();

            var r = await _Client.GetAsync("api/event");

            r.EnsureSuccessStatusCode();

            var events = JsonConvert.DeserializeObject <Event[]>(await r.Content.ReadAsStringAsync()).ToList();

            Assert.Equal(3, events.Count);
            Assert.NotNull(events.FirstOrDefault(x => x.Id == setup.eventItem.Id));
            Assert.NotNull(events.FirstOrDefault(x => x.Id == helperEvent.Id));
            Assert.NotNull(events.FirstOrDefault(x => x.Id == guestEvent.Id));
        }
 public void ValidateAttendeeRelationshipDoesNotExist(AttendeeRelationship relationship)
 {
     ValidateAttendeeRelationshipDoesNotExist(relationship.PersonId, relationship.EventId);
 }
示例#10
0
 public void ValidateAttendeeRelationshipExists(AttendeeRelationship relationship)
 {
     ValidateAttendeeRelationshipExists(relationship.EventId, relationship.PersonId);
 }
示例#11
0
 public virtual Task <AttendeeRelationship> UpdateGuestRelationsship([FromBody] AttendeeRelationship attendee, int eventId, int attendeeId)
 {
     attendee.EventId  = eventId;
     attendee.PersonId = attendeeId;
     return(_attendeeService.UpdateAttendeeRelationshipAsync(attendee));
 }
示例#12
0
 public virtual Task <AttendeeRelationship> CreateGuestRelationship(int eventId, int attendeeId, [FromBody] AttendeeRelationship attendee)
 {
     HttpContext.Response.StatusCode = (int)HttpStatusCode.Created;
     attendee.EventId  = eventId;
     attendee.PersonId = attendeeId;
     return(_attendeeService.CreateAttendeeRelationshipAsync(attendee));
 }