public async Task <IActionResult> EnableWatcher(int watcherId, [FromBody] EnableWatcher request)
        {
            // Request
            request.UserId    = "cesarbmx";
            request.WatcherId = watcherId;

            // Reponse
            var response = await _watcherService.EnableWatcher(request);

            // Return
            return(Ok(response));
        }
Beispiel #2
0
        public async Task <Responses.Watcher> EnableWatcher(EnableWatcher request)
        {
            // Get watcher
            var watcher = await _mainDbContext.Watchers.FindAsync(request.WatcherId);

            // Watcher not found
            if (watcher == null)
            {
                throw new NotFoundException(WatcherMessage.WatcherNotFound);
            }

            // Watcher already enabled
            if (watcher.Enabled == request.Enabled && request.Enabled)
            {
                throw new ConflictException(new Conflict <EnableWatcherConflictReason>(EnableWatcherConflictReason.WATCHER_ALREADY_ENABLED, WatcherMessage.WatcherAlreadyEnabled));
            }

            // Watcher already disabled
            if (watcher.Enabled == request.Enabled && !request.Enabled)
            {
                throw new ConflictException(new Conflict <EnableWatcherConflictReason>(EnableWatcherConflictReason.WATCHER_ALREADY_DISABLED, WatcherMessage.WatcherAlreadyDisabled));
            }

            // Update watcher
            watcher.Enable(request.Enabled);

            // Update
            _mainDbContext.Watchers.Update(watcher);

            // Save
            await _mainDbContext.SaveChangesAsync();

            // Response
            var response = _mapper.Map <Responses.Watcher>(watcher);

            if (request.Enabled)
            {
                // Log
                _logger.LogInformation("{@Event}, {@UserId}, {@Request}, {@Response}", "WatcherEnabled", request.UserId, request, response);
            }
            else
            {
                // Log
                _logger.LogInformation("{@Event}, {@UserId}, {@Request}, {@Response}", "WatcherDisabled", request.UserId, request, response);
            }

            // Return
            return(response);
        }