Пример #1
0
        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));
        }