Ejemplo n.º 1
0
        public async Task <IActionResult> PutErrorHistory(int id, ErrorHistory errorHistory)
        {
            if (id != errorHistory.Id)
            {
                return(BadRequest());
            }

            _context.Entry(errorHistory).State = EntityState.Modified;

            try
            {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!ErrorHistoryExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }
Ejemplo n.º 2
0
        public async Task <IActionResult> PutError(int id, ErrorDto errorDto)
        {
            var errorBf    = _context.Error.SingleOrDefault(e => e.Id == id);
            var prevStatus = errorBf.Status;
            var error      = _mapper.Map <Error>(errorDto);
            var status     = _context.Status.SingleOrDefault(s => s.Id == errorDto.StatusId);

            if (id != error.Id)
            {
                return(BadRequest());
            }

            var action = new Models.Action();

            // check statuses
            if (prevStatus.Name != status.Name)
            {
                if (prevStatus.Name == ErrorStatusTypes.New &&
                    status.Name != ErrorStatusTypes.Opened)
                {
                    return(BadRequest());
                }
                if (prevStatus.Name == ErrorStatusTypes.Opened &&
                    status.Name != ErrorStatusTypes.Solved)
                {
                    return(BadRequest());
                }
                if (prevStatus.Name == ErrorStatusTypes.Solved &&
                    (status.Name != ErrorStatusTypes.Opened &&
                     status.Name != ErrorStatusTypes.Closed))
                {
                    return(BadRequest());
                }
                if (prevStatus.Name == ErrorStatusTypes.Closed)
                {
                    return(BadRequest());
                }

                if (status.Name == ErrorStatusTypes.Opened)
                {
                    action = _context.Action.SingleOrDefault(a => a.Name == "Открытие");
                }
                if (status.Name == ErrorStatusTypes.Solved)
                {
                    action = _context.Action.SingleOrDefault(a => a.Name == "Решение");
                }
                if (status.Name == ErrorStatusTypes.Closed)
                {
                    action = _context.Action.SingleOrDefault(a => a.Name == "Закрытие");
                }

                // all good
                var errorHistory = new ErrorHistory {
                    Error   = error,
                    Action  = action,
                    Comment = error.ErrorHistory.ToList()[error.ErrorHistory.Count - 1].Comment,
                    User    = _context.Users.SingleOrDefault(u => u.Id == errorDto.UserId),
                    Date    = DateTime.Now
                };

                _context.ErrorHistory.Add(errorHistory);
            }

            var entry = _context.Entry(error);

            entry.Property(e => e.ShortDesc).IsModified   = true;
            entry.Property(e => e.Description).IsModified = true;
            entry.Property(e => e.PriorityId).IsModified  = true;
            entry.Property(e => e.ImpactId).IsModified    = true;
            entry.Property(e => e.StatusId).IsModified    = true;

            try {
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException) {
                if (!ErrorExists(id))
                {
                    return(NotFound());
                }
                else
                {
                    throw;
                }
            }

            return(NoContent());
        }