public async Task <PlanningAppStateFullResource> UpdatePlanningAppState(int id, [FromBody] UpdatePlanningAppStateResource planningAppStateResource) { var planningAppState = await repository.GetPlanningAppState(id); var planningApp = await planningAppRepository.GetPlanningApp(planningAppState.PlanningAppId); var dueByDate = planningAppStateResource.DueByDate.ParseInputDate(); if (dueByDate != planningAppState.DueByDate) { PlanningAppStateService.UpdateCustomDueByDate(planningAppState, dueByDate); PlanningAppService.UpdateDueByDates(planningApp); //Updates all forward dueby dates from current position } //Set any fields in the PlanningApp table that have been set in the Rule List if (planningAppStateResource.PlanningAppStateCustomFieldsResource.Count() > 0) { foreach (var customStateValueResource in planningAppStateResource.PlanningAppStateCustomFieldsResource) { planningAppState.getPlanningAppStateCustomField(customStateValueResource.Id).StrValue = customStateValueResource.Value; } //Store custom fields in planning state planningApp.UpdateKeyFields(planningAppStateResource.PlanningAppStateCustomFieldsResource); } planningAppState.Notes = planningAppStateResource.Notes; repository.Update(planningAppState); await unitOfWork.CompleteAsync(); return(await GetPlanningAppState(id)); }
public async Task <IActionResult> DeleteStateInitialiserState(int id) { var stateInitialiserState = await repository.GetStateInitialiserState(id); if (stateInitialiserState == null) { return(NotFound()); } stateInitialiserState.isDeleted = true; repository.Update(stateInitialiserState); //remove state from all current planning applications var apps = planningAppRepository.GetPlanningAppsUsingGenerator(stateInitialiserState.StateInitialiserId, inProgress: true); foreach (var pa in apps) { PlanningAppService.RemovePlanningState(pa, stateInitialiserState);; } await UnitOfWork.CompleteAsync(); return(Ok(id)); }
public async Task <IActionResult> UpdateGeneratorState([FromBody] StateInitialiserStateResource stateInitialiserStateResource) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } var stateInitialiserState = mapper.Map <StateInitialiserStateResource, StateInitialiserState>(stateInitialiserStateResource); repository.Update(stateInitialiserState); //update states from all current planning applications var apps = planningAppRepository.GetPlanningAppsUsingGenerator(stateInitialiserState.StateInitialiserId, inProgress: true); foreach (var pa in apps) { PlanningAppService.UpdateDueByDates(pa); } await UnitOfWork.CompleteAsync(); stateInitialiserState = await repository.GetStateInitialiserState(stateInitialiserState.Id); var result = mapper.Map <StateInitialiserState, StateInitialiserStateResource>(stateInitialiserState); return(Ok(result)); }
public async Task <IActionResult> InsertGeneratorState([FromBody] SaveStateInitialiserStateResource stateInitialiserResource) { if (!ModelState.IsValid) { return(BadRequest(ModelState)); } if (stateInitialiserResource == null) { return(NotFound()); } if (stateInitialiserResource.StateInitialiserId == 0) {//Business Validation Check ModelState.AddModelError("InitialiserId", "InitialiserId not valid"); return(BadRequest(ModelState)); } var generator = await GeneratorRepository.GetStateInitialiser(stateInitialiserResource.StateInitialiserId); var stateInitialiserState = mapper.Map <SaveStateInitialiserStateResource, StateInitialiserState>(stateInitialiserResource); if (stateInitialiserResource.OrderId == 0) { repository.AddBeginning(stateInitialiserState); } else { repository.AddAfter(stateInitialiserState, stateInitialiserResource.OrderId); } await UnitOfWork.CompleteAsync(); var newStateInitialiserState = await repository.GetStateInitialiserState(stateInitialiserState.Id); //Get all planning apps that use this state initialiser var apps = planningAppRepository.GetPlanningAppsUsingGenerator(stateInitialiserState.StateInitialiserId, inProgress: true); foreach (var pa in apps) { var genOrderList = planningAppRepository.GetGeneratorOrdersInPlanningApp(pa, stateInitialiserState.StateInitialiserId); var current = pa.Current(); foreach (var genOrder in genOrderList) { PlanningAppService.InsertPlanningState(pa, genOrder, generator, newStateInitialiserState); } PlanningAppService.UpdateDueByDates(pa); } await UnitOfWork.CompleteAsync(); var result = mapper.Map <StateInitialiserState, StateInitialiserStateResource>(newStateInitialiserState); return(Ok(result)); }