From 2196965b20a013ea389cd78020545326bc3418f4 Mon Sep 17 00:00:00 2001 From: Nikhil Jadav Date: Thu, 8 Jan 2026 18:56:24 +1100 Subject: [PATCH 01/15] contact us schemas and apis added --- backend-api/app/Contact-ER-Diagram.jpg | Bin 0 -> 172441 bytes backend-api/app/api/v1/contact.py | 254 ++++++++++++++++ backend-api/app/api/v1/router.py | 5 +- .../app/contactus api flow AutoAudit.jpg | Bin 0 -> 41983 bytes backend-api/app/main.py | 7 + backend-api/app/models/__init__.py | 4 + backend-api/app/models/contact.py | 108 +++++++ backend-api/app/models/user.py | 10 + backend-api/app/schemas/contact.py | 73 +++++ frontend/package-lock.json | 22 -- frontend/src/App.js | 33 +++ frontend/src/api/client.js | 52 ++++ frontend/src/pages/Admin/ContactAdminPage.css | 261 +++++++++++++++++ frontend/src/pages/Admin/ContactAdminPage.js | 277 ++++++++++++++++++ frontend/src/pages/Contact/ContactPage.css | 10 + frontend/src/pages/Contact/ContactPage.js | 17 +- .../pages/Contact/components/ContactForm.js | 23 +- 17 files changed, 1126 insertions(+), 30 deletions(-) create mode 100644 backend-api/app/Contact-ER-Diagram.jpg create mode 100644 backend-api/app/api/v1/contact.py create mode 100644 backend-api/app/contactus api flow AutoAudit.jpg create mode 100644 backend-api/app/models/contact.py create mode 100644 backend-api/app/schemas/contact.py create mode 100644 frontend/src/pages/Admin/ContactAdminPage.css create mode 100644 frontend/src/pages/Admin/ContactAdminPage.js diff --git a/backend-api/app/Contact-ER-Diagram.jpg b/backend-api/app/Contact-ER-Diagram.jpg new file mode 100644 index 0000000000000000000000000000000000000000..908e195dbfdc69ade0fb62d8ede6eb80666f5810 GIT binary patch literal 172441 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

$3lxX; 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 SubmissionHistory: + return SubmissionHistory( + submission_id=submission_id, + admin_user_id=admin_user_id, + action=action, + field_name=field_name, + old_value=old_value, + new_value=new_value, + ) + + +@router.post("/", response_model=ContactSubmissionRead, status_code=status.HTTP_201_CREATED) +async def create_contact_submission( + payload: ContactSubmissionCreate, + request: Request, + db: AsyncSession = Depends(get_async_session), +) -> ContactSubmission: + """Create a new Contact Us submission (public).""" + submission = ContactSubmission( + first_name=payload.first_name, + last_name=payload.last_name, + email=payload.email, + phone=payload.phone, + company=payload.company, + subject=payload.subject, + message=payload.message, + source=payload.source, + ip_address=request.client.host if request.client else None, + ) + db.add(submission) + await db.flush() + db.add( + _build_history_entry( + submission_id=submission.id, + admin_user_id=None, + action="create", + field_name=None, + old_value=None, + new_value=None, + ) + ) + await db.commit() + await db.refresh(submission) + return submission + + +@router.get("/submissions", response_model=list[ContactSubmissionRead]) +async def list_submissions( + _: User = Depends(require_admin), + db: AsyncSession = Depends(get_async_session), +) -> list[ContactSubmission]: + """List all contact submissions (admin only).""" + result = await db.execute( + select(ContactSubmission).order_by(ContactSubmission.created_at.desc()) + ) + return list(result.scalars().all()) + + +@router.get("/submissions/{submission_id}", response_model=ContactSubmissionRead) +async def get_submission( + submission_id: UUID, + _: User = Depends(require_admin), + db: AsyncSession = Depends(get_async_session), +) -> ContactSubmission: + """Get a single submission (admin only).""" + result = await db.execute( + select(ContactSubmission).where(ContactSubmission.id == submission_id) + ) + submission = result.scalar_one_or_none() + if not submission: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Submission not found") + return submission + + +@router.patch("/submissions/{submission_id}", response_model=ContactSubmissionRead) +async def update_submission( + submission_id: UUID, + payload: ContactSubmissionUpdate, + admin_user: User = Depends(require_admin), + db: AsyncSession = Depends(get_async_session), +) -> ContactSubmission: + """Update a submission (admin only).""" + result = await db.execute( + select(ContactSubmission).where(ContactSubmission.id == submission_id) + ) + submission = result.scalar_one_or_none() + if not submission: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Submission not found") + + history_entries: list[SubmissionHistory] = [] + + def track_change(field: str, old: str | None, new: str | None) -> None: + if old != new: + history_entries.append( + _build_history_entry( + submission_id=submission.id, + admin_user_id=admin_user.id, + action="update", + field_name=field, + old_value=old, + new_value=new, + ) + ) + + if "status" in payload.__fields_set__: + track_change("status", submission.status, payload.status) + submission.status = payload.status + if payload.status and payload.status.lower() == "resolved" and payload.resolved_at is None: + submission.resolved_at = datetime.utcnow() + + if "priority" in payload.__fields_set__: + track_change("priority", submission.priority, payload.priority) + submission.priority = payload.priority + + if "assigned_to" in payload.__fields_set__: + track_change( + "assigned_to", + str(submission.assigned_to) if submission.assigned_to is not None else None, + str(payload.assigned_to) if payload.assigned_to is not None else None, + ) + submission.assigned_to = payload.assigned_to + + if "resolved_at" in payload.__fields_set__: + track_change( + "resolved_at", + submission.resolved_at.isoformat() if submission.resolved_at else None, + payload.resolved_at.isoformat() if payload.resolved_at else None, + ) + submission.resolved_at = payload.resolved_at + + for entry in history_entries: + db.add(entry) + + await db.commit() + await db.refresh(submission) + return submission + + +@router.delete("/submissions/{submission_id}", status_code=status.HTTP_204_NO_CONTENT) +async def delete_submission( + submission_id: UUID, + _: User = Depends(require_admin), + db: AsyncSession = Depends(get_async_session), +) -> None: + """Delete a submission (admin only).""" + result = await db.execute( + select(ContactSubmission).where(ContactSubmission.id == submission_id) + ) + submission = result.scalar_one_or_none() + if not submission: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Submission not found") + + await db.delete(submission) + await db.commit() + + +@router.get("/submissions/{submission_id}/notes", response_model=list[SubmissionNoteRead]) +async def list_notes( + submission_id: UUID, + _: User = Depends(require_admin), + db: AsyncSession = Depends(get_async_session), +) -> list[SubmissionNote]: + result = await db.execute( + select(SubmissionNote) + .where(SubmissionNote.submission_id == submission_id) + .order_by(SubmissionNote.created_at.desc()) + ) + return list(result.scalars().all()) + + +@router.post( + "/submissions/{submission_id}/notes", + response_model=SubmissionNoteRead, + status_code=status.HTTP_201_CREATED, +) +async def add_note( + submission_id: UUID, + payload: SubmissionNoteCreate, + admin_user: User = Depends(require_admin), + db: AsyncSession = Depends(get_async_session), +) -> SubmissionNote: + result = await db.execute( + select(ContactSubmission).where(ContactSubmission.id == submission_id) + ) + submission = result.scalar_one_or_none() + if not submission: + raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="Submission not found") + + note = SubmissionNote( + submission_id=submission_id, + admin_user_id=admin_user.id, + note=payload.note, + is_internal=payload.is_internal, + ) + db.add(note) + db.add( + _build_history_entry( + submission_id=submission_id, + admin_user_id=admin_user.id, + action="note", + field_name="note", + old_value=None, + new_value=payload.note, + ) + ) + await db.commit() + await db.refresh(note) + return note + + +@router.get("/submissions/{submission_id}/history", response_model=list[SubmissionHistoryRead]) +async def list_history( + submission_id: UUID, + _: User = Depends(require_admin), + db: AsyncSession = Depends(get_async_session), +) -> list[SubmissionHistory]: + result = await db.execute( + select(SubmissionHistory) + .where(SubmissionHistory.submission_id == submission_id) + .order_by(SubmissionHistory.created_at.desc()) + ) + return list(result.scalars().all()) diff --git a/backend-api/app/api/v1/router.py b/backend-api/app/api/v1/router.py index c59a8758..0a06f296 100644 --- a/backend-api/app/api/v1/router.py +++ b/backend-api/app/api/v1/router.py @@ -1,5 +1,5 @@ from fastapi import APIRouter -from app.api.v1 import auth, test, evidence, m365_connections, scans, benchmarks, platforms +from app.api.v1 import auth, test, evidence, m365_connections, scans, benchmarks, platforms, contact api_router = APIRouter() @@ -23,3 +23,6 @@ # Evidence routes api_router.include_router(evidence.router) + +# Contact routes +api_router.include_router(contact.router) diff --git a/backend-api/app/contactus api flow AutoAudit.jpg b/backend-api/app/contactus api flow AutoAudit.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6ca9e293639e2c4dba6b145d896903e1fff8e434 GIT binary patch literal 41983 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 Zv>cs8s8Ayme)H2$|5*b6|Fu3(`~x@8(7*ry literal 0 HcmV?d00001 diff --git a/backend-api/app/main.py b/backend-api/app/main.py index 1c8710a9..a8f8648c 100644 --- a/backend-api/app/main.py +++ b/backend-api/app/main.py @@ -5,6 +5,8 @@ from app.core.config import get_settings from app.core.middleware import RequestLoggingMiddleware from app.core.errors import not_found_handler, NotFound +from app.db.base import Base, engine +import app.models # noqa: F401 settings = get_settings() @@ -31,6 +33,11 @@ def create_app() -> FastAPI: # error handler app.add_exception_handler(NotFound, not_found_handler) + @app.on_event("startup") + async def init_contact_schema() -> None: + async with engine.begin() as conn: + await conn.run_sync(Base.metadata.create_all) + @app.get("/") def root(): return {"status": "ok", "message": "AutoAudit API running"} diff --git a/backend-api/app/models/__init__.py b/backend-api/app/models/__init__.py index 511dbc00..9c641935 100644 --- a/backend-api/app/models/__init__.py +++ b/backend-api/app/models/__init__.py @@ -9,6 +9,7 @@ from app.models.scan_result import ScanResult from app.models.compliance import Scan from app.models.evidence_validation import EvidenceValidation +from app.models.contact import ContactSubmission, SubmissionNote, SubmissionHistory __all__ = [ "User", @@ -21,4 +22,7 @@ "ScanResult", "Scan", "EvidenceValidation", + "ContactSubmission", + "SubmissionNote", + "SubmissionHistory", ] diff --git a/backend-api/app/models/contact.py b/backend-api/app/models/contact.py new file mode 100644 index 00000000..42abb963 --- /dev/null +++ b/backend-api/app/models/contact.py @@ -0,0 +1,108 @@ +"""Models for Contact Us submissions and related notes/history.""" + +from __future__ import annotations + +from datetime import datetime +from typing import TYPE_CHECKING +from uuid import UUID, uuid4 + +from sqlalchemy import Boolean, DateTime, ForeignKey, String, Text, text +from sqlalchemy.dialects.postgresql import INET, UUID as PG_UUID +from sqlalchemy.orm import Mapped, mapped_column, relationship +from sqlalchemy.sql import func + +from app.db.base import Base + +if TYPE_CHECKING: + from app.models.user import User + + +class ContactSubmission(Base): + __tablename__ = "contact_submissions" + + id: Mapped[UUID] = mapped_column(PG_UUID(as_uuid=True), primary_key=True, default=uuid4) + first_name: Mapped[str] = mapped_column(String(100), nullable=False) + last_name: Mapped[str] = mapped_column(String(100), nullable=False) + email: Mapped[str] = mapped_column(String(255), nullable=False) + phone: Mapped[str | None] = mapped_column(String(20)) + company: Mapped[str | None] = mapped_column(String(255)) + subject: Mapped[str] = mapped_column(String(50), nullable=False) + message: Mapped[str] = mapped_column(Text, nullable=False) + status: Mapped[str] = mapped_column( + String(20), + server_default=text("'new'"), + nullable=False, + ) + priority: Mapped[str] = mapped_column( + String(20), + server_default=text("'medium'"), + nullable=False, + ) + assigned_to: Mapped[int | None] = mapped_column(ForeignKey("user.id")) + source: Mapped[str | None] = mapped_column(String(50)) + ip_address: Mapped[str | None] = mapped_column(INET) + + created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now()) + updated_at: Mapped[datetime] = mapped_column( + DateTime, server_default=func.now(), onupdate=func.now() + ) + resolved_at: Mapped[datetime | None] = mapped_column(DateTime) + + assigned_user: Mapped["User | None"] = relationship( + back_populates="assigned_submissions" + ) + notes: Mapped[list["SubmissionNote"]] = relationship( + back_populates="submission", + cascade="all, delete-orphan", + passive_deletes=True, + ) + history: Mapped[list["SubmissionHistory"]] = relationship( + back_populates="submission", + cascade="all, delete-orphan", + passive_deletes=True, + ) + + +class SubmissionNote(Base): + __tablename__ = "submission_notes" + + id: Mapped[UUID] = mapped_column(PG_UUID(as_uuid=True), primary_key=True, default=uuid4) + submission_id: Mapped[UUID] = mapped_column( + PG_UUID(as_uuid=True), + ForeignKey("contact_submissions.id", ondelete="CASCADE"), + nullable=False, + ) + admin_user_id: Mapped[int | None] = mapped_column(ForeignKey("user.id")) + note: Mapped[str] = mapped_column(Text, nullable=False) + is_internal: Mapped[bool] = mapped_column( + Boolean, + server_default=text("true"), + nullable=False, + ) + created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now()) + updated_at: Mapped[datetime] = mapped_column( + DateTime, server_default=func.now(), onupdate=func.now() + ) + + submission: Mapped["ContactSubmission"] = relationship(back_populates="notes") + admin_user: Mapped["User | None"] = relationship(back_populates="submission_notes") + + +class SubmissionHistory(Base): + __tablename__ = "submission_history" + + id: Mapped[UUID] = mapped_column(PG_UUID(as_uuid=True), primary_key=True, default=uuid4) + submission_id: Mapped[UUID] = mapped_column( + PG_UUID(as_uuid=True), + ForeignKey("contact_submissions.id", ondelete="CASCADE"), + nullable=False, + ) + admin_user_id: Mapped[int | None] = mapped_column(ForeignKey("user.id")) + action: Mapped[str] = mapped_column(String(50), nullable=False) + field_name: Mapped[str | None] = mapped_column(String(100)) + old_value: Mapped[str | None] = mapped_column(Text) + new_value: Mapped[str | None] = mapped_column(Text) + created_at: Mapped[datetime] = mapped_column(DateTime, server_default=func.now()) + + submission: Mapped["ContactSubmission"] = relationship(back_populates="history") + admin_user: Mapped["User | None"] = relationship(back_populates="submission_history") diff --git a/backend-api/app/models/user.py b/backend-api/app/models/user.py index 0bdc4cba..37b8b7d2 100644 --- a/backend-api/app/models/user.py +++ b/backend-api/app/models/user.py @@ -11,6 +11,7 @@ from app.models.compliance import Scan from app.models.evidence_validation import EvidenceValidation from app.models.m365_connection import M365Connection + from app.models.contact import ContactSubmission, SubmissionHistory, SubmissionNote class Role(str, Enum): @@ -49,3 +50,12 @@ class User(SQLAlchemyBaseUserTable[int], Base): evidence_validations: Mapped[list["EvidenceValidation"]] = relationship( back_populates="user" ) + assigned_submissions: Mapped[list["ContactSubmission"]] = relationship( + back_populates="assigned_user" + ) + submission_notes: Mapped[list["SubmissionNote"]] = relationship( + back_populates="admin_user" + ) + submission_history: Mapped[list["SubmissionHistory"]] = relationship( + back_populates="admin_user" + ) diff --git a/backend-api/app/schemas/contact.py b/backend-api/app/schemas/contact.py new file mode 100644 index 00000000..8bc0da49 --- /dev/null +++ b/backend-api/app/schemas/contact.py @@ -0,0 +1,73 @@ +"""Pydantic schemas for Contact Us submissions.""" + +from datetime import datetime +from uuid import UUID + +from pydantic import BaseModel, EmailStr, Field + + +class ContactSubmissionBase(BaseModel): + first_name: str = Field(..., min_length=1, max_length=100) + last_name: str = Field(..., min_length=1, max_length=100) + email: EmailStr + phone: str | None = Field(None, max_length=20) + company: str | None = Field(None, max_length=255) + subject: str = Field(..., min_length=1, max_length=50) + message: str = Field(..., min_length=1) + source: str | None = Field(None, max_length=50) + + +class ContactSubmissionCreate(ContactSubmissionBase): + pass + + +class ContactSubmissionUpdate(BaseModel): + status: str | None = Field(None, max_length=20) + priority: str | None = Field(None, max_length=20) + assigned_to: int | None = None + resolved_at: datetime | None = None + + +class ContactSubmissionRead(ContactSubmissionBase): + id: UUID + status: str + priority: str + assigned_to: int | None + created_at: datetime + updated_at: datetime + resolved_at: datetime | None + + class Config: + from_attributes = True + + +class SubmissionNoteCreate(BaseModel): + note: str = Field(..., min_length=1) + is_internal: bool = True + + +class SubmissionNoteRead(BaseModel): + id: UUID + submission_id: UUID + admin_user_id: int | None + note: str + is_internal: bool + created_at: datetime + updated_at: datetime + + class Config: + from_attributes = True + + +class SubmissionHistoryRead(BaseModel): + id: UUID + submission_id: UUID + admin_user_id: int | None + action: str + field_name: str | None + old_value: str | None + new_value: str | None + created_at: datetime + + class Config: + from_attributes = True diff --git a/frontend/package-lock.json b/frontend/package-lock.json index 666a7b0d..411ec4c1 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -86,7 +86,6 @@ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.3.tgz", "integrity": "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==", "license": "MIT", - "peer": true, "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", @@ -736,7 +735,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.27.1.tgz", "integrity": "sha512-p9OkPbZ5G7UT1MofwYFigGebnrzGJacoBSQM0/6bi/PUMVE+qlWDD/OalvQKbwgQzU6dl0xAv6r4X7Jme0RYxA==", "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.27.1" }, @@ -1620,7 +1618,6 @@ "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.27.1.tgz", "integrity": "sha512-2KH4LWGSrJIkVf5tSiBFYuXDAoWRq2MMwgivCf+93dd0GQi8RXLjKA/0EvRnVV5G0hrHczsquXuD01L8s6dmBw==", "license": "MIT", - "peer": true, "dependencies": { "@babel/helper-annotate-as-pure": "^7.27.1", "@babel/helper-module-imports": "^7.27.1", @@ -3455,7 +3452,6 @@ "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.4.1.tgz", "integrity": "sha512-o4PXJQidqJl82ckFaXUeoAW+XysPLauYI43Abki5hABd853iMhitooc6znOnczgbTYmEP6U6/y1ZyKAIsvMKGg==", "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -3933,7 +3929,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/regexpp": "^4.4.0", "@typescript-eslint/scope-manager": "5.62.0", @@ -3987,7 +3982,6 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "license": "BSD-2-Clause", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -4357,7 +4351,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -4456,7 +4449,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -5358,7 +5350,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "caniuse-lite": "^1.0.30001737", "electron-to-chromium": "^1.5.211", @@ -7209,7 +7200,6 @@ "integrity": "sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==", "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", @@ -9976,7 +9966,6 @@ "resolved": "https://registry.npmjs.org/jest/-/jest-27.5.1.tgz", "integrity": "sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==", "license": "MIT", - "peer": true, "dependencies": { "@jest/core": "^27.5.1", "import-local": "^3.0.2", @@ -12262,7 +12251,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.11", "picocolors": "^1.1.1", @@ -13450,7 +13438,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -13810,7 +13797,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz", "integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -13942,7 +13928,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz", "integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -13967,7 +13952,6 @@ "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.11.0.tgz", "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -14473,7 +14457,6 @@ "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.2.tgz", "integrity": "sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==", "license": "MIT", - "peer": true, "bin": { "rollup": "dist/bin/rollup" }, @@ -14716,7 +14699,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", @@ -16354,7 +16336,6 @@ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", "license": "(MIT OR CC0-1.0)", - "peer": true, "engines": { "node": ">=10" }, @@ -16784,7 +16765,6 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.101.3.tgz", "integrity": "sha512-7b0dTKR3Ed//AD/6kkx/o7duS8H3f1a4w3BYpIriX4BzIhjkn4teo05cptsxvLesHFKK5KObnadmCHBwGc+51A==", "license": "MIT", - "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.7", "@types/estree": "^1.0.8", @@ -16856,7 +16836,6 @@ "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.15.2.tgz", "integrity": "sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==", "license": "MIT", - "peer": true, "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -17269,7 +17248,6 @@ "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "license": "MIT", - "peer": true, "dependencies": { "fast-deep-equal": "^3.1.3", "fast-uri": "^3.0.1", diff --git a/frontend/src/App.js b/frontend/src/App.js index bd250249..db3d989b 100644 --- a/frontend/src/App.js +++ b/frontend/src/App.js @@ -18,6 +18,7 @@ import AboutUs from './pages/Landing/AboutUs'; import ContactPage from './pages/Contact/ContactPage'; import LoginPage from './pages/Auth/LoginPage'; import SignUpPage from './pages/Auth/SignUpPage'; +import ContactAdminPage from './pages/Admin/ContactAdminPage'; // Auth Context import { useAuth } from './context/AuthContext'; @@ -44,6 +45,29 @@ const ProtectedRoute = ({ children }) => { return isAuthenticated ? children : null; }; +// Admin-only Route Component +const AdminRoute = ({ children }) => { + const navigate = useNavigate(); + const { isAuthenticated, isLoading, user } = useAuth(); + + useEffect(() => { + if (isLoading) return; + if (!isAuthenticated) { + navigate('/login'); + return; + } + if (user?.role !== 'admin') { + navigate('/dashboard'); + } + }, [isAuthenticated, isLoading, navigate, user]); + + if (isLoading) { + return
Loading...
; + } + + return isAuthenticated && user?.role === 'admin' ? children : null; +}; + // Dashboard Layout Component (with sidebar) const DashboardLayout = ({ children, sidebarWidth, isDarkMode, onThemeToggle, onSidebarWidthChange }) => { return ( @@ -174,6 +198,15 @@ function App() { } /> + + + + } + /> + {/* Protected Dashboard Routes */} ({ detail: response.statusText })); + throw new APIError(error.detail || 'Failed to delete submission', response.status, error); + } +} + +export async function getContactNotes(token, id) { + return fetchWithAuth(`/v1/contact/submissions/${id}/notes`, token); +} + +export async function addContactNote(token, id, payload) { + return fetchWithAuth(`/v1/contact/submissions/${id}/notes`, token, { + method: 'POST', + body: JSON.stringify(payload), + }); +} + +export async function getContactHistory(token, id) { + return fetchWithAuth(`/v1/contact/submissions/${id}/history`, token); +} + // Platform endpoints export async function getPlatforms(token) { return fetchWithAuth('/v1/platforms', token); diff --git a/frontend/src/pages/Admin/ContactAdminPage.css b/frontend/src/pages/Admin/ContactAdminPage.css new file mode 100644 index 00000000..a671f80d --- /dev/null +++ b/frontend/src/pages/Admin/ContactAdminPage.css @@ -0,0 +1,261 @@ +.contact-admin { + min-height: 100vh; + padding: 2rem 5%; + background: #0a1628; + color: #ffffff; +} + +.contact-admin__header { + display: flex; + justify-content: space-between; + align-items: center; + margin-bottom: 1.5rem; +} + +.contact-admin__header h1 { + margin: 0 0 0.25rem; +} + +.contact-admin__header p { + margin: 0; + color: #b0c4de; +} + +.contact-admin__refresh { + background: rgba(64, 224, 208, 0.15); + border: 1px solid rgba(64, 224, 208, 0.4); + color: #40e0d0; + padding: 0.6rem 1rem; + border-radius: 10px; + cursor: pointer; +} + +.contact-admin__error, +.contact-admin__message { + padding: 0.75rem 1rem; + border-radius: 12px; + margin-bottom: 1rem; +} + +.contact-admin__error { + background: rgba(239, 68, 68, 0.15); + border: 1px solid rgba(239, 68, 68, 0.4); + color: #fecaca; +} + +.contact-admin__message { + background: rgba(34, 197, 94, 0.15); + border: 1px solid rgba(34, 197, 94, 0.4); + color: #bbf7d0; +} + +.contact-admin__layout { + display: grid; + grid-template-columns: 320px 1fr; + gap: 1.5rem; +} + +.contact-admin__list { + background: #0f1f38; + border-radius: 16px; + padding: 1rem; + border: 1px solid rgba(64, 224, 208, 0.15); + max-height: 70vh; + overflow-y: auto; +} + +.contact-admin__list ul { + list-style: none; + padding: 0; + margin: 0; + display: flex; + flex-direction: column; + gap: 0.75rem; +} + +.contact-admin__list li { + padding: 0.75rem; + border-radius: 12px; + background: rgba(255, 255, 255, 0.04); + cursor: pointer; + display: flex; + justify-content: space-between; + align-items: center; + gap: 0.75rem; + border: 1px solid transparent; +} + +.contact-admin__list li.active { + border-color: #40e0d0; + background: rgba(64, 224, 208, 0.12); +} + +.contact-admin__list h4 { + margin: 0; + font-size: 0.95rem; +} + +.contact-admin__list p { + margin: 0.2rem 0 0; + font-size: 0.8rem; + color: #b0c4de; +} + +.contact-admin__detail { + background: #0f1f38; + border-radius: 16px; + padding: 1.5rem; + border: 1px solid rgba(64, 224, 208, 0.15); +} + +.contact-admin__card-header { + display: flex; + justify-content: space-between; + align-items: center; + gap: 1rem; +} + +.contact-admin__meta { + margin: 0.5rem 0 1rem; + color: #b0c4de; +} + +.contact-admin__message-body { + background: rgba(255, 255, 255, 0.04); + padding: 1rem; + border-radius: 12px; + margin-bottom: 1.5rem; +} + +.contact-admin__controls { + display: grid; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 1rem; + margin-bottom: 1.5rem; +} + +.contact-admin__controls label { + display: flex; + flex-direction: column; + gap: 0.5rem; + font-size: 0.85rem; + color: #b0c4de; +} + +.contact-admin__controls select { + background: rgba(255, 255, 255, 0.06); + border: 1px solid rgba(64, 224, 208, 0.3); + border-radius: 10px; + padding: 0.5rem 0.75rem; + color: #fff; +} + +.contact-admin__assign, +.contact-admin__delete { + border: none; + border-radius: 10px; + padding: 0.6rem 1rem; + cursor: pointer; +} + +.contact-admin__assign { + background: rgba(64, 224, 208, 0.2); + color: #40e0d0; +} + +.contact-admin__delete { + background: rgba(239, 68, 68, 0.2); + color: #fecaca; +} + +.contact-admin__notes, +.contact-admin__history { + margin-top: 1.5rem; +} + +.contact-admin__note-form textarea { + width: 100%; + min-height: 80px; + padding: 0.75rem; + border-radius: 12px; + border: 1px solid rgba(64, 224, 208, 0.3); + background: rgba(255, 255, 255, 0.05); + color: #fff; +} + +.contact-admin__note-actions { + margin-top: 0.5rem; + display: flex; + justify-content: space-between; + align-items: center; + color: #b0c4de; +} + +.contact-admin__note-actions button { + background: #40e0d0; + border: none; + border-radius: 8px; + padding: 0.4rem 0.9rem; + cursor: pointer; +} + +.contact-admin__notes ul, +.contact-admin__history ul { + list-style: none; + padding: 0; + margin: 1rem 0 0; + display: grid; + gap: 0.75rem; +} + +.contact-admin__notes li, +.contact-admin__history li { + background: rgba(255, 255, 255, 0.04); + padding: 0.75rem; + border-radius: 10px; + color: #b0c4de; +} + +.contact-admin__notes li span, +.contact-admin__history li span { + display: block; + margin-top: 0.4rem; + font-size: 0.75rem; + color: #7aa3c2; +} + +.contact-admin__empty { + text-align: center; + padding: 4rem 1rem; + color: #b0c4de; +} + +.badge { + padding: 0.25rem 0.6rem; + border-radius: 999px; + font-size: 0.75rem; + text-transform: capitalize; + background: rgba(255, 255, 255, 0.1); +} + +.badge--new { + background: rgba(59, 130, 246, 0.2); + color: #bfdbfe; +} + +.badge--in_progress { + background: rgba(234, 179, 8, 0.2); + color: #fde68a; +} + +.badge--resolved, +.badge--closed { + background: rgba(34, 197, 94, 0.2); + color: #bbf7d0; +} + +@media (max-width: 1024px) { + .contact-admin__layout { + grid-template-columns: 1fr; + } +} diff --git a/frontend/src/pages/Admin/ContactAdminPage.js b/frontend/src/pages/Admin/ContactAdminPage.js new file mode 100644 index 00000000..4704f178 --- /dev/null +++ b/frontend/src/pages/Admin/ContactAdminPage.js @@ -0,0 +1,277 @@ +import React, { useEffect, useMemo, useState } from "react"; +import "./ContactAdminPage.css"; +import { useAuth } from "../../context/AuthContext"; +import { + addContactNote, + deleteContactSubmission, + getContactHistory, + getContactNotes, + getContactSubmissions, + updateContactSubmission, +} from "../../api/client"; + +const statusOptions = ["new", "in_progress", "resolved", "closed"]; +const priorityOptions = ["low", "medium", "high", "urgent"]; + +const ContactAdminPage = () => { + const { token, user } = useAuth(); + const [submissions, setSubmissions] = useState([]); + const [selectedId, setSelectedId] = useState(null); + const [notes, setNotes] = useState([]); + const [history, setHistory] = useState([]); + const [noteText, setNoteText] = useState(""); + const [isInternal, setIsInternal] = useState(true); + const [isLoading, setIsLoading] = useState(true); + const [error, setError] = useState(""); + const [actionMessage, setActionMessage] = useState(""); + + const selectedSubmission = useMemo( + () => submissions.find((item) => item.id === selectedId) || null, + [submissions, selectedId] + ); + + const loadSubmissions = async () => { + setError(""); + setIsLoading(true); + try { + const data = await getContactSubmissions(token); + setSubmissions(data); + if (data.length && !selectedId) { + setSelectedId(data[0].id); + } + } catch (err) { + setError(err?.message || "Unable to load submissions."); + } finally { + setIsLoading(false); + } + }; + + useEffect(() => { + loadSubmissions(); + }, []); + + useEffect(() => { + if (!selectedId) return; + + const loadDetail = async () => { + try { + const [noteData, historyData] = await Promise.all([ + getContactNotes(token, selectedId), + getContactHistory(token, selectedId), + ]); + setNotes(noteData); + setHistory(historyData); + } catch (err) { + setError(err?.message || "Unable to load submission details."); + } + }; + + loadDetail(); + }, [selectedId, token]); + + const handleUpdate = async (updates) => { + if (!selectedSubmission) return; + setActionMessage(""); + try { + const updated = await updateContactSubmission(token, selectedSubmission.id, updates); + setSubmissions((prev) => + prev.map((item) => (item.id === updated.id ? updated : item)) + ); + setActionMessage("Submission updated."); + } catch (err) { + setError(err?.message || "Unable to update submission."); + } + }; + + const handleAddNote = async () => { + if (!noteText.trim() || !selectedSubmission) return; + setActionMessage(""); + try { + const newNote = await addContactNote(token, selectedSubmission.id, { + note: noteText.trim(), + is_internal: isInternal, + }); + setNotes((prev) => [newNote, ...prev]); + setNoteText(""); + setActionMessage("Note added."); + } catch (err) { + setError(err?.message || "Unable to add note."); + } + }; + + const handleDelete = async () => { + if (!selectedSubmission) return; + setActionMessage(""); + try { + await deleteContactSubmission(token, selectedSubmission.id); + setSubmissions((prev) => prev.filter((item) => item.id !== selectedSubmission.id)); + setSelectedId(null); + setNotes([]); + setHistory([]); + setActionMessage("Submission deleted."); + } catch (err) { + setError(err?.message || "Unable to delete submission."); + } + }; + + if (user?.role !== "admin") { + return ( +
+
+

Admin access required

+

You do not have permission to view this page.

+
+
+ ); + } + + return ( +
+
+
+

Contact Submissions

+

Review and manage incoming Contact Us requests.

+
+ +
+ + {error &&
{error}
} + {actionMessage &&
{actionMessage}
} + +
+
+ {isLoading ? ( +

Loading submissions...

+ ) : submissions.length ? ( +
    + {submissions.map((submission) => ( +
  • setSelectedId(submission.id)} + > +
    +

    + {submission.first_name} {submission.last_name} +

    +

    {submission.subject}

    +
    + {submission.status} +
  • + ))} +
+ ) : ( +

No submissions yet.

+ )} +
+ +
+ {selectedSubmission ? ( +
+
+

{selectedSubmission.subject}

+ + {selectedSubmission.status} + +
+

+ {selectedSubmission.email} ยท {selectedSubmission.phone || "No phone"} +

+

{selectedSubmission.message}

+ +
+ + + + +
+ +
+

Notes

+
+ +
+
+ + +
+ +
+
+ + +
+
+

Follow-up scheduled

+

Demo call scheduled for next Tuesday at 2 PM EST

+

1/23/2026, 6:27:52 AM

+
+ +
+

Initial contact

+

Customer seems very interested in compliance features

+

1/22/2026, 6:48:38 AM

+
+
+ + +
+

History

+ +
+ Note +

Added note: "Follow-up scheduled"

+

1/23/2026, 6:27:52 AM

+
+ +
+ Update +

Status changed to: In Progress

+

1/22/2026, 6:48:41 AM

+
+ +
+ Note +

Added note: "Initial contact"

+

1/22/2026, 6:48:38 AM

+
+ +
+ Create +

Submission created

+

1/22/2026, 6:48:07 AM

+
+
+
+
+
+ + + + \ No newline at end of file diff --git a/frontend/src/pages/Admin/ContactAdminPage.css b/frontend/src/pages/Admin/ContactAdminPage.css index a671f80d..a68c4b2f 100644 --- a/frontend/src/pages/Admin/ContactAdminPage.css +++ b/frontend/src/pages/Admin/ContactAdminPage.css @@ -1,33 +1,49 @@ .contact-admin { min-height: 100vh; - padding: 2rem 5%; background: #0a1628; color: #ffffff; + font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; + overflow-x: hidden; } -.contact-admin__header { +.contact-admin__container { + max-width: 1600px; + margin: 0 auto; + padding: 2rem 3%; +} + +.contact-admin__page-header { display: flex; justify-content: space-between; - align-items: center; - margin-bottom: 1.5rem; + align-items: flex-start; + margin-bottom: 2rem; } -.contact-admin__header h1 { - margin: 0 0 0.25rem; +.contact-admin__page-header-content h1 { + font-size: 2rem; + margin-bottom: 0.5rem; } -.contact-admin__header p { - margin: 0; +.contact-admin__page-header-content p { color: #b0c4de; + font-size: 1rem; } .contact-admin__refresh { - background: rgba(64, 224, 208, 0.15); - border: 1px solid rgba(64, 224, 208, 0.4); - color: #40e0d0; - padding: 0.6rem 1rem; + padding: 0.75rem 1.5rem; + background: linear-gradient(135deg, #40e0d0, #1e90ff); + color: #ffffff; + border: none; border-radius: 10px; + font-weight: 600; cursor: pointer; + transition: all 0.3s ease; + box-shadow: 0 4px 15px rgba(64, 224, 208, 0.3); +} + +.contact-admin__refresh:hover { + transform: translateY(-2px); + box-shadow: 0 6px 25px rgba(64, 224, 208, 0.5); } .contact-admin__error, @@ -51,16 +67,16 @@ .contact-admin__layout { display: grid; - grid-template-columns: 320px 1fr; - gap: 1.5rem; + grid-template-columns: 350px 1fr; + gap: 2rem; } .contact-admin__list { - background: #0f1f38; - border-radius: 16px; - padding: 1rem; - border: 1px solid rgba(64, 224, 208, 0.15); - max-height: 70vh; + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(64, 224, 208, 0.1); + border-radius: 20px; + padding: 1.5rem; + max-height: calc(100vh - 160px); overflow-y: auto; } @@ -70,192 +86,388 @@ margin: 0; display: flex; flex-direction: column; - gap: 0.75rem; + gap: 1rem; } .contact-admin__list li { - padding: 0.75rem; + background: rgba(255, 255, 255, 0.05); + border: 2px solid rgba(64, 224, 208, 0.1); border-radius: 12px; - background: rgba(255, 255, 255, 0.04); + padding: 1.25rem; cursor: pointer; + transition: all 0.3s ease; + position: relative; display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; - border: 1px solid transparent; +} + +.contact-admin__list li:hover { + background: rgba(255, 255, 255, 0.08); + border-color: #40e0d0; + transform: translateX(5px); } .contact-admin__list li.active { + background: rgba(64, 224, 208, 0.1); border-color: #40e0d0; - background: rgba(64, 224, 208, 0.12); } -.contact-admin__list h4 { - margin: 0; - font-size: 0.95rem; +.contact-admin__list h3 { + font-size: 1.1rem; + margin-bottom: 0.35rem; } .contact-admin__list p { - margin: 0.2rem 0 0; - font-size: 0.8rem; color: #b0c4de; + font-size: 0.9rem; +} + +.badge { + background: linear-gradient(135deg, #40e0d0, #1e90ff); + color: #ffffff; + padding: 0.25rem 0.75rem; + border-radius: 20px; + font-size: 0.75rem; + font-weight: 600; + text-transform: capitalize; +} + +.badge--in_progress { + background: linear-gradient(135deg, #f59e0b, #f97316); +} + +.badge--resolved, +.badge--closed { + background: linear-gradient(135deg, #22c55e, #16a34a); } .contact-admin__detail { - background: #0f1f38; - border-radius: 16px; + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(64, 224, 208, 0.1); + border-radius: 20px; + padding: 2rem; + max-height: calc(100vh - 160px); + overflow-y: auto; +} + +.contact-admin__subject-header { + margin-bottom: 2rem; + padding-bottom: 1.5rem; + border-bottom: 1px solid rgba(64, 224, 208, 0.1); +} + +.contact-admin__subject-header h2 { + font-size: 1.8rem; + margin-bottom: 0.5rem; +} + +.contact-admin__subject-tag { + background: rgba(64, 224, 208, 0.1); + color: #40e0d0; + padding: 0.5rem 1rem; + border-radius: 8px; + font-size: 0.9rem; + display: inline-block; + text-transform: capitalize; +} + +.contact-admin__contact-info, +.contact-admin__message-section { + background: rgba(255, 255, 255, 0.03); + border: 1px solid rgba(64, 224, 208, 0.1); + border-radius: 12px; padding: 1.5rem; - border: 1px solid rgba(64, 224, 208, 0.15); + margin-bottom: 2rem; } -.contact-admin__card-header { +.contact-admin__contact-info h3, +.contact-admin__message-section h3, +.contact-admin__notes h3, +.contact-admin__history h3 { + font-size: 1.1rem; + margin-bottom: 1rem; +} + +.contact-admin__info-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1rem; +} + +.contact-admin__info-item { + background: rgba(255, 255, 255, 0.03); + padding: 1rem; + border-radius: 8px; + border: 1px solid rgba(64, 224, 208, 0.1); +} + +.contact-admin__info-label { + color: #b0c4de; + font-size: 0.85rem; + margin-bottom: 0.5rem; display: flex; - justify-content: space-between; align-items: center; - gap: 1rem; + gap: 0.5rem; } -.contact-admin__meta { - margin: 0.5rem 0 1rem; +.contact-admin__info-value { + color: #ffffff; + font-size: 1rem; + font-weight: 500; +} + +.contact-admin__message-box { + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(64, 224, 208, 0.1); + border-radius: 10px; + padding: 1.5rem; color: #b0c4de; + line-height: 1.8; + font-size: 0.95rem; + white-space: pre-wrap; + overflow-wrap: anywhere; + word-break: break-word; } -.contact-admin__message-body { - background: rgba(255, 255, 255, 0.04); - padding: 1rem; - border-radius: 12px; - margin-bottom: 1.5rem; +.contact-admin__message-box--scroll { + height: 300px; + overflow-y: auto; } -.contact-admin__controls { +.contact-admin__actions { display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); + grid-template-columns: 1fr 1fr; gap: 1rem; - margin-bottom: 1.5rem; + margin-bottom: 2rem; } -.contact-admin__controls label { - display: flex; - flex-direction: column; - gap: 0.5rem; - font-size: 0.85rem; +.contact-admin__form-group label { + display: block; color: #b0c4de; + margin-bottom: 0.5rem; + font-weight: 500; + font-size: 0.95rem; } -.contact-admin__controls select { - background: rgba(255, 255, 255, 0.06); - border: 1px solid rgba(64, 224, 208, 0.3); +.contact-admin__form-group select { + width: 100%; + padding: 0.75rem; + background: rgba(255, 255, 255, 0.05); + border: 2px solid rgba(64, 224, 208, 0.2); border-radius: 10px; - padding: 0.5rem 0.75rem; - color: #fff; + color: #ffffff; + font-size: 0.95rem; + cursor: pointer; + transition: all 0.3s ease; } -.contact-admin__assign, -.contact-admin__delete { +.contact-admin__form-group select:focus { + outline: none; + border-color: #40e0d0; + background: rgba(255, 255, 255, 0.08); +} + +.contact-admin__action-buttons { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 1rem; + margin-bottom: 2rem; +} + +.contact-admin__assign { + padding: 1rem; + background: linear-gradient(135deg, #40e0d0, #1e90ff); + color: #ffffff; border: none; border-radius: 10px; - padding: 0.6rem 1rem; + font-weight: 600; cursor: pointer; + transition: all 0.3s ease; + box-shadow: 0 4px 15px rgba(64, 224, 208, 0.3); } -.contact-admin__assign { - background: rgba(64, 224, 208, 0.2); - color: #40e0d0; +.contact-admin__assign:hover { + transform: translateY(-2px); + box-shadow: 0 6px 25px rgba(64, 224, 208, 0.5); } .contact-admin__delete { - background: rgba(239, 68, 68, 0.2); - color: #fecaca; + padding: 1rem; + background: linear-gradient(135deg, #dc3545, #c82333); + color: #ffffff; + border: none; + border-radius: 10px; + font-weight: 600; + cursor: pointer; + transition: all 0.3s ease; + box-shadow: 0 4px 15px rgba(220, 53, 69, 0.3); +} + +.contact-admin__delete:hover { + transform: translateY(-2px); + box-shadow: 0 6px 25px rgba(220, 53, 69, 0.5); } -.contact-admin__notes, -.contact-admin__history { - margin-top: 1.5rem; +.contact-admin__notes { + margin-bottom: 2rem; } -.contact-admin__note-form textarea { +.contact-admin__notes textarea { width: 100%; - min-height: 80px; - padding: 0.75rem; - border-radius: 12px; - border: 1px solid rgba(64, 224, 208, 0.3); + min-height: 120px; + padding: 1rem; background: rgba(255, 255, 255, 0.05); - color: #fff; + border: 2px solid rgba(64, 224, 208, 0.2); + border-radius: 12px; + color: #ffffff; + font-size: 0.95rem; + font-family: inherit; + resize: vertical; + transition: all 0.3s ease; +} + +.contact-admin__notes textarea::placeholder { + color: #6c7a8d; +} + +.contact-admin__notes textarea:focus { + outline: none; + border-color: #40e0d0; + background: rgba(255, 255, 255, 0.08); } .contact-admin__note-actions { - margin-top: 0.5rem; display: flex; justify-content: space-between; align-items: center; + margin-top: 1rem; +} + +.contact-admin__internal-toggle { + display: flex; + align-items: center; + gap: 0.5rem; color: #b0c4de; + font-size: 0.9rem; +} + +.contact-admin__internal-toggle input { + width: 18px; + height: 18px; + accent-color: #40e0d0; + cursor: pointer; } .contact-admin__note-actions button { - background: #40e0d0; + padding: 0.75rem 1.5rem; + background: linear-gradient(135deg, #40e0d0, #1e90ff); + color: #ffffff; border: none; - border-radius: 8px; - padding: 0.4rem 0.9rem; + border-radius: 10px; + font-weight: 600; cursor: pointer; + transition: all 0.3s ease; } -.contact-admin__notes ul, -.contact-admin__history ul { - list-style: none; - padding: 0; - margin: 1rem 0 0; - display: grid; - gap: 0.75rem; +.contact-admin__note-actions button:hover { + transform: translateY(-2px); + box-shadow: 0 4px 15px rgba(64, 224, 208, 0.3); } -.contact-admin__notes li, -.contact-admin__history li { - background: rgba(255, 255, 255, 0.04); - padding: 0.75rem; - border-radius: 10px; - color: #b0c4de; +.contact-admin__notes-list { + margin-bottom: 2rem; } -.contact-admin__notes li span, -.contact-admin__history li span { - display: block; - margin-top: 0.4rem; - font-size: 0.75rem; - color: #7aa3c2; +.contact-admin__note-item { + background: rgba(255, 255, 255, 0.05); + border: 1px solid rgba(64, 224, 208, 0.1); + border-radius: 12px; + padding: 1rem; + margin-bottom: 1rem; } -.contact-admin__empty { - text-align: center; - padding: 4rem 1rem; +.contact-admin__note-item h4 { + font-size: 1rem; + margin-bottom: 0.5rem; +} + +.contact-admin__note-item p { color: #b0c4de; + font-size: 0.9rem; + margin-bottom: 0.5rem; } -.badge { - padding: 0.25rem 0.6rem; - border-radius: 999px; +.contact-admin__timestamp { + color: #6c7a8d; + font-size: 0.85rem; +} + +.contact-admin__history-item { + background: rgba(255, 255, 255, 0.03); + border-left: 3px solid #40e0d0; + border-radius: 8px; + padding: 1rem; + margin-bottom: 1rem; +} + +.contact-admin__history-badge { + display: inline-block; + background: rgba(64, 224, 208, 0.2); + color: #40e0d0; + padding: 0.25rem 0.75rem; + border-radius: 6px; font-size: 0.75rem; - text-transform: capitalize; - background: rgba(255, 255, 255, 0.1); + font-weight: 600; + margin-bottom: 0.5rem; + text-transform: uppercase; } -.badge--new { - background: rgba(59, 130, 246, 0.2); - color: #bfdbfe; +.contact-admin__history-item p { + color: #b0c4de; + font-size: 0.9rem; + margin-bottom: 0.5rem; } -.badge--in_progress { - background: rgba(234, 179, 8, 0.2); - color: #fde68a; +.contact-admin__empty { + text-align: center; + padding: 4rem 1rem; + color: #b0c4de; } -.badge--resolved, -.badge--closed { - background: rgba(34, 197, 94, 0.2); - color: #bbf7d0; +@media (max-width: 1200px) { + .contact-admin__layout { + grid-template-columns: 300px 1fr; + } } -@media (max-width: 1024px) { +@media (max-width: 968px) { .contact-admin__layout { grid-template-columns: 1fr; } + + .contact-admin__list { + max-height: 400px; + } + + .contact-admin__info-grid { + grid-template-columns: 1fr; + } + + .contact-admin__actions, + .contact-admin__action-buttons { + grid-template-columns: 1fr; + } +} + +@media (max-width: 640px) { + .contact-admin__page-header { + flex-direction: column; + gap: 1rem; + } + + .contact-admin__refresh { + width: 100%; + } } diff --git a/frontend/src/pages/Admin/ContactAdminPage.jsx b/frontend/src/pages/Admin/ContactAdminPage.jsx index 9c5ba43d..3ee9dc88 100644 --- a/frontend/src/pages/Admin/ContactAdminPage.jsx +++ b/frontend/src/pages/Admin/ContactAdminPage.jsx @@ -143,15 +143,20 @@ const ContactAdminPage = () => { ); } + const messageWordCount = selectedSubmission?.message + ? selectedSubmission.message.trim().split(/\s+/).filter(Boolean).length + : 0; + const isLongMessage = messageWordCount > 500; + return ( -
-
-
+
+
+

Contact Submissions

Review and manage incoming Contact Us requests.

@@ -164,21 +169,27 @@ const ContactAdminPage = () => {

Loading submissions...

) : submissions.length ? (
    - {submissions.map((submission) => ( -
  • setSelectedId(submission.id)} - > -
    -

    - {submission.first_name} {submission.last_name} -

    + {submissions.map((submission) => { + const isActive = submission.id === selectedId; + + return ( +
  • setSelectedId(submission.id)} + > +
    +

    + {submission.first_name} {submission.last_name} +

    {submission.subject}

    - {submission.status} -
  • - ))} + + {submission.status} + + + ); + })}
) : (

No submissions yet.

@@ -188,20 +199,59 @@ const ContactAdminPage = () => {
{selectedSubmission ? (
-
-

{selectedSubmission.subject}

- - {selectedSubmission.status} - +
+
+

{selectedSubmission.subject}

+ + {selectedSubmission.status} + +
-

- {selectedSubmission.email} ยท {selectedSubmission.phone || "No phone"} -

-

{selectedSubmission.message}

-
-