Commit fc5ed2c5 by AlexNasyr

multiple persons request realized

parent 5fe0353f
...@@ -12,23 +12,29 @@ namespace SocialMinistryDataExchange.Controllers { ...@@ -12,23 +12,29 @@ namespace SocialMinistryDataExchange.Controllers {
_repository = repository; _repository = repository;
} }
// тестовый запрос с фиксированным документом личности // тестовый запрос с фиксированным документом личности
[HttpGet] [HttpGet]
[Route("[controller]/getpersonFixDoc")] [Route("[controller]/getpersonFixDoc")]
public async Task<SMResponce> GetPersonFixDoc() { public async Task<List<SMResponce>> GetPersonFixDoc() {
var result = await _repository.GetPersonByDoc(JsonSerializer.Serialize(new SMPersonRequest() { rowguid_eais = "223322", document_seria = "V-II", document_number = "123456" })); var result = await _repository.GetPersonByDoc(JsonSerializer.Serialize(new List<SMPersonRequest>() { new SMPersonRequest() { rowguid_eais = "223322", document_seria = "V-II", document_number = "123456" } }));
//var result = await _repository.GetPersonByDoc(JsonSerializer.Serialize(new List<SMPersonRequest>() { new SMPersonRequest() { rowguid_eais = "223322", document_seria = "V-II", document_number = "123456" }, new SMPersonRequest() { rowguid_eais = "322223", document_seria = "1234", document_number = "123456" } }));
return result; return result;
} }
// тестовый запрос для получения json формата
[HttpGet]
[Route("[controller]/getSMPersonNewDataRequest")]
public async Task<SMPersonNewDataRequest> GetSMPersonNewDataRequest() {
return new SMPersonNewDataRequest();
}
// запрос по серии/номеру документа личности // запрос по серии/номеру документа личности
//[HttpPost] //[HttpPost]
[HttpGet] [HttpGet]
[Route("[controller]/getpersonByDoc/{Rowguid}/{Seria}/{Number}")] [Route("[controller]/getpersonByDoc/{Rowguid}/{Seria}/{Number}")]
public async Task<SMResponce> GetPersonByDoc(string Rowguid, string Seria, string Number) { public async Task<List<SMResponce>> GetPersonByDoc(string Rowguid, string Seria, string Number) {
var result = await _repository.GetPersonByDoc(JsonSerializer.Serialize(new SMPersonRequest() { rowguid_eais = Rowguid, document_seria = Seria, document_number = Number })); var result = await _repository.GetPersonByDoc(JsonSerializer.Serialize(new SMPersonRequest() { rowguid_eais = Rowguid, document_seria = Seria, document_number = Number }));
return result; return result;
} }
// запрос статуса нуждаемости по guid личности // запрос статуса нуждаемости по guid личности
//[HttpPost] //[HttpPost]
[HttpGet] [HttpGet]
...@@ -38,10 +44,5 @@ namespace SocialMinistryDataExchange.Controllers { ...@@ -38,10 +44,5 @@ namespace SocialMinistryDataExchange.Controllers {
return result; return result;
} }
[HttpGet]
[Route("[controller]/getSMPersonNewDataRequest")]
public async Task<SMPersonNewDataRequest> GetSMPersonNewDataRequest() {
return new SMPersonNewDataRequest();
}
} }
} }
...@@ -3,7 +3,7 @@ using System.Threading.Tasks; ...@@ -3,7 +3,7 @@ using System.Threading.Tasks;
namespace SocialMinistryDataExchange.Model { namespace SocialMinistryDataExchange.Model {
public interface ISMRepository { public interface ISMRepository {
Task<SMResponce> GetPersonByDoc(string Document); Task<List<SMResponce>> GetPersonByDoc(string Document);
Task<SMDefenceDemandResponce> GetPersonDefenceDemandByID(string PersonID); Task<SMDefenceDemandResponce> GetPersonDefenceDemandByID(string PersonID);
} }
} }
...@@ -21,50 +21,56 @@ namespace SocialMinistryDataExchange.Model { ...@@ -21,50 +21,56 @@ namespace SocialMinistryDataExchange.Model {
return Task.FromResult(status); return Task.FromResult(status);
} }
public Task<SMResponce> GetPersonByDoc(string document) { public Task<List<SMResponce>> GetPersonByDoc(string document) {
var doc = JsonSerializer.Deserialize<SMPersonRequest>(document); var docs = JsonSerializer.Deserialize<List<SMPersonRequest>>(document);
try { List <SMResponce> responce = new();
var record = (from pd in _contingentContext.ДокументЛичностиs foreach (SMPersonRequest doc in docs) {
where pd.СерияДокумента == doc.document_seria && pd.НомерДокумента == doc.document_number SMResponce responce_record = new SMResponce();
join lp in _contingentContext.ЛичностьПодразделенияs on pd.Личность equals lp.Личность into lps try {
from lp in lps.DefaultIfEmpty() var record = (from pd in _contingentContext.ДокументЛичностиs
join op in _contingentContext.ОбразовательнаяПрограммаОрганизацииs on lp.Организация equals op.Организация into ops where pd.СерияДокумента == doc.document_seria && pd.НомерДокумента == doc.document_number
from op in ops.DefaultIfEmpty() join lp in _contingentContext.ЛичностьПодразделенияs on pd.Личность equals lp.Личность into lps
join cp in _contingentContext.ТекущаяЛичностьПодразделенияs on pd.Личность equals cp.Личность into cps from lp in lps.DefaultIfEmpty()
from cp in cps.DefaultIfEmpty() join op in _contingentContext.ОбразовательнаяПрограммаОрганизацииs on lp.Организация equals op.Организация into ops
orderby lp.НачальнаяДата descending from op in ops.DefaultIfEmpty()
select new SMResponceTemp { join cp in _contingentContext.ТекущаяЛичностьПодразделенияs on pd.Личность equals cp.Личность into cps
rowguid_eais = doc.rowguid_eais from cp in cps.DefaultIfEmpty()
// СерияДокумента, НомерДокумента, КогдаВыданДокумент, ВидУдостоверяющегоДокумента, НаименованиеУдостоверяющегоДокумента, КодУдостоверяющегоДокумента orderby lp.НачальнаяДата descending
, СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number, КогдаВыданДокумент = pd.КогдаВыданДокумент, ВидУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокумента, НаименованиеУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Наименование, КодУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Код select new SMResponceTemp {
// Личность (Guid), Имя, Отчество, БезОтчества, Фамилия rowguid_eais = doc.rowguid_eais
, Личность = pd.Личность, Имя = pd.ЛичностьNavigation.Имя, Отчество = pd.ЛичностьNavigation.Отчество, БезОтчества = pd.ЛичностьNavigation.БезОтчества, Фамилия = pd.ЛичностьNavigation.Фамилия // СерияДокумента, НомерДокумента, КогдаВыданДокумент, ВидУдостоверяющегоДокумента, НаименованиеУдостоверяющегоДокумента, КодУдостоверяющегоДокумента
// ДатаРождения, ТерриторияФактическогоМестаЖительстваNew (нигде не заполнено - null), Снилс , СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number, КогдаВыданДокумент = pd.КогдаВыданДокумент, ВидУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокумента, НаименованиеУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Наименование, КодУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Код
, ДатаРождения = pd.ЛичностьNavigation.ДатаРождения, ТерриторияФактическогоМестаЖительстваNew = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNew, Снилс = pd.ЛичностьNavigation.Снилс // Личность (Guid), Имя, Отчество, БезОтчества, Фамилия
// ТерриторияShortname , Личность = pd.Личность, Имя = pd.ЛичностьNavigation.Имя, Отчество = pd.ЛичностьNavigation.Отчество, БезОтчества = pd.ЛичностьNavigation.БезОтчества, Фамилия = pd.ЛичностьNavigation.Фамилия
, ТерриторияShortname = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNewNavigation.ТерриторияNavigation.Наименование // ДатаРождения, ТерриторияФактическогоМестаЖительстваNew (нигде не заполнено - null), Снилс
// ПриказЗачисления, ПриказОтчисления, НачальнаяДата, КонечнаяДата, Подразделение (Guid), Организация (Guid) , ДатаРождения = pd.ЛичностьNavigation.ДатаРождения, ТерриторияФактическогоМестаЖительстваNew = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNew, Снилс = pd.ЛичностьNavigation.Снилс
, ПриказЗачисления = lp.ПриказЗачисления, ПриказОтчисления = lp.ПриказОтчисления, НачальнаяДата = lp.НачальнаяДата, КонечнаяДата = lp.КонечнаяДата, Подразделение = lp.Подразделение, Организация = lp.Организация // ТерриторияShortname
// ТипОрганизации, ТипОрганизацииКод, ТипОрганизацииНаименование , ТерриторияShortname = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNewNavigation.ТерриторияNavigation.Наименование
, ТипОрганизации = lp.ОрганизацияNavigation.ТипОрганизации, ТипОрганизацииКод = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Код, ТипОрганизацииНаименование = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Наименование // ПриказЗачисления, ПриказОтчисления, НачальнаяДата, КонечнаяДата, Подразделение (Guid), Организация (Guid)
// ПолноеНаименованиеОрганизации, ВидУчредителя (Guid), ВидУчредителяКод , ПриказЗачисления = lp.ПриказЗачисления, ПриказОтчисления = lp.ПриказОтчисления, НачальнаяДата = lp.НачальнаяДата, КонечнаяДата = lp.КонечнаяДата, Подразделение = lp.Подразделение, Организация = lp.Организация
, ПолноеНаименованиеОрганизации = lp.ОрганизацияNavigation.ПолноеНаименование, ВидУчредителя = lp.ОрганизацияNavigation.ВидУчредителя, ВидУчредителяКод = lp.ОрганизацияNavigation.ВидУчредителяNavigation.Код // ТипОрганизации, ТипОрганизацииКод, ТипОрганизацииНаименование
// ОбразовательнаяПрограммаТип (Guid), ОбразовательнаяПрограммаКод , ТипОрганизации = lp.ОрганизацияNavigation.ТипОрганизации, ТипОрганизацииКод = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Код, ТипОрганизацииНаименование = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Наименование
, ОбразовательнаяПрограммаТип = op.ТипОп, ОбразовательнаяПрограммаКод = op.ТипОпNavigation.Код // ПолноеНаименованиеОрганизации, ВидУчредителя (Guid), ВидУчредителяКод
// ФормаОбученияКод, ФормаОбученияНаименование , ПолноеНаименованиеОрганизации = lp.ОрганизацияNavigation.ПолноеНаименование, ВидУчредителя = lp.ОрганизацияNavigation.ВидУчредителя, ВидУчредителяКод = lp.ОрганизацияNavigation.ВидУчредителяNavigation.Код
, ФормаОбученияКод = cp.ФормаОбученияNavigation.Код, ФормаОбученияНаименование = cp.ФормаОбученияNavigation.Наименование // ОбразовательнаяПрограммаТип (Guid), ОбразовательнаяПрограммаКод
}).First(); , ОбразовательнаяПрограммаТип = op.ТипОп, ОбразовательнаяПрограммаКод = op.ТипОпNavigation.Код
// записи не найдены // ФормаОбученияКод, ФормаОбученияНаименование
if (record == null) { , ФормаОбученияКод = cp.ФормаОбученияNavigation.Код, ФормаОбученияНаименование = cp.ФормаОбученияNavigation.Наименование
record = new SMResponceTemp() { rowguid_eais = doc.rowguid_eais, СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number }; }).First();
// записи не найдены
if (record == null) {
record = new SMResponceTemp() { rowguid_eais = doc.rowguid_eais, СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number };
}
responce_record = FormatResponce(_contingentContext, record);
} }
var responce = FormatResponce(_contingentContext, record); catch (Exception ex) {
return Task.FromResult(responce); // TODO log exception
} responce_record = FormatResponce(_contingentContext, new SMResponceTemp() { rowguid_eais = doc.rowguid_eais, СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number });
catch (Exception ex) { }
// TODO log exception responce.Add(responce_record);
return Task.FromResult(FormatResponce(_contingentContext, new SMResponceTemp() { rowguid_eais = doc.rowguid_eais, СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number }));
} }
return Task.FromResult(responce);
} }
static Guid? GetOrganizationType(IContingentContext context, Guid? OrgTypeUid) { static Guid? GetOrganizationType(IContingentContext context, Guid? OrgTypeUid) {
......
...@@ -12,24 +12,29 @@ namespace SocialMinistryDataExchange.Model { ...@@ -12,24 +12,29 @@ namespace SocialMinistryDataExchange.Model {
public string MsgID { get; set; } public string MsgID { get; set; }
public DateTime MsgDataTime { get; set; } public DateTime MsgDataTime { get; set; }
public string? MsgPriority { get; set; } public string? MsgPriority { get; set; }
public CocialDefenceStatusMessage MsgData { get; set; }
}
public class CocialDefenceStatusMessage {
public Person Person { get; set; } public Person Person { get; set; }
public string PersonStatus { get; set; } public PersonCocialDefenceStatus PersonStatus { get; set; }
public Person[]? Relatives { get; set; }
}
public class PersonCocialDefenceStatus {
public int Status { get; set; }
public DateTime PersonStatusStartDate { get; set; } public DateTime PersonStatusStartDate { get; set; }
public DateTime PersonStatusEndDate { get; set; } public DateTime PersonStatusEndDate { get; set; }
public Person[] Relatives { get; set; } public int? FamilyPersonsCount { get; set; }
public int FamilyPersonsCount { get; set; } public double? AvgIncome { get; set; }
public double AvgIncome { get; set; } public double? MinIncome { get; set; }
public double MinIncome { get; set; }
public string Territory { get; set; }
} }
public class Person { public class Person {
public string rowguid_eais { get; set; } public string rowguid_eais { get; set; }
public string? rowguid_contingent { get; set; } public string? rowguid_contingent { get; set; }
public string PersonFamilyName { get; set; } public string PersonFamilyName { get; set; }
public string PersonName { get; set; } public string PersonName { get; set; }
public string PersonSurname { get; set; } public string? PersonSurname { get; set; }
public DateTime PersonBirthday { get; set; } public DateTime PersonBirthday { get; set; }
public string PersonDocumentType { get; set; } public int PersonDocumentType { get; set; }
public string PersonDocumentSeria { get; set; } public string PersonDocumentSeria { get; set; }
public string PersonDocumentNumber { get; set; } public string PersonDocumentNumber { get; set; }
public DateTime PersonDocumentDate { get; set; } public DateTime PersonDocumentDate { get; set; }
...@@ -37,5 +42,7 @@ namespace SocialMinistryDataExchange.Model { ...@@ -37,5 +42,7 @@ namespace SocialMinistryDataExchange.Model {
public string? PersonAddress { get; set; } public string? PersonAddress { get; set; }
public string? DependentPerson { get; set; } public string? DependentPerson { get; set; }
public string? DependenceType { get; set; } public string? DependenceType { get; set; }
public string? Territory { get; set; }
} }
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment