hngprojects / hng_boilerplate_nestjs

Description
Apache License 2.0
182 stars 105 forks source link

[FEAT] API to create Event(s) for an Organization - BACKEND #199

Closed aniebietafia closed 1 month ago

aniebietafia commented 1 month ago

Description

Implement a feature to create an Event for a particular organization and store the event in the Event's table referencing the Organization by Id it is created for.

Acceptance Criteria

Purpose

Allows verified organizations to create events for the members in their organization.

Requirements

Data Schema

Database schema for storing events.

CREATE TABLE EventsTable (
  id VARCHAR(255) PRIMARY KEY DEFAULT uuid_generate_v4(),
  user_id INT REFERENCES users(id),
  organisation_id INT REFERENCES organisations(id),
  event_name VARCHAR(255),
  event_description TEXT,
  event_location VARCHAR(255),
  event_expiry DATE,
  event_time TIME,
  event_date DATE,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

API Endpoint

POST /api/v1/:orgId/create_event

Request Body

{
  "event_name": "Event Name",
  "event_description": "Event Description",
  "event_location": "Event Location",
  "event_expiry": "2021-12-31",
  "event_time": "12:00:00",
  "event_date": "2021-12-31"
}

Response Body

{
  "status": "success",
  "message": "Event created successfully",
  "data": {
    "id": "uuid",
    "user_id": 1,
    "organisation_id": 1,
    "event_name": "Event Name",
    "event_description": "Event Description",
    "event_location": "Event Location",
    "event_expiry": "2021-12-31",
    "event_time": "12:00:00",
    "event_date": "2021-12-31",
    "created_at": "2021-12-31T12:00:00",
    "updated_at": "2021-12-31T12:00:00"
  }
}

Error Response

{
  "status": "error",
  "status_code": 404,
  "message": "Organization not found or has been deactivated"
}
{
  "status": "error",
  "status_code": 400,
  "message": "Invalid request data"
}
{
  "status": "error",
  "status_code": 401,
  "message": "User is not authenticated or designated to create an event"
}

Expected Outcome

Designated users for an organization should be able to create event(s) for their organization members.

Tasks

Testing

markessien commented 1 month ago

We do not have events in this app