@@ -68,23 +68,20 @@ namespace PARR.API.Controllers.V1
return Ok ( paginationResponse ) ;
}
/// <summary>
/// Список заданий на запуск по IP-адресу клиента исполнения
/// </summary>
/// <param name="requestQuery"></param>
/// <returns></returns>
[HttpGet(ApiRoutes.Jobs.GetByIp)]
public async Task < IActionResult > GetByClientIP ( [ FromQuery ] JobGetByIpQuery requestQuery )
{
var d1 = DateTimeOffset . Now ;
var d2 = DateTimeOffset . Now . Date ;
if ( d1 . Date = = d2 ) { }
var ip = requestQuery . Ip ? ? clientService . GetClientIp ( ) ? . ToString ( ) ;
if ( string . IsNullOrEmpty ( ip ) )
return BadRequest ( new Response ( false , new List < ErrorModel > { new ErrorModel { Message = "Client IP address is null." } } ) ) ;
var date = requestQuery . Date ? ? DateTimeOffset . Now ;
var date = requestQuery . Date ? ? DateTimeOffset . Utc Now;
// С одним IP может быть несколько информационных систем, соответственного а таблице храниться несколько записей хостов с одинаковым IP
var hosts = await hostService . Get ( ) . Where ( h = > h . IP = = ip ) . ToListAsync ( ) ;
@@ -96,7 +93,7 @@ namespace PARR.API.Controllers.V1
. Include ( a = > a . Application ) . ThenInclude ( ah = > ah . ApplicationsInHosts ) /*.ThenInclude(h => h.Host)*/
. Include ( jm = > jm . JobMode )
. AsSplitQuery ( )
. Where ( j = > j . Application ! = null & & j . Application . ApplicationsInHosts . Any ( ah = > ah . HostId = = host . Id ) & & j . IsEnabled )
. Where ( j = > j . Application ! = null & & j . Application . ApplicationsInHosts . Any ( ah = > ah . HostId = = host . Id ) & & j . IsEnabled & & j . StartAt < = date )
. ToListAsync ( ) ;
if ( jobsHost . Any ( ) )
@@ -129,26 +126,21 @@ namespace PARR.API.Controllers.V1
if ( requestQuery . IsFullResponse = = true )
{
// возврат самого полного ответа
var jobResponse = mapper . Map < List < JobGetAllResponse > > ( jobsToResponse ) ;
return Ok ( new Response < List < JobGetAllResponse > > ( jobResponse , true ) ) ;
}
//var responseDict = new Dictionary<string, string>();
//foreach ()
// {
// }
// var jobListForResponse = new
//var dic = new Dictionary<string, string>();
//dic.Add("sss1", "222");
//dic.Add("sss2", "333");
return Ok ( ) ;
// возврат минимального ответа
try
{
return Ok ( jobsToResponse . ToDictionary ( t = > t . ScriptName , d = > d . StartAt ) ) ;
}
catch ( ArgumentException ex )
{
return BadRequest ( new Response ( false , new List < ErrorModel > { new ErrorModel { Message = $"Н е могу создать json объект с одинаковым значением ключа (ScriptName). {ex.Message}" } } ) ) ;
}
}
@@ -156,7 +148,7 @@ namespace PARR.API.Controllers.V1
{
var jobs = new List < Job > ( ) ;
#region description
// freaq > суток или нет?
//-----------
@@ -175,7 +167,7 @@ namespace PARR.API.Controllers.V1
// ------freaq больше суток--------
// журнал берем последнее событие (че там с о статусами? не надо пока), к нему пребавляем фрек, и смотрим == сегодня или нет, если сегодня то добавляем
// --------------
#endregion
var allDayMinutes = 1440 ;
if ( job . Frequency > = allDayMinutes )
@@ -188,7 +180,6 @@ namespace PARR.API.Controllers.V1
// если в истории нет записей, то запускаем сегодня в стартЭт
// берем квери дэйт и ем задаем время из Джобс СтартЭт
var startDateTimeNext = new DateTimeOffset ( queryDate . Year , queryDate . Month , queryDate . Day , job . StartAt . Hour , job . StartAt . Minute , job . StartAt . Second , new TimeSpan ( 0 ) ) ;
//todo: check
var jobToAdded = mapper . Map < Job > ( job ) ; //new Job { StartAt = startDateTimeNext };
jobToAdded . StartAt = startDateTimeNext ;
@@ -202,7 +193,6 @@ namespace PARR.API.Controllers.V1
// если берем прошлую последнюю операцию из журнала, и к ней прибавить фрекунси, то время следующего старта сдвинется на время выполнения прошлого задания
// чтобы это избежать, берем квери дэйт и ем задаем время из Джобс СтартЭт
var startDateTimeNext = new DateTimeOffset ( queryDate . Year , queryDate . Month , queryDate . Day , job . StartAt . Hour , job . StartAt . Minute , job . StartAt . Second , new TimeSpan ( 0 ) ) ;
//todo: check
var jobToAdded = mapper . Map < Job > ( job ) ;
jobToAdded . StartAt = startDateTimeNext ;
jobs . Add ( jobToAdded ) ;
@@ -222,7 +212,6 @@ namespace PARR.API.Controllers.V1
while ( min > = 0 )
{
//var jobToAdded = new Job { StartAt = queryDate.StartOfDay().AddMinutes(min) };
//todo: check
var jobToAdded = mapper . Map < Job > ( job ) ;
jobToAdded . StartAt = queryDate . StartOfDay ( ) . AddMinutes ( min ) ;
jobs . Add ( jobToAdded ) ;
@@ -233,7 +222,6 @@ namespace PARR.API.Controllers.V1
min = startAtMinutes + job . Frequency ;
while ( min < allDayMinutes )
{
//TODO: check
//var jobToAdded = new Job { StartAt = queryDate.StartOfDay().AddMinutes(min) };
var jobToAdded = mapper . Map < Job > ( job ) ;
jobToAdded . StartAt = queryDate . StartOfDay ( ) . AddMinutes ( min ) ;
@@ -248,7 +236,6 @@ namespace PARR.API.Controllers.V1
var min = startAtMinutes ;
while ( min < allDayMinutes )
{
//TODO
//var jobToAdded = new Job { StartAt = queryDate.StartOfDay().AddMinutes(min) };
var jobToAdded = mapper . Map < Job > ( job ) ;
jobToAdded . StartAt = queryDate . StartOfDay ( ) . AddMinutes ( min ) ;
@@ -261,70 +248,5 @@ namespace PARR.API.Controllers.V1
return jobs ;
}
//[HttpGet(ApiRoutes.Jobs.GetByIp)]
//public async Task<IActionResult> GetByClientIP([FromQuery] JobGetByIpQuery requestQuery)
//{
// var ip = requestQuery.Ip ?? clientService.GetClientIp()?.ToString();
// if (string.IsNullOrEmpty(ip))
// return BadRequest(new Response(false, new List<ErrorModel> { new ErrorModel { Message = "Client IP address is null." } }));
// var date = requestQuery.Date ?? DateTimeOffset.Now;
// // С одним IP может быть несколько информационных систем, соответственного а таблице храниться несколько записей хостов с одинаковым IP
// var hosts = await hostService.Get().Where(h => h.IP == ip).ToListAsync();
// var hostJobsDict = new Dictionary<DAL.Models.Host, List<Job>>();
// foreach (var host in hosts)
// {
// var jobsHostQuery = jobService.Get()
// .Include(a => a.Application).ThenInclude(ah => ah.ApplicationsInHosts)/*.ThenInclude(h => h.Host)*/
// .Include(jm => jm.JobMode)
// .AsSplitQuery()
// .Where(j => j.Application != null && j.Application.ApplicationsInHosts.Any(ah => ah.HostId == host.Id));
// if (requestQuery.IsPlanned == true)
// {
// // ототбражем только включенные
// jobsHostQuery = jobsHostQuery.Where(t => t.IsEnabled == true);
// }
// var jobsHost = await jobsHostQuery.ToListAsync();
// if (requestQuery.IsPlanned == true)
// {
// // смотрим в истории, если задание уже было запущено, то е г о не отображаем
// foreach (var jobItem in jobsHost)
// {
// var journalItem = await jobJournalService.GetLastAsync(jobItem.Id, host.Id, date);
// if (JobStatusEnum.started) { }
// }
// }
// if (jobsHost.Any())
// {
// //Проверяем Job вк
// hostJobsDict.Add(host, jobsHost);
// }
// }
// //hostJobsDict.Values.Distinct();
// var jobsJoined = new List<Job>();
// foreach (var job in hostJobsDict.Values)
// {
// job.ForEach(item =>
// {
// jobsJoined.Add(item);
// });
// }
// if (!jobsJoined.Any())
// return NoContent();
// var jobResponse = mapper.Map<List<JobGetAllResponse>>(jobsJoined.Distinct());
// return Ok(new Response<List<JobGetAllResponse>>(jobResponse, true, new List<ErrorModel>(), $"{ip},{date}"));
//}
}
}