Exemple #1
0
        //To Model

        /// <summary>
        /// Turns a Process Step Sequence entity into a basic model
        /// </summary>
        /// <param name="aStepSeq">Entity</param>
        /// <param name="aStep">Model</param>
        /// <param name="anOperation">Model</param>
        /// <returns>Basic Step Sequence Model</returns>
        public static StepSeqModel ToModel(this ProcessStepSeq aStepSeq)
        {
            return(new StepSeqModel()
            {
                ProcessId = aStepSeq.ProcessId,
                RevisionId = aStepSeq.ProcessRevId,
                StepId = aStepSeq.StepId,
                Sequence = aStepSeq.StepSeq,
                OperationId = aStepSeq.OperationId,
                Step = aStepSeq.Step.ToModel(),
                Operation = aStepSeq.Operation.ToModel()
            });
        }
Exemple #2
0
        public async Task <ProcessRevisionModel> CreateNewRevForExistingProcess(ProcessRevisionModel newRev) //This parameter needs comment, employee number, and processId
        {
            var newRevEntity = newRev.ToEntity();

            newRevEntity.RevStatusId = 2; //2 = UNLOCKED
            var currentRevs = await context.ProcessRevision.Where(i => i.ProcessId == newRev.ProcessId).Include(i => i.ProcessStepSeq).ToListAsync();

            var currentRev = (currentRevs != null && currentRevs.Any()) ? currentRevs.OrderByDescending(i => i.ProcessRevId).First() : null;


            if (currentRevs == null || !currentRevs.Any())
            {
                newRevEntity.ProcessRevId = 1;
            }
            else if (currentRev.RevStatusId == 2) //2 = UNLOCKED
            {
                throw new InvalidOperationException("Cannot Rev-Up a process whose most current revision is unlocked.");
            }
            else
            {
                newRevEntity.ProcessRevId = currentRev.ProcessRevId + 1;
                foreach (var stepSeq in currentRev.ProcessStepSeq)
                {
                    var newStepSeq = new ProcessStepSeq()
                    {
                        ProcessRevId = newRevEntity.ProcessRevId,
                        OperationId  = stepSeq.OperationId,
                        ProcessId    = stepSeq.ProcessId,
                        StepId       = stepSeq.StepId,
                        StepSeq      = stepSeq.StepSeq
                    };
                    newRevEntity.ProcessStepSeq.Add(newStepSeq);
                }
            }

            context.ProcessRevision.Add(newRevEntity);

            //Update SpecProccessAssignment table
            var specProcAssignEntities = await context.SpecProcessAssign.Where(i => i.ProcessId == currentRev.ProcessId && i.ProcessRevId == currentRev.ProcessRevId && i.Inactive == false && i.ReviewNeeded == false).ToListAsync();

            foreach (var assignEntity in specProcAssignEntities)
            {
                assignEntity.ReviewNeeded = true;
                assignEntity.Inactive     = true;
            }

            await context.SaveChangesAsync();

            return(newRevEntity.ToModel());
        }