sef-global / scholarx-backend

This is the backend of the ScholarX
MIT License
10 stars 38 forks source link

Implement Set mentor availability endpoint (Admin) #28

Closed janithlahirukariyawasam closed 11 months ago

janithlahirukariyawasam commented 1 year ago

Description: This issue involves implementing an API to get all mentors. The endpoint should allow Admin to make a PUT request to /api/admin/mentor/{{mentorId}}/availability.

Example mark mentor as available

{
    "mentor_id": 1,
    "created_at": "2023-06-30T10:00:00Z",
    "updated_at": "2023-06-30T14:30:00Z",
    "state": "APPROVED",
    "category": "Technology",
    "application": {
        "country": "",
        "areasOfExpertise": "",
        "expectationsFromMentees": "",
        "mentoringPhilosophy": "",
        "commitmentToProgram": false,
        "previousExperienceAsMentor": false,
        "reasonForBeingMentor": "",
        "cvLink": ""
    },
    "availability": true,
    "profile": {
        "created_at": "2023-06-29T09:15:00Z",
        "updated_at": "2023-06-30T16:45:00Z",
        "primary_email": "mentor@example.com",
        "contact_email": "mentor_contact@example.com",
        "first_name": "John",
        "last_name": "Doe",
        "image_url": "https://example.com/mentor_profile_image.jpg",
        "linkedin_url": "https://www.linkedin.com/in/johndoe",
        "type": "DEFAULT",
        "uuid": "12345678-1234-5678-1234-567812345678"
    }
}

Example mark mentor as not available

{
    "mentor_id": 1,
    "created_at": "2023-06-30T10:00:00Z",
    "updated_at": "2023-06-30T14:30:00Z",
    "state": "APPROVED",
    "category": "Technology",
    "application": {
        "country": "",
        "areasOfExpertise": "",
        "expectationsFromMentees": "",
        "mentoringPhilosophy": "",
        "commitmentToProgram": false,
        "previousExperienceAsMentor": false,
        "reasonForBeingMentor": "",
        "cvLink": ""
    },
    "availability": false,
    "profile": {
        "created_at": "2023-06-29T09:15:00Z",
        "updated_at": "2023-06-30T16:45:00Z",
        "primary_email": "mentor@example.com",
        "contact_email": "mentor_contact@example.com",
        "first_name": "John",
        "last_name": "Doe",
        "image_url": "https://example.com/mentor_profile_image.jpg",
        "linkedin_url": "https://www.linkedin.com/in/johndoe",
        "type": "DEFAULT",
        "uuid": "12345678-1234-5678-1234-567812345678"
    }
}

Tasks:

  1. Create a controller for the /controllers/mentor endpoint in the backend (create the route mentor if not created).
  2. Parse and validate the request body to ensure it matches the expected format.
  3. Implement appropriate error handling and response status codes for different scenarios (e.g., validation errors, database errors).
  4. Write unit tests to validate the functionality and correctness of the endpoint.

API documentation: https://documenter.getpostman.com/view/27421496/2s93m1a4ac#8744a3ee-970f-489a-853d-8b23fdee8de3

ER diagram: https://drive.google.com/file/d/11KMgdNu2mSAm0Ner8UsSPQpZJS8QNqYc/view

Acceptance Criteria:

Additional Information: No

Related Dependencies or References: No

sathudeva7 commented 11 months ago

@anjula-sack I'd like to work on this issue