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));
        }
コード例 #2
0
        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));
        }