Commit 91e8b447 by Alex Nasyr

occupation status realized

parent 54856aa9
......@@ -24,15 +24,28 @@ namespace SocialMinistryDataExchange.Controllers {
MsgData = new SMPersonDataOccupationMessage[] {
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"),
},
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()
},
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()
}
}
......
......@@ -27,7 +27,7 @@ namespace SocialMinistryDataExchange.Model {
return Task.FromResult(status);
}
//
// возвращает статус зачисления в учебное заведение
public Task<SMPersonDataRequest> GetPersonsOcupation(string OcupationRequest) {
SMPersonDataRequest Responce = new();
try {
......@@ -44,7 +44,7 @@ namespace SocialMinistryDataExchange.Model {
}
var z = (PersonSearchAttributes)x;
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);
}
else {
......@@ -59,64 +59,128 @@ namespace SocialMinistryDataExchange.Model {
return Task.FromResult(Responce);
}
private void TryFillPersonStatus(SMPersonDataOccupationMessage Person) {
var person_record = (from pd in _contingentContext.ДокументЛичностиs
where pd.СерияДокумента.Contains(Person.Person.PersonDocumentSeria) && pd.НомерДокумента.Contains(Person.Person.PersonDocumentNumber)
&& pd.ЛичностьNavigation.Фамилия.Contains(Person.Person.PersonFamilyName) && pd.ЛичностьNavigation.Имя.Contains(Person.Person.PersonName)
//&& (pd.ЛичностьNavigation.БезОтчества == false & pd.ЛичностьNavigation.Отчество.Contains(Person.Person.PersonSurname))
//&& pd.ЛичностьNavigation.ДатаРождения == Person.Person.PersonBirthday
join lp in _contingentContext.ЛичностьПодразделенияs on pd.Личность equals lp.Личность into lps
from lp in lps.DefaultIfEmpty()
join op in _contingentContext.ОбразовательнаяПрограммаОрганизацииs on lp.Организация equals op.Организация into ops
from op in ops.DefaultIfEmpty()
join cp in _contingentContext.ТекущаяЛичностьПодразделенияs on pd.Личность equals cp.Личность into cps
from cp in cps.DefaultIfEmpty()
orderby lp.НачальнаяДата descending
select new SMResponceTemp {
rowguid_eais = Person.Person.rowguid_eais
// СерияДокумента, НомерДокумента, КогдаВыданДокумент, ВидУдостоверяющегоДокумента,
// НаименованиеУдостоверяющегоДокумента, КодУдостоверяющегоДокумента
, СерияДокумента = Person.Person.PersonDocumentSeria, НомерДокумента = Person.Person.PersonDocumentNumber, КогдаВыданДокумент = pd.КогдаВыданДокумент, ВидУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокумента
, НаименованиеУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Наименование, КодУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Код
// Личность (Guid), Имя, Отчество, БезОтчества, Фамилия
, Личность = pd.Личность, Имя = pd.ЛичностьNavigation.Имя, Отчество = pd.ЛичностьNavigation.Отчество, БезОтчества = pd.ЛичностьNavigation.БезОтчества, Фамилия = pd.ЛичностьNavigation.Фамилия
// ДатаРождения, ТерриторияФактическогоМестаЖительстваNew (нигде не заполнено - null), Снилс
, ДатаРождения = pd.ЛичностьNavigation.ДатаРождения, ТерриторияФактическогоМестаЖительстваNew = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNew, Снилс = pd.ЛичностьNavigation.Снилс
// ТерриторияShortname
, ТерриторияShortname = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNewNavigation.ТерриторияNavigation.Наименование
// ПриказЗачисления, ПриказОтчисления, НачальнаяДата, КонечнаяДата, Подразделение (Guid), Организация (Guid)
, ПриказЗачисления = lp.ПриказЗачисления, ПриказОтчисления = lp.ПриказОтчисления, НачальнаяДата = lp.НачальнаяДата, КонечнаяДата = lp.КонечнаяДата, Подразделение = lp.Подразделение, Организация = lp.Организация
// ТипОрганизации, ТипОрганизацииКод,
// ТипОрганизацииНаименование
, ТипОрганизации = lp.ОрганизацияNavigation.ТипОрганизации, ТипОрганизацииКод = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Код
, ТипОрганизацииНаименование = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Наименование
// ПолноеНаименованиеОрганизации, ВидУчредителя (Guid), ВидУчредителяКод
, ПолноеНаименованиеОрганизации = lp.ОрганизацияNavigation.ПолноеНаименование, ВидУчредителя = lp.ОрганизацияNavigation.ВидУчредителя, ВидУчредителяКод = lp.ОрганизацияNavigation.ВидУчредителяNavigation.Код
// ОбразовательнаяПрограммаТип (Guid), ОбразовательнаяПрограммаКод
, ОбразовательнаяПрограммаТип = op.ТипОп, ОбразовательнаяПрограммаКод = op.ТипОпNavigation.Код
// ФормаОбученияКод, ФормаОбученияНаименование
, ФормаОбученияКод = cp.ФормаОбученияNavigation.Код, ФормаОбученияНаименование = cp.ФормаОбученияNavigation.Наименование
}).First();
if (person_record.Фамилия != Person.Person.PersonFamilyName || person_record.Имя != Person.Person.PersonName
|| (person_record.БезОтчества != false && person_record.Отчество != Person.Person.PersonSurname
|| person_record.ДатаРождения != Person.Person.PersonBirthday)) {
Person.Person.Error += "Personal information Error;";
_logger.Error($"Person '{{@Person}}': {{@Error}};", Person.Person, "Personal information Error");
Person.Person.PersonFamilyName = person_record.Фамилия;
Person.Person.PersonName = person_record.Имя;
Person.Person.PersonSurname = person_record.Отчество;
Person.Person.PersonBirthday = person_record.ДатаРождения;
try {
var person_record = (from pd in _contingentContext.ДокументЛичностиs
where pd.СерияДокумента.Contains(Person.Person.PersonDocumentSeria) && pd.НомерДокумента.Contains(Person.Person.PersonDocumentNumber)
&& pd.ЛичностьNavigation.Фамилия.Contains(Person.Person.PersonFamilyName) && pd.ЛичностьNavigation.Имя.Contains(Person.Person.PersonName)
//&& (pd.ЛичностьNavigation.БезОтчества == false & pd.ЛичностьNavigation.Отчество.Contains(Person.Person.PersonSurname))
//&& pd.ЛичностьNavigation.ДатаРождения == Person.Person.PersonBirthday
join lp in _contingentContext.ЛичностьПодразделенияs on pd.Личность equals lp.Личность into lps
from lp in lps.DefaultIfEmpty()
join op in _contingentContext.ОбразовательнаяПрограммаОрганизацииs on lp.Организация equals op.Организация into ops
from op in ops.DefaultIfEmpty()
join cp in _contingentContext.ТекущаяЛичностьПодразделенияs on pd.Личность equals cp.Личность into cps
from cp in cps.DefaultIfEmpty()
orderby lp.НачальнаяДата descending
select new SMResponceTemp {
rowguid_eais = Person.Person.rowguid_eais
// СерияДокумента, НомерДокумента, КогдаВыданДокумент, ВидУдостоверяющегоДокумента,
// НаименованиеУдостоверяющегоДокумента, КодУдостоверяющегоДокумента
, СерияДокумента = Person.Person.PersonDocumentSeria, НомерДокумента = Person.Person.PersonDocumentNumber, КогдаВыданДокумент = pd.КогдаВыданДокумент, ВидУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокумента
, НаименованиеУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Наименование, КодУдостоверяющегоДокумента = pd.ВидУдостоверяющегоДокументаNavigation.Код
// Личность (Guid), Имя, Отчество, БезОтчества, Фамилия
, Личность = pd.Личность, Имя = pd.ЛичностьNavigation.Имя, Отчество = pd.ЛичностьNavigation.Отчество, БезОтчества = pd.ЛичностьNavigation.БезОтчества == null ? false : true, Фамилия = pd.ЛичностьNavigation.Фамилия
// ДатаРождения, ТерриторияФактическогоМестаЖительстваNew (нигде не заполнено - null), Снилс
, ДатаРождения = pd.ЛичностьNavigation.ДатаРождения, ТерриторияФактическогоМестаЖительстваNew = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNew, Снилс = pd.ЛичностьNavigation.Снилс
// ТерриторияShortname
, ТерриторияShortname = pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNewNavigation.ТерриторияNavigation.Наименование
// ПриказЗачисления, ПриказОтчисления, НачальнаяДата, КонечнаяДата, Подразделение (Guid), Организация (Guid)
, ПриказЗачисления = lp.ПриказЗачисления, ПриказОтчисления = lp.ПриказОтчисления, НачальнаяДата = lp.НачальнаяДата, КонечнаяДата = lp.КонечнаяДата, Подразделение = lp.Подразделение, Организация = lp.Организация
// ТипОрганизации, ТипОрганизацииКод,
// ТипОрганизацииНаименование
, ТипОрганизации = lp.ОрганизацияNavigation.ТипОрганизации, ТипОрганизацииКод = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Код
, ТипОрганизацииНаименование = lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Наименование
// ПолноеНаименованиеОрганизации, ВидУчредителя (Guid), ВидУчредителяКод
, ПолноеНаименованиеОрганизации = lp.ОрганизацияNavigation.ПолноеНаименование, ВидУчредителя = lp.ОрганизацияNavigation.ВидУчредителя, ВидУчредителяКод = lp.ОрганизацияNavigation.ВидУчредителяNavigation.Код
// ОбразовательнаяПрограммаТип (Guid), ОбразовательнаяПрограммаКод
, ОбразовательнаяПрограммаТип = op.ТипОп, ОбразовательнаяПрограммаКод = op.ТипОпNavigation.Код
// ФормаОбученияКод, ФормаОбученияНаименование
, ФормаОбученияКод = cp.ФормаОбученияNavigation.Код, ФормаОбученияНаименование = cp.ФормаОбученияNavigation.Наименование
}).First();
if (person_record.Фамилия != Person.Person.PersonFamilyName || person_record.Имя != Person.Person.PersonName
|| (person_record.БезОтчества == true & person_record.Отчество != Person.Person.PersonSurname
|| person_record.ДатаРождения != Person.Person.PersonBirthday)) {
Person.Person.Error += "Personal information Error;";
_logger.Error($"Person '{{@Person}}': {{@Error}};", Person.Person, "Personal information Error");
Person.Person.PersonFamilyName = 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) {
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.КогдаВыданДокумент;
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 (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) {
......@@ -169,7 +233,7 @@ namespace SocialMinistryDataExchange.Model {
catch (Exception ex) {
_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}");
responce_record = FormatResponce(_contingentContext, new SMResponceTemp() { rowguid_eais = doc.Person.rowguid_eais, СерияДокумента = doc.Person.PersonDocumentSeria, НомерДокумента = doc.Person.PersonDocumentNumber });
}
responce.Add(responce_record);
......@@ -177,29 +241,6 @@ namespace SocialMinistryDataExchange.Model {
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) {
SMData responce = new();
if (record.Личность != Guid.Empty) { // записи найдены
......
......@@ -36,7 +36,7 @@ namespace SocialMinistryDataExchange.Model {
public string PersonName { get; set; }
public string? PersonSurname { get; set; }
public DateTime? PersonBirthday { get; set; }
public int PersonDocumentType { get; set; }
public int? PersonDocumentType { get; set; }
public string PersonDocumentSeria { get; set; }
public string PersonDocumentNumber { 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