示例#1
0
        public async Task <IActionResult> NewTarget(NewTargetBindingModel model)
        {
            try
            {
                if (ModelState.IsValid)
                {
                    await _targetService.AddTargetAsync(model, User);

                    _logger.LogInformation("{userName} added new target {targetName}.", User.Identity.Name, model.Name);
                    return(RedirectToAction("Index"));
                }

                return(View());
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, "Exception occurred in Dashboard-NewTarget POST action.");
                return(RedirectToAction("Exception", "Error"));
            }
        }
        /// <summary>
        /// Inserts a new Target record to the database and creates a new recurring job.
        /// </summary>
        public async Task AddTargetAsync(NewTargetBindingModel model, ClaimsPrincipal user)
        {
            var jobId    = Guid.NewGuid().ToString();
            var userId   = _userService.GetUserId(user);
            var targetId = Guid.NewGuid().ToString();

            var targetAppDto = new TargetDto
            {
                Id = targetId,
                MonitoringInterval = model.MonitoringInterval,
                Name   = model.Name,
                Url    = model.Url,
                UserId = userId,
                JobId  = jobId
            };

            _jobService.SaveHealtCheckJob(model.Url, jobId, model.MonitoringInterval, targetId, userId, user.Identity.Name);
            _logger.LogInformation("New job created by {userName}. JobId: {jobId}", user.Identity.Name, jobId);

            await _targetRepository.InsertAsync(targetAppDto);
        }