|
|
|
|
@ -1,11 +1,15 @@
|
|
|
|
|
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
|
|
|
|
|
@ -16,11 +20,14 @@ router = APIRouter()
|
|
|
|
|
@router.get(
|
|
|
|
|
"", response_model=StandardResponse[dict]
|
|
|
|
|
)
|
|
|
|
|
async def get_gantt_performance():
|
|
|
|
|
async def get_gantt_performance(db_session: DbSession):
|
|
|
|
|
"""Get all scope pagination."""
|
|
|
|
|
# return
|
|
|
|
|
results, gantt_data = await get_gantt_performance_chart()
|
|
|
|
|
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={
|
|
|
|
|
@ -30,6 +37,75 @@ async def get_gantt_performance():
|
|
|
|
|
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(
|
|
|
|
|
|