Skip to content

Commit 7a92cdf

Browse files
committed
last working version
1 parent f480f69 commit 7a92cdf

File tree

3 files changed

+41
-17
lines changed

3 files changed

+41
-17
lines changed

epictrack-api/src/api/services/event.py

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
from api.exceptions import ResourceNotFoundError, UnprocessableEntityError
2222
from api.models import (PRIMARY_CATEGORIES, CalendarEvent, Event,
2323
EventCategoryEnum, EventConfiguration, EventTypeEnum,
24-
WorkCalendarEvent, WorkPhase, db)
24+
WorkCalendarEvent, WorkPhase, Work, WorkStateEnum, db)
2525
from api.models.action import Action, ActionEnum
2626
from api.models.action_configuration import ActionConfiguration
2727
from api.models.event_template import EventPositionEnum
@@ -115,13 +115,23 @@ def _process_events(
115115
current_event_old_index: int = None,
116116
) -> None:
117117
"""Process the event date logic"""
118+
cls._end_event_anticipated_change_rule(event, event_old)
119+
all_work_events = cls._find_events(
120+
current_work_phase.work_id, None, PRIMARY_CATEGORIES
121+
)
122+
all_work_events = sorted(
123+
all_work_events, key=lambda x: x.actual_date or x.anticipated_date
124+
)
125+
cls._previous_event_acutal_date_rule(all_work_events, event, current_event_old_index)
118126
all_work_event_configurations = EventConfigurationService.find_configurations(
119127
event.work_id, _all=True
120128
)
121129
cls._handle_child_events(all_work_event_configurations, event)
122130
number_of_days_to_be_pushed = cls._get_number_of_days_to_be_pushed(
123131
event, event_old, current_work_phase
124132
)
133+
if event.actual_date and event.event_configuration.event_position == EventPositionEnum.END:
134+
cls._complete_work_phase(current_work_phase)
125135
if (
126136
event.event_configuration.event_type_id == EventTypeEnum.TIME_LIMIT_SUSPENSION.value
127137
and event.actual_date
@@ -139,15 +149,7 @@ def _process_events(
139149
current_work_phase.update(current_work_phase.as_dict(recursive=False), commit=False)
140150

141151
if number_of_days_to_be_pushed != 0:
142-
cls._end_event_anticipated_change_rule(event, event_old)
143152

144-
all_work_events = cls._find_events(
145-
current_work_phase.work_id, None, PRIMARY_CATEGORIES
146-
)
147-
all_work_events = sorted(
148-
all_work_events, key=lambda x: x.actual_date or x.anticipated_date
149-
)
150-
cls._previous_event_acutal_date_rule(all_work_events, event)
151153
all_work_phases = WorkPhase.find_by_params(
152154
{"work_id": current_work_phase.work_id}
153155
)
@@ -222,6 +224,25 @@ def _process_events(
222224
current_event_old_index,
223225
)
224226

227+
@classmethod
228+
def _complete_work_phase(cls, current_work_phase: WorkPhase) -> None:
229+
"""Mark the current work phase complete and set the next work phase as the current one in the work"""
230+
all_work_phases = WorkPhase.find_by_params(
231+
{"work_id": current_work_phase.work_id}
232+
)
233+
current_work_phase.is_completed = True
234+
current_work_phase.update(current_work_phase.as_dict(recursive=False), commit= False)
235+
236+
current_work_phase_index = util.find_index_in_array(
237+
all_work_phases, current_work_phase
238+
)
239+
work: Work = Work.find_by_id(current_work_phase.work_id)
240+
if current_work_phase_index == len(all_work_phases) - 1:
241+
work.work_state = WorkStateEnum.COMPLETED
242+
else:
243+
work.current_phase_id = all_work_phases[ current_work_phase_index + 1].id
244+
work.update(work.as_dict(recursive=False), commit=False)
245+
225246
@classmethod
226247
def _get_number_of_days_to_be_pushed(cls,
227248
event: Event,
@@ -357,7 +378,7 @@ def _end_event_anticipated_change_rule(cls, event: Event, event_old: Event) -> N
357378

358379
@classmethod
359380
def _previous_event_acutal_date_rule(
360-
cls, all_work_events: [Event], event: Event
381+
cls, all_work_events: [Event], event: Event, current_event_old_index: int
361382
) -> None:
362383
"""Check to see if the previous event has actual date present
363384

epictrack-api/src/api/services/event_template.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"""Service to manage Event Template."""
1515
import copy
1616
from typing import IO, Dict
17+
import json
1718

1819
import pandas as pd
1920
from api.exceptions import BadRequestError
@@ -298,7 +299,7 @@ def _handle_outcomes(
298299
),
299300
None,
300301
)
301-
action["additional_params"] = action["additional_params"]
302+
action["additional_params"] = json.loads(action["additional_params"])
302303
action_obj = req.ActionTemplateBodyParameterSchema().load(action)
303304
if selected_action:
304305
action_result = selected_action.update(action_obj, commit=False)

epictrack-web/src/components/workPlan/event/EventForm.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -253,12 +253,6 @@ const EventForm = ({
253253

254254
const onSubmitHandler = async (submittedData: MilestoneEvent) => {
255255
try {
256-
submittedData.anticipated_date = Moment(
257-
submittedData.anticipated_date
258-
).format();
259-
if (!!submittedData.actual_date) {
260-
submittedData.actual_date = Moment(submittedData.actual_date).format();
261-
}
262256
submittedData.notes = notes;
263257
// setSubmittedEvent(data);
264258
const showConfirmDialog =
@@ -327,6 +321,14 @@ const EventForm = ({
327321
const handleSaveEvent = async (data?: MilestoneEvent) => {
328322
try {
329323
const dataToBeSubmitted = data ?? getValues();
324+
dataToBeSubmitted.anticipated_date = Moment(
325+
dataToBeSubmitted.anticipated_date
326+
).format();
327+
if (!!dataToBeSubmitted.actual_date) {
328+
dataToBeSubmitted.actual_date = Moment(
329+
dataToBeSubmitted.actual_date
330+
).format();
331+
}
330332
await saveEvent(dataToBeSubmitted);
331333
onSave();
332334
} catch (e) {

0 commit comments

Comments
 (0)