fix: clinic approval flow api
This commit is contained in:
parent
7073d7a283
commit
727d979145
|
|
@ -9,5 +9,5 @@ router = APIRouter()
|
|||
|
||||
@router.put("/clinic/status")
|
||||
def update_clinic_status(req:Request, data: ClinicStatusUpdate):
|
||||
response = ClinicServices().update_clinic_status(req.state.user, data.clinic_id, data.status)
|
||||
response = ClinicServices().update_clinic_status(req.state.user, data.clinic_id, data.status, data.documentStatus, data.rejection_reason)
|
||||
return ApiResponse(data=response, message="Clinic status updated successfully")
|
||||
|
|
|
|||
8
main.py
8
main.py
|
|
@ -52,10 +52,10 @@ app = FastAPI(
|
|||
# CORS middleware
|
||||
app.add_middleware(
|
||||
CORSMiddleware,
|
||||
allow_origins=["*"], # Allows all origins
|
||||
allow_credentials=True,
|
||||
allow_methods=["*"], # Allows all methods
|
||||
allow_headers=["*"], # Allows all headers
|
||||
allow_origins=["*"],
|
||||
allow_methods=["*"],
|
||||
allow_headers=["*"],
|
||||
expose_headers=["*"],
|
||||
)
|
||||
|
||||
# Custom request type middleware
|
||||
|
|
|
|||
|
|
@ -0,0 +1,33 @@
|
|||
"""file-verification-table
|
||||
|
||||
Revision ID: 497238c0338d
|
||||
Revises: ad47f4af583e
|
||||
Create Date: 2025-05-19 16:34:54.211429
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = '497238c0338d'
|
||||
down_revision: Union[str, None] = 'ad47f4af583e'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Upgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
# op.add_column('clinic_file_verifications', sa.Column('rejection_reason', sa.String(length=255), nullable=True))
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('clinic_file_verifications', 'rejection_reason')
|
||||
# ### end Alembic commands ###
|
||||
|
|
@ -0,0 +1,33 @@
|
|||
"""file-verification-table
|
||||
|
||||
Revision ID: ec157808ef2a
|
||||
Revises: 497238c0338d
|
||||
Create Date: 2025-05-19 17:16:52.137111
|
||||
|
||||
"""
|
||||
from typing import Sequence, Union
|
||||
|
||||
from alembic import op
|
||||
import sqlalchemy as sa
|
||||
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision: str = 'ec157808ef2a'
|
||||
down_revision: Union[str, None] = '497238c0338d'
|
||||
branch_labels: Union[str, Sequence[str], None] = None
|
||||
depends_on: Union[str, Sequence[str], None] = None
|
||||
|
||||
|
||||
def upgrade() -> None:
|
||||
"""Upgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
# op.add_column('clinic_file_verifications', sa.Column('logo_is_verified', sa.Boolean(), nullable=True))
|
||||
pass
|
||||
# ### end Alembic commands ###
|
||||
|
||||
|
||||
def downgrade() -> None:
|
||||
"""Downgrade schema."""
|
||||
# ### commands auto generated by Alembic - please adjust! ###
|
||||
op.drop_column('clinic_file_verifications', 'logo_is_verified')
|
||||
# ### end Alembic commands ###
|
||||
|
|
@ -8,9 +8,9 @@ class ClinicFileVerifications(Base, CustomBase):
|
|||
|
||||
id = Column(Integer, primary_key=True, index=True)
|
||||
clinic_id = Column(Integer, ForeignKey("clinics.id"), nullable=False)
|
||||
logo_is_verified = Column(Boolean, default=False)
|
||||
abn_doc_is_verified = Column(Boolean, default=False)
|
||||
contract_doc_is_verified = Column(Boolean, default=False)
|
||||
logo_is_verified = Column(Boolean, default=None, nullable=True)
|
||||
abn_doc_is_verified = Column(Boolean, default=None, nullable=True)
|
||||
contract_doc_is_verified = Column(Boolean, default=None, nullable=True)
|
||||
last_changed_by = Column(Integer, ForeignKey("users.id"), nullable=False)
|
||||
rejection_reason = Column(String(255), nullable=True)
|
||||
|
||||
|
|
|
|||
|
|
@ -32,6 +32,7 @@ class ClinicStatusUpdate(BaseModel):
|
|||
clinic_id: int
|
||||
status: ClinicStatus
|
||||
rejection_reason: Optional[str] = None
|
||||
documentStatus: Optional[dict] = None
|
||||
|
||||
class SignupPricingMasterUpdate(SignupPricingMasterBase):
|
||||
pass
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from sqlalchemy.orm import Session, joinedload
|
|||
from models import Clinics
|
||||
from schemas.UpdateSchemas import ClinicStatusUpdate, ClinicUpdate
|
||||
from schemas.ResponseSchemas import Clinic
|
||||
from typing import List, Literal, Union
|
||||
from typing import List, Literal, Optional, Union
|
||||
from exceptions import ResourceNotFoundException
|
||||
from enums.enums import ClinicStatus, UserType
|
||||
from exceptions.unauthorized_exception import UnauthorizedException
|
||||
|
|
@ -191,26 +191,63 @@ class ClinicServices:
|
|||
return counts
|
||||
|
||||
|
||||
def update_clinic_status(self, user, clinic_id: int, status: ClinicStatus):
|
||||
def update_clinic_status(self, user, clinic_id: int, status: ClinicStatus, documentStatus: Optional[dict] = None, rejection_reason: Optional[str] = None):
|
||||
try:
|
||||
if user["userType"] != UserType.SUPER_ADMIN:
|
||||
raise UnauthorizedException("You are not authorized to update clinic status")
|
||||
|
||||
if user["userType"] != UserType.SUPER_ADMIN:
|
||||
raise UnauthorizedException("You are not authorized to update clinic status")
|
||||
clinic = self.db.query(Clinics).filter(Clinics.id == clinic_id).first()
|
||||
|
||||
clinic = self.db.query(Clinics).filter(Clinics.id == clinic_id).first()
|
||||
if clinic is None:
|
||||
raise ResourceNotFoundException("Clinic not found")
|
||||
|
||||
if clinic is None:
|
||||
raise ResourceNotFoundException("Clinic not found")
|
||||
clinic.status = status
|
||||
self.db.add(clinic)
|
||||
self.db.commit()
|
||||
self.db.refresh(clinic)
|
||||
|
||||
clinic.status = status
|
||||
self.db.add(clinic)
|
||||
self.db.commit()
|
||||
self.db.refresh(clinic)
|
||||
if clinic.status == ClinicStatus.ACTIVE:
|
||||
clinic_file_verification = self.db.query(ClinicFileVerifications).filter(ClinicFileVerifications.clinic_id == clinic_id).first()
|
||||
|
||||
clinic_response = Clinic(**clinic.__dict__.copy())
|
||||
clinic_file_verification.logo_is_verified = True
|
||||
clinic_file_verification.abn_doc_is_verified = True
|
||||
clinic_file_verification.contract_doc_is_verified = True
|
||||
|
||||
# if rejected then email to clinic creator
|
||||
if clinic.status == ClinicStatus.REJECTED:
|
||||
pass
|
||||
self.db.add(clinic_file_verification)
|
||||
self.db.commit()
|
||||
|
||||
return clinic_response
|
||||
|
||||
if clinic.status == ClinicStatus.REJECTED or clinic.status == ClinicStatus.UNDER_REVIEW:
|
||||
clinic_file_verification = self.db.query(ClinicFileVerifications).filter(ClinicFileVerifications.clinic_id == clinic_id).first()
|
||||
|
||||
|
||||
if documentStatus and "LOGO" in documentStatus:
|
||||
clinic_file_verification.logo_is_verified = documentStatus.get("LOGO")
|
||||
clinic_file_verification.rejection_reason = rejection_reason
|
||||
|
||||
if documentStatus and "ABN" in documentStatus:
|
||||
clinic_file_verification.abn_doc_is_verified = documentStatus.get("ABN")
|
||||
clinic_file_verification.rejection_reason = rejection_reason
|
||||
|
||||
if documentStatus and "CONTRACT" in documentStatus:
|
||||
clinic_file_verification.contract_doc_is_verified = documentStatus.get("CONTRACT")
|
||||
clinic_file_verification.rejection_reason = rejection_reason
|
||||
|
||||
|
||||
self.db.add(clinic_file_verification)
|
||||
self.db.commit()
|
||||
|
||||
|
||||
# if rejected or under review then email to clinic creator
|
||||
if clinic.status == ClinicStatus.REJECTED or clinic.status == ClinicStatus.UNDER_REVIEW:
|
||||
pass
|
||||
|
||||
# handle inactive status
|
||||
if clinic.status == ClinicStatus.INACTIVE:
|
||||
pass
|
||||
|
||||
return
|
||||
except Exception as e:
|
||||
print(e)
|
||||
raise Exception(e)
|
||||
|
||||
Loading…
Reference in New Issue