You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
143 lines
4.0 KiB
Python
143 lines
4.0 KiB
Python
import re
|
|
from typing import List, Optional
|
|
|
|
from fastapi import APIRouter, HTTPException, status
|
|
from sqlalchemy import select
|
|
|
|
from src.auth.service import CurrentUser
|
|
from src.database.core import DbSession
|
|
from src.database.service import CommonParameters
|
|
from src.models import StandardResponse
|
|
from src.overhaul_gantt.model import OverhaulGantt
|
|
from src.overhaul_gantt.schema import OverhaulGanttIn
|
|
|
|
# from .schema import (OverhaulScheduleCreate, OverhaulSchedulePagination, OverhaulScheduleUpdate)
|
|
from .service import get_gantt_performance_chart
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.get(
|
|
"", response_model=StandardResponse[dict]
|
|
)
|
|
async def get_gantt_performance(db_session: DbSession):
|
|
"""Get all scope pagination."""
|
|
# return
|
|
query = select(OverhaulGantt).limit(1)
|
|
|
|
data = (await db_session.execute(query)).scalar_one_or_none()
|
|
|
|
results, gantt_data = await get_gantt_performance_chart(spreadsheet_id=data.spreadsheet_id)
|
|
|
|
return StandardResponse(
|
|
data={
|
|
"chart_data": results,
|
|
"gantt_data": gantt_data
|
|
},
|
|
message="Data retrieved successfully",
|
|
)
|
|
|
|
@router.get(
|
|
"/spreadsheet", response_model=StandardResponse[dict]
|
|
)
|
|
async def get_gantt_spreadsheet(db_session: DbSession):
|
|
"""Get all scope pagination."""
|
|
# return
|
|
query = select(OverhaulGantt).limit(1)
|
|
|
|
data = (await db_session.execute(query)).scalar_one_or_none()
|
|
result = {
|
|
"spreadsheet_id": None,
|
|
"spreadsheet_link": None
|
|
}
|
|
|
|
if data:
|
|
result = {
|
|
"spreadsheet_id": data.spreadsheet_id,
|
|
"spreadsheet_link": data.spreadsheet_link
|
|
}
|
|
|
|
|
|
return StandardResponse(
|
|
data=result,
|
|
message="Data retrieved successfully",
|
|
)
|
|
|
|
@router.post(
|
|
"/spreadsheet", response_model=StandardResponse[dict]
|
|
)
|
|
async def update_gantt_spreadsheet(db_session: DbSession, spreadsheet_in: OverhaulGanttIn):
|
|
"""Get all scope pagination."""
|
|
# return
|
|
|
|
match = re.search(r"/d/([a-zA-Z0-9-_]+)", spreadsheet_in.spreadsheet_link)
|
|
if not match:
|
|
raise ValueError("Invalid Google Sheets URL")
|
|
|
|
spreadsheet_id = match.group(1)
|
|
|
|
query = select(OverhaulGantt).limit(1)
|
|
|
|
data = (await db_session.execute(query)).scalar_one_or_none()
|
|
if data:
|
|
data.spreadsheet_link = spreadsheet_in.spreadsheet_link
|
|
data.spreadsheet_id = spreadsheet_id
|
|
else:
|
|
spreadsheet = OverhaulGantt(
|
|
spreadsheet_id=spreadsheet_id,
|
|
spreadsheet_link=spreadsheet_in.spreadsheet_link
|
|
)
|
|
# db_session.add(spreadsheet)
|
|
|
|
|
|
# await db_session.commit()
|
|
|
|
if data:
|
|
result = {
|
|
"spreadsheet_id": spreadsheet_id
|
|
}
|
|
|
|
|
|
return StandardResponse(
|
|
data=result,
|
|
message="Data retrieved successfully",
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# @router.post("", response_model=StandardResponse[None])
|
|
# async def create_overhaul_equipment_jobs(
|
|
# db_session: DbSession, overhaul_job_in: OverhaulScheduleCreate
|
|
# ):
|
|
# await create(
|
|
# db_session=db_session,
|
|
# overhaul_job_in=overhaul_job_in,
|
|
# )
|
|
|
|
# return StandardResponse(
|
|
# data=None,
|
|
# message="Data created successfully",
|
|
# )
|
|
|
|
# @router.put("/{overhaul_job_id}", response_model=StandardResponse[None])
|
|
# async def update_overhaul_schedule(
|
|
# db_session: DbSession, overhaul_job_id: str, overhaul_job_in: OverhaulScheduleUpdate
|
|
# ):
|
|
# await update(db_session=db_session, overhaul_schedule_id=overhaul_job_id, overhaul_job_in=overhaul_job_in)
|
|
|
|
# return StandardResponse(
|
|
# data=None,
|
|
# message="Data updated successfully",
|
|
# )
|
|
|
|
# @router.delete("/{overhaul_job_id}", response_model=StandardResponse[None])
|
|
# async def delete_overhaul_equipment_job(db_session: DbSession, overhaul_job_id):
|
|
# await delete(db_session=db_session, overhaul_schedule_id=overhaul_job_id)
|
|
|
|
# return StandardResponse(
|
|
# data=None,
|
|
# message="Data deleted successfully",
|
|
# )
|