Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
P
performance
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zry
performance
Commits
ba828a21
Commit
ba828a21
authored
May 08, 2023
by
wyc
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
考核管理优化
parent
6abb1e02
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
75 additions
and
55 deletions
+75
-55
performance/Performance.Api/Controllers/AssessNewController.cs
+8
-27
performance/Performance.Api/wwwroot/Performance.Api.xml
+2
-22
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
+25
-0
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
+5
-0
performance/Performance.DtoModels/Request/AssessCategoryRequest.cs
+1
-0
performance/Performance.DtoModels/Request/AssessSchemeEnterRequest.cs
+4
-0
performance/Performance.DtoModels/Request/AssessSchemeItemsRequest.cs
+5
-0
performance/Performance.DtoModels/Response/AssessSchemeDataResponse.cs
+18
-0
performance/Performance.DtoModels/Response/PerAssessmentStatisticsResponse.cs
+0
-3
performance/Performance.EntityModels/Entity/per_assess_issue_scheme.cs
+4
-0
performance/Performance.Repository/PerforPerAllotRepository.cs
+3
-3
performance/Performance.Services/AssessNewService.cs
+0
-0
No files found.
performance/Performance.Api/Controllers/AssessNewController.cs
View file @
ba828a21
...
@@ -38,9 +38,6 @@ public AssessNewController(AssessNewService service, ClaimService claim)
...
@@ -38,9 +38,6 @@ public AssessNewController(AssessNewService service, ClaimService claim)
/// 考核类别列表
/// 考核类别列表
/// </summary>
/// </summary>
/// <param name="allotId"></param>
/// <param name="allotId"></param>
/// <remarks>
/// 接口很简单,只是展示了考核分类数据(per_assess_category)
/// </remarks>
/// <returns></returns>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
[
Route
(
"category/list"
)]
[
Route
(
"category/list"
)]
...
@@ -52,13 +49,10 @@ public ApiResponse<List<per_assess_category>> CategoryList([FromQuery] int allot
...
@@ -52,13 +49,10 @@ public ApiResponse<List<per_assess_category>> CategoryList([FromQuery] int allot
/// 考核类别新增
/// 考核类别新增
/// </summary>
/// </summary>
/// <param name="request"></param>
/// <param name="request"></param>
/// <remarks>
/// 编码自动生成,不能修改
/// </remarks>
/// <returns></returns>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
[
Route
(
"category/add"
)]
[
Route
(
"category/add"
)]
public
ApiResponse
<
AddAssessCategoryRequest
>
CategoryAdd
([
FromBody
]
AddAssessCategoryRequest
request
)
public
ApiResponse
CategoryAdd
([
FromBody
]
AddAssessCategoryRequest
request
)
{
{
var
userid
=
claim
.
GetUserId
();
var
userid
=
claim
.
GetUserId
();
return
_service
.
CategoryAdd
(
request
,
userid
);
return
_service
.
CategoryAdd
(
request
,
userid
);
...
@@ -67,13 +61,10 @@ public ApiResponse<AddAssessCategoryRequest> CategoryAdd([FromBody] AddAssessCat
...
@@ -67,13 +61,10 @@ public ApiResponse<AddAssessCategoryRequest> CategoryAdd([FromBody] AddAssessCat
/// 考核类别修改
/// 考核类别修改
/// </summary>
/// </summary>
/// <param name="request"></param>
/// <param name="request"></param>
/// <remarks>
/// 编码不能修改
/// </remarks>
/// <returns></returns>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
[
Route
(
"category/update"
)]
[
Route
(
"category/update"
)]
public
ApiResponse
<
UpdateAssessCategoryRequest
>
CategoryUpdate
([
FromBody
]
UpdateAssessCategoryRequest
request
)
public
ApiResponse
CategoryUpdate
([
FromBody
]
UpdateAssessCategoryRequest
request
)
{
{
var
userid
=
claim
.
GetUserId
();
var
userid
=
claim
.
GetUserId
();
return
_service
.
CategoryUpdate
(
request
,
userid
);
return
_service
.
CategoryUpdate
(
request
,
userid
);
...
@@ -82,9 +73,6 @@ public ApiResponse<UpdateAssessCategoryRequest> CategoryUpdate([FromBody] Update
...
@@ -82,9 +73,6 @@ public ApiResponse<UpdateAssessCategoryRequest> CategoryUpdate([FromBody] Update
/// 考核类别删除
/// 考核类别删除
/// </summary>
/// </summary>
/// <param name="request"></param>
/// <param name="request"></param>
/// <remarks>
/// 允许批量删除,删除时要检查有没有外表引用,提示一起删除
/// </remarks>
/// <returns></returns>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
[
Route
(
"category/delete"
)]
[
Route
(
"category/delete"
)]
...
@@ -97,29 +85,21 @@ public ApiResponse CategoryDelete([FromBody] BatchAssessCategoryRequest request)
...
@@ -97,29 +85,21 @@ public ApiResponse CategoryDelete([FromBody] BatchAssessCategoryRequest request)
/// 考核下发(检查下发受影响的上报内容)
/// 考核下发(检查下发受影响的上报内容)
/// </summary>
/// </summary>
/// <param name="request"></param>
/// <param name="request"></param>
/// <remarks>
/// 类似考勤下发,需要检查受影响的内容返回展示
/// </remarks>
/// <returns></returns>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
[
Route
(
"category/issue/check"
)]
[
Route
(
"category/issue/check"
)]
public
ApiResponse
<
List
<
PerAssessmentStatisticsResponse
>>
CategoryIssueCheck
([
FromBody
]
Batch
AssessCategoryRequest
request
)
public
ApiResponse
<
List
<
PerAssessmentStatisticsResponse
>>
CategoryIssueCheck
([
FromBody
]
Update
AssessCategoryRequest
request
)
{
{
return
_service
.
CategoryIssueCheck
(
request
);
return
_service
.
CategoryIssueCheck
(
request
);
}
}
/// <summary>
/// <summary>
/// 考核下发(把当前考核类别下所有方案下发)
/// 考核下发(把当前考核类别下所有方案下发)
/// </summary>
/// </summary>
/// <remarks>
/// 下发分两类数据:
/// 责任科室总清单:考核分类/考核方案/考核指标 三种分类汇总集成到表中
/// 责任科室总清单明细:责任科室总清单 和 被考核核算单元 需要组合到一起存到明细表中
/// </remarks>
/// <param name="request"></param>
/// <param name="request"></param>
/// <returns></returns>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
[
Route
(
"category/issue/confirm"
)]
[
Route
(
"category/issue/confirm"
)]
public
ApiResponse
CategoryIssueConfirm
([
FromBody
]
Batch
AssessCategoryRequest
request
)
public
ApiResponse
CategoryIssueConfirm
([
FromBody
]
Update
AssessCategoryRequest
request
)
{
{
var
userid
=
claim
.
GetUserId
();
var
userid
=
claim
.
GetUserId
();
return
_service
.
CategoryIssueConfirm
(
request
,
userid
);
return
_service
.
CategoryIssueConfirm
(
request
,
userid
);
...
@@ -149,7 +129,7 @@ public ApiResponse SchemeList([FromBody] QuerySchemeList query)
...
@@ -149,7 +129,7 @@ public ApiResponse SchemeList([FromBody] QuerySchemeList query)
/// <returns></returns>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
[
Route
(
"scheme/add"
)]
[
Route
(
"scheme/add"
)]
public
ApiResponse
<
AddAssessSchemeRequest
>
SchemeAdd
([
FromBody
]
AddAssessSchemeRequest
request
)
public
ApiResponse
SchemeAdd
([
FromBody
]
AddAssessSchemeRequest
request
)
{
{
var
userid
=
claim
.
GetUserId
();
var
userid
=
claim
.
GetUserId
();
return
_service
.
SchemeAdd
(
request
,
userid
);
return
_service
.
SchemeAdd
(
request
,
userid
);
...
@@ -357,9 +337,10 @@ public ApiResponse SchemeItemsUpload([FromQuery] int schemeId, int allotId, [Fro
...
@@ -357,9 +337,10 @@ public ApiResponse SchemeItemsUpload([FromQuery] int schemeId, int allotId, [Fro
/// <returns></returns>
/// <returns></returns>
[
HttpPost
]
[
HttpPost
]
[
Route
(
"scheme/items/target/list"
)]
[
Route
(
"scheme/items/target/list"
)]
public
ApiResponse
<
List
<
AssessSchemeTargetResponse
>>
SchemeItemsTargetList
([
FromBody
]
QuerySchemeItemsTargetList
query
)
[
ProducesResponseType
(
typeof
(
PagedList
<
AssessSchemeTargetResponse
>),
StatusCodes
.
Status200OK
)]
public
ApiResponse
SchemeItemsTargetList
([
FromBody
]
QuerySchemeItemsTargetList
query
)
{
{
return
_service
.
SchemeItemsTargetList
(
query
);
return
new
ApiResponse
(
ResponseType
.
OK
,
""
,
_service
.
SchemeItemsTargetList
(
query
)
);
}
}
/// <summary>
/// <summary>
...
...
performance/Performance.Api/wwwroot/Performance.Api.xml
View file @
ba828a21
...
@@ -312,9 +312,6 @@
...
@@ -312,9 +312,6 @@
考核类别列表
考核类别列表
</summary>
</summary>
<param
name=
"allotId"
></param>
<param
name=
"allotId"
></param>
<remarks>
接口很简单,只是展示了考核分类数据(per_assess_category)
</remarks>
<returns></returns>
<returns></returns>
</member>
</member>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryAdd(Performance.DtoModels.Request.AddAssessCategoryRequest)"
>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryAdd(Performance.DtoModels.Request.AddAssessCategoryRequest)"
>
...
@@ -322,9 +319,6 @@
...
@@ -322,9 +319,6 @@
考核类别新增
考核类别新增
</summary>
</summary>
<param
name=
"request"
></param>
<param
name=
"request"
></param>
<remarks>
编码自动生成,不能修改
</remarks>
<returns></returns>
<returns></returns>
</member>
</member>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryUpdate(Performance.DtoModels.Request.UpdateAssessCategoryRequest)"
>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryUpdate(Performance.DtoModels.Request.UpdateAssessCategoryRequest)"
>
...
@@ -332,9 +326,6 @@
...
@@ -332,9 +326,6 @@
考核类别修改
考核类别修改
</summary>
</summary>
<param
name=
"request"
></param>
<param
name=
"request"
></param>
<remarks>
编码不能修改
</remarks>
<returns></returns>
<returns></returns>
</member>
</member>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryDelete(Performance.DtoModels.Request.BatchAssessCategoryRequest)"
>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryDelete(Performance.DtoModels.Request.BatchAssessCategoryRequest)"
>
...
@@ -342,30 +333,19 @@
...
@@ -342,30 +333,19 @@
考核类别删除
考核类别删除
</summary>
</summary>
<param
name=
"request"
></param>
<param
name=
"request"
></param>
<remarks>
允许批量删除,删除时要检查有没有外表引用,提示一起删除
</remarks>
<returns></returns>
<returns></returns>
</member>
</member>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryIssueCheck(Performance.DtoModels.Request.
Batch
AssessCategoryRequest)"
>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryIssueCheck(Performance.DtoModels.Request.
Update
AssessCategoryRequest)"
>
<summary>
<summary>
考核下发(检查下发受影响的上报内容)
考核下发(检查下发受影响的上报内容)
</summary>
</summary>
<param
name=
"request"
></param>
<param
name=
"request"
></param>
<remarks>
类似考勤下发,需要检查受影响的内容返回展示
</remarks>
<returns></returns>
<returns></returns>
</member>
</member>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryIssueConfirm(Performance.DtoModels.Request.
Batch
AssessCategoryRequest)"
>
<member
name=
"M:Performance.Api.Controllers.AssessNewController.CategoryIssueConfirm(Performance.DtoModels.Request.
Update
AssessCategoryRequest)"
>
<summary>
<summary>
考核下发(把当前考核类别下所有方案下发)
考核下发(把当前考核类别下所有方案下发)
</summary>
</summary>
<remarks>
下发分两类数据:
责任科室总清单:考核分类/考核方案/考核指标 三种分类汇总集成到表中
责任科室总清单明细:责任科室总清单 和 被考核核算单元 需要组合到一起存到明细表中
</remarks>
<param
name=
"request"
></param>
<param
name=
"request"
></param>
<returns></returns>
<returns></returns>
</member>
</member>
...
...
performance/Performance.Api/wwwroot/Performance.DtoModels.xml
View file @
ba828a21
...
@@ -2120,6 +2120,11 @@
...
@@ -2120,6 +2120,11 @@
操作类型 未提交 = 1,待审核 = 2,审核通过 = 3,驳回 = 4,
操作类型 未提交 = 1,待审核 = 2,审核通过 = 3,驳回 = 4,
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.DtoModels.Request.EditSchemeEnterAudit.AuditRemark"
>
<summary>
审核或驳回原因
</summary>
</member>
<member
name=
"P:Performance.DtoModels.Request.EditAssessSchemeEnterRequest.Score"
>
<member
name=
"P:Performance.DtoModels.Request.EditAssessSchemeEnterRequest.Score"
>
<summary>
<summary>
考核扣分
考核扣分
...
@@ -3204,6 +3209,21 @@
...
@@ -3204,6 +3209,21 @@
状态
状态
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.DtoModels.AssessSchemeEnterListResponse.SubmitTime"
>
<summary>
提交时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AssessSchemeEnterListResponse.AuditBy"
>
<summary>
审核人
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AssessSchemeEnterListResponse.AuditTime"
>
<summary>
审核时间
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AssessSchemeEnterListResponse.Count"
>
<member
name=
"P:Performance.DtoModels.AssessSchemeEnterListResponse.Count"
>
<summary>
<summary>
总下发数
总下发数
...
@@ -3319,6 +3339,11 @@
...
@@ -3319,6 +3339,11 @@
审核时间
审核时间
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.DtoModels.AssessSchemeEnterDetaiListResponse.AuditRemark"
>
<summary>
审核或驳回原因
</summary>
</member>
<member
name=
"P:Performance.DtoModels.AssessSchemeItemsUploadResponse.ItemName1"
>
<member
name=
"P:Performance.DtoModels.AssessSchemeItemsUploadResponse.ItemName1"
>
<summary>
<summary>
一级指标名称
一级指标名称
...
...
performance/Performance.Api/wwwroot/Performance.EntityModels.xml
View file @
ba828a21
...
@@ -6800,6 +6800,11 @@
...
@@ -6800,6 +6800,11 @@
审核时间
审核时间
</summary>
</summary>
</member>
</member>
<member
name=
"P:Performance.EntityModels.per_assess_issue_scheme.AuditRemark"
>
<summary>
审核或驳回原因
</summary>
</member>
<member
name=
"T:Performance.EntityModels.per_assess_scheme"
>
<member
name=
"T:Performance.EntityModels.per_assess_scheme"
>
<summary>
<summary>
考核方案
考核方案
...
...
performance/Performance.DtoModels/Request/AssessCategoryRequest.cs
View file @
ba828a21
...
@@ -13,6 +13,7 @@ public class AddAssessCategoryRequest
...
@@ -13,6 +13,7 @@ public class AddAssessCategoryRequest
}
}
public
class
UpdateAssessCategoryRequest
:
AddAssessCategoryRequest
public
class
UpdateAssessCategoryRequest
:
AddAssessCategoryRequest
{
{
public
int
SchemeId
{
get
;
set
;
}
public
int
CategoryId
{
get
;
set
;
}
public
int
CategoryId
{
get
;
set
;
}
}
}
public
class
BatchAssessCategoryRequest
public
class
BatchAssessCategoryRequest
...
...
performance/Performance.DtoModels/Request/AssessSchemeEnterRequest.cs
View file @
ba828a21
...
@@ -29,6 +29,10 @@ public class EditSchemeEnterAudit
...
@@ -29,6 +29,10 @@ public class EditSchemeEnterAudit
/// 操作类型 未提交 = 1,待审核 = 2,审核通过 = 3,驳回 = 4,
/// 操作类型 未提交 = 1,待审核 = 2,审核通过 = 3,驳回 = 4,
/// </summary>
/// </summary>
public
Assess
.
AssessState
State
{
get
;
set
;
}
public
Assess
.
AssessState
State
{
get
;
set
;
}
/// <summary>
/// 审核或驳回原因
/// </summary>
public
string
?
AuditRemark
{
get
;
set
;
}
}
}
...
...
performance/Performance.DtoModels/Request/AssessSchemeItemsRequest.cs
View file @
ba828a21
...
@@ -46,8 +46,13 @@ public class BatchAssessSchemeItemsRequest
...
@@ -46,8 +46,13 @@ public class BatchAssessSchemeItemsRequest
public
class
QuerySchemeItemsTargetList
public
class
QuerySchemeItemsTargetList
{
{
public
int
AllotId
{
get
;
set
;
}
public
int
AllotId
{
get
;
set
;
}
public
int
AssessId
{
get
;
set
;
}
public
int
SchemeId
{
get
;
set
;
}
public
int
SchemeId
{
get
;
set
;
}
public
Assess
.
SchemeItemsTarget
SchemeItemsTarget
{
get
;
set
;
}
public
Assess
.
SchemeItemsTarget
SchemeItemsTarget
{
get
;
set
;
}
public
string
UnitType
{
get
;
set
;
}
public
string
AccountingUnit
{
get
;
set
;
}
public
int
Page
{
get
;
set
;
}
=
1
;
public
int
PageSize
{
get
;
set
;
}
=
20
;
}
}
public
class
QuerySchemeItemsList
public
class
QuerySchemeItemsList
...
...
performance/Performance.DtoModels/Response/AssessSchemeDataResponse.cs
View file @
ba828a21
...
@@ -48,6 +48,7 @@ public class AssessSchemeDataResponse
...
@@ -48,6 +48,7 @@ public class AssessSchemeDataResponse
public
class
AssessSchemeTargetResponse
public
class
AssessSchemeTargetResponse
{
{
public
int
SchemeId
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 目标Id
/// 目标Id
/// </summary>
/// </summary>
...
@@ -121,6 +122,19 @@ public class AssessSchemeEnterListResponse
...
@@ -121,6 +122,19 @@ public class AssessSchemeEnterListResponse
/// </summary>
/// </summary>
public
int
State
{
get
;
set
;
}
public
int
State
{
get
;
set
;
}
/// <summary>
/// <summary>
/// 提交时间
/// </summary>
public
DateTime
?
SubmitTime
{
get
;
set
;
}
/// <summary>
/// 审核人
/// </summary>
public
string
?
AuditBy
{
get
;
set
;
}
/// <summary>
/// 审核时间
/// </summary>
public
DateTime
?
AuditTime
{
get
;
set
;
}
/// <summary>
/// 总下发数
/// 总下发数
/// </summary>
/// </summary>
public
int
Count
{
get
;
set
;
}
public
int
Count
{
get
;
set
;
}
...
@@ -216,6 +230,10 @@ public class AssessSchemeEnterDetaiListResponse
...
@@ -216,6 +230,10 @@ public class AssessSchemeEnterDetaiListResponse
/// 审核时间
/// 审核时间
/// </summary>
/// </summary>
public
DateTime
?
AuditTime
{
get
;
set
;
}
public
DateTime
?
AuditTime
{
get
;
set
;
}
/// <summary>
/// 审核或驳回原因
/// </summary>
public
string
?
AuditRemark
{
get
;
set
;
}
}
}
//上传
//上传
public
class
AssessSchemeItemsUploadResponse
public
class
AssessSchemeItemsUploadResponse
...
...
performance/Performance.DtoModels/Response/PerAssessmentStatisticsResponse.cs
View file @
ba828a21
...
@@ -65,9 +65,6 @@ public PerAssessmentStatisticsResponse(per_assess_issue_scheme item)
...
@@ -65,9 +65,6 @@ public PerAssessmentStatisticsResponse(per_assess_issue_scheme item)
}
}
/// <summary>
/// <summary>
///
///
/// </summary>
/// </summary>
...
...
performance/Performance.EntityModels/Entity/per_assess_issue_scheme.cs
View file @
ba828a21
...
@@ -141,5 +141,9 @@ public class per_assess_issue_scheme
...
@@ -141,5 +141,9 @@ public class per_assess_issue_scheme
/// 审核时间
/// 审核时间
/// </summary>
/// </summary>
public
DateTime
?
AuditTime
{
get
;
set
;
}
public
DateTime
?
AuditTime
{
get
;
set
;
}
/// <summary>
/// 审核或驳回原因
/// </summary>
public
string
?
AuditRemark
{
get
;
set
;
}
}
}
}
}
performance/Performance.Repository/PerforPerAllotRepository.cs
View file @
ba828a21
...
@@ -343,15 +343,15 @@ public IEnumerable<view_attendance> GetAttendance(int allotId)
...
@@ -343,15 +343,15 @@ public IEnumerable<view_attendance> GetAttendance(int allotId)
/// <param name="categoryId"></param>
/// <param name="categoryId"></param>
/// <param name="allotId"></param>
/// <param name="allotId"></param>
/// <returns></returns>
/// <returns></returns>
public
IEnumerable
<
view_assess_issue
>
GetAssessIssue
(
int
[]
categoryId
,
int
allotId
)
public
IEnumerable
<
view_assess_issue
>
GetAssessIssue
(
int
allotId
)
{
{
var
connection
=
context
.
Database
.
GetDbConnection
();
var
connection
=
context
.
Database
.
GetDbConnection
();
if
(
connection
.
State
!=
ConnectionState
.
Open
)
connection
.
Open
();
if
(
connection
.
State
!=
ConnectionState
.
Open
)
connection
.
Open
();
try
try
{
{
string
query
=
$@"SELECT * FROM view_assess_issue where A
ssessId in @categoryId and A
llotId = @allotId"
;
string
query
=
$@"SELECT * FROM view_assess_issue where AllotId = @allotId"
;
return
connection
.
Query
<
view_assess_issue
>(
query
,
new
{
categoryId
,
allotId
},
commandTimeout
:
60
*
60
);
return
connection
.
Query
<
view_assess_issue
>(
query
,
new
{
allotId
},
commandTimeout
:
60
*
60
);
}
}
catch
(
Exception
)
catch
(
Exception
)
{
{
...
...
performance/Performance.Services/AssessNewService.cs
View file @
ba828a21
This diff is collapsed.
Click to expand it.
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