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)); } }
public Task <AttendeeRelationship> UpdateAttendeeRelationshipAsync(AttendeeRelationship relationship) { _eventValidator.ValidateEventExists(relationship.EventId); _personValidator.ValidatePersonExists(relationship.PersonId); _attendeeValidator.ValidateAttendeeRelationshipExists(relationship); _attendeeValidator.CanWriteRelationship(relationship); return(null); }
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); }
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)); } }
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); }
public void ValidateAttendeeRelationshipExists(AttendeeRelationship relationship) { ValidateAttendeeRelationshipExists(relationship.EventId, relationship.PersonId); }
public virtual Task <AttendeeRelationship> UpdateGuestRelationsship([FromBody] AttendeeRelationship attendee, int eventId, int attendeeId) { attendee.EventId = eventId; attendee.PersonId = attendeeId; return(_attendeeService.UpdateAttendeeRelationshipAsync(attendee)); }
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)); }