diff --git a/app/repositories/report.py b/app/repositories/report.py index 7a5f9e1..96bd598 100644 --- a/app/repositories/report.py +++ b/app/repositories/report.py @@ -532,6 +532,45 @@ class ReportRepository(): res['audit_program'] = result return res + # فرآیند طراحی گانت چارت + async def design_chart(self, project_id: uuid): + list_design_progress = await use_collection('design_progress').find({"project_id": project_id}).sort('type', 1).to_list(None) + if not list_design_progress: + return {} + list_design_progress_ids = [doc["_id"] for doc in list_design_progress] + list_design_progress_record = await use_collection('design_progress_record').find({"design_progress_id": {"$in":list_design_progress_ids}}).to_list(None) + grouped_records = {} + for i in list_design_progress: + t = i["type"] + st = i.get("sub_type") + if st: + grouped_records.setdefault(t, {})[st] = { + "progress": i, + "records": [] + } + else: + grouped_records.setdefault(t, { + "progress": i, + "records": [] + }) + + print(grouped_records) + for item in list_design_progress: + for record in list_design_progress_record: + if record["design_progress_id"] == item['_id']: + if 'sub_type' not in item: + grouped_records[item['type']]["records"].append(record) + else: + grouped_records[item['type']][item['sub_type']]["records"].append(record) + return grouped_records + + + + + + + + diff --git a/app/urls/report.py b/app/urls/report.py index 56ee303..a2a0cf5 100644 --- a/app/urls/report.py +++ b/app/urls/report.py @@ -139,4 +139,10 @@ def status_agreement_progress(): def get_extra_project(project_id: uuid.UUID): pass +# فرآیند طراحی گانت چارت +@router.get('/design/chart/{project_id}', tags=_tag_base) +@shrink(repo.design_chart) +def design_chart(project_id: uuid.UUID): + pass + app.include_router(router) \ No newline at end of file