public void ChangeState(TransitionCommands command) { var transitionExists = PossibleTransitions.TryGetValue( new Tuple <IssueStatuses, TransitionCommands>(this.Status, command), out var result); if (transitionExists) { this.Status = result; } }
public async Task <IActionResult> Edit(int id, [Bind("Id,ShortDescription,Description,Priority,Urgency")] IssueEntity issueEntity, string comment, TransitionCommands command = TransitionCommands.Save) { var currerntEntity = await _context.Issues.FirstOrDefaultAsync(i => i.Id == id); if (id != issueEntity.Id || currerntEntity == null) { return(NotFound()); } if (ModelState.IsValid) { var user = await _context.Users.FirstOrDefaultAsync(u => u.Login == User.Identity.Name); var record = new IssueTransitionEntity { MadeBy = user, Command = command, Issue = currerntEntity, TransitionDate = DateTime.Now, Comment = comment }; _context.Add(record); currerntEntity.ShortDescription = issueEntity.ShortDescription; currerntEntity.Description = issueEntity.Description; currerntEntity.Priority = issueEntity.Priority; currerntEntity.Urgency = issueEntity.Urgency; currerntEntity.ChangeState(command); _context.Update(currerntEntity); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewBag.PossibleActions = issueEntity.GetPossibleActions(); return(View(issueEntity)); }