birzha-contracts/Jobs/UpdateJob.cs

68 lines
2.5 KiB
C#
Raw Permalink Normal View History

2022-11-01 12:23:49 +00:00
using Microsoft.Extensions.Logging;
using Quartz;
using System.Threading.Tasks;
using Newtonsoft.Json;
using System.Text;
2022-11-21 12:47:08 +00:00
using birzha_contracts.Managers;
using birzha_contracts.Models;
using System.Collections.Generic;
2022-11-01 12:23:49 +00:00
namespace birzha_contracts.Jobs{
[DisallowConcurrentExecution]
public class HelloWorldJob : IJob
{
private readonly ILogger<HelloWorldJob> _logger;
private readonly IServiceProvider _provider;
2022-11-02 11:35:05 +00:00
private HttpClient client = new HttpClient();
2022-11-01 12:23:49 +00:00
2022-11-21 12:47:08 +00:00
2022-11-01 12:23:49 +00:00
public HelloWorldJob(ILogger<HelloWorldJob> logger, IServiceProvider provider)
{
_logger = logger;
_provider = provider;
}
public Task Execute(IJobExecutionContext context)
{
using(var scope = _provider.CreateScope())
{
2022-11-21 12:47:08 +00:00
var firstTimeDB = Convert.ToBoolean(ConfigManager.AppSetting["FirstTimeDB"]);
2022-11-01 12:23:49 +00:00
var dbContext = scope.ServiceProvider.GetService<MvcContractContext>();
2022-11-21 12:47:08 +00:00
var contracts = new List<Contract>();
if(firstTimeDB){
var dateFrom = Convert.ToDateTime(ConfigManager.AppSetting["FirstTimeDBFillDateFrom"]);
contracts = dbContext!.Contract.Where(x => x.ModifiedDate >= dateFrom).OrderByDescending(d => d.ModifiedDate).ToList();
}
else{
var minutesAgo = Convert.ToDouble(ConfigManager.AppSetting["DataMinutesAgo"]);
minutesAgo = minutesAgo * (-1);
contracts = dbContext!.Contract.Where(x => x.ModifiedDate > DateTime.Now.AddMinutes(minutesAgo)).OrderByDescending(d => d.ModifiedDate).ToList();
}
_logger.LogInformation("Sending request: Contracts");
2022-11-01 12:23:49 +00:00
var data = JsonConvert.SerializeObject(contracts);
var content = new StringContent(data.ToString(), Encoding.UTF8, "application/json");
2022-11-21 12:47:08 +00:00
var domain = Convert.ToString(ConfigManager.AppSetting["Domain"]);
client.BaseAddress = new Uri(domain);
2022-11-01 12:23:49 +00:00
2022-11-21 12:47:08 +00:00
var api = ConfigManager.AppSetting["API_contracts"];
var request = new HttpRequestMessage(HttpMethod.Post, $""+api+"");
2022-11-01 12:23:49 +00:00
request.Content = content;
var response = client.Send(request);
2022-11-21 12:47:08 +00:00
_logger.LogInformation("Sending success!");
2022-11-01 12:23:49 +00:00
}
_logger.LogInformation("Success!");
return Task.CompletedTask;
}
}
}