Skip to content
Toggle navigation
P
Projects
G
Groups
S
Snippets
Help
Marat Pavlov
/
AlexAdapter
This project
Loading...
Sign in
Toggle navigation
Go to a project
Project
Repository
Issues
0
Merge Requests
0
Pipelines
Wiki
Snippets
Members
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Commit
1d9c1e93
authored
Mar 23, 2022
by
AlexNasyr
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
DI in repository realized
parent
d53c5430
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
235 additions
and
184 deletions
SocialMinistryDataExchange/Controllers/apiController.cs
SocialMinistryDataExchange/Model/DB/Center/Контингент_center_Context.cs
SocialMinistryDataExchange/Model/IContingentContext.cs
SocialMinistryDataExchange/Model/ISMContext.cs → SocialMinistryDataExchange/Model/ISMRepository.cs
SocialMinistryDataExchange/Model/ISMDefenceDemandResponce.cs → SocialMinistryDataExchange/Model/SMDefenceDemandResponce.cs
SocialMinistryDataExchange/Model/SMRepository.cs
SocialMinistryDataExchange/Startup.cs
SocialMinistryDataExchange/Controllers/apiController.cs
View file @
1d9c1e93
...
...
@@ -7,42 +7,45 @@ using System.Threading.Tasks;
namespace
SocialMinistryDataExchange.Controllers
{
[
ApiController
]
public
class
apiController
:
ControllerBase
{
private
readonly
ISMContext
_context
;
public
apiController
(
ISM
Context
context
)
{
_
context
=
context
;
private
ISMRepository
_repository
;
public
apiController
(
ISM
Repository
repository
)
{
_
repository
=
repository
;
}
[
HttpGet
]
[
Route
(
"[controller]/getpersonFixID"
)]
public
async
Task
<
List
<
SMResponce
>>
GetPersonFixID
()
{
var
result
=
await
_
context
.
GetPersonByID
(
"27373577-4234-43B2-A969-8D95B9384171"
);
var
result
=
await
_
repository
.
GetPersonByID
(
"27373577-4234-43B2-A969-8D95B9384171"
);
return
result
;
}
[
HttpPost
]
[
Route
(
"[controller]/getpersonByID/{PersonID}"
)]
public
async
Task
<
List
<
SMResponce
>>
GetPersonByID
(
string
PersonID
)
{
var
result
=
await
_
context
.
GetPersonByID
(
PersonID
);
var
result
=
await
_
repository
.
GetPersonByID
(
PersonID
);
return
result
;
}
// тестовый запрос с фиксированным документом личности
[
HttpGet
]
[
Route
(
"[controller]/getpersonFixDoc"
)]
public
async
Task
<
List
<
SMResponce
>>
GetPersonFixDoc
()
{
var
result
=
await
_
context
.
GetPersonByDoc
(
JsonSerializer
.
Serialize
(
new
SMRequest
()
{
rowguid_eais
=
"223322"
,
document_seria
=
"V-II"
,
document_number
=
"123456"
}));
var
result
=
await
_
repository
.
GetPersonByDoc
(
JsonSerializer
.
Serialize
(
new
SMRequest
()
{
rowguid_eais
=
"223322"
,
document_seria
=
"V-II"
,
document_number
=
"123456"
}));
return
result
;
}
// запрос по серии/номеру документа личности
[
HttpPost
]
[
Route
(
"[controller]/getpersonByDoc/{Rowguid}/{Seria}/{Number}"
)]
public
async
Task
<
List
<
SMResponce
>>
GetPersonFixDoc
(
string
Rowguid
,
string
Seria
,
string
Number
)
{
var
result
=
await
_
context
.
GetPersonByDoc
(
JsonSerializer
.
Serialize
(
new
SMRequest
()
{
rowguid_eais
=
Rowguid
,
document_seria
=
Seria
,
document_number
=
Number
}));
var
result
=
await
_
repository
.
GetPersonByDoc
(
JsonSerializer
.
Serialize
(
new
SMRequest
()
{
rowguid_eais
=
Rowguid
,
document_seria
=
Seria
,
document_number
=
Number
}));
return
result
;
}
// запрос статуса нуждаемости по guid личности
[
HttpPost
]
[
Route
(
"[controller]/getpersonDefenceDemandByID/{PersonID}"
)]
public
async
Task
<
I
SMDefenceDemandResponce
>
GetPersonDefenceDemandByID
(
string
PersonID
)
{
var
result
=
await
_
context
.
GetPersonDefenceDemandByID
(
PersonID
);
public
async
Task
<
SMDefenceDemandResponce
>
GetPersonDefenceDemandByID
(
string
PersonID
)
{
var
result
=
await
_
repository
.
GetPersonDefenceDemandByID
(
PersonID
);
return
result
;
}
}
...
...
SocialMinistryDataExchange/Model/DB/Center/Контингент_center_Context.cs
View file @
1d9c1e93
usin
g
Microsoft.EntityFrameworkCore
;
usin
g
Microsoft.EntityFrameworkCore
;
...
...
@@ -8,175 +8,7 @@ using System.Threading.Tasks;
#
nullable
disable
namespace
SocialMinistryDataExchange.Model.DB.Center
{
public
partial
class
Контингент
_center_Context
:
DbContext
,
ISMContext
{
public
Task
<
ISMDefenceDemandResponce
>
GetPersonDefenceDemandByID
(
string
PersonID
)
{
var
status
=
(
from
st
in
СтатусыНуждаемости
s
where
st
.
Личность
==
new
Guid
(
PersonID
)
orderby
st
.
НачальнаяДатаСтатуса
descending
select
new
ISMDefenceDemandResponce
{
PersonID
=
st
.
Личность
,
Status
=
st
.
ТипНуждаемости
Navigation
.
Наименование
,
StartDate
=
st
.
НачальнаяДатаСтатуса
,
EndDate
=
st
.
КонечнаяДатаСтатуса
}).
First
();
return
Task
.
FromResult
(
status
);
}
public
Task
<
List
<
SMResponce
>>
GetPersonByDoc
(
string
document
)
{
var
doc
=
JsonSerializer
.
Deserialize
<
SMRequest
>(
document
);
try
{
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
();
// записи не найдены
if
(
records
.
Count
==
0
)
{
records
.
Add
(
new
SMResponceTemp
()
{
rowguid_eais
=
doc
.
rowguid_eais
,
СерияДокумента
=
doc
.
document_seria
,
НомерДокумента
=
doc
.
document_number
});
}
return
Task
.
FromResult
(
FormatResponce
(
this
,
records
));
}
catch
(
Exception
ex
)
{
// TODO log exception
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
.
Иерархия
);
}
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
)
{
// записи найдены
SMRecord
.
rowguid_eais
=
record
.
rowguid_eais
;
SMRecord
.
TerritoryName
=
record
.
Территория
Shortname
;
SMRecord
.
PersonFamilyName
=
record
.
Фамилия
;
SMRecord
.
PersonName
=
record
.
Имя
;
SMRecord
.
PersonSurname
=
record
.
Отчество
;
SMRecord
.
PersonBirthday
=
record
.
ДатаРождения
;
SMRecord
.
PersonDocumentType
=
record
.
КодУдостоверяющегоДокумента
==
12
||
record
.
КодУдостоверяющегоДокумента
==
13
||
record
.
КодУдостоверяющегоДокумента
==
21
?
"1"
:
record
.
КодУдостоверяющегоДокумента
==
11
||
record
.
КодУдостоверяющегоДокумента
==
31
?
"2"
:
String
.
Empty
;
SMRecord
.
PersonDocumentSeria
=
record
.
СерияДокумента
;
SMRecord
.
PersonDocumentNumber
=
record
.
НомерДокумента
;
SMRecord
.
PersonDocumentDate
=
record
.
КогдаВыданДокумент
;
SMRecord
.
PersonSnils
=
record
.
Снилс
;
SMRecord
.
rowguid_contingent
=
record
.
Личность
.
ToString
();
SMRecord
.
Status
=
record
.
ПриказОтчисления
==
null
?
record
.
ПриказЗачисления
==
null
?
"3"
:
"1"
:
"2"
;
SMRecord
.
StatusDate
=
SMRecord
.
Status
switch
{
"1"
=>
record
.
НачальнаяДата
,
"2"
=>
record
.
КонечнаяДата
,
_
=>
DateTime
.
Now
,
};
if
(
SMRecord
.
Status
==
"1"
)
{
SMRecord
.
FounderType
=
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
{
// записи не найдены
SMRecord
.
rowguid_eais
=
record
.
rowguid_eais
;
SMRecord
.
PersonDocumentSeria
=
record
.
СерияДокумента
;
SMRecord
.
PersonDocumentNumber
=
record
.
НомерДокумента
;
SMRecord
.
Status
=
"3"
;
SMRecord
.
StatusDate
=
DateTime
.
Now
;
}
responce
.
Add
(
SMRecord
);
}
return
responce
;
}
//форма обучения в GetPersonByID не исправлена
public
Task
<
List
<
SMResponce
>>
GetPersonByID
(
string
ID
)
{
var
records
=
ЛичностьПодразделения
s
.
Where
(
persondepartment
=>
persondepartment
.
Личность
==
new
Guid
(
ID
))
.
Join
(
Личность
s
,
persondepartment
=>
persondepartment
.
Личность
,
person
=>
person
.
PrimaryKey
,
(
persondepartment
,
person
)
=>
new
{
persondepartment
,
person
})
.
Join
(
Территория
s
,
up
=>
up
.
person
.
ТерриторияФактическогоМестаЖительства
New
,
location
=>
location
.
PrimaryKey
,
(
up
,
location
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
location
})
.
Join
(
ОбразовательнаяОрганизация
s
,
up
=>
up
.
persondepartment
.
Организация
,
organization
=>
organization
.
PrimaryKey
,
(
up
,
organization
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
organization
})
.
Join
(
ВидУчредителя
s
,
up
=>
up
.
organization
.
ВидУчредителя
,
organizationfounder
=>
organizationfounder
.
PrimaryKey
,
(
up
,
organizationfounder
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
organizationfounder
})
.
Join
(
ДокументЛичности
s
,
up
=>
up
.
persondepartment
.
Личность
,
doc
=>
doc
.
Личность
,
(
up
,
doc
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
doc
})
.
Join
(
ВидУдостоверяющегоДокумента
s
,
up
=>
up
.
doc
.
ВидУдостоверяющегоДокумента
,
doctype
=>
doctype
.
PrimaryKey
,
(
up
,
doctype
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
up
.
doc
,
doctype
})
.
Join
(
ОбразовательнаяПрограммаОрганизации
s
,
up
=>
up
.
organization
.
PrimaryKey
,
educationprogram
=>
educationprogram
.
Организация
,
(
up
,
educationprogram
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
up
.
doc
,
up
.
doctype
,
educationprogram
})
.
Join
(
ТипОбразовательнойПрограммы
s
,
up
=>
up
.
educationprogram
.
ТипОп
,
programtype
=>
programtype
.
PrimaryKey
,
(
up
,
programtype
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
up
.
doc
,
up
.
doctype
,
up
.
educationprogram
,
programtype
})
.
Join
(
ФормаОбучения
s
,
up
=>
up
.
programtype
.
Иерархия
,
eduform
=>
eduform
.
Иерархия
,
(
up
,
eduform
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
up
.
doc
,
up
.
doctype
,
up
.
educationprogram
,
up
.
programtype
,
eduform
})
.
Select
(
result
=>
new
SMResponceTemp
()
{
Личность
=
result
.
persondepartment
.
Личность
,
ПриказЗачисления
=
result
.
persondepartment
.
ПриказЗачисления
,
ПриказОтчисления
=
result
.
persondepartment
.
ПриказОтчисления
,
НачальнаяДата
=
result
.
persondepartment
.
НачальнаяДата
,
КонечнаяДата
=
result
.
persondepartment
.
КонечнаяДата
,
Подразделение
=
result
.
persondepartment
.
Подразделение
,
Организация
=
result
.
persondepartment
.
Организация
,
Имя
=
result
.
person
.
Имя
,
Отчество
=
result
.
person
.
Отчество
,
Фамилия
=
result
.
person
.
Фамилия
,
БезОтчества
=
result
.
person
.
БезОтчества
,
ДатаРождения
=
result
.
person
.
ДатаРождения
,
ТерриторияФактическогоМестаЖительства
New
=
result
.
person
.
ТерриторияФактическогоМестаЖительства
New
,
Снилс
=
result
.
person
.
Снилс
,
Территория
Shortname
=
result
.
location
.
Наименование
,
ТипОрганизации
=
result
.
organization
.
ТипОрганизации
,
ПолноеНаименованиеОрганизации
=
result
.
organization
.
ПолноеНаименование
,
ВидУчредителя
=
result
.
organization
.
ВидУчредителя
,
ВидУчредителяКод
=
result
.
organizationfounder
.
Код
,
СерияДокумента
=
result
.
doc
.
СерияДокумента
,
НомерДокумента
=
result
.
doc
.
НомерДокумента
,
КогдаВыданДокумент
=
result
.
doc
.
КогдаВыданДокумент
,
ВидУдостоверяющегоДокумента
=
result
.
doc
.
ВидУдостоверяющегоДокумента
,
НаименованиеУдостоверяющегоДокумента
=
result
.
doctype
.
Наименование
,
КодУдостоверяющегоДокумента
=
result
.
doctype
.
Код
,
ОбразовательнаяПрограммаТип
=
result
.
educationprogram
.
ТипОп
,
ОбразовательнаяПрограммаКод
=
result
.
programtype
.
Код
,
ОбразовательнаяПрограммаИерархия
=
result
.
programtype
.
Иерархия
,
ФормаОбученияНаименование
=
result
.
eduform
.
Наименование
,
ФормаОбученияКод
=
result
.
eduform
.
Код
,
rowguid_eais
=
result
.
person
.
PrimaryKey
.
ToString
()
}).
ToList
();
return
Task
.
FromResult
(
FormatResponce
(
this
,
records
));
}
public
partial
class
Контингент
_center_Context
:
DbContext
,
IContingentContext
{
public
Контингент
_center_Context
()
{
}
...
...
SocialMinistryDataExchange/Model/IContingentContext.cs
0 → 100644
View file @
1d9c1e93
using
Microsoft.EntityFrameworkCore
;
using
SocialMinistryDataExchange.Model.DB
;
namespace
SocialMinistryDataExchange.Model
{
public
interface
IContingentContext
{
DbSet
<
СтатусыНуждаемости
>
СтатусыНуждаемости
s
{
get
;
set
;
}
DbSet
<
ТипНуждаемости
>
ТипНуждаемости
s
{
get
;
set
;
}
DbSet
<
ДокументЛичности
>
ДокументЛичности
s
{
get
;
set
;
}
DbSet
<
ЛичностьПодразделения
>
ЛичностьПодразделения
s
{
get
;
set
;
}
DbSet
<
ОбразовательнаяПрограммаОрганизации
>
ОбразовательнаяПрограммаОрганизации
s
{
get
;
set
;
}
DbSet
<
ТекущаяЛичностьПодразделения
>
ТекущаяЛичностьПодразделения
s
{
get
;
set
;
}
DbSet
<
Личность
>
Личность
s
{
get
;
set
;
}
DbSet
<
Территория
>
Территория
s
{
get
;
set
;
}
DbSet
<
ОбразовательнаяОрганизация
>
ОбразовательнаяОрганизация
s
{
get
;
set
;
}
DbSet
<
ВидУчредителя
>
ВидУчредителя
s
{
get
;
set
;
}
DbSet
<
ВидУдостоверяющегоДокумента
>
ВидУдостоверяющегоДокумента
s
{
get
;
set
;
}
DbSet
<
ТипОбразовательнойПрограммы
>
ТипОбразовательнойПрограммы
s
{
get
;
set
;
}
DbSet
<
ФормаОбучения
>
ФормаОбучения
s
{
get
;
set
;
}
DbSet
<
ТипОбразовательнойОрганизации
>
ТипОбразовательнойОрганизации
s
{
get
;
set
;
}
}
}
SocialMinistryDataExchange/Model/ISM
Context
.cs
→
SocialMinistryDataExchange/Model/ISM
Repository
.cs
View file @
1d9c1e93
...
...
@@ -2,9 +2,9 @@
using
System.Threading.Tasks
;
namespace
SocialMinistryDataExchange.Model
{
public
interface
ISM
Context
{
public
interface
ISM
Repository
{
Task
<
List
<
SMResponce
>>
GetPersonByID
(
string
ID
);
Task
<
List
<
SMResponce
>>
GetPersonByDoc
(
string
Document
);
Task
<
I
SMDefenceDemandResponce
>
GetPersonDefenceDemandByID
(
string
PersonID
);
Task
<
SMDefenceDemandResponce
>
GetPersonDefenceDemandByID
(
string
PersonID
);
}
}
SocialMinistryDataExchange/Model/
I
SMDefenceDemandResponce.cs
→
SocialMinistryDataExchange/Model/SMDefenceDemandResponce.cs
View file @
1d9c1e93
using
System
;
namespace
SocialMinistryDataExchange.Model
{
public
class
I
SMDefenceDemandResponce
{
public
I
SMDefenceDemandResponce
()
{
public
class
SMDefenceDemandResponce
{
public
SMDefenceDemandResponce
()
{
}
public
Guid
PersonID
{
get
;
set
;
}
...
...
SocialMinistryDataExchange/Model/SMRepository.cs
0 → 100644
View file @
1d9c1e93
using
System.Threading.Tasks
;
using
System.Linq
;
using
System
;
using
System.Collections.Generic
;
using
System.Text.Json
;
namespace
SocialMinistryDataExchange.Model
{
public
class
SMRepository
:
ISMRepository
{
private
IContingentContext
_contingentContext
;
public
SMRepository
()
{
}
public
SMRepository
(
IContingentContext
contingentContext
)
{
_contingentContext
=
contingentContext
;
}
public
Task
<
SMDefenceDemandResponce
>
GetPersonDefenceDemandByID
(
string
PersonID
)
{
var
status
=
(
from
st
in
_contingentContext
.
СтатусыНуждаемости
s
where
st
.
Личность
==
new
Guid
(
PersonID
)
orderby
st
.
НачальнаяДатаСтатуса
descending
select
new
SMDefenceDemandResponce
{
PersonID
=
st
.
Личность
,
Status
=
st
.
ТипНуждаемости
Navigation
.
Наименование
,
StartDate
=
st
.
НачальнаяДатаСтатуса
,
EndDate
=
st
.
КонечнаяДатаСтатуса
}).
First
();
return
Task
.
FromResult
(
status
);
}
public
Task
<
List
<
SMResponce
>>
GetPersonByDoc
(
string
document
)
{
var
doc
=
JsonSerializer
.
Deserialize
<
SMRequest
>(
document
);
try
{
var
records
=
(
from
pd
in
_contingentContext
.
ДокументЛичности
s
where
pd
.
СерияДокумента
==
doc
.
document_seria
&&
pd
.
НомерДокумента
==
doc
.
document_number
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
()
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
();
// записи не найдены
if
(
records
.
Count
==
0
)
{
records
.
Add
(
new
SMResponceTemp
()
{
rowguid_eais
=
doc
.
rowguid_eais
,
СерияДокумента
=
doc
.
document_seria
,
НомерДокумента
=
doc
.
document_number
});
}
return
Task
.
FromResult
(
FormatResponce
(
_contingentContext
,
records
));
}
catch
(
Exception
ex
)
{
// TODO log exception
return
Task
.
FromResult
(
FormatResponce
(
_contingentContext
,
new
List
<
SMResponceTemp
>()
{
new
SMResponceTemp
()
{
rowguid_eais
=
doc
.
rowguid_eais
,
СерияДокумента
=
doc
.
document_seria
,
НомерДокумента
=
doc
.
document_number
}
}));
}
}
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
.
Иерархия
);
}
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
.
Иерархия
);
}
static
List
<
SMResponce
>
FormatResponce
(
IContingentContext
context
,
List
<
SMResponceTemp
>
records
)
{
List
<
SMResponce
>
responce
=
new
();
foreach
(
SMResponceTemp
record
in
records
)
{
var
SMRecord
=
new
SMResponce
();
if
(
record
.
Личность
!=
Guid
.
Empty
)
{
// записи найдены
SMRecord
.
rowguid_eais
=
record
.
rowguid_eais
;
SMRecord
.
TerritoryName
=
record
.
Территория
Shortname
;
SMRecord
.
PersonFamilyName
=
record
.
Фамилия
;
SMRecord
.
PersonName
=
record
.
Имя
;
SMRecord
.
PersonSurname
=
record
.
Отчество
;
SMRecord
.
PersonBirthday
=
record
.
ДатаРождения
;
SMRecord
.
PersonDocumentType
=
record
.
КодУдостоверяющегоДокумента
==
12
||
record
.
КодУдостоверяющегоДокумента
==
13
||
record
.
КодУдостоверяющегоДокумента
==
21
?
"1"
:
record
.
КодУдостоверяющегоДокумента
==
11
||
record
.
КодУдостоверяющегоДокумента
==
31
?
"2"
:
String
.
Empty
;
SMRecord
.
PersonDocumentSeria
=
record
.
СерияДокумента
;
SMRecord
.
PersonDocumentNumber
=
record
.
НомерДокумента
;
SMRecord
.
PersonDocumentDate
=
record
.
КогдаВыданДокумент
;
SMRecord
.
PersonSnils
=
record
.
Снилс
;
SMRecord
.
rowguid_contingent
=
record
.
Личность
.
ToString
();
SMRecord
.
Status
=
record
.
ПриказОтчисления
==
null
?
record
.
ПриказЗачисления
==
null
?
"3"
:
"1"
:
"2"
;
SMRecord
.
StatusDate
=
SMRecord
.
Status
switch
{
"1"
=>
record
.
НачальнаяДата
,
"2"
=>
record
.
КонечнаяДата
,
_
=>
DateTime
.
Now
,
};
if
(
SMRecord
.
Status
==
"1"
)
{
SMRecord
.
FounderType
=
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
{
// записи не найдены
SMRecord
.
rowguid_eais
=
record
.
rowguid_eais
;
SMRecord
.
PersonDocumentSeria
=
record
.
СерияДокумента
;
SMRecord
.
PersonDocumentNumber
=
record
.
НомерДокумента
;
SMRecord
.
Status
=
"3"
;
SMRecord
.
StatusDate
=
DateTime
.
Now
;
}
responce
.
Add
(
SMRecord
);
}
return
responce
;
}
//форма обучения в GetPersonByID не исправлена
public
Task
<
List
<
SMResponce
>>
GetPersonByID
(
string
ID
)
{
var
records
=
_contingentContext
.
ЛичностьПодразделения
s
.
Where
(
persondepartment
=>
persondepartment
.
Личность
==
new
Guid
(
ID
))
.
Join
(
_contingentContext
.
Личность
s
,
persondepartment
=>
persondepartment
.
Личность
,
person
=>
person
.
PrimaryKey
,
(
persondepartment
,
person
)
=>
new
{
persondepartment
,
person
})
.
Join
(
_contingentContext
.
Территория
s
,
up
=>
up
.
person
.
ТерриторияФактическогоМестаЖительства
New
,
location
=>
location
.
PrimaryKey
,
(
up
,
location
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
location
})
.
Join
(
_contingentContext
.
ОбразовательнаяОрганизация
s
,
up
=>
up
.
persondepartment
.
Организация
,
organization
=>
organization
.
PrimaryKey
,
(
up
,
organization
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
organization
})
.
Join
(
_contingentContext
.
ВидУчредителя
s
,
up
=>
up
.
organization
.
ВидУчредителя
,
organizationfounder
=>
organizationfounder
.
PrimaryKey
,
(
up
,
organizationfounder
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
organizationfounder
})
.
Join
(
_contingentContext
.
ДокументЛичности
s
,
up
=>
up
.
persondepartment
.
Личность
,
doc
=>
doc
.
Личность
,
(
up
,
doc
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
doc
})
.
Join
(
_contingentContext
.
ВидУдостоверяющегоДокумента
s
,
up
=>
up
.
doc
.
ВидУдостоверяющегоДокумента
,
doctype
=>
doctype
.
PrimaryKey
,
(
up
,
doctype
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
up
.
doc
,
doctype
})
.
Join
(
_contingentContext
.
ОбразовательнаяПрограммаОрганизации
s
,
up
=>
up
.
organization
.
PrimaryKey
,
educationprogram
=>
educationprogram
.
Организация
,
(
up
,
educationprogram
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
up
.
doc
,
up
.
doctype
,
educationprogram
})
.
Join
(
_contingentContext
.
ТипОбразовательнойПрограммы
s
,
up
=>
up
.
educationprogram
.
ТипОп
,
programtype
=>
programtype
.
PrimaryKey
,
(
up
,
programtype
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
up
.
doc
,
up
.
doctype
,
up
.
educationprogram
,
programtype
})
.
Join
(
_contingentContext
.
ФормаОбучения
s
,
up
=>
up
.
programtype
.
Иерархия
,
eduform
=>
eduform
.
Иерархия
,
(
up
,
eduform
)
=>
new
{
up
.
persondepartment
,
up
.
person
,
up
.
location
,
up
.
organization
,
up
.
organizationfounder
,
up
.
doc
,
up
.
doctype
,
up
.
educationprogram
,
up
.
programtype
,
eduform
})
.
Select
(
result
=>
new
SMResponceTemp
()
{
Личность
=
result
.
persondepartment
.
Личность
,
ПриказЗачисления
=
result
.
persondepartment
.
ПриказЗачисления
,
ПриказОтчисления
=
result
.
persondepartment
.
ПриказОтчисления
,
НачальнаяДата
=
result
.
persondepartment
.
НачальнаяДата
,
КонечнаяДата
=
result
.
persondepartment
.
КонечнаяДата
,
Подразделение
=
result
.
persondepartment
.
Подразделение
,
Организация
=
result
.
persondepartment
.
Организация
,
Имя
=
result
.
person
.
Имя
,
Отчество
=
result
.
person
.
Отчество
,
Фамилия
=
result
.
person
.
Фамилия
,
БезОтчества
=
result
.
person
.
БезОтчества
,
ДатаРождения
=
result
.
person
.
ДатаРождения
,
ТерриторияФактическогоМестаЖительства
New
=
result
.
person
.
ТерриторияФактическогоМестаЖительства
New
,
Снилс
=
result
.
person
.
Снилс
,
Территория
Shortname
=
result
.
location
.
Наименование
,
ТипОрганизации
=
result
.
organization
.
ТипОрганизации
,
ПолноеНаименованиеОрганизации
=
result
.
organization
.
ПолноеНаименование
,
ВидУчредителя
=
result
.
organization
.
ВидУчредителя
,
ВидУчредителяКод
=
result
.
organizationfounder
.
Код
,
СерияДокумента
=
result
.
doc
.
СерияДокумента
,
НомерДокумента
=
result
.
doc
.
НомерДокумента
,
КогдаВыданДокумент
=
result
.
doc
.
КогдаВыданДокумент
,
ВидУдостоверяющегоДокумента
=
result
.
doc
.
ВидУдостоверяющегоДокумента
,
НаименованиеУдостоверяющегоДокумента
=
result
.
doctype
.
Наименование
,
КодУдостоверяющегоДокумента
=
result
.
doctype
.
Код
,
ОбразовательнаяПрограммаТип
=
result
.
educationprogram
.
ТипОп
,
ОбразовательнаяПрограммаКод
=
result
.
programtype
.
Код
,
ОбразовательнаяПрограммаИерархия
=
result
.
programtype
.
Иерархия
,
ФормаОбученияНаименование
=
result
.
eduform
.
Наименование
,
ФормаОбученияКод
=
result
.
eduform
.
Код
,
rowguid_eais
=
result
.
person
.
PrimaryKey
.
ToString
()
}).
ToList
();
return
Task
.
FromResult
(
FormatResponce
(
_contingentContext
,
records
));
}
}
}
SocialMinistryDataExchange/Startup.cs
View file @
1d9c1e93
...
...
@@ -29,7 +29,8 @@ namespace SocialMinistryDataExchange {
c
.
SwaggerDoc
(
"v1"
,
new
OpenApiInfo
{
Title
=
"SocialMinistryDataExchange"
,
Version
=
"v1"
});
});
services
.
AddDbContext
<
Êîíòèíãåíò
_center_Context
>(
options
=>
options
.
UseSqlServer
(
ConnectionString
));
services
.
AddTransient
<
ISMContext
,
Êîíòèíãåíò
_center_Context
>();
services
.
AddTransient
<
IContingentContext
,
Êîíòèíãåíò
_center_Context
>();
services
.
AddTransient
<
ISMRepository
,
SMRepository
>();
}
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment