public async Task <ActionResult <Product> > UpdateProductScheduler(ProductSchedulerDto productSchedulerDto) { try { if (!ModelState.IsValid) { _logger.LogError($"Валидация модели не успешна {ModelState}"); return(BadRequest(ModelState)); } var productDto = await _productWatcherManager.GetProductAsync(productSchedulerDto.ProductId); if (productDto == null) { _logger.LogError($"Не удалось найти продукт с {nameof(productSchedulerDto.ProductId)}={productSchedulerDto.ProductId}"); return(NotFound($"Не удалось найти продукт с {nameof(productSchedulerDto.ProductId)}={productSchedulerDto.ProductId}")); } if (productDto.IsDeleted) { _logger.LogError("Нельзя обновить расписание по удаленному продукту"); return(BadRequest("Нельзя обновить расписание по удаленному продукту")); } if (productDto.Site.Settings.AutoGenerateSchedule) { _logger.LogError("Нельзя обновить расписание по продукту с автоматическим расписанием"); return(BadRequest("Нельзя обновить расписание по продукту с автоматическим расписанием")); } await _productWatcherManager.UpdateProductScheduler(productDto, productSchedulerDto.Scheduler); _logger.LogInformation($"Продукту с {nameof(productDto.Id)}={productDto.Id} изменено расписание на {JsonSerializer.Serialize(productSchedulerDto.Scheduler)}"); return(Ok(productDto)); } catch (Exception ex) { _logger.LogError(ex, "Внутренняя ошибка сервиса при обработке запроса"); return(StatusCode(500, "Ошибка при обработке запроса")); } }
public async Task CreateOrUpdateScheduler(ProductSchedulerDto productSchedulerDto) { if (productSchedulerDto == null) { _logger.LogError($"Параметр {nameof(productSchedulerDto)} не может быть null"); throw new ArgumentNullException($"Параметр {nameof(productSchedulerDto)} не может быть null"); } var content = new StringContent(JsonSerializer.Serialize(productSchedulerDto), Encoding.UTF8, "application/json"); var requestUrl = $"{_baseUrl}/api/HangfireScheduler/Products"; var response = await _httpClient.PostAsync(requestUrl, content); if (!response.IsSuccessStatusCode) { _logger.LogError($"Не удалось отправить запрос по {requestUrl}"); response.EnsureSuccessStatusCode(); } _logger.LogInformation($"Успешно отправлен запрос на создание или обновления расписания {requestUrl}"); }
public async Task <IActionResult> CreateOrUpdateProductScheduler([FromBody] ProductSchedulerDto productScheduler) { if (!ModelState.IsValid) { _logger.LogError($"Валидация модели не успешна {ModelState}"); return(BadRequest(ModelState)); } _logger.LogInformation($"Поступил запрос на добавления расписания для продукта {JsonSerializer.Serialize(productScheduler)}"); foreach (var scheduler in productScheduler.Scheduler) { string id = $"{productScheduler.ProductId}-{scheduler}"; _recurringJobManager.AddOrUpdate( id, () => _webScraperClient.PostProductPrice(productScheduler.ProductId), scheduler, TimeZoneInfo.Local); _logger.LogInformation($"Задача c id={id} успешно добавлена"); } return(Ok()); }