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)); }
public async Task <IActionResult> SaveStateInitialiserState([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 stateInitialiserState = mapper.Map <SaveStateInitialiserStateResource, StateInitialiserState>(stateInitialiserResource); if (stateInitialiserResource.OrderId == 0) { repository.AddBeginning(stateInitialiserState); } else { repository.AddAfter(stateInitialiserState, stateInitialiserResource.OrderId); } //Get all planning apps that use this state initialiser var apps = planningAppRepository.GetPlanningAppsUsingGenerator(stateInitialiserState.StateInitialiserId, inProgress: true); var statusLists = await stateStatusRepository.GetStateStatusList(); apps.ForEach(p => p.InsertNewPlanningState(stateInitialiserState, statusLists)); await UnitOfWork.CompleteAsync(); stateInitialiserState = await repository.GetStateInitialiserState(stateInitialiserState.Id); var result = mapper.Map <StateInitialiserState, StateInitialiserStateResource>(stateInitialiserState); return(Ok(result)); }