//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() }); }
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()); }