/
rezvich
/
Prik
Обзор
Документация
Войти
/
rezvich
/
Prik
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Application/PostIdentifyFlkService.cs
86 строк
3 KB
waweda299
Прик
08 июн 2026, 15:52
08 июн 2026, 15:52
9ddc25e
Код
Авторство
О чём код?
// prik/Application/PostIdentifyFlkService.cs using Microsoft.Extensions.Logging; using prik.Domain; namespace prik.Application { public interface IPostIdentifyFlkService { void Apply(List<PrikRow> rows); } public sealed class PostIdentifyFlkService : IPostIdentifyFlkService { private const string ChildMoCode = "070560"; private readonly ILogger<PostIdentifyFlkService> _log; public PostIdentifyFlkService(ILogger<PostIdentifyFlkService> log) { _log = log; } public void Apply(List<PrikRow> rows) { var blocked = 0; foreach (var row in rows) { if (!string.IsNullOrWhiteSpace(row.Comment)) { continue; } if (row.PersonId is null) { continue; } var lpu = (row.Lpu ?? "").Trim(); if (!string.Equals(lpu, ChildMoCode, StringComparison.OrdinalIgnoreCase)) { continue; } if (row.RsDr is null) { row.Comment = "ФЛК: невозможно проверить возраст для прикрепления к МО 070560: в РС отсутствует дата рождения."; blocked++; continue; } if (row.Lpudt is null) { row.Comment = "ФЛК: невозможно проверить возраст для прикрепления к МО 070560: отсутствует дата начала прикрепления."; blocked++; continue; } var age = GetAge(row.RsDr.Value, row.Lpudt.Value.Date); if (age >= 18) { row.Comment = $"ФЛК: прикрепление к детской МО 070560 запрещено: возраст по данным РС на дату прикрепления {row.Lpudt:yyyy-MM-dd} составляет {age} лет."; blocked++; } } _log.LogInformation("Post-identify FLK done. blocked={Blocked}", blocked); } private static int GetAge(DateTime birthDate, DateTime onDate) { var age = onDate.Year - birthDate.Year; if (onDate.Date < birthDate.Date.AddYears(age)) { age--; } return age; } } }