Spaces:
Paused
Paused
PupaClic
feat(notes): implement update and delete functionality for project, customer, and bidder notes
e0f68a3 | from fastapi import APIRouter, Depends, status | |
| from sqlalchemy.orm import Session | |
| from app.db.session import get_db | |
| from app.services.notes_service import NotesService | |
| from app.schemas.notes import CustomerNoteCreate, CustomerNoteOut, BidderNoteCreate, CustomerNoteUpdate, BidderNoteUpdate | |
| from app.schemas.project import ProjectNoteCreate, ProjectNoteOut, ProjectNoteUpdate | |
| from typing import List | |
| router = APIRouter(prefix="/api/v1/notes", tags=["notes"]) | |
| def list_project_notes(project_no: int, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| notes = service.list_project_notes(project_no) | |
| # Map DB rows to ProjectNoteOut expected fields | |
| mapped = [] | |
| for r in notes: | |
| mapped.append({ | |
| 'note_id': r.get('ID') or r.get('NoteID'), | |
| 'project_no': r.get('ProjectNo'), | |
| 'date': r.get('Time') or r.get('Date'), | |
| 'employee_id': r.get('EmployeeID'), | |
| 'employee_name': None, | |
| 'customer_id': r.get('CustomerID'), | |
| 'customer_name': None, | |
| 'notes': r.get('Notes') | |
| }) | |
| return mapped | |
| def create_project_note(project_no: int, note_in: ProjectNoteCreate, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| note_id = service.create_project_note(project_no, note_in.model_dump()) | |
| return {"id": note_id} | |
| def update_project_note(project_no: int, note_id: int, note_in: ProjectNoteUpdate, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| updated = service.update_project_note(project_no, note_id, note_in.model_dump(exclude_unset=True)) | |
| # Map to response model fields | |
| return { | |
| 'note_id': updated.get('ID') or updated.get('NoteID'), | |
| 'project_no': updated.get('ProjectNo'), | |
| 'date': updated.get('Time') or updated.get('Date'), | |
| 'employee_id': updated.get('EmployeeID'), | |
| 'employee_name': None, | |
| 'customer_id': updated.get('CustomerID'), | |
| 'customer_name': None, | |
| 'notes': updated.get('Notes') | |
| } | |
| def delete_project_note(project_no: int, note_id: int, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| service.delete_project_note(project_no, note_id) | |
| return None | |
| def list_customer_notes(customer_id: int, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| notes = service.list_customer_notes(customer_id) | |
| # Map DB rows to CustomerNoteOut expected fields | |
| mapped = [] | |
| for r in notes: | |
| mapped.append({ | |
| 'note_id2': r.get('NoteID2'), | |
| 'note_id': r.get('NoteID'), | |
| 'customer_id': r.get('CustomerID'), | |
| 'date': r.get('Date'), | |
| 'employee_id': r.get('EmployeeID'), | |
| 'customer_type_id': r.get('CustomerTypeID'), | |
| 'notes': r.get('Notes') | |
| }) | |
| return mapped | |
| def create_customer_note(customer_id: int, note_in: CustomerNoteCreate, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| note_id = service.create_customer_note(customer_id, note_in.model_dump()) | |
| return {"id": note_id} | |
| def update_customer_note(customer_id: int, note_id2: int, note_in: CustomerNoteUpdate, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| updated = service.update_customer_note(customer_id, note_id2, note_in.model_dump(exclude_unset=True)) | |
| return { | |
| 'note_id2': updated.get('NoteID2'), | |
| 'note_id': updated.get('NoteID'), | |
| 'customer_id': updated.get('CustomerID'), | |
| 'date': updated.get('Date'), | |
| 'employee_id': updated.get('EmployeeID'), | |
| 'customer_type_id': updated.get('CustomerTypeID'), | |
| 'notes': updated.get('Notes') | |
| } | |
| def delete_customer_note(customer_id: int, note_id2: int, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| service.delete_customer_note(customer_id, note_id2) | |
| return None | |
| def list_bidder_notes(bidder_id: int, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| notes = service.list_bidder_notes(bidder_id) | |
| return notes | |
| def create_bidder_note(bidder_id: int, note_in: BidderNoteCreate, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| note_id = service.create_bidder_note(bidder_id, note_in.model_dump()) | |
| return {"id": note_id} | |
| def update_bidder_note(bidder_id: int, note_id: int, note_in: BidderNoteUpdate, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| updated = service.update_bidder_note(bidder_id, note_id, note_in.model_dump(exclude_unset=True)) | |
| return updated | |
| def delete_bidder_note(bidder_id: int, note_id: int, db: Session = Depends(get_db)): | |
| service = NotesService(db) | |
| service.delete_bidder_note(bidder_id, note_id) | |
| return None | |