public async Task <ActionResult> CreateOwner(int id, int userid, [FromBody] OwnershipLevel ownershipLevel) { // Is the requester authorized? if (GetAuthorizedOwnershipLevel(id) < OwnershipLevel.Administrator) { return(Forbidden()); } Event @event = await Db.Events.FindAsync(id); if (@event == null) { return(NotFound("Event not found")); } User user = await Db.Users.FindAsync(userid); if (user == null) { return(NotFound("User not found")); } EventOwnership ownership = await Db.EventOwnerships.FirstOrDefaultAsync(o => (o.Event.ID == id) && (o.User.ID == userid)); // Already set? if (ownership?.OwnershipLevel == ownershipLevel) { return(Ok()); // done } if (ownership != null) { ownership.OwnershipLevel = ownershipLevel; Db.EventOwnerships.Update(ownership); } else { Db.EventOwnerships.Add(new EventOwnership() { Event = @event, User = user, OwnershipLevel = ownershipLevel }); } await Db.SaveChangesAsync(); return(Ok()); }
public static async Task <APIResponse <bool> > SetEventOwnerAsync(int id, int userid, OwnershipLevel ownershipLevel) { return(await PostAsync <bool>($"api/events/{id}/ownership/{userid}", ownershipLevel)); }