Beispiel #1
0
        public async Task CreateOrUpdateCycleStep(CycleStepItemViewModel cycleStepItemViewModel)
        {
            CycleStep cycleStepToInsertOrUpdate;

            if (cycleStepItemViewModel.IsNew)
            {
                cycleStepToInsertOrUpdate = new CycleStep();

                SynthesisCycle synthesisCycle = unitOfWork.GetById <SynthesisCycle>(cycleStepItemViewModel.SynthesisCycleId);
                cycleStepToInsertOrUpdate.SynthesisCycle = synthesisCycle;

                await MapCycleStepItemToCycleStep(cycleStepItemViewModel, cycleStepToInsertOrUpdate);
            }
            else
            {
                cycleStepToInsertOrUpdate = await unitOfWork.GetAll <CycleStep>()
                                            .Include(x => x.SynthesisCycle)
                                            .Include(x => x.HardwareFunction)
                                            .SingleAsync(x => x.Id == cycleStepItemViewModel.CycleStepId);

                await MapCycleStepItemToCycleStep(cycleStepItemViewModel, cycleStepToInsertOrUpdate);
            }

            unitOfWork.InsertOrUpdate(cycleStepToInsertOrUpdate);
            unitOfWork.Commit();

            if (cycleStepItemViewModel.IsNew)
            {
                await UpdateStepNumbersOnInsert(cycleStepItemViewModel, cycleStepToInsertOrUpdate);
            }
        }
Beispiel #2
0
        private async Task MapCycleStepItemToCycleStep(CycleStepItemViewModel cycleStepItemViewModel, CycleStep cycleStep)
        {
            cycleStep.Number   = cycleStepItemViewModel.StepNumber != 0 ? cycleStepItemViewModel.StepNumber : 1;
            cycleStep.StepTime = cycleStepItemViewModel.StepTime;
            cycleStep.A        = cycleStepItemViewModel.A;
            cycleStep.G        = cycleStepItemViewModel.G;
            cycleStep.C        = cycleStepItemViewModel.C;
            cycleStep.T        = cycleStepItemViewModel.T;
            cycleStep.T        = cycleStepItemViewModel.T;
            cycleStep.Six      = cycleStepItemViewModel.Six;
            cycleStep.Seven    = cycleStepItemViewModel.Seven;
            cycleStep.SafeStep = cycleStepItemViewModel.SafeStep;

            if (string.IsNullOrWhiteSpace(cycleStepItemViewModel.HardwareFunction?.Id))
            {
                cycleStep.HardwareFunction = await unitOfWork.GetAll <HardwareFunction>()
                                             .SingleAsync(x => x.FunctionType == HardwareFunctionType.BAndTetToCol);
            }
            else if (cycleStep.HardwareFunctionId != cycleStepItemViewModel.HardwareFunction.Id)
            {
                cycleStep.HardwareFunction = unitOfWork.GetById <HardwareFunction>(cycleStepItemViewModel.HardwareFunction.Id);
            }
        }
Beispiel #3
0
        private async Task UpdateStepNumbersOnInsert(CycleStepItemViewModel cycleStepItemViewModel, CycleStep cycleStepToInsertOrUpdate)
        {
            bool cycleStepWithTheSameNumberExists = await unitOfWork.GetAll <CycleStep>()
                                                    .CountAsync(x => x.SynthesisCycleId == cycleStepItemViewModel.SynthesisCycleId && x.Number == cycleStepToInsertOrUpdate.Number) > 1;

            if (cycleStepWithTheSameNumberExists)
            {
                IEnumerable <CycleStep> cycleSteps = await unitOfWork.GetAll <CycleStep>()
                                                     .Include(x => x.SynthesisCycle)
                                                     .Include(x => x.HardwareFunction)
                                                     .Where(x => x.SynthesisCycleId == cycleStepItemViewModel.SynthesisCycleId &&
                                                            x.Number >= cycleStepToInsertOrUpdate.Number && x.Id != cycleStepToInsertOrUpdate.Id)
                                                     .OrderBy(x => x.Number)
                                                     .ToListAsync();

                foreach (CycleStep cycleStep in cycleSteps)
                {
                    cycleStep.Number++;
                }

                unitOfWork.Commit();
            }
        }