Commit 8c1f9707 by AlexNasyr

org & prog Types translation added

parent 928ce71b
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore;
......@@ -13,77 +13,69 @@ namespace SocialMinistryDataExchange.Model.DB.Center {
public Task<List<SMResponce>> GetPersonByDoc(string document) {
var doc = JsonSerializer.Deserialize<SMRequest>(document);
try {
var t = (from pd in ДокументЛичностиs where pd.СерияДокумента == doc.document_seria && pd.НомерДокумента == doc.document_number
join lp in ЛичностьПодразделенияs on pd.Личность equals lp.Личность into lps
from lp in lps.DefaultIfEmpty()
join op in ОбразовательнаяПрограммаОрганизацииs on lp.Организация equals op.Организация into ops
from op in ops.DefaultIfEmpty()
join cp in ТекущаяЛичностьПодразделенияs on pd.Личность equals cp.Личность into cps
from cp in cps.DefaultIfEmpty()
select new SMResponceTemp {
rowguid_eais = doc.rowguid_eais
// СерияДокумента, НомерДокумента, КогдаВыданДокумент, ВидУдостоверяющегоДокумента, НаименованиеУдостоверяющегоДокумента, КодУдостоверяющегоДокумента
, СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number, КогдаВыданДокумент = 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.Наименование
}).ToList();
//var records = ДокументЛичностиs.Where(pd => (pd.СерияДокумента == doc.document_seria) && (pd.НомерДокумента == doc.document_number))
// .Join(ЛичностьПодразделенияs, pd => pd.Личность, lp => lp.Личность, (pd, lp) => new { pd, lp })
// .Join(ОбразовательнаяПрограммаОрганизацииs, up => up.lp.ОрганизацияNavigation.PrimaryKey, op => op.Организация, (up, op) => new { up.pd, up.lp, op })
// .Join(ТекущаяЛичностьПодразделенияs, up => up.pd.Личность, cp => cp.Личность, (up, cp) => new { up.pd, up.lp, up.op, cp })
// .Select(result => new SMResponceTemp() {
// rowguid_eais = doc.rowguid_eais
// // СерияДокумента, НомерДокумента, КогдаВыданДокумент, ВидУдостоверяющегоДокумента, НаименованиеУдостоверяющегоДокумента, КодУдостоверяющегоДокумента
// , СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number, КогдаВыданДокумент = result.pd.КогдаВыданДокумент, ВидУдостоверяющегоДокумента = result.pd.ВидУдостоверяющегоДокумента, НаименованиеУдостоверяющегоДокумента = result.pd.ВидУдостоверяющегоДокументаNavigation.Наименование, КодУдостоверяющегоДокумента = result.pd.ВидУдостоверяющегоДокументаNavigation.Код
// // Личность (Guid), Имя, Отчество, БезОтчества, Фамилия
// , Личность = result.pd.Личность, Имя = result.pd.ЛичностьNavigation.Имя, Отчество = result.pd.ЛичностьNavigation.Отчество, БезОтчества = result.pd.ЛичностьNavigation.БезОтчества, Фамилия = result.pd.ЛичностьNavigation.Фамилия
// // ДатаРождения, ТерриторияФактическогоМестаЖительстваNew (нигде не заполнено - null), Снилс
// , ДатаРождения = result.pd.ЛичностьNavigation.ДатаРождения, ТерриторияФактическогоМестаЖительстваNew = result.pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNew, Снилс = result.pd.ЛичностьNavigation.Снилс
// // ТерриторияShortname
// , ТерриторияShortname = result.pd.ЛичностьNavigation.ТерриторияФактическогоМестаЖительстваNewNavigation.ТерриторияNavigation.Наименование
// // ПриказЗачисления, ПриказОтчисления, НачальнаяДата, КонечнаяДата, Подразделение (Guid), Организация (Guid)
// , ПриказЗачисления = result.lp.ПриказЗачисления, ПриказОтчисления = result.lp.ПриказОтчисления, НачальнаяДата = result.lp.НачальнаяДата, КонечнаяДата = result.lp.КонечнаяДата, Подразделение = result.lp.Подразделение, Организация = result.lp.Организация
// // ТипОрганизации, ТипОрганизацииКод, ТипОрганизацииНаименование
// , ТипОрганизации = result.lp.ОрганизацияNavigation.ТипОрганизации, ТипОрганизацииКод = result.lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Код, ТипОрганизацииНаименование = result.lp.ОрганизацияNavigation.ТипОрганизацииNavigation.Наименование
// // ПолноеНаименованиеОрганизации, ВидУчредителя (Guid), ВидУчредителяКод
// , ПолноеНаименованиеОрганизации = result.lp.ОрганизацияNavigation.ПолноеНаименование, ВидУчредителя = result.lp.ОрганизацияNavigation.ВидУчредителя, ВидУчредителяКод = result.lp.ОрганизацияNavigation.ВидУчредителяNavigation.Код
// // ОбразовательнаяПрограммаТип (Guid), ОбразовательнаяПрограммаКод
// , ОбразовательнаяПрограммаТип = result.op.ТипОп, ОбразовательнаяПрограммаКод = result.op.ТипОпNavigation.Код
// // ФормаОбученияКод, ФормаОбученияНаименование
// , ФормаОбученияКод = result.cp.ФормаОбученияNavigation.Код, ФормаОбученияНаименование = result.cp.ФормаОбученияNavigation.Наименование
// }).ToList();
//return Task.FromResult(FormatResponce(records));
return Task.FromResult(FormatResponce(t));
var records = (from pd in ДокументЛичностиs where pd.СерияДокумента == doc.document_seria && pd.НомерДокумента == doc.document_number
join lp in ЛичностьПодразделенияs on pd.Личность equals lp.Личность into lps
from lp in lps.DefaultIfEmpty()
join op in ОбразовательнаяПрограммаОрганизацииs on lp.Организация equals op.Организация into ops
from op in ops.DefaultIfEmpty()
join cp in ТекущаяЛичностьПодразделенияs on pd.Личность equals cp.Личность into cps
from cp in cps.DefaultIfEmpty()
select new SMResponceTemp {
rowguid_eais = doc.rowguid_eais
// СерияДокумента, НомерДокумента, КогдаВыданДокумент, ВидУдостоверяющегоДокумента, НаименованиеУдостоверяющегоДокумента, КодУдостоверяющегоДокумента
, СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number, КогдаВыданДокумент = 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.Наименование
}).ToList();
return Task.FromResult(FormatResponce(this, records));
}
catch(Exception ex){
catch (Exception ex) {
// TODO log exception
return Task.FromResult(FormatResponce(new List<SMResponceTemp>() { new SMResponceTemp() { rowguid_eais = doc.rowguid_eais, СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number } }));
return Task.FromResult(FormatResponce(this, new List<SMResponceTemp>() { new SMResponceTemp() { rowguid_eais = doc.rowguid_eais, СерияДокумента = doc.document_seria, НомерДокумента = doc.document_number } }));
}
}
static Guid? GetOrganizationType(Контингент_center_Context 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.Иерархия);
}
static Guid? GetProgramType(Контингент_center_Context 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 List<SMResponce> FormatResponce(List<SMResponceTemp> records) {
private static List<SMResponce> FormatResponce(Контингент_center_Context context, List<SMResponceTemp> records) {
List<SMResponce> responce = new();
foreach (SMResponceTemp record in records) {
var SMRecord = new SMResponce();
if (record.Личность != Guid.Empty) { // записи найдены ??? null ???
if (record.Личность != Guid.Empty) { // записи найдены
SMRecord.rowguid_eais = record.rowguid_eais;
SMRecord.TerritoryName = record.ТерриторияShortname;
SMRecord.PersonFamilyName = record.Фамилия;
......@@ -108,11 +100,31 @@ namespace SocialMinistryDataExchange.Model.DB.Center {
_ => DateTime.Now,
};
if (SMRecord.Status == "1") {
// TODO перевести внутренние коды ко внешним
SMRecord.FounderType = record.ВидУчредителяКод.ToString() ?? String.Empty;
SMRecord.OrganizationType = record.ТипОрганизацииКод.ToString() ?? String.Empty;
SMRecord.EducationProgram = record.ОбразовательнаяПрограммаКод.ToString() ?? String.Empty;
SMRecord.EducationForm = record.ФормаОбученияКод.ToString() ?? String.Empty;
SMRecord.OrganizationType = GetOrganizationType(context, 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",
};
SMRecord.EducationProgram = GetProgramType(context, record.ОбразовательнаяПрограммаТип).ToString() switch {
"5BE7BD7C-1202-45E2-8E9E-7247070EA7B6" => "1",
"C09D82B4-CC8D-4EB8-9703-C95AEA53E044" => "2",
"8E674FDF-32CF-4080-B062-85C41A067A6F" => "3",
_ => "4",
};
SMRecord.EducationForm = record.ФормаОбученияКод switch {
11 => "1",
12 => "2",
13 => "3",
21 => "4",
22 => "5",
_ => String.Empty
};
}
}
else {
......@@ -154,7 +166,7 @@ namespace SocialMinistryDataExchange.Model.DB.Center {
, ФормаОбученияНаименование = result.eduform.Наименование, ФормаОбученияКод = result.eduform.Код
, rowguid_eais = result.person.PrimaryKey.ToString()
}).ToList();
return Task.FromResult(FormatResponce(records));
return Task.FromResult(FormatResponce(this, records));
}
public Контингент_center_Context() {
......
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