using Microsoft.Extensions.Logging; using Quartz; using System.Threading.Tasks; using Newtonsoft.Json; using System.Text; using birzha_contracts.Managers; using birzha_contracts.Models; using System.Collections.Generic; namespace birzha_contracts.Jobs{ [DisallowConcurrentExecution] public class UpdateJob : IJob { private readonly ILogger _logger; private readonly IServiceProvider _provider; private HttpClient client = new HttpClient(); public UpdateJob(ILogger logger, IServiceProvider provider) { _logger = logger; _provider = provider; } public Task Execute(IJobExecutionContext context) { using(var scope = _provider.CreateScope()) { var firstTimeDB = Convert.ToBoolean(ConfigManager.AppSetting["FirstTimeDB"]); var dbContext = scope.ServiceProvider.GetService(); var contracts = new List(); if(firstTimeDB){ var dateFrom = Convert.ToDateTime(ConfigManager.AppSetting["FirstTimeDBFillDateFrom"]); contracts = dbContext!.ContractResolution.OrderByDescending(x => x.ID).Take(1000).ToList(); } else{ var minutesAgo = Convert.ToDouble(ConfigManager.AppSetting["DataMinutesAgo"]); minutesAgo = minutesAgo * (-1); contracts = dbContext!.ContractResolution.OrderByDescending(x => x.ID).Take(1000).ToList(); } _logger.LogInformation("Sending request: Contract-Resolution"); var data = JsonConvert.SerializeObject(contracts); var content = new StringContent(data.ToString(), Encoding.UTF8, "application/json"); var domain = Convert.ToString(ConfigManager.AppSetting["Domain"]); client.BaseAddress = new Uri(domain); var api = ConfigManager.AppSetting["API_contract_resolution"]; var request = new HttpRequestMessage(HttpMethod.Post, $""+api+""); request.Content = content; var response = client.Send(request); _logger.LogInformation("Sending success!"); } _logger.LogInformation("Success!"); return Task.CompletedTask; } } }