Commit 91e8b447 by Alex Nasyr

occupation status realized

parent 54856aa9
...@@ -24,15 +24,28 @@ namespace SocialMinistryDataExchange.Controllers { ...@@ -24,15 +24,28 @@ namespace SocialMinistryDataExchange.Controllers {
MsgData = new SMPersonDataOccupationMessage[] { MsgData = new SMPersonDataOccupationMessage[] {
new SMPersonDataOccupationMessage() { new SMPersonDataOccupationMessage() {
Person = new Person() { Person = new Person() {
rowguid_eais = "223322", rowguid_eais = "223322",
PersonDocumentSeria = "V-II", PersonDocumentSeria = "V-II",
PersonDocumentNumber = "123456", PersonDocumentNumber = "123456",
PersonDocumentDate = DateTime.Parse("2010-01-01"), PersonDocumentDate = DateTime.Parse("2010-01-01"),
PersonFamilyName = "Мкртчян", PersonFamilyName = "Мкртчян",
PersonName = "Василий", PersonName = "Василий",
PersonSurname = "Алибабаевич", PersonSurname = "Алибабаевич",
PersonBirthday = DateTime.Parse("2015-01-01"), PersonBirthday = DateTime.Parse("2015-01-01"),
}, },
PersonOccupation = new SMPersonOccupationStatus()
},
new SMPersonDataOccupationMessage() {
Person = new Person() {
rowguid_eais = "223322",
PersonDocumentSeria = "V-II",
PersonDocumentNumber = "123456",
PersonDocumentDate = DateTime.Parse("2010-01-01"),
PersonFamilyName = "Мкртчян",
PersonName = "Василий",
PersonSurname = "Алибабаевич",
PersonBirthday = DateTime.Parse("2015-01-01"),
},
PersonOccupation = new SMPersonOccupationStatus() PersonOccupation = new SMPersonOccupationStatus()
} }
} }
......
...@@ -27,7 +27,7 @@ namespace SocialMinistryDataExchange.Model { ...@@ -27,7 +27,7 @@ namespace SocialMinistryDataExchange.Model {
return Task.FromResult(status); return Task.FromResult(status);
} }
// // возвращает статус зачисления в учебное заведение
public Task<SMPersonDataRequest> GetPersonsOcupation(string OcupationRequest) { public Task<SMPersonDataRequest> GetPersonsOcupation(string OcupationRequest) {
SMPersonDataRequest Responce = new(); SMPersonDataRequest Responce = new();
try { try {
...@@ -44,7 +44,7 @@ namespace SocialMinistryDataExchange.Model { ...@@ -44,7 +44,7 @@ namespace SocialMinistryDataExchange.Model {
} }
var z = (PersonSearchAttributes)x; var z = (PersonSearchAttributes)x;
if (x < Enum.GetValues(typeof(PersonSearchAttributes)).Cast<byte>().Sum(s => s)) { if (x < Enum.GetValues(typeof(PersonSearchAttributes)).Cast<byte>().Sum(s => s)) {
Person.Person.Error = $"Parameters: [{(PersonSearchAttributes)(31 - z)}] can't be null; "; Person.Person.Error = $"Parameters: [{(PersonSearchAttributes)(Enum.GetValues(typeof(PersonSearchAttributes)).Cast<byte>().Sum(s => s) - (int)z)}] can't be null; ";
_logger.Error($"MsgID '{{@MsgID}}': {{@Error}};", Responce.MsgID, Person.Person.Error); _logger.Error($"MsgID '{{@MsgID}}': {{@Error}};", Responce.MsgID, Person.Person.Error);
} }
else { else {
...@@ -59,64 +59,128 @@ namespace SocialMinistryDataExchange.Model { ...@@ -59,64 +59,128 @@ namespace SocialMinistryDataExchange.Model {
return Task.FromResult(Responce); return Task.FromResult(Responce);
} }
private void TryFillPersonStatus(SMPersonDataOccupationMessage Person) { private void TryFillPersonStatus(SMPersonDataOccupationMessage Person) {
var person_record = (from pd in _contingentContext.ДокументЛичностиs try {
where pd.СерияДокумента.Contains(Person.Person.PersonDocumentSeria) && pd.НомерДокумента.Contains(Person.Person.PersonDocumentNumber) var person_record = (from pd in _contingentContext.ДокументЛичностиs
&& pd.ЛичностьNavigation.Фамилия.Contains(Person.Person.PersonFamilyName) && pd.ЛичностьNavigation.Имя.Contains(Person.Person.PersonName) where pd.СерияДокумента.Contains(Person.Person.PersonDocumentSeria) && pd.НомерДокумента.Contains(Person.Person.PersonDocumentNumber)
//&& (pd.ЛичностьNavigation.БезОтчества == false & pd.ЛичностьNavigation.Отчество.Contains(Person.Person.PersonSurname)) && pd.ЛичностьNavigation.Фамилия.Contains(Person.Person.PersonFamilyName) && pd.ЛичностьNavigation.Имя.Contains(Person.Person.PersonName)
//&& pd.ЛичностьNavigation.ДатаРождения == Person.Person.PersonBirthday //&& (pd.ЛичностьNavigation.БезОтчества == false & pd.ЛичностьNavigation.Отчество.Contains(Person.Person.PersonSurname))
join lp in _contingentContext.ЛичностьПодразделенияs on pd.Личность equals lp.Личность into lps //&& pd.ЛичностьNavigation.ДатаРождения == Person.Person.PersonBirthday
from lp in lps.DefaultIfEmpty() join lp in _contingentContext.ЛичностьПодразделенияs on pd.Личность equals lp.Личность into lps
join op in _contingentContext.ОбразовательнаяПрограммаОрганизацииs on lp.Организация equals op.Организация into ops from lp in lps.DefaultIfEmpty()
from op in ops.DefaultIfEmpty() join op in _contingentContext.ОбразовательнаяПрограммаОрганизацииs on lp.Организация equals op.Организация into ops
join cp in _contingentContext.ТекущаяЛичностьПодразделенияs on pd.Личность equals cp.Личность into cps from op in ops.DefaultIfEmpty()
from cp in cps.DefaultIfEmpty() join cp in _contingentContext.ТекущаяЛичностьПодразделенияs on pd.Личность equals cp.Личность into cps
orderby lp.НачальнаяДата descending from cp in cps.DefaultIfEmpty()
select new SMResponceTemp { orderby lp.НачальнаяДата descending
rowguid_eais = Person.Person.rowguid_eais select new SMResponceTemp {
// СерияДокумента, НомерДокумента, КогдаВыданДокумент, ВидУдостоверяющегоДокумента, rowguid_eais = Person.Person.rowguid_eais
// НаименованиеУдостоверяющегоДокумента, КодУдостоверяющегоДокумента // СерияДокумента, НомерДокумента, КогдаВыданДокумент, ВидУдостоверяющегоДокумента,
, СерияДокумента = Person.Person.PersonDocumentSeria, НомерДокумента = Person.Person.PersonDocumentNumber, КогдаВыданДокумент = pd.КогдаВыданДокумент, ВидУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокумента // НаименованиеУдостоверяющегоДокумента, КодУдостоверяющегоДокумента
, НаименованиеУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Наименование, КодУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Код , СерияДокумента = Person.Person.PersonDocumentSeria, НомерДокумента = Person.Person.PersonDocumentNumber, КогдаВыданДокумент = pd.КогдаВыданДокумент, ВидУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокумента
// Личность (Guid), Имя, Отчество, БезОтчества, Фамилия , НаименованиеУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Наименование, КодУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Код
, Личность = pd.Личность, Имя = pd.ЛичностьNavigation.Имя, Отчество = pd.ЛичностьNavigation.Отчество, БезОтчества = pd.ЛичностьNavigation.БезОтчества, Фамилия = pd.ЛичностьNavigation.Фамилия // Личность (Guid), Имя, Отчество, БезОтчества, Фамилия
// ДатаРождения, ТерриторияФактическогоМестаЖительстваNew (нигде не заполнено - null), Снилс , Личность = pd.Личность, Имя = pd.ЛичностьNavigation.Имя, Отчество = pd.ЛичностьNavigation.Отчество, БезОтчества = pd.ЛичностьNavigation.БезОтчества == null ? false : true, Фамилия = pd.ЛичностьNavigation.Фамилия
, ДатаРождения = pd.ЛичностьNavigation.ДатаРождения, ТерриторияФактическогоМестаЖительстваNew = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNew, Снилс = pd.ЛичностьNavigation.Снилс // ДатаРождения, ТерриторияФактическогоМестаЖительстваNew (нигде не заполнено - null), Снилс
// ТерриторияShortname , ДатаРождения = pd.ЛичностьNavigation.ДатаРождения, ТерриторияФактическогоМестаЖительстваNew = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNew, Снилс = pd.ЛичностьNavigation.Снилс
, ТерриторияShortname = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNewNavigation.ТерриторияNavigation.Наименование // ТерриторияShortname
// ПриказЗачисления, ПриказОтчисления, НачальнаяДата, КонечнаяДата, Подразделение (Guid), Организация (Guid) , ТерриторияShortname = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNewNavigation.ТерриторияNavigation.Наименование
, ПриказЗачисления = lp.ПриказЗачисления, ПриказОтчисления = lp.ПриказОтчисления, НачальнаяДата = lp.НачальнаяДата, КонечнаяДата = lp.КонечнаяДата, Подразделение = lp.Подразделение, Организация = lp.Организация // ПриказЗачисления, ПриказОтчисления, НачальнаяДата, КонечнаяДата, Подразделение (Guid), Организация (Guid)
// ТипОрганизации, ТипОрганизацииКод, , ПриказЗачисления = lp.ПриказЗачисления, ПриказОтчисления = lp.ПриказОтчисления, НачальнаяДата = lp.НачальнаяДата, КонечнаяДата = lp.КонечнаяДата, Подразделение = lp.Подразделение, Организация = lp.Организация
// ТипОрганизацииНаименование // ТипОрганизации, ТипОрганизацииКод,
, ТипОрганизации = lp.ОрганизацияNavigation.ТипОрганизации, ТипОрганизацииКод = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Код // ТипОрганизацииНаименование
, ТипОрганизацииНаименование = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Наименование , ТипОрганизации = lp.ОрганизацияNavigation.ТипОрганизации, ТипОрганизацииКод = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Код
// ПолноеНаименованиеОрганизации, ВидУчредителя (Guid), ВидУчредителяКод , ТипОрганизацииНаименование = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Наименование
, ПолноеНаименованиеОрганизации = lp.ОрганизацияNavigation.ПолноеНаименование, ВидУчредителя = lp.ОрганизацияNavigation.ВидУчредителя, ВидУчредителяКод = lp.ОрганизацияNavigation.ВидУчредителяNavigation.Код // ПолноеНаименованиеОрганизации, ВидУчредителя (Guid), ВидУчредителяКод
// ОбразовательнаяПрограммаТип (Guid), ОбразовательнаяПрограммаКод , ПолноеНаименованиеОрганизации = lp.ОрганизацияNavigation.ПолноеНаименование, ВидУчредителя = lp.ОрганизацияNavigation.ВидУчредителя, ВидУчредителяКод = lp.ОрганизацияNavigation.ВидУчредителяNavigation.Код
, ОбразовательнаяПрограммаТип = op.ТипОп, ОбразовательнаяПрограммаКод = op.ТипОпNavigation.Код // ОбразовательнаяПрограммаТип (Guid), ОбразовательнаяПрограммаКод
// ФормаОбученияКод, ФормаОбученияНаименование , ОбразовательнаяПрограммаТип = op.ТипОп, ОбразовательнаяПрограммаКод = op.ТипОпNavigation.Код
, ФормаОбученияКод = cp.ФормаОбученияNavigation.Код, ФормаОбученияНаименование = cp.ФормаОбученияNavigation.Наименование // ФормаОбученияКод, ФормаОбученияНаименование
}).First(); , ФормаОбученияКод = cp.ФормаОбученияNavigation.Код, ФормаОбученияНаименование = cp.ФормаОбученияNavigation.Наименование
if (person_record.Фамилия != Person.Person.PersonFamilyName || person_record.Имя != Person.Person.PersonName }).First();
|| (person_record.БезОтчества != false && person_record.Отчество != Person.Person.PersonSurname
|| person_record.ДатаРождения != Person.Person.PersonBirthday)) { if (person_record.Фамилия != Person.Person.PersonFamilyName || person_record.Имя != Person.Person.PersonName
Person.Person.Error += "Personal information Error;"; || (person_record.БезОтчества == true & person_record.Отчество != Person.Person.PersonSurname
_logger.Error($"Person '{{@Person}}': {{@Error}};", Person.Person, "Personal information Error"); || person_record.ДатаРождения != Person.Person.PersonBirthday)) {
Person.Person.PersonFamilyName = person_record.Фамилия; Person.Person.Error += "Personal information Error;";
Person.Person.PersonName = person_record.Имя; _logger.Error($"Person '{{@Person}}': {{@Error}};", Person.Person, "Personal information Error");
Person.Person.PersonSurname = person_record.Отчество; Person.Person.PersonFamilyName = person_record.Фамилия;
Person.Person.PersonBirthday = person_record.ДатаРождения; Person.Person.PersonName = person_record.Имя;
Person.Person.PersonSurname = person_record.Отчество;
Person.Person.PersonBirthday = person_record.ДатаРождения;
}
if (person_record.СерияДокумента != Person.Person.PersonDocumentSeria || person_record.НомерДокумента != Person.Person.PersonDocumentNumber || person_record.КогдаВыданДокумент != Person.Person.PersonDocumentDate) {
Person.Person.Error += "Personal document Error;";
_logger.Error($"Person '{{@Person}}': {{@Error}};", Person.Person, "Personal document Error");
Person.Person.PersonDocumentSeria = person_record.СерияДокумента;
Person.Person.PersonDocumentNumber = person_record.НомерДокумента;
Person.Person.PersonDocumentDate = person_record.КогдаВыданДокумент;
Person.Person.PersonDocumentType = person_record.КодУдостоверяющегоДокумента == 12 || person_record.КодУдостоверяющегоДокумента == 13 || person_record.КодУдостоверяющегоДокумента == 21 ? 1
: person_record.КодУдостоверяющегоДокумента == 11 || person_record.КодУдостоверяющегоДокумента == 31 ? 2 : null;
Person.Person.PersonSnils = person_record.Снилс;
}
if (string.IsNullOrEmpty(Person.Person.Error)) {
Person.Person.rowguid_contingent = person_record.Личность.ToString();
Person.PersonOccupation.Status = person_record.ПриказОтчисления == null ? person_record.ПриказЗачисления == null ? "3" : "1" : "2";
Person.PersonOccupation.StatusDate = Person.PersonOccupation.Status switch {
"1" => person_record.НачальнаяДата,
"2" => person_record.КонечнаяДата,
_ => DateTime.Now,
};
if (Person.PersonOccupation.Status == "1") {
Person.PersonOccupation.FounderType = person_record.ВидУчредителяКод.ToString() ?? String.Empty;
Person.PersonOccupation.OrganizationType = GetOrganizationType(_contingentContext, person_record.ТипОрганизации).ToString() switch {
"29025A0D-7C7F-457B-9E14-0A6C16CBF94D" => "1",
"CF85F418-FFAD-4C86-8937-B2D4FBF4B661" => "2",
"1EB33F46-5A7C-4117-97EB-D3DFE4C3A7B2" => "3",
"BB88E168-D124-462B-8870-2D9A35755561" => "4",
_ => "5",
};
Person.PersonOccupation.EducationProgram = GetProgramType(_contingentContext, person_record.ОбразовательнаяПрограммаТип).ToString() switch {
"5BE7BD7C-1202-45E2-8E9E-7247070EA7B6" => "1",
"C09D82B4-CC8D-4EB8-9703-C95AEA53E044" => "2",
"8E674FDF-32CF-4080-B062-85C41A067A6F" => "3",
_ => "4",
};
Person.PersonOccupation.EducationForm = person_record.ФормаОбученияКод switch {
11 => "1",
12 => "2",
13 => "3",
21 => "4",
22 => "5",
_ => String.Empty
};
}
}
}
catch (Exception ex) {
Person.Person.Error += "Person not found;";
_logger.Error($"Person '{{@Person}}': {{@Error}};", Person.Person, "Person not found");
}
}
private static Guid? GetOrganizationType(IContingentContext context, Guid? OrgTypeUid) {
if (OrgTypeUid == null) {
return null;
} }
if (person_record.СерияДокумента != Person.Person.PersonDocumentSeria || person_record.НомерДокумента != Person.Person.PersonDocumentNumber || person_record.КогдаВыданДокумент != Person.Person.PersonDocumentDate) { var type = (from too in context.ТипОбразовательнойОрганизацииs where too.PrimaryKey == OrgTypeUid select too).First();
Person.Person.Error += "Personal document Error;";
_logger.Error($"Person '{{@Person}}': {{@Error}};", Person.Person, "Personal document Error"); return type.Иерархия == null ? type.PrimaryKey : GetOrganizationType(context, type.Иерархия);
Person.Person.PersonDocumentSeria = person_record.СерияДокумента; }
Person.Person.PersonDocumentNumber = person_record.НомерДокумента; private static Guid? GetProgramType(IContingentContext context, Guid? ProgramTypeUid) {
Person.Person.PersonDocumentDate = person_record.КогдаВыданДокумент; if (ProgramTypeUid == null) {
return null;
} }
if (string.IsNullOrEmpty(Person.Person.Error)) { // выделяем ДОШКОЛЬНУЮ в отдельный тип
int i = 0; if (ProgramTypeUid.ToString() == "5BE7BD7C-1202-45E2-8E9E-7247070EA7B6") {
return ProgramTypeUid;
} }
var type = (from opt in context.ТипОбразовательнойПрограммыs where opt.PrimaryKey == ProgramTypeUid select opt).First();
return type.Иерархия == null ? type.PrimaryKey : GetProgramType(context, type.Иерархия);
} }
public Task<List<SMData>> GetPersonByDoc(string document) { public Task<List<SMData>> GetPersonByDoc(string document) {
...@@ -169,7 +233,7 @@ namespace SocialMinistryDataExchange.Model { ...@@ -169,7 +233,7 @@ namespace SocialMinistryDataExchange.Model {
catch (Exception ex) { catch (Exception ex) {
_logger.Error($"{ex.TargetSite.Name}; {ex.Message}; {{@Person}}", doc.Person); _logger.Error($"{ex.TargetSite.Name}; {ex.Message}; {{@Person}}", doc.Person);
_logger.Information($"Creating empty Person for doc.seria={doc.Person.PersonDocumentSeria}; doc.number={doc.Person.PersonDocumentNumber}"); _logger.Information($"Creating empty Person for doc.seria={doc.Person.PersonDocumentSeria}; doc.number={doc.Person.PersonDocumentNumber}");
responce_record = FormatResponce(_contingentContext, new SMResponceTemp() { rowguid_eais = doc.Person.rowguid_eais, СерияДокумента = doc.Person.PersonDocumentSeria, НомерДокумента = doc.Person.PersonDocumentNumber }); responce_record = FormatResponce(_contingentContext, new SMResponceTemp() { rowguid_eais = doc.Person.rowguid_eais, СерияДокумента = doc.Person.PersonDocumentSeria, НомерДокумента = doc.Person.PersonDocumentNumber });
} }
responce.Add(responce_record); responce.Add(responce_record);
...@@ -177,29 +241,6 @@ namespace SocialMinistryDataExchange.Model { ...@@ -177,29 +241,6 @@ namespace SocialMinistryDataExchange.Model {
return Task.FromResult(responce); return Task.FromResult(responce);
} }
private static Guid? GetOrganizationType(IContingentContext context, Guid? OrgTypeUid) {
if (OrgTypeUid == null) {
return null;
}
var type = (from too in context.ТипОбразовательнойОрганизацииs where too.PrimaryKey == OrgTypeUid select too).First();
return type.Иерархия == null ? type.PrimaryKey : GetOrganizationType(context, type.Иерархия);
}
private static Guid? GetProgramType(IContingentContext context, Guid? ProgramTypeUid) {
if (ProgramTypeUid == null) {
return null;
}
// выделяем ДОШКОЛЬНУЮ в отдельный тип
if (ProgramTypeUid.ToString() == "5BE7BD7C-1202-45E2-8E9E-7247070EA7B6") {
return ProgramTypeUid;
}
var type = (from opt in context.ТипОбразовательнойПрограммыs where opt.PrimaryKey == ProgramTypeUid select opt).First();
return type.Иерархия == null ? type.PrimaryKey : GetProgramType(context, type.Иерархия);
}
private static SMData FormatResponce(IContingentContext context, SMResponceTemp record) { private static SMData FormatResponce(IContingentContext context, SMResponceTemp record) {
SMData responce = new(); SMData responce = new();
if (record.Личность != Guid.Empty) { // записи найдены if (record.Личность != Guid.Empty) { // записи найдены
......
...@@ -36,7 +36,7 @@ namespace SocialMinistryDataExchange.Model { ...@@ -36,7 +36,7 @@ namespace SocialMinistryDataExchange.Model {
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 int 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; }
......
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