Exemple #1
0
        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));
        }