public IActionResult PutEvent([FromRoute] int eventId, [FromBody] Event @event) { try { if (HttpContext.Items["User"] == null) { throw new UnauthorizedException("Authorization failed!"); } User user = (User)HttpContext.Items["User"]; if (user.PermissionLevel < 3) { throw new ForbiddenException("You don't have high enough clearance for this operation!"); } if (user.OrganizationId != null && _persistence.GetEventOrgId(eventId) != user.OrganizationId) { throw new ForbiddenException("The requested Event is owned by a different organization!"); } @event.Id = eventId; _persistence.UpdateEvent(@event); if (@event.Equipments == null) { return(StatusCode(200)); } _persistence.DeleteAllEquipmentEventConnection(eventId); string error = ""; foreach (Equipment eq in @event.Equipments) { try { if (eq.Id != null) { _persistence.AddEquipmentEventConnection((int)eq.Id, eventId); } } catch (ConflictException e) { error = e.Message + "\n"; } } if (error != "") { throw new ConflictException(error.Substring(0, error.Length - 1)); } return(StatusCode(200)); } catch (UnauthorizedException e) { return(StatusCode(401, e.Message)); } catch (ForbiddenException e) { return(StatusCode(403, e.Message)); } catch (NotFoundException e) { return(StatusCode(404, e.Message)); } catch (ConflictException e) { return(StatusCode(409, e.Message)); } catch (Exception e) { return(StatusCode(500, e.Message)); } }