apiคนพิการ

This commit is contained in:
Kittapath 2023-04-29 10:26:03 +07:00
parent be27aa4d33
commit 1d4043a50e
37 changed files with 9794 additions and 298 deletions

View file

@ -26,6 +26,7 @@
<PackageReference Include="AWSSDK.S3" Version="3.7.103.39" />
<PackageReference Include="BMA.EHR.Core" Version="1.0.0" />
<PackageReference Include="BMA.EHR.Extensions" Version="1.0.1" />
<PackageReference Include="BouncyCastle.NetCore" Version="1.9.0" />
<PackageReference Include="EPPlus" Version="6.1.3" />
<PackageReference Include="EPPlus.Interfaces" Version="6.1.1" />
<PackageReference Include="EPPlus.System.Drawing" Version="6.1.1" />
@ -55,6 +56,7 @@
</PackageReference>
<PackageReference Include="Microsoft.VisualStudio.Azure.Containers.Tools.Targets" Version="1.17.0" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="7.0.0" />
<PackageReference Include="Sentry.AspNetCore" Version="3.30.0" />
<PackageReference Include="Serilog" Version="2.12.0" />
<PackageReference Include="Serilog.AspNetCore" Version="6.1.0" />
<PackageReference Include="Serilog.Enrichers.Environment" Version="2.2.0" />

View file

@ -42,6 +42,17 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
return Success(GlobalMessages.Success, result);
}
protected virtual ActionResult<ResponseObject> Error(string message, string result, int statusCode = StatusCodes.Status500InternalServerError)
{
return StatusCode((int)statusCode, new ResponseObject
{
Status = statusCode,
Message = message,
Result = result
});
}
protected virtual ActionResult<ResponseObject> Error(string message, int statusCode = StatusCodes.Status500InternalServerError)
{
return StatusCode((int)statusCode, new ResponseObject
@ -51,6 +62,19 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
});
}
protected virtual ActionResult<ResponseObject> Error(Exception exception, string message, int statusCode = StatusCodes.Status500InternalServerError)
{
var msg = exception.Message;
var inner = exception.InnerException;
while (inner != null)
{
msg += $" {inner.Message}\r\n";
inner = inner.InnerException;
}
return Error(message, msg, statusCode);
}
protected virtual ActionResult<ResponseObject> Error(Exception exception, int statusCode = StatusCodes.Status500InternalServerError)
{
var msg = exception.Message;

File diff suppressed because it is too large Load diff

View file

@ -670,6 +670,34 @@ namespace BMA.EHR.Recurit.Exam.Service.Controllers
}
}
/// <summary>
/// โหลดผู้สมัครสอบ(รายละเอียด)
/// </summary>
/// <param name="examId">รหัสรอบสมัคร</param>
/// <returns></returns>
/// <response code="200">เมื่อทำการอ่านโหลดผู้สมัครสอบ(รายละเอียด)สำเร็จ</response>
/// <response code="401">ไม่ได้ Login เข้าระบบ</response>
/// <response code="500">เมื่อเกิดข้อผิดพลาดในการทำงาน</response>
[HttpGet("download/detail/{examId:length(36)}")]
[ProducesResponseType(StatusCodes.Status200OK)]
[ProducesResponseType(StatusCodes.Status401Unauthorized)]
[ProducesResponseType(StatusCodes.Status500InternalServerError)]
public async Task<ActionResult<ResponseObject>> DownloadCandidateAllAsync(string examId)
{
try
{
var stream = await _periodExamService.DownloadCandidateAllAsync(examId);
string excelName = $"Candidate_{DateTime.Now.ToString("yyyyMMddHHmmssfff")}.xlsx";
return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", excelName);
// return Success();
}
catch (Exception ex)
{
return Error(ex);
}
}
/// <summary>
/// ข้อมูลตำแหน่งสมัครสอบ
/// <param name="examId">รหัสรอบสมัคร</param>

View file

@ -3,6 +3,7 @@
public class GlobalMessages
{
public const string Success = "Success";
public const string DataNotFound = "ไม่พบข้อมูลในระบบ";
public const string FileNotFoundOnServer = "ไม่พบไฟล์ในระบบ!!";
public const string CannotInsertToDatabase = "ไม่สามารถบันทึกลงฐานข้อมูลได้!!";
public const string InvalidRequestParam = "Request parameter ไม่ถูกต้อง!!";

View file

@ -1,4 +1,5 @@
using BMA.EHR.Recurit.Exam.Service.Models;
using BMA.EHR.Recurit.Exam.Service.Models.Disables;
using BMA.EHR.Recurit.Exam.Service.Models.Documents;
using Microsoft.EntityFrameworkCore;
@ -13,6 +14,13 @@ namespace BMA.EHR.Recurit.Exam.Service.Data
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// disable relation setup
modelBuilder.Entity<PeriodExam>().HasMany(x => x.Disables).WithOne(x => x.PeriodExam).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Models.Disables.Disable>().HasMany(x => x.Educations).WithOne(x => x.Disable).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Models.Disables.Disable>().HasMany(x => x.Occupations).WithOne(x => x.Disable).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Models.Disables.Disable>().HasMany(x => x.Addresses).WithOne(x => x.Disable).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Models.Disables.Disable>().HasMany(x => x.Certificates).WithOne(x => x.Disable).OnDelete(DeleteBehavior.Cascade);
modelBuilder.Entity<Models.Disables.Disable>().HasMany(x => x.Payments).WithOne(x => x.Disable).OnDelete(DeleteBehavior.Cascade);
}
// public DbSet<Prefix> Prefixes { get; set; }
@ -55,5 +63,25 @@ namespace BMA.EHR.Recurit.Exam.Service.Data
public DbSet<CMSGovernment> CMSGovernments { get; set; }
public DbSet<Models.Disables.Disable> Disables { get; set; }
public DbSet<DisableAddress> DisableAddresses { get; set; }
public DbSet<DisableOccupation> DisableOccupations { get; set; }
public DbSet<DisableCertificate> DisableCertificates { get; set; }
public DbSet<DisableEducation> DisableEducations { get; set; }
public DbSet<ScoreImport> ScoreImports { get; set; }
public DbSet<DisableScore> DisableScores { get; set; }
public DbSet<DisablePayment> DisablePayments { get; set; }
public DbSet<DisableDocument> DisableDocuments { get; set; }
public DbSet<DisableImportHistory> DisableImportHistories { get; set; }
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,19 @@
using OfficeOpenXml;
using System;
using System.Collections.Generic;
namespace BMA.EHR.Recurit.Exam.Service.Extensions
{
public static class ExcelWorksheetExtension
{
public static string[] GetHeaderColumns(this ExcelWorksheet sheet, int row = 1)
{
List<string> columnNames = new List<string>();
foreach (var firstRowCell in sheet.Cells[row, sheet.Dimension.Start.Column, 1, sheet.Dimension.End.Column])
columnNames.Add(firstRowCell.Text);
return columnNames.ToArray();
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,30 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace BMA.EHR.Recurit.Exam.Service.Migrations
{
/// <inheritdoc />
public partial class updatetablecandidateaddnumber : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "Number",
table: "Candidates",
type: "longtext",
nullable: true,
comment: "ลำดับที่สอบได้")
.Annotation("MySql:CharSet", "utf8mb4");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "Number",
table: "Candidates");
}
}
}

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,663 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace BMA.EHR.Recurit.Exam.Service.Migrations
{
/// <inheritdoc />
public partial class createtableadddisable : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<Guid>(
name: "ImportFileId",
table: "PeriodExams",
type: "char(36)",
nullable: true,
collation: "ascii_general_ci");
migrationBuilder.AlterColumn<string>(
name: "RelationshipName",
table: "Candidates",
type: "longtext",
nullable: true,
comment: "สถานภาพ",
oldClrType: typeof(string),
oldType: "longtext",
oldNullable: true,
oldComment: "ศาสนา")
.Annotation("MySql:CharSet", "utf8mb4")
.OldAnnotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AlterColumn<Guid>(
name: "RelationshipId",
table: "Candidates",
type: "char(36)",
nullable: true,
comment: "Id สถานภาพ",
collation: "ascii_general_ci",
oldClrType: typeof(Guid),
oldType: "char(36)",
oldNullable: true,
oldComment: "Id ศาสนา")
.OldAnnotation("Relational:Collation", "ascii_general_ci");
migrationBuilder.CreateTable(
name: "DisableImportHistories",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
Description = table.Column<string>(type: "longtext", nullable: false, comment: "รายละเอียดการนำเข้า")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
PeriodExamId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
},
constraints: table =>
{
table.PrimaryKey("PK_DisableImportHistories", x => x.Id);
table.ForeignKey(
name: "FK_DisableImportHistories_PeriodExams_PeriodExamId",
column: x => x.PeriodExamId,
principalTable: "PeriodExams",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "Disables",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CitizenId = table.Column<string>(type: "varchar(13)", maxLength: 13, nullable: false, comment: "เลขประจำตัวประชาชน")
.Annotation("MySql:CharSet", "utf8mb4"),
ExamId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Prefix = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
FirstName = table.Column<string>(type: "varchar(150)", maxLength: 150, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
LastName = table.Column<string>(type: "varchar(150)", maxLength: 150, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Gendor = table.Column<string>(type: "varchar(20)", maxLength: 20, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
National = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Race = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Religion = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
DateOfBirth = table.Column<DateTime>(type: "datetime(6)", nullable: false),
Marry = table.Column<string>(type: "varchar(20)", maxLength: 20, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Isspecial = table.Column<string>(type: "varchar(1)", maxLength: 1, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
RefNo = table.Column<string>(type: "varchar(20)", maxLength: 20, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
CitizenCardIssuer = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
CitizenCardExpireDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
Remark = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Qualified = table.Column<string>(type: "varchar(1)", maxLength: 1, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
PeriodExamId = table.Column<Guid>(type: "char(36)", nullable: true, collation: "ascii_general_ci"),
CreatedDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
ModifiedDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
ApplyDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
PositionName = table.Column<string>(type: "longtext", nullable: true)
.Annotation("MySql:CharSet", "utf8mb4")
},
constraints: table =>
{
table.PrimaryKey("PK_Disables", x => x.Id);
table.ForeignKey(
name: "FK_Disables_PeriodExams_PeriodExamId",
column: x => x.PeriodExamId,
principalTable: "PeriodExams",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "ScoreImports",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
Year = table.Column<int>(type: "int", nullable: true),
ImportFileId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
PeriodExamId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
},
constraints: table =>
{
table.PrimaryKey("PK_ScoreImports", x => x.Id);
table.ForeignKey(
name: "FK_ScoreImports_Documents_ImportFileId",
column: x => x.ImportFileId,
principalTable: "Documents",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_ScoreImports_PeriodExams_PeriodExamId",
column: x => x.PeriodExamId,
principalTable: "PeriodExams",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "DisableAddresses",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
Address = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Moo = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Soi = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Road = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
District = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Amphur = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Province = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
ZipCode = table.Column<string>(type: "varchar(5)", maxLength: 5, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Telephone = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Mobile = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Address1 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Moo1 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Soi1 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Road1 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
District1 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Amphur1 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Province1 = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
ZipCode1 = table.Column<string>(type: "varchar(5)", maxLength: 5, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
DisableId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
},
constraints: table =>
{
table.PrimaryKey("PK_DisableAddresses", x => x.Id);
table.ForeignKey(
name: "FK_DisableAddresses_Disables_DisableId",
column: x => x.DisableId,
principalTable: "Disables",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "DisableCertificates",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CertificateNo = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Description = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
IssueDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
ExpiredDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
DisableId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
},
constraints: table =>
{
table.PrimaryKey("PK_DisableCertificates", x => x.Id);
table.ForeignKey(
name: "FK_DisableCertificates_Disables_DisableId",
column: x => x.DisableId,
principalTable: "Disables",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "DisableDocuments",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
DocumentFileId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci"),
DisableId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
},
constraints: table =>
{
table.PrimaryKey("PK_DisableDocuments", x => x.Id);
table.ForeignKey(
name: "FK_DisableDocuments_Disables_DisableId",
column: x => x.DisableId,
principalTable: "Disables",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_DisableDocuments_Documents_DocumentFileId",
column: x => x.DocumentFileId,
principalTable: "Documents",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "DisableEducations",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
Degree = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Major = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
MajorGroupId = table.Column<string>(type: "varchar(20)", maxLength: 20, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
MajorGroupName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
University = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
GPA = table.Column<double>(type: "double", nullable: false),
Specialist = table.Column<string>(type: "varchar(1000)", maxLength: 1000, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
HighDegree = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
BachelorDate = table.Column<DateTime>(type: "datetime(6)", nullable: false),
DisableId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
},
constraints: table =>
{
table.PrimaryKey("PK_DisableEducations", x => x.Id);
table.ForeignKey(
name: "FK_DisableEducations_Disables_DisableId",
column: x => x.DisableId,
principalTable: "Disables",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "DisableOccupations",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
Occupation = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
WorkAge = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Position = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Workplace = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Telephone = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
DisableId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
},
constraints: table =>
{
table.PrimaryKey("PK_DisableOccupations", x => x.Id);
table.ForeignKey(
name: "FK_DisableOccupations_Disables_DisableId",
column: x => x.DisableId,
principalTable: "Disables",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "DisablePayments",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
PaymentId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
CompanyCode = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
TextFile = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
BankCode = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
AccountNumber = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
TransDate = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
TransTime = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
CustomerName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
RefNo1 = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
TermBranch = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
TellerId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
CreditDebit = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
PaymentType = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
ChequeNo = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Amount = table.Column<decimal>(type: "decimal(65,30)", nullable: false),
ChqueBankCode = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
DisableId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
},
constraints: table =>
{
table.PrimaryKey("PK_DisablePayments", x => x.Id);
table.ForeignKey(
name: "FK_DisablePayments_Disables_DisableId",
column: x => x.DisableId,
principalTable: "Disables",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateTable(
name: "DisableScores",
columns: table => new
{
Id = table.Column<Guid>(type: "char(36)", nullable: false, comment: "PrimaryKey", collation: "ascii_general_ci"),
CreatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: false, comment: "สร้างข้อมูลเมื่อ"),
CreatedUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdatedAt = table.Column<DateTime>(type: "datetime(6)", nullable: true, comment: "แก้ไขข้อมูลล่าสุดเมื่อ"),
LastUpdateUserId = table.Column<string>(type: "varchar(40)", maxLength: 40, nullable: false, comment: "User Id ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
CreatedFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่สร้างข้อมูล")
.Annotation("MySql:CharSet", "utf8mb4"),
LastUpdateFullName = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ชื่อ User ที่แก้ไขข้อมูลล่าสุด")
.Annotation("MySql:CharSet", "utf8mb4"),
ExamId = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
SumA = table.Column<int>(type: "int", nullable: false),
FullA = table.Column<int>(type: "int", nullable: false),
PercentageA = table.Column<double>(type: "double", nullable: false),
AStatus = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
SumB = table.Column<int>(type: "int", nullable: false),
FullB = table.Column<int>(type: "int", nullable: false),
PercentageB = table.Column<double>(type: "double", nullable: false),
BStatus = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
SumAB = table.Column<int>(type: "int", nullable: false),
ABStatus = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
SumC = table.Column<int>(type: "int", nullable: false),
FullC = table.Column<int>(type: "int", nullable: false),
PercentageC = table.Column<double>(type: "double", nullable: false),
CStatus = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
ExamStatus = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Major = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false)
.Annotation("MySql:CharSet", "utf8mb4"),
Number = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: false, comment: "ลำดับที่สอบได้")
.Annotation("MySql:CharSet", "utf8mb4"),
ScoreImportId = table.Column<Guid>(type: "char(36)", nullable: false, collation: "ascii_general_ci")
},
constraints: table =>
{
table.PrimaryKey("PK_DisableScores", x => x.Id);
table.ForeignKey(
name: "FK_DisableScores_ScoreImports_ScoreImportId",
column: x => x.ScoreImportId,
principalTable: "ScoreImports",
principalColumn: "Id",
onDelete: ReferentialAction.Cascade);
})
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.CreateIndex(
name: "IX_PeriodExams_ImportFileId",
table: "PeriodExams",
column: "ImportFileId");
migrationBuilder.CreateIndex(
name: "IX_DisableAddresses_DisableId",
table: "DisableAddresses",
column: "DisableId");
migrationBuilder.CreateIndex(
name: "IX_DisableCertificates_DisableId",
table: "DisableCertificates",
column: "DisableId");
migrationBuilder.CreateIndex(
name: "IX_DisableDocuments_DisableId",
table: "DisableDocuments",
column: "DisableId");
migrationBuilder.CreateIndex(
name: "IX_DisableDocuments_DocumentFileId",
table: "DisableDocuments",
column: "DocumentFileId");
migrationBuilder.CreateIndex(
name: "IX_DisableEducations_DisableId",
table: "DisableEducations",
column: "DisableId");
migrationBuilder.CreateIndex(
name: "IX_DisableImportHistories_PeriodExamId",
table: "DisableImportHistories",
column: "PeriodExamId");
migrationBuilder.CreateIndex(
name: "IX_DisableOccupations_DisableId",
table: "DisableOccupations",
column: "DisableId");
migrationBuilder.CreateIndex(
name: "IX_DisablePayments_DisableId",
table: "DisablePayments",
column: "DisableId");
migrationBuilder.CreateIndex(
name: "IX_Disables_PeriodExamId",
table: "Disables",
column: "PeriodExamId");
migrationBuilder.CreateIndex(
name: "IX_DisableScores_ScoreImportId",
table: "DisableScores",
column: "ScoreImportId");
migrationBuilder.CreateIndex(
name: "IX_ScoreImports_ImportFileId",
table: "ScoreImports",
column: "ImportFileId");
migrationBuilder.CreateIndex(
name: "IX_ScoreImports_PeriodExamId",
table: "ScoreImports",
column: "PeriodExamId",
unique: true);
migrationBuilder.AddForeignKey(
name: "FK_PeriodExams_Documents_ImportFileId",
table: "PeriodExams",
column: "ImportFileId",
principalTable: "Documents",
principalColumn: "Id");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropForeignKey(
name: "FK_PeriodExams_Documents_ImportFileId",
table: "PeriodExams");
migrationBuilder.DropTable(
name: "DisableAddresses");
migrationBuilder.DropTable(
name: "DisableCertificates");
migrationBuilder.DropTable(
name: "DisableDocuments");
migrationBuilder.DropTable(
name: "DisableEducations");
migrationBuilder.DropTable(
name: "DisableImportHistories");
migrationBuilder.DropTable(
name: "DisableOccupations");
migrationBuilder.DropTable(
name: "DisablePayments");
migrationBuilder.DropTable(
name: "DisableScores");
migrationBuilder.DropTable(
name: "Disables");
migrationBuilder.DropTable(
name: "ScoreImports");
migrationBuilder.DropIndex(
name: "IX_PeriodExams_ImportFileId",
table: "PeriodExams");
migrationBuilder.DropColumn(
name: "ImportFileId",
table: "PeriodExams");
migrationBuilder.AlterColumn<string>(
name: "RelationshipName",
table: "Candidates",
type: "longtext",
nullable: true,
comment: "ศาสนา",
oldClrType: typeof(string),
oldType: "longtext",
oldNullable: true,
oldComment: "สถานภาพ")
.Annotation("MySql:CharSet", "utf8mb4")
.OldAnnotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AlterColumn<Guid>(
name: "RelationshipId",
table: "Candidates",
type: "char(36)",
nullable: true,
comment: "Id ศาสนา",
collation: "ascii_general_ci",
oldClrType: typeof(Guid),
oldType: "char(36)",
oldNullable: true,
oldComment: "Id สถานภาพ")
.OldAnnotation("Relational:Collation", "ascii_general_ci");
}
}
}

View file

@ -49,6 +49,8 @@ namespace BMA.EHR.Recurit.Exam.Service.Models
[Comment("Id หลักฐานชำระเงิน")]
public virtual Document? PaymentImg { get; set; }
[Comment("ลำดับที่สอบได้")]
public string? Number { get; set; }
[Comment("Id คำนำหน้าชื่อ")]
@ -69,10 +71,10 @@ namespace BMA.EHR.Recurit.Exam.Service.Models
[MaxLength(40), Comment("วันเกิด")]
public DateTime? DateOfBirth { get; set; }
[Comment("Id ศาสนา")]
[Comment("Id สถานภาพ")]
public Guid? RelationshipId { get; set; }
[Comment("ศาสนา")]
[Comment("สถานภาพ")]
public string? RelationshipName { get; set; }
[MaxLength(200), Comment("อีเมล")]

81
Models/Disable/Disable.cs Normal file
View file

@ -0,0 +1,81 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class Disable : EntityBase
{
[Required, MaxLength(13), Comment("เลขประจำตัวประชาชน")]
public string CitizenId { get; set; } = string.Empty;
[Required, MaxLength(50)]
public string ExamId { get; set; } = string.Empty;
[Required, MaxLength(50)]
public string Prefix { get; set; } = string.Empty;
[Required, MaxLength(150)]
public string FirstName { get; set; } = string.Empty;
[Required, MaxLength(150)]
public string LastName { get; set; } = string.Empty;
[MaxLength(20)]
public string Gendor { get; set; } = string.Empty;
[MaxLength(200)]
public string National { get; set; } = string.Empty;
[MaxLength(200)]
public string Race { get; set; } = string.Empty;
[MaxLength(200)]
public string Religion { get; set; } = string.Empty;
[Required]
public DateTime DateOfBirth { get; set; }
[MaxLength(20)]
public string Marry { get; set; } = string.Empty;
[MaxLength(1)]
public string Isspecial { get; set; } = "N";
[MaxLength(20)]
public string RefNo { get; set; } = string.Empty;
[MaxLength(200)]
public string CitizenCardIssuer { get; set; } = string.Empty;
public DateTime CitizenCardExpireDate { get; set; }
[MaxLength(200)]
public string Remark { get; set; } = string.Empty;
[MaxLength(1)]
public string Qualified { get; set; } = "Y";
public PeriodExam? PeriodExam { get; set; }
public virtual List<DisableAddress> Addresses { get; set; } = new List<DisableAddress>();
public virtual List<DisableOccupation> Occupations { get; set; } = new List<DisableOccupation>();
public virtual List<DisableCertificate> Certificates { get; set; } = new List<DisableCertificate>();
public virtual List<DisableEducation> Educations { get; set; } = new List<DisableEducation>();
public virtual List<DisablePayment> Payments { get; set; } = new List<DisablePayment>();
public virtual List<DisableDocument> Documents { get; set; } = new List<DisableDocument>();
public DateTime CreatedDate { get; set; } = DateTime.Now;
public DateTime ModifiedDate { get; set; }
public DateTime ApplyDate { get; set; }
public string? PositionName { get; set; }
}
}

View file

@ -0,0 +1,63 @@
using System.ComponentModel.DataAnnotations;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class DisableAddress : EntityBase
{
[MaxLength(200)]
public string Address { get; set; }
[MaxLength(200)]
public string Moo { get; set; }
[MaxLength(200)]
public string Soi { get; set; }
[MaxLength(200)]
public string Road { get; set; }
[MaxLength(200)]
public string District { get; set; }
[MaxLength(200)]
public string Amphur { get; set; }
[MaxLength(200)]
public string Province { get; set; }
[MaxLength(5)]
public string ZipCode { get; set; }
[MaxLength(200)]
public string Telephone { get; set; }
[MaxLength(200)]
public string Mobile { get; set; }
[MaxLength(200)]
public string Address1 { get; set; }
[MaxLength(200)]
public string Moo1 { get; set; }
[MaxLength(200)]
public string Soi1 { get; set; }
[MaxLength(200)]
public string Road1 { get; set; }
[MaxLength(200)]
public string District1 { get; set; }
[MaxLength(200)]
public string Amphur1 { get; set; }
[MaxLength(200)]
public string Province1 { get; set; }
[MaxLength(5)]
public string ZipCode1 { get; set; }
public Disable Disable { get; set; }
}
}

View file

@ -0,0 +1,19 @@
using System.ComponentModel.DataAnnotations;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class DisableCertificate : EntityBase
{
[MaxLength(50)]
public string CertificateNo { get; set; }
[MaxLength(200)]
public string Description { get; set; }
public DateTime IssueDate { get; set; }
public DateTime ExpiredDate { get; set; }
public Disable Disable { get; set; }
}
}

View file

@ -0,0 +1,13 @@
using BMA.EHR.Recurit.Exam.Service.Models.Documents;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class DisableDocument : EntityBase
{
public DateTime CreatedDate { get; set; }
public Document DocumentFile { get; set; }
public Disable Disable { get; set; }
}
}

View file

@ -0,0 +1,33 @@
using System.ComponentModel.DataAnnotations;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class DisableEducation : EntityBase
{
[MaxLength(200)]
public string Degree { get; set; }
[MaxLength(200)]
public string Major { get; set; }
[MaxLength(20)]
public string MajorGroupId { get; set; }
[MaxLength(200)]
public string MajorGroupName { get; set; }
[MaxLength(200)]
public string University { get; set; }
public double GPA { get; set; } = 0.0;
[MaxLength(1000)]
public string Specialist { get; set; }
[MaxLength(200)]
public string HighDegree { get; set; }
public DateTime BachelorDate { get; set; }
public Disable Disable { get; set; }
}
}

View file

@ -0,0 +1,14 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class DisableImportHistory : EntityBase
{
[Required, Comment("รายละเอียดการนำเข้า"), Column(Order = 1)]
public string Description { get; set; } = string.Empty;
public PeriodExam PeriodExam { get; set; }
}
}

View file

@ -0,0 +1,24 @@
using System.ComponentModel.DataAnnotations;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class DisableOccupation : EntityBase
{
[MaxLength(200)]
public string Occupation { get; set; }
[MaxLength(200)]
public string WorkAge { get; set; }
[MaxLength(200)]
public string Position { get; set; }
[MaxLength(200)]
public string Workplace { get; set; }
[MaxLength(200)]
public string Telephone { get; set; }
public Disable Disable { get; set; }
}
}

View file

@ -0,0 +1,56 @@
using System.ComponentModel.DataAnnotations;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class DisablePayment : EntityBase
{
[MaxLength(50)]
public string PaymentId { get; set; }
[MaxLength(50)]
public string CompanyCode { get; set; }
[MaxLength(50)]
public string TextFile { get; set; }
[MaxLength(50)]
public string BankCode { get; set; }
[MaxLength(50)]
public string AccountNumber { get; set; }
[MaxLength(50)]
public string TransDate { get; set; }
[MaxLength(50)]
public string TransTime { get; set; }
[MaxLength(200)]
public string CustomerName { get; set; }
[MaxLength(50)]
public string RefNo1 { get; set; }
[MaxLength(50)]
public string TermBranch { get; set; }
[MaxLength(50)]
public string TellerId { get; set; }
[MaxLength(50)]
public string CreditDebit { get; set; }
[MaxLength(50)]
public string PaymentType { get; set; }
[MaxLength(50)]
public string ChequeNo { get; set; }
public decimal Amount { get; set; }
[MaxLength(50)]
public string ChqueBankCode { get; set; }
public Disable Disable { get; set; }
}
}

View file

@ -0,0 +1,54 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class DisableScore : EntityBase
{
[Required, MaxLength(50)]
public string ExamId { get; set; }
public int SumA { get; set; }
public int FullA { get; set; }
public double PercentageA { get; set; }
[MaxLength(50)]
public string AStatus { get; set; }
public int SumB { get; set; }
public int FullB { get; set; }
public double PercentageB { get; set; }
[MaxLength(50)]
public string BStatus { get; set; }
public int SumAB { get; set; }
[Required, MaxLength(50)]
public string ABStatus { get; set; }
public int SumC { get; set; }
public int FullC { get; set; }
public double PercentageC { get; set; }
[MaxLength(50)]
public string CStatus { get; set; }
[Required, MaxLength(50)]
public string ExamStatus { get; set; }
[MaxLength(200)]
public string Major { get; set; }
[MaxLength(200), Comment("ลำดับที่สอบได้")]
public string Number { get; set; } = string.Empty;
public ScoreImport ScoreImport { get; set; }
}
}

View file

@ -0,0 +1,19 @@
using BMA.EHR.Recurit.Exam.Service.Models.Documents;
using System.ComponentModel.DataAnnotations.Schema;
namespace BMA.EHR.Recurit.Exam.Service.Models.Disables
{
public class ScoreImport : EntityBase
{
public int? Year { get; set; }
public Document ImportFile { get; set; } = new Document();
public virtual List<DisableScore> Scores { get; set; } = new List<DisableScore>();
[ForeignKey("FK_Score_Import_ID")]
public Guid PeriodExamId { get; set; }
public PeriodExam PeriodExam { get; set; }
}
}

View file

@ -1,6 +1,8 @@
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
using BMA.EHR.Recurit.Exam.Service.Models.Disables;
using BMA.EHR.Recurit.Exam.Service.Models.Documents;
namespace BMA.EHR.Recurit.Exam.Service.Models
{
@ -95,5 +97,9 @@ namespace BMA.EHR.Recurit.Exam.Service.Models
[Comment("รูป")]
public virtual List<PeriodExamImage> PeriodExamImages { get; set; } = new();
public Document? ImportFile { get; set; } = new Document();
public List<Disable> Disables { get; set; } = new List<Disable>();
public ScoreImport? ScoreImport { get; set; }
public List<DisableImportHistory> ImportHostories { get; set; } = new List<DisableImportHistory>();
}
}

View file

@ -82,6 +82,7 @@ builder.Services.AddCors(options => options.AddDefaultPolicy(builder =>
// Register Service
builder.Services.AddTransient<CandidateService>();
builder.Services.AddTransient<DisableService>();
builder.Services.AddTransient<PeriodExamService>();
builder.Services.AddTransient<MinIOService>();
builder.Services.AddTransient<MailService>();

View file

@ -0,0 +1,84 @@
namespace BMA.EHR.Recurit.Exam.Service.Request.Disables
{
public class CandidateFileHeader
{
// Profile
public static string ExamID = "เลขประจำตัวสอบ";
public static string PersonalID = "CustomerID";
public static string Prefix = "Name1";
public static string FirstName = "Name2";
public static string LastName = "Name3";
public static string Gender = "Gender";
public static string National = "National";
public static string Race = "Race";
public static string Religion = "Religion";
public static string DateOfBirth = "BirthDMY";
public static string Marry = "Marry";
public static string RefNo = "RefNo1";
public static string PersonalCardIssue = "CusIDFrom";
public static string PersonalCardExpireDate = "CusIDExpireDate";
public static string ApplyDate = "DateTime";
public static string PositionName = "PositionName";
// Address
public static string Address = "Address";
public static string Moo = "Moo";
public static string Soi = "Soi";
public static string Road = "Road";
public static string District = "District";
public static string Amphur = "Amphur";
public static string Province = "Province";
public static string ZipCode = "Zipcode";
public static string Telephone = "Telephone";
public static string Mobile = "TelMobile";
public static string Address1 = "Address1";
public static string Moo1 = "Moo1";
public static string Soi1 = "Soi1";
public static string Road1 = "Road1";
public static string District1 = "District1";
public static string Amphur1 = "Amphur1";
public static string ZipCode1 = "Zipcode1";
// Occupation
public static string Occupation = "Occupation";
public static string WorkAge = "WorkAge";
public static string Position = "txtPosition";
public static string Workplace = "txtWorkplace";
public static string WorkplaceTelephone = "TxtTelephone";
// Certificate
public static string CertificateNo = "CerNo";
public static string CertificateDesc = "CerTeacherDesc";
public static string CertificateIssueDate = "CerNoDMY";
public static string CertificateExpireDate = "CerNoExpDMY";
// EEducation
public static string Degree = "Degree";
public static string Major = "Major";
public static string MajorGroupID = "MajorGroup";
public static string MajorGroupName = "txtMajorGroup";
public static string GPA = "GPA";
public static string SpecialList = "SpecialList";
public static string University = "University";
public static string HighDegree = "HighDegree";
public static string BachelorDate = "BachelorDMY";
// payment
public static string PaymentID = "ID";
public static string CompanyCode = "CompanyCode";
public static string TextFile = "TextFile";
public static string BankCode = "BankCode";
public static string AccouontNumer = "AccountNumber";
public static string TransDate = "TransDate";
public static string TransTime = "TransTime";
public static string CustomerName = "CustomerName";
public static string RefNo1 = "RefNo1";
public static string TermBranch = "TermBranch";
public static string TellerID = "TellerID";
public static string CreditDebit = "CreditDeBit";
public static string Type = "Type";
public static string ChequeNo = "ChequeNo";
public static string Amount = "Amount";
public static string ChqBankCode = "ChqBankCode";
}
}

View file

@ -0,0 +1,16 @@
namespace BMA.EHR.Recurit.Exam.Service.Request.Disables
{
public class DisableExamRequest
{
/// <summary>
/// ข้อมูลคุณสมบัติของผู้เข้าสอบ โดยส่งมาจากหน้าจอ 'มีคุณสมบัติ' 'ขาดคุณสมบัติ'
/// </summary>
public string ExamAttribute { get; set; }
/// <summary>
/// ข้อมูลผลการสอบ 'ผ่าน' 'ไม่ผ่าน'
/// </summary>
public string ExamResult { get; set; }
}
}

View file

@ -0,0 +1,86 @@
using Microsoft.EntityFrameworkCore.Metadata.Internal;
using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations.Schema;
using System.ComponentModel.DataAnnotations;
namespace BMA.EHR.Recurit.Exam.Service.Request.Disables
{
/// <summary>
/// ตัวแปรสำหรับสร้างข้อมูลการสอบคัดเลือกผู้พิการ
/// </summary>
public class PostDisableImportRequest
{
/// <summary>
/// ปีงบประมาณที่จัดสอบ
/// </summary>
[Required]
public int Year { get; set; }
/// <summary>
/// รอบการสอบ
/// </summary>
[Required, MaxLength(250)]
public string Name { get; set; } = string.Empty;
/// <summary>
/// ครั้งที่
/// </summary>
[Required]
public int Round { get; set; } = 1;
/// <summary>
/// รายละเอียด
/// </summary>
public string? Detail { get; set; }
/// <summary>
/// ค่าธรรมเนียม
/// </summary>
public int Fee { get; set; } = 0;
/// <summary>
/// วันเริ่มประกาศ
/// </summary>
public DateTime AnnouncementStartDate { get; set; }
/// <summary>
/// วันสิ้นสุดประกาศ
/// </summary>
public DateTime AnnouncementEndDate { get; set; }
/// <summary>
/// วันเริ่มชำระเงิน
/// </summary>
public DateTime PaymentStartDate { get; set; }
/// <summary>
/// วันสิ้นสุดชำระเงิน
/// </summary>
public DateTime PaymentEndDate { get; set; }
/// <summary>
/// วันเริ่มสมัครสอบ
/// </summary>
public DateTime RegisterStartDate { get; set; }
/// <summary>
/// วันสิ้นสุดสมัครสอบ
/// </summary>
public DateTime RegisterEndDate { get; set; }
/// <summary>
/// วันที่สอบ
/// </summary>
public DateTime ExamDate { get; set; }
/// <summary>
/// หมายเหตุ
/// </summary>
public string? Note { get; set; }
/// <summary>
/// วันที่ประกาศผลสอบ
/// </summary>
public DateTime AnnouncementDate { get; set; }
}
}

View file

@ -19,6 +19,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Request
public string? PointC { get; set; }
public string? ResultC { get; set; }
public string? Pass { get; set; }
public string? Number { get; set; }
public DateTime? AnnouncementDate { get; set; }
public Guid? Id { get; set; }
}

View file

@ -15,5 +15,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Request
public string? PointC { get; set; }
public string? ResultC { get; set; }
public string? Pass { get; set; }
public string? Number { get; set; }
}
}

View file

@ -6,7 +6,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Request
{
public string Name { get; set; } = string.Empty;
public bool CheckDocument { get; set; } = false;
public bool CheckDisability { get; set; } = false;
// public bool CheckDisability { get; set; } = false;
public int? Round { get; set; }
public int? Year { get; set; }
public float? Fee { get; set; } = 0;

View file

@ -63,6 +63,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<CandidateInformationResponseItem?> GetsAsyncInformation(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -133,6 +134,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<CandidateAddressResponseItem?> GetsAsyncAddress(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -201,6 +203,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<CandidateFamilyResponseItem?> GetsAsyncFamily(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -273,6 +276,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<CandidateOccupationResponseItem?> GetsAsyncOccupation(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -319,6 +323,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<IEnumerable<Career?>> GetsAsyncCareer(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -351,6 +356,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<IEnumerable<Education?>> GetsAsyncEducation(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -383,6 +389,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<IEnumerable<FileListResponse?>> GetsAsyncFileUpload(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -465,6 +472,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<string> GetsAsyncProfileImage(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -516,6 +524,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<PaymentImgResponse> GetsAsyncPaymentImg(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -568,6 +577,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<RequestStatusRegistry> GetsAsyncRegisterExam(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.Include(x => x.BankExam)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
@ -610,6 +620,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<string> CreateAsyncCandidate(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -1426,6 +1437,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task DeleteAsyncDocument(string examId, string positionId, string documentId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.Include(x => x.PositionExam)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
@ -1651,6 +1663,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<CandidateStatusResponse> GetStatusCandidateService(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -1680,6 +1693,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task UserCheckCandidateService(string examId, string positionId, string status)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.Include(x => x.PositionExam)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
@ -1856,6 +1870,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<RequestCardCandidate> GetsAsyncCardCandidate(string examId, string positionId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(p => p.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (exam == null)
@ -1898,6 +1913,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
PointC = candidate.PointC,
ResultC = candidate.ResultC,
Pass = candidate.Pass,
Number = candidate.Number,
AnnouncementDate = exam.AnnouncementDate.AddYears(2),
Id = candidate.Id,
};
@ -1929,6 +1945,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
PointC = candidate.PointC,
ResultC = candidate.ResultC,
Pass = candidate.Pass,
Number = candidate.Number,
AnnouncementDate = candidate.PeriodExam?.AnnouncementDate.AddYears(2),
Id = candidate.Id,
};

View file

@ -0,0 +1,65 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using BMA.EHR.Recurit.Exam.Service.Data;
using BMA.EHR.Recurit.Exam.Service.Models.Disables;
namespace BMA.EHR.Recurit.Exam.Service.Services
{
public class DisableService
{
private readonly ApplicationDbContext _context;
public DisableService(ApplicationDbContext context)
{
_context = context;
}
public int GetExamCount(string citizenId)
{
try
{
var count = _context.Disables.AsQueryable()
.Where(x => x.CitizenId == citizenId)
.Count();
return count;
}
catch
{
throw;
}
}
public async Task<string> GetExamAttributeAsync(Guid period, Guid exam)
{
try
{
var payment = await _context.DisablePayments.AsQueryable()
.Include(x => x.Disable)
.ThenInclude(x => x.PeriodExam)
.Where(x => x.Disable.Id == exam)
.Where(x => x.Disable.PeriodExam.Id == period)
.FirstOrDefaultAsync();
return payment != null ? "มีคุณสมบัติ" : "ไม่มีคุณสมบัติ";
}
catch
{
throw;
}
}
public bool CheckValidCertificate(DateTime certDate, int nextYear = 5)
{
var valid = true;
if (DateTime.Now.Date > certDate.Date.AddYears(nextYear))
valid = false;
return valid;
}
}
}

View file

@ -1,5 +1,6 @@
using System.Security.Claims;
using System.Text.Json;
using BMA.EHR.Extensions;
using BMA.EHR.Recurit.Exam.Service.Core;
using BMA.EHR.Recurit.Exam.Service.Data;
using BMA.EHR.Recurit.Exam.Service.Models;
@ -52,10 +53,42 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
#region " Methods "
private string GenerateStatusCandidate(string status)
{
switch (status.Trim().ToUpper())
{
case "REGISTER": return "รอยืนยันสมัครสอบ";
case "CHECKREGISTER": return "ตรวจสอบข้อมูลสมัครสอบ";
case "PAYMENT": return "รอชำระค่าสมัครสอบ";
case "REJECTREGISTER": return "ปฏิเสธตรวจสอบข้อมูลสมัคร";
case "CHECKPAYMENT": return "ตรวจสอบหลักฐานชำระเงิน";
case "REJECTPAYMENT": return "หลักฐานชำระเงินไม่ถูกต้อง";
case "CHECKSEAT": return "จัดที่นั่งสอบ";
case "CHECKPOINT": return "สรุปคะแนนสอบ";
case "DONE": return "สอบคัดเลือกสำเร็จ";
case "WAIVER": return "สละสิทธิ์สอบ";
default: return status;
}
}
private string GenerateStatusOccupation(string status)
{
switch (status.Trim().ToUpper())
{
case "OFFICIAL": return "ข้าราชการกรุงเทพมหานคร";
case "PERSONNEL": return "บุคลากรกรุงเทพมหานคร";
case "OFFICIALSOTHER": return "ข้าราชการประเภทอื่น";
case "EMPLOYEE": return "ลูกจ้าง/พนักงานราชการของส่วนราชการอื่น";
case "OTHER": return "อื่นๆ";
default: return status;
}
}
public async Task<IEnumerable<PeriodExamCandidateResponseItem>> GetsAsync(string type, bool showAll = true)
{
return await _context.PeriodExams.AsQueryable()
.Where(p => p.IsActive)
.Where(p => p.CheckDisability == false)
.Where(p => type.ToUpper() == "ALL" ? (p.AnnouncementExam == true || p.AnnouncementExam == false) : (type.ToUpper() == "EXAM" ? p.AnnouncementExam == true : p.AnnouncementExam == false))
.OrderByDescending(d => d.CreatedAt)
.Select(x => new PeriodExamCandidateResponseItem
@ -93,6 +126,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<PeriodExamCandidateResponseItem?> GetsExamAndCandidateAsync(string examId, bool showAll = true)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.Include(x => x.PositionExam)
.Include(x => x.BankExam)
.Include(x => x.PeriodExamDocuments)
@ -200,6 +234,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<RequestPositionName?> GetsNamePositionAsync(string examId, string positionId)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.Include(x => x.PositionExam)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
@ -234,7 +269,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
{
Name = inserted.Name,
CheckDocument = inserted.CheckDocument,
CheckDisability = inserted.CheckDisability,
Round = inserted.Round,
Year = inserted.Year,
Fee = inserted.Fee,
@ -312,6 +346,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task UpdateAsync(string examId, RequestPeriodExam updated)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.Include(x => x.BankExam)
.Include(x => x.PositionExam)
.Include(x => x.Candidate)
@ -324,7 +359,6 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
periodExam.Name = updated.Name;
periodExam.CheckDocument = updated.CheckDocument;
periodExam.CheckDisability = updated.CheckDisability;
periodExam.Round = updated.Round;
periodExam.Year = updated.Year;
periodExam.Fee = updated.Fee;
@ -462,6 +496,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task UpdateDocAsync(string examId, IFormFileCollection files)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (periodExam == null)
@ -492,6 +527,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task UpdateImgAsync(string examId, IFormFileCollection files)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (periodExam == null)
@ -527,6 +563,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task DeleteAsyncDocument(string examId, string documentId)
{
var exam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.Include(x => x.PositionExam)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
@ -539,6 +576,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task DeleteAsync(string examId)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (periodExam == null)
@ -551,6 +589,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<IEnumerable<Candidate?>> GetsCandidateByStatusAsync(string examId, string status)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (periodExam == null)
@ -563,6 +602,8 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
.OrderByDescending(d => d.CreatedAt)
.Where(x => x.PeriodExam == periodExam && x.Status != "register" && x.Status != "rejectRegister")
.ToListAsync();
if (candidate.Where(x => x.Status == "done").FirstOrDefault() != null)
candidate = candidate.OrderBy(x => x.Number).ToList();
var i = 0;
foreach (var item in candidate)
{
@ -579,6 +620,8 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
.OrderByDescending(d => d.CreatedAt)
.Where(x => x.PeriodExam == periodExam && x.Status == status)
.ToListAsync();
if (candidate.Where(x => x.Status == "done").FirstOrDefault() != null)
candidate = candidate.OrderBy(x => x.Number).ToList();
var i = 0;
foreach (var item in candidate)
{
@ -782,16 +825,17 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
{
list.Add(new RequestImportSeat
{
CitizenId = worksheet.Cells[row, 1].Value != null ? worksheet.Cells[row, 1].Value.ToString() : null,
ExamIdenNumber = worksheet.Cells[row, 2].Value != null ? worksheet.Cells[row, 2].Value.ToString() : null,
SeatNumber = worksheet.Cells[row, 3].Value != null ? worksheet.Cells[row, 3].Value.ToString() : null,
PointTotalB = worksheet.Cells[row, 4].Value != null ? worksheet.Cells[row, 4].Value.ToString() : null,
PointB = worksheet.Cells[row, 5].Value != null ? worksheet.Cells[row, 5].Value.ToString() : null,
ResultB = worksheet.Cells[row, 6].Value != null ? worksheet.Cells[row, 6].Value.ToString() : null,
PointTotalC = worksheet.Cells[row, 7].Value != null ? worksheet.Cells[row, 7].Value.ToString() : null,
PointC = worksheet.Cells[row, 8].Value != null ? worksheet.Cells[row, 8].Value.ToString() : null,
ResultC = worksheet.Cells[row, 9].Value != null ? worksheet.Cells[row, 9].Value.ToString() : null,
Pass = worksheet.Cells[row, 10].Value != null ? (worksheet.Cells[row, 10].Value.ToString()) : null,
Number = worksheet.Cells[row, 1].Value != null ? worksheet.Cells[row, 1].Value.ToString() : null,
CitizenId = worksheet.Cells[row, 2].Value != null ? worksheet.Cells[row, 2].Value.ToString() : null,
ExamIdenNumber = worksheet.Cells[row, 3].Value != null ? worksheet.Cells[row, 3].Value.ToString() : null,
SeatNumber = worksheet.Cells[row, 4].Value != null ? worksheet.Cells[row, 4].Value.ToString() : null,
PointTotalB = worksheet.Cells[row, 5].Value != null ? worksheet.Cells[row, 5].Value.ToString() : null,
PointB = worksheet.Cells[row, 6].Value != null ? worksheet.Cells[row, 6].Value.ToString() : null,
ResultB = worksheet.Cells[row, 7].Value != null ? worksheet.Cells[row, 7].Value.ToString() : null,
PointTotalC = worksheet.Cells[row, 8].Value != null ? worksheet.Cells[row, 8].Value.ToString() : null,
PointC = worksheet.Cells[row, 9].Value != null ? worksheet.Cells[row, 9].Value.ToString() : null,
ResultC = worksheet.Cells[row, 10].Value != null ? worksheet.Cells[row, 10].Value.ToString() : null,
Pass = worksheet.Cells[row, 11].Value != null ? (worksheet.Cells[row, 11].Value.ToString()) : null,
});
}
}
@ -804,6 +848,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task UploadSeatCandidateAsync(string examId, IFormFile excels)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (periodExam == null)
@ -859,6 +904,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task UploadPointCandidateAsync(string examId, IFormFile excels)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (periodExam == null)
@ -886,6 +932,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
candidate.PointC = item.PointC;
candidate.ResultC = item.ResultC;
candidate.Pass = item.Pass;
candidate.Number = item.Number;
var subject = "แจ้งผลการสมัครสอบคัดเลือก " + periodExam.Name;
var body = candidate.FirstName + " " + candidate.LastName + " สถานะการสมัครสอบ: สอบคัดเลือกสำเร็จ";
if (candidate.Email != null) _mailService.SendMailToUser(subject, body, candidate.Email);
@ -920,6 +967,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<MemoryStream> DownloadCandidateAsync(string examId)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (periodExam == null)
@ -951,30 +999,32 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
summarySheet.TabColor = System.Drawing.Color.Black;
// summarySheet.DefaultRowHeight = 17;
summarySheet.Row(1).Style.Font.Bold = true;
summarySheet.Cells[1, 1].Value = "เลขบัตรประชาชน";
summarySheet.Cells[1, 2].Value = "เลขประจำตัวสอบ";
summarySheet.Cells[1, 3].Value = "เลขที่นั่งสอบ";
summarySheet.Cells[1, 4].Value = "คะแนนเต็มภาค ข";
summarySheet.Cells[1, 5].Value = "คะแนนภาค ข";
summarySheet.Cells[1, 6].Value = "ผลสอบภาค ข";
summarySheet.Cells[1, 7].Value = "คะแนนเต็มภาค ค";
summarySheet.Cells[1, 8].Value = "คะแนนภาค ค";
summarySheet.Cells[1, 9].Value = "ผลสอบภาค ค";
summarySheet.Cells[1, 10].Value = "ผลการสอบ";
summarySheet.Cells[1, 1].Value = "ลำดับที่สอบได้";
summarySheet.Cells[1, 2].Value = "เลขบัตรประชาชน";
summarySheet.Cells[1, 3].Value = "เลขประจำตัวสอบ";
summarySheet.Cells[1, 4].Value = "เลขที่นั่งสอบ";
summarySheet.Cells[1, 5].Value = "คะแนนเต็มภาค ข";
summarySheet.Cells[1, 6].Value = "คะแนนภาค ข";
summarySheet.Cells[1, 7].Value = "ผลสอบภาค ข";
summarySheet.Cells[1, 8].Value = "คะแนนเต็มภาค ค";
summarySheet.Cells[1, 9].Value = "คะแนนภาค ค";
summarySheet.Cells[1, 10].Value = "ผลสอบภาค ค";
summarySheet.Cells[1, 11].Value = "ผลการสอบ";
int row = 2;
foreach (var item in candidates)
{
summarySheet.Cells[row, 1].Value = item.CitizenId;
summarySheet.Cells[row, 2].Value = item.ExamIdenNumber;
summarySheet.Cells[row, 3].Value = item.SeatNumber;
summarySheet.Cells[row, 4].Value = item.PointTotalB;
summarySheet.Cells[row, 5].Value = item.PointB;
summarySheet.Cells[row, 6].Value = item.ResultB;
summarySheet.Cells[row, 7].Value = item.PointTotalC;
summarySheet.Cells[row, 8].Value = item.PointC;
summarySheet.Cells[row, 9].Value = item.ResultC;
summarySheet.Cells[row, 10].Value = item.Pass;
summarySheet.Cells[row, 1].Value = item.Number;
summarySheet.Cells[row, 2].Value = item.CitizenId;
summarySheet.Cells[row, 3].Value = item.ExamIdenNumber;
summarySheet.Cells[row, 4].Value = item.SeatNumber;
summarySheet.Cells[row, 5].Value = item.PointTotalB;
summarySheet.Cells[row, 6].Value = item.PointB;
summarySheet.Cells[row, 7].Value = item.ResultB;
summarySheet.Cells[row, 8].Value = item.PointTotalC;
summarySheet.Cells[row, 9].Value = item.PointC;
summarySheet.Cells[row, 10].Value = item.ResultC;
summarySheet.Cells[row, 11].Value = item.Pass;
row++;
}
summarySheet.Cells[summarySheet.Dimension.Address].AutoFitColumns();
@ -988,6 +1038,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<PeriodExam> GetsPaymentExamAsync(string examId)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.Include(x => x.BankExam)
.Where(x => x.Id == Guid.Parse(examId))
.Select(x => new PeriodExam
@ -1006,6 +1057,7 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
public async Task<List<DashboardResponseItem>> GetsDashboardPaymentExamAsync(string examId)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.Include(x => x.Candidate)
.ThenInclude(x => x.PaymentImg)
.Where(x => x.Id == Guid.Parse(examId))
@ -1068,6 +1120,389 @@ namespace BMA.EHR.Recurit.Exam.Service.Services
return dashboard;
}
public async Task<MemoryStream> DownloadCandidateAllAsync(string examId)
{
var periodExam = await _context.PeriodExams.AsQueryable()
.Where(x => x.CheckDisability == false)
.FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
if (periodExam == null)
throw new Exception(GlobalMessages.ExamNotFound);
// var _candidates = (from c in _context.Candidates
// where c.PeriodExam == periodExam
// select new
// {
// Id = c.Id,
// Status = c.Status,
// CitizenId = c.CitizenId,
// FullName = $"{c.PrefixName}{c.FirstName} {c.LastName}",
// Nationality = c.Nationality,
// DateOfBirth = c.DateOfBirth == null ? "" : c.DateOfBirth.Value.Date.ToThaiShortDate(),
// Age = c.DateOfBirth == null ? "" : c.DateOfBirth.Value.Date.CalculateGovAgeStr(0, 0),
// RelationshipName = c.RelationshipName,
// Telephone = c.Telephone,
// MobilePhone = c.MobilePhone,
// Email = c.Email,
// Knowledge = c.Knowledge,
// RegistAddress = c.RegistAddress,
// RegistProvinceName = c.RegistProvinceName,
// RegistDistrictName = c.RegistDistrictName,
// RegistSubDistrictName = c.RegistSubDistrictName,
// RegistZipCode = c.RegistZipCode,
// CurrentAddress = c.CurrentAddress,
// CurrentProvinceName = c.CurrentProvinceName,
// CurrentDistrictName = c.CurrentDistrictName,
// CurrentSubDistrictName = c.CurrentSubDistrictName,
// CurrentZipCode = c.CurrentZipCode,
// MarryFullName = $"{c.MarryPrefixName}{c.MarryFirstName} {c.MarryLastName}",
// FatherFullName = $"{c.FatherPrefixName}{c.FatherFirstName} {c.FatherLastName}",
// MotherFullName = $"{c.MotherPrefixName}{c.MotherFirstName} {c.MotherLastName}",
// OccupationType = c.OccupationType,
// OccupationPosition = c.OccupationPosition,
// OccupationCompany = c.OccupationCompany,
// OccupationDepartment = c.OccupationDepartment,
// OccupationEmail = c.OccupationEmail,
// OccupationTelephone = c.OccupationTelephone,
// Number = c.Number,
// ExamIdenNumber = c.ExamIdenNumber,
// SeatNumber = c.SeatNumber,
// PointTotalB = c.PointTotalB,
// PointB = c.PointB,
// ResultB = c.ResultB,
// PointTotalC = c.PointTotalC,
// PointC = c.PointC,
// ResultC = c.ResultC,
// Pass = c.Pass,
// }
// ).ToList();
var candidates = await _context.Candidates
.AsQueryable()
.OrderBy(x => x.ExamIdenNumber)
.Where(x => x.PeriodExam == periodExam)
.Select(c => new
{
Id = c.Id,
Status = c.Status,
CitizenId = c.CitizenId,
FullName = $"{c.PrefixName}{c.FirstName} {c.LastName}",
Nationality = c.Nationality,
DateOfBirth = c.DateOfBirth == null ? "" : c.DateOfBirth.Value.Date.ToThaiShortDate(),
Age = c.DateOfBirth == null ? "" : c.DateOfBirth.Value.Date.CalculateGovAgeStr(0, 0),
RelationshipName = c.RelationshipName,
Telephone = c.Telephone,
MobilePhone = c.MobilePhone,
Email = c.Email,
Knowledge = c.Knowledge,
RegistAddress = c.RegistAddress,
RegistProvinceName = c.RegistProvinceName,
RegistDistrictName = c.RegistDistrictName,
RegistSubDistrictName = c.RegistSubDistrictName,
RegistZipCode = c.RegistZipCode,
CurrentAddress = c.CurrentAddress,
CurrentProvinceName = c.CurrentProvinceName,
CurrentDistrictName = c.CurrentDistrictName,
CurrentSubDistrictName = c.CurrentSubDistrictName,
CurrentZipCode = c.CurrentZipCode,
MarryFullName = $"{c.MarryPrefixName}{c.MarryFirstName} {c.MarryLastName}",
FatherFullName = $"{c.FatherPrefixName}{c.FatherFirstName} {c.FatherLastName}",
MotherFullName = $"{c.MotherPrefixName}{c.MotherFirstName} {c.MotherLastName}",
OccupationType = c.OccupationType,
OccupationPosition = c.OccupationPosition,
OccupationCompany = c.OccupationCompany,
OccupationDepartment = c.OccupationDepartment,
OccupationEmail = c.OccupationEmail,
OccupationTelephone = c.OccupationTelephone,
Number = c.Number,
ExamIdenNumber = c.ExamIdenNumber,
SeatNumber = c.SeatNumber,
PointTotalB = c.PointTotalB,
PointB = c.PointB,
ResultB = c.ResultB,
PointTotalC = c.PointTotalC,
PointC = c.PointC,
ResultC = c.ResultC,
Pass = c.Pass,
})
.ToListAsync();
var stream = new MemoryStream();
using (var package = new ExcelPackage(stream))
{
var summarySheet = package.Workbook.Worksheets.Add("Candidate");
summarySheet.TabColor = System.Drawing.Color.Black;
// summarySheet.DefaultRowHeight = 17;
summarySheet.Row(1).Style.Font.Bold = true;
summarySheet.Cells[1, 1].Value = "สถานะสอบคัดเลือก";
summarySheet.Cells[1, 2].Value = "เลขบัตรประชาชน";
summarySheet.Cells[1, 3].Value = "ชื่อ-สกุล";
summarySheet.Cells[1, 4].Value = "สัญชาติ";
summarySheet.Cells[1, 5].Value = "วันเกิด";
summarySheet.Cells[1, 6].Value = "อายุ";
summarySheet.Cells[1, 7].Value = "สถานภาพ";
summarySheet.Cells[1, 8].Value = "โทรศัพท์";
summarySheet.Cells[1, 9].Value = "โทรศัพท์มือถือ";
summarySheet.Cells[1, 10].Value = "อีเมล";
summarySheet.Cells[1, 11].Value = "ความรู้ความสามารถพิเศษ";
summarySheet.Cells[1, 12].Value = "ที่อยู่ตามทะเบียนบ้าน";
summarySheet.Cells[1, 13].Value = "จังหวัดที่อยู่ตามทะเบียนบ้าน";
summarySheet.Cells[1, 14].Value = "เขต/อำเภอที่อยู่ตามทะเบียนบ้าน";
summarySheet.Cells[1, 15].Value = "ตำบล/แขวงที่อยู่ตามทะเบียนบ้าน";
summarySheet.Cells[1, 16].Value = "รหัสไปรษณีย์ที่อยู่ตามทะเบียนบ้าน";
summarySheet.Cells[1, 17].Value = "ที่อยู่ปัจจุบัน";
summarySheet.Cells[1, 18].Value = "จังหวัดที่อยู่ปัจจุบัน";
summarySheet.Cells[1, 19].Value = "เขต/อำเภอที่อยู่ปัจจุบัน";
summarySheet.Cells[1, 20].Value = "ตำบล/แขวงที่อยู่ปัจจุบัน";
summarySheet.Cells[1, 21].Value = "รหัสไปรษณีย์ที่อยู่ปัจจุบัน";
summarySheet.Cells[1, 22].Value = "คู่สมรส";
summarySheet.Cells[1, 23].Value = "บิดา";
summarySheet.Cells[1, 24].Value = "มารดา";
summarySheet.Cells[1, 25].Value = "อาชีพ";
summarySheet.Cells[1, 26].Value = "ตำแหน่ง";
summarySheet.Cells[1, 27].Value = "สำนัก/บริษัท";
summarySheet.Cells[1, 28].Value = "กอง/ฝ่าย";
summarySheet.Cells[1, 29].Value = "อีเมลบริษัท";
summarySheet.Cells[1, 30].Value = "โทรศัพท์บริษัท";
summarySheet.Cells[1, 31].Value = "วุฒิที่ได้รับ";
summarySheet.Cells[1, 32].Value = "สาขา/วิชาเอก";
summarySheet.Cells[1, 33].Value = "คะแนนเฉลี่ยตลอดหลักสูตร";
summarySheet.Cells[1, 34].Value = "ชื่อสถานศีกษา";
summarySheet.Cells[1, 35].Value = "ระยะเวลาเริ่มศึกษา";
summarySheet.Cells[1, 36].Value = "ระยะเวลาสิ้นสุดศึกษา";
summarySheet.Cells[1, 37].Value = "สถานที่ทำงาน/ฝึกงาน";
summarySheet.Cells[1, 38].Value = "ตำแหน่ง/ลักษณะงาน";
summarySheet.Cells[1, 39].Value = "เงินเดือนสุดท้านก่อนออก";
summarySheet.Cells[1, 40].Value = "ระยะเวลาเริ่มทำงาน/ฝึกงาน";
summarySheet.Cells[1, 41].Value = "ระยะเวลาสิ้นสุดทำงาน/ฝึกงาน";
summarySheet.Cells[1, 42].Value = "เหตุผลที่ออก";
summarySheet.Cells[1, 43].Value = "ลำดับที่สอบได้";
summarySheet.Cells[1, 44].Value = "เลขประจำตัวสอบ";
summarySheet.Cells[1, 45].Value = "เลขที่นั่งสอบ";
summarySheet.Cells[1, 46].Value = "คะแนนเต็มภาค ข";
summarySheet.Cells[1, 47].Value = "คะแนนภาค ข";
summarySheet.Cells[1, 48].Value = "ผลสอบภาค ข";
summarySheet.Cells[1, 49].Value = "คะแนนเต็มภาค ค";
summarySheet.Cells[1, 50].Value = "คะแนนภาค ค";
summarySheet.Cells[1, 51].Value = "ผลสอบภาค ค";
summarySheet.Cells[1, 52].Value = "ผลการสอบ";
int row = 2;
foreach (var item in candidates)
{
summarySheet.Cells[row, 1].Value = GenerateStatusCandidate(item.Status);
summarySheet.Cells[row, 2].Value = item.CitizenId;
summarySheet.Cells[row, 3].Value = item.FullName;
summarySheet.Cells[row, 4].Value = item.Nationality;
summarySheet.Cells[row, 5].Value = item.DateOfBirth;
summarySheet.Cells[row, 6].Value = item.Age;
summarySheet.Cells[row, 7].Value = item.RelationshipName;
summarySheet.Cells[row, 8].Value = item.Telephone;
summarySheet.Cells[row, 9].Value = item.MobilePhone;
summarySheet.Cells[row, 10].Value = item.Email;
summarySheet.Cells[row, 11].Value = item.Knowledge;
summarySheet.Cells[row, 12].Value = item.RegistAddress;
summarySheet.Cells[row, 13].Value = item.RegistProvinceName;
summarySheet.Cells[row, 14].Value = item.RegistDistrictName;
summarySheet.Cells[row, 15].Value = item.RegistSubDistrictName;
summarySheet.Cells[row, 16].Value = item.RegistZipCode;
summarySheet.Cells[row, 17].Value = item.CurrentAddress;
summarySheet.Cells[row, 18].Value = item.CurrentProvinceName;
summarySheet.Cells[row, 19].Value = item.CurrentDistrictName;
summarySheet.Cells[row, 20].Value = item.CurrentSubDistrictName;
summarySheet.Cells[row, 21].Value = item.CurrentZipCode;
summarySheet.Cells[row, 22].Value = item.MarryFullName;
summarySheet.Cells[row, 23].Value = item.FatherFullName;
summarySheet.Cells[row, 24].Value = item.MotherFullName;
summarySheet.Cells[row, 25].Value = GenerateStatusOccupation(item.OccupationType);
summarySheet.Cells[row, 26].Value = item.OccupationPosition;
summarySheet.Cells[row, 27].Value = item.OccupationCompany;
summarySheet.Cells[row, 28].Value = item.OccupationDepartment;
summarySheet.Cells[row, 29].Value = item.OccupationEmail;
summarySheet.Cells[row, 30].Value = item.OccupationTelephone;
summarySheet.Cells[row, 43].Value = item.Number;
summarySheet.Cells[row, 44].Value = item.ExamIdenNumber;
summarySheet.Cells[row, 45].Value = item.SeatNumber;
summarySheet.Cells[row, 46].Value = item.PointTotalB;
summarySheet.Cells[row, 47].Value = item.PointB;
summarySheet.Cells[row, 48].Value = item.ResultB;
summarySheet.Cells[row, 49].Value = item.PointTotalC;
summarySheet.Cells[row, 50].Value = item.PointC;
summarySheet.Cells[row, 51].Value = item.ResultC;
summarySheet.Cells[row, 52].Value = item.Pass;
row++;
var educations = await _context.Educations
.AsQueryable()
.OrderBy(x => x.DurationStart)
.Where(x => x.Candidate.Id == item.Id)
.ToListAsync();
foreach (var education in educations)
{
summarySheet.Cells[row, 1].Value = GenerateStatusCandidate(item.Status);
summarySheet.Cells[row, 2].Value = item.CitizenId;
summarySheet.Cells[row, 3].Value = item.FullName;
summarySheet.Cells[row, 4].Value = item.Nationality;
summarySheet.Cells[row, 5].Value = item.DateOfBirth;
summarySheet.Cells[row, 6].Value = item.Age;
summarySheet.Cells[row, 7].Value = item.RelationshipName;
summarySheet.Cells[row, 8].Value = item.Telephone;
summarySheet.Cells[row, 9].Value = item.MobilePhone;
summarySheet.Cells[row, 10].Value = item.Email;
summarySheet.Cells[row, 11].Value = item.Knowledge;
summarySheet.Cells[row, 12].Value = item.RegistAddress;
summarySheet.Cells[row, 13].Value = item.RegistProvinceName;
summarySheet.Cells[row, 14].Value = item.RegistDistrictName;
summarySheet.Cells[row, 15].Value = item.RegistSubDistrictName;
summarySheet.Cells[row, 16].Value = item.RegistZipCode;
summarySheet.Cells[row, 17].Value = item.CurrentAddress;
summarySheet.Cells[row, 18].Value = item.CurrentProvinceName;
summarySheet.Cells[row, 19].Value = item.CurrentDistrictName;
summarySheet.Cells[row, 20].Value = item.CurrentSubDistrictName;
summarySheet.Cells[row, 21].Value = item.CurrentZipCode;
summarySheet.Cells[row, 22].Value = item.MarryFullName;
summarySheet.Cells[row, 23].Value = item.FatherFullName;
summarySheet.Cells[row, 24].Value = item.MotherFullName;
summarySheet.Cells[row, 25].Value = GenerateStatusOccupation(item.OccupationType);
summarySheet.Cells[row, 26].Value = item.OccupationPosition;
summarySheet.Cells[row, 27].Value = item.OccupationCompany;
summarySheet.Cells[row, 28].Value = item.OccupationDepartment;
summarySheet.Cells[row, 29].Value = item.OccupationEmail;
summarySheet.Cells[row, 30].Value = item.OccupationTelephone;
summarySheet.Cells[row, 31].Value = education.EducationLevelName;
summarySheet.Cells[row, 32].Value = education.Major;
summarySheet.Cells[row, 33].Value = education.Scores;
summarySheet.Cells[row, 34].Value = education.Name;
summarySheet.Cells[row, 35].Value = education.DurationStart == null ? "" : education.DurationStart.Date.ToThaiShortDate();
summarySheet.Cells[row, 36].Value = education.DurationEnd == null ? "" : education.DurationEnd.Date.ToThaiShortDate();
summarySheet.Cells[row, 43].Value = item.Number;
summarySheet.Cells[row, 44].Value = item.ExamIdenNumber;
summarySheet.Cells[row, 45].Value = item.SeatNumber;
summarySheet.Cells[row, 46].Value = item.PointTotalB;
summarySheet.Cells[row, 47].Value = item.PointB;
summarySheet.Cells[row, 48].Value = item.ResultB;
summarySheet.Cells[row, 49].Value = item.PointTotalC;
summarySheet.Cells[row, 50].Value = item.PointC;
summarySheet.Cells[row, 51].Value = item.ResultC;
summarySheet.Cells[row, 52].Value = item.Pass;
row++;
}
var careers = await _context.Careers
.AsQueryable()
.OrderBy(x => x.DurationStart)
.Where(x => x.Candidate.Id == item.Id)
.ToListAsync();
foreach (var career in careers)
{
summarySheet.Cells[row, 1].Value = GenerateStatusCandidate(item.Status);
summarySheet.Cells[row, 2].Value = item.CitizenId;
summarySheet.Cells[row, 3].Value = item.FullName;
summarySheet.Cells[row, 4].Value = item.Nationality;
summarySheet.Cells[row, 5].Value = item.DateOfBirth;
summarySheet.Cells[row, 6].Value = item.Age;
summarySheet.Cells[row, 7].Value = item.RelationshipName;
summarySheet.Cells[row, 8].Value = item.Telephone;
summarySheet.Cells[row, 9].Value = item.MobilePhone;
summarySheet.Cells[row, 10].Value = item.Email;
summarySheet.Cells[row, 11].Value = item.Knowledge;
summarySheet.Cells[row, 12].Value = item.RegistAddress;
summarySheet.Cells[row, 13].Value = item.RegistProvinceName;
summarySheet.Cells[row, 14].Value = item.RegistDistrictName;
summarySheet.Cells[row, 15].Value = item.RegistSubDistrictName;
summarySheet.Cells[row, 16].Value = item.RegistZipCode;
summarySheet.Cells[row, 17].Value = item.CurrentAddress;
summarySheet.Cells[row, 18].Value = item.CurrentProvinceName;
summarySheet.Cells[row, 19].Value = item.CurrentDistrictName;
summarySheet.Cells[row, 20].Value = item.CurrentSubDistrictName;
summarySheet.Cells[row, 21].Value = item.CurrentZipCode;
summarySheet.Cells[row, 22].Value = item.MarryFullName;
summarySheet.Cells[row, 23].Value = item.FatherFullName;
summarySheet.Cells[row, 24].Value = item.MotherFullName;
summarySheet.Cells[row, 25].Value = GenerateStatusOccupation(item.OccupationType);
summarySheet.Cells[row, 26].Value = item.OccupationPosition;
summarySheet.Cells[row, 27].Value = item.OccupationCompany;
summarySheet.Cells[row, 28].Value = item.OccupationDepartment;
summarySheet.Cells[row, 29].Value = item.OccupationEmail;
summarySheet.Cells[row, 30].Value = item.OccupationTelephone;
summarySheet.Cells[row, 37].Value = career.Name;
summarySheet.Cells[row, 38].Value = career.Position;
summarySheet.Cells[row, 39].Value = career.Salary;
summarySheet.Cells[row, 40].Value = career.DurationStart == null ? "" : career.DurationStart.Date.ToThaiShortDate();
summarySheet.Cells[row, 41].Value = career.DurationEnd == null ? "" : career.DurationEnd.Date.ToThaiShortDate();
summarySheet.Cells[row, 42].Value = career.Reason;
summarySheet.Cells[row, 43].Value = item.Number;
summarySheet.Cells[row, 44].Value = item.ExamIdenNumber;
summarySheet.Cells[row, 45].Value = item.SeatNumber;
summarySheet.Cells[row, 46].Value = item.PointTotalB;
summarySheet.Cells[row, 47].Value = item.PointB;
summarySheet.Cells[row, 48].Value = item.ResultB;
summarySheet.Cells[row, 49].Value = item.PointTotalC;
summarySheet.Cells[row, 50].Value = item.PointC;
summarySheet.Cells[row, 51].Value = item.ResultC;
summarySheet.Cells[row, 52].Value = item.Pass;
row++;
}
}
summarySheet.Cells[summarySheet.Dimension.Address].AutoFitColumns();
package.Save();
}
stream.Position = 0;
return stream;
}
// public async Task<MemoryStream> GetsDashboardExamAsync(string examId)
// {
// var periodExam = await _context.PeriodExams.AsQueryable()
// .FirstOrDefaultAsync(x => x.Id == Guid.Parse(examId));
// if (periodExam == null)
// throw new Exception(GlobalMessages.ExamNotFound);
// var stream = new MemoryStream();
// using (var package = new ExcelPackage(stream))
// {
// var summarySheet = package.Workbook.Worksheets.Add("Dashboard");
// summarySheet.TabColor = System.Drawing.Color.Black;
// // summarySheet.DefaultRowHeight = 17;
// summarySheet.Row(1).Style.Font.Bold = true;
// summarySheet.Cells[1, 1].Value = "จำนวนผู้สมัครคัดเลือกทั้งหมด";
// summarySheet.Cells[1, 2].Value = "จำนวนผู้มีสิทธิ์เข้ารับคัดเลือกทั้งหมด";
// summarySheet.Cells[1, 3].Value = "จำนวนผู้เข้ารับการคัดเลือกทั้งหมด";
// summarySheet.Cells[1, 4].Value = "ผ่านการสอบ";
// summarySheet.Cells[1, 5].Value = "ไม่ผ่านการสอบ";
// summarySheet.Cells[1, 6].Value = "คะแนนภาค ข";
// summarySheet.Cells[1, 7].Value = "ผลสอบภาค ข";
// summarySheet.Cells[1, 8].Value = "คะแนนเต็มภาค ค";
// summarySheet.Cells[1, 9].Value = "คะแนนภาค ค";
// summarySheet.Cells[1, 10].Value = "ผลสอบภาค ค";
// summarySheet.Cells[1, 11].Value = "ผลการสอบ";
// summarySheet.Cells[2, 1].Value = periodExam;
// summarySheet.Cells[2, 2].Value = periodExam;
// summarySheet.Cells[2, 3].Value = periodExam;
// summarySheet.Cells[2, 4].Value = periodExam;
// summarySheet.Cells[2, 5].Value = periodExam;
// summarySheet.Cells[2, 6].Value = periodExam;
// summarySheet.Cells[2, 7].Value = periodExam;
// summarySheet.Cells[2, 8].Value = periodExam;
// summarySheet.Cells[2, 9].Value = periodExam;
// summarySheet.Cells[2, 10].Value = periodExam;
// summarySheet.Cells[2, 11].Value = periodExam;
// summarySheet.Cells[summarySheet.Dimension.Address].AutoFitColumns();
// package.Save();
// }
// stream.Position = 0;
// return stream;
// }
#endregion
}
}

File diff suppressed because it is too large Load diff

View file

@ -49,6 +49,19 @@
"lib/net7.0/BMA.EHR.Extensions.dll": {}
}
},
"BouncyCastle.NetCore/1.9.0": {
"type": "package",
"compile": {
"lib/netstandard2.0/BouncyCastle.Crypto.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/netstandard2.0/BouncyCastle.Crypto.dll": {
"related": ".xml"
}
}
},
"Elasticsearch.Net/7.17.5": {
"type": "package",
"dependencies": {
@ -1263,10 +1276,10 @@
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Configuration.Binder/2.0.0": {
"Microsoft.Extensions.Configuration.Binder/6.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Configuration": "2.0.0"
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0"
},
"compile": {
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll": {
@ -1471,6 +1484,25 @@
}
}
},
"Microsoft.Extensions.Http/6.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0"
},
"compile": {
"lib/netstandard2.0/Microsoft.Extensions.Http.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Http.dll": {
"related": ".xml"
}
}
},
"Microsoft.Extensions.Localization/2.2.0": {
"type": "package",
"dependencies": {
@ -1541,6 +1573,29 @@
"buildTransitive/net6.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
}
},
"Microsoft.Extensions.Logging.Configuration/6.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Configuration": "6.0.0",
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Configuration.Binder": "6.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Logging": "6.0.0",
"Microsoft.Extensions.Logging.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "6.0.0"
},
"compile": {
"lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll": {
"related": ".xml"
}
}
},
"Microsoft.Extensions.ObjectPool/2.2.0": {
"type": "package",
"compile": {
@ -1574,6 +1629,26 @@
"buildTransitive/net6.0/_._": {}
}
},
"Microsoft.Extensions.Options.ConfigurationExtensions/6.0.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Configuration.Abstractions": "6.0.0",
"Microsoft.Extensions.Configuration.Binder": "6.0.0",
"Microsoft.Extensions.DependencyInjection.Abstractions": "6.0.0",
"Microsoft.Extensions.Options": "6.0.0",
"Microsoft.Extensions.Primitives": "6.0.0"
},
"compile": {
"lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
"related": ".xml"
}
}
},
"Microsoft.Extensions.Primitives/7.0.0": {
"type": "package",
"compile": {
@ -1875,6 +1950,59 @@
}
}
},
"Sentry/3.30.0": {
"type": "package",
"compile": {
"lib/net6.0/Sentry.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/Sentry.dll": {
"related": ".xml"
}
},
"build": {
"buildTransitive/Sentry.targets": {}
}
},
"Sentry.AspNetCore/3.30.0": {
"type": "package",
"dependencies": {
"Sentry.Extensions.Logging": "3.30.0"
},
"compile": {
"lib/net6.0/Sentry.AspNetCore.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/Sentry.AspNetCore.dll": {
"related": ".xml"
}
},
"frameworkReferences": [
"Microsoft.AspNetCore.App"
]
},
"Sentry.Extensions.Logging/3.30.0": {
"type": "package",
"dependencies": {
"Microsoft.Extensions.Http": "6.0.0",
"Microsoft.Extensions.Logging.Configuration": "6.0.0",
"Sentry": "3.30.0"
},
"compile": {
"lib/net6.0/Sentry.Extensions.Logging.dll": {
"related": ".xml"
}
},
"runtime": {
"lib/net6.0/Sentry.Extensions.Logging.dll": {
"related": ".xml"
}
}
},
"Serilog/2.12.0": {
"type": "package",
"compile": {
@ -3003,6 +3131,21 @@
"lib/net7.0/BMA.EHR.Extensions.dll"
]
},
"BouncyCastle.NetCore/1.9.0": {
"sha512": "FpWfsqjMp+RNavLqMlviDPlbdf7q4j/pr9SHfc1LKcZz5PRjciuYo59nFnw+eJi+H8cm0eH5uVZStwAv1LRdCw==",
"type": "package",
"path": "bouncycastle.netcore/1.9.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"bouncycastle.netcore.1.9.0.nupkg.sha512",
"bouncycastle.netcore.nuspec",
"lib/net20/BouncyCastle.Crypto.dll",
"lib/net20/BouncyCastle.Crypto.xml",
"lib/netstandard2.0/BouncyCastle.Crypto.dll",
"lib/netstandard2.0/BouncyCastle.Crypto.xml"
]
},
"Elasticsearch.Net/7.17.5": {
"sha512": "orChsQi1Ceho/NyIylNOn6y4vuGcsbCfMZnCueNN0fzqYEGQmQdPfcVmsR5+3fwpXTgxCdjTUVmqOwvHpCSB+Q==",
"type": "package",
@ -4466,17 +4609,23 @@
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Configuration.Binder/2.0.0": {
"sha512": "IznHHzGUtrdpuQqIUdmzF6TYPcsYHONhHh3o9dGp39sX/9Zfmt476UnhvU0UhXgJnXXAikt/MpN6AuSLCCMdEQ==",
"Microsoft.Extensions.Configuration.Binder/6.0.0": {
"sha512": "b3ErKzND8LIC7o08QAVlKfaEIYEvLJbtmVbFZVBRXeu9YkKfSSzLZfR1SUfQPBIy9mKLhEtJgGYImkcMNaKE0A==",
"type": "package",
"path": "microsoft.extensions.configuration.binder/2.0.0",
"path": "microsoft.extensions.configuration.binder/6.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/net461/Microsoft.Extensions.Configuration.Binder.dll",
"lib/net461/Microsoft.Extensions.Configuration.Binder.xml",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll",
"lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml",
"microsoft.extensions.configuration.binder.2.0.0.nupkg.sha512",
"microsoft.extensions.configuration.binder.nuspec"
"microsoft.extensions.configuration.binder.6.0.0.nupkg.sha512",
"microsoft.extensions.configuration.binder.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Configuration.FileExtensions/7.0.0": {
@ -4731,6 +4880,25 @@
"microsoft.extensions.hosting.abstractions.nuspec"
]
},
"Microsoft.Extensions.Http/6.0.0": {
"sha512": "15+pa2G0bAMHbHewaQIdr/y6ag2H3yh4rd9hTXavtWDzQBkvpe2RMqFg8BxDpcQWssmjmBApGPcw93QRz6YcMg==",
"type": "package",
"path": "microsoft.extensions.http/6.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/net461/Microsoft.Extensions.Http.dll",
"lib/net461/Microsoft.Extensions.Http.xml",
"lib/netstandard2.0/Microsoft.Extensions.Http.dll",
"lib/netstandard2.0/Microsoft.Extensions.Http.xml",
"microsoft.extensions.http.6.0.0.nupkg.sha512",
"microsoft.extensions.http.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Localization/2.2.0": {
"sha512": "3nBQLeBrcd4Rgd9vQi4gF5NgAWxnQrHekjjwlgww4wyLNfJDizjiex2resOLoAuAgy3y2IIAWjOpbr0UKR2ykw==",
"type": "package",
@ -4856,6 +5024,25 @@
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Logging.Configuration/6.0.0": {
"sha512": "ZDskjagmBAbv+K8rYW9VhjPplhbOE63xUD0DiuydZJwt15dRyoqicYklLd86zzeintUc7AptDkHn+YhhYkYo8A==",
"type": "package",
"path": "microsoft.extensions.logging.configuration/6.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/net461/Microsoft.Extensions.Logging.Configuration.dll",
"lib/net461/Microsoft.Extensions.Logging.Configuration.xml",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.dll",
"lib/netstandard2.0/Microsoft.Extensions.Logging.Configuration.xml",
"microsoft.extensions.logging.configuration.6.0.0.nupkg.sha512",
"microsoft.extensions.logging.configuration.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.ObjectPool/2.2.0": {
"sha512": "gA8H7uQOnM5gb+L0uTNjViHYr+hRDqCdfugheGo/MxQnuHzmhhzCBTIPm19qL1z1Xe0NEMabfcOBGv9QghlZ8g==",
"type": "package",
@ -4898,6 +5085,25 @@
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Options.ConfigurationExtensions/6.0.0": {
"sha512": "bXWINbTn0vC0FYc9GaQTISbxhQLAMrvtbuvD9N6JelEaIS/Pr62wUCinrq5bf1WRBGczt1v4wDhxFtVFNcMdUQ==",
"type": "package",
"path": "microsoft.extensions.options.configurationextensions/6.0.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"Icon.png",
"LICENSE.TXT",
"THIRD-PARTY-NOTICES.TXT",
"lib/net461/Microsoft.Extensions.Options.ConfigurationExtensions.dll",
"lib/net461/Microsoft.Extensions.Options.ConfigurationExtensions.xml",
"lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll",
"lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml",
"microsoft.extensions.options.configurationextensions.6.0.0.nupkg.sha512",
"microsoft.extensions.options.configurationextensions.nuspec",
"useSharedDesignerContext.txt"
]
},
"Microsoft.Extensions.Primitives/7.0.0": {
"sha512": "um1KU5kxcRp3CNuI8o/GrZtD4AIOXDk+RLsytjZ9QPok3ttLUelLKpilVPuaFT3TFjOhSibUAso0odbOaCDj3Q==",
"type": "package",
@ -5370,6 +5576,89 @@
"pomelo.entityframeworkcore.mysql.nuspec"
]
},
"Sentry/3.30.0": {
"sha512": "BfhnWf/NbMW+6RVrNZ8bH40YG6QSb01Dt50/BbPIb0W23Wya0tb8QSyX2990nU3DIqrhxqENajgBNDEo868CNw==",
"type": "package",
"path": "sentry/3.30.0",
"hasTools": true,
"files": [
".nupkg.metadata",
".signature.p7s",
"README.md",
"build/Sentry.targets",
"buildTransitive/Sentry.targets",
"lib/net461/Sentry.dll",
"lib/net461/Sentry.xml",
"lib/net5.0/Sentry.dll",
"lib/net5.0/Sentry.xml",
"lib/net6.0-android31.0/Sentry.dll",
"lib/net6.0-android31.0/Sentry.xml",
"lib/net6.0-ios16.1/Sentry.dll",
"lib/net6.0-ios16.1/Sentry.xml",
"lib/net6.0-maccatalyst16.1/Sentry.dll",
"lib/net6.0-maccatalyst16.1/Sentry.xml",
"lib/net6.0/Sentry.dll",
"lib/net6.0/Sentry.xml",
"lib/netcoreapp3.0/Sentry.dll",
"lib/netcoreapp3.0/Sentry.xml",
"lib/netstandard2.0/Sentry.dll",
"lib/netstandard2.0/Sentry.xml",
"lib/netstandard2.1/Sentry.dll",
"lib/netstandard2.1/Sentry.xml",
"sentry-nuget.png",
"sentry.3.30.0.nupkg.sha512",
"sentry.nuspec",
"tools/sentry-cli-Darwin-arm64",
"tools/sentry-cli-Darwin-x86_64",
"tools/sentry-cli-Linux-aarch64",
"tools/sentry-cli-Linux-i686",
"tools/sentry-cli-Linux-x86_64",
"tools/sentry-cli-Windows-i686.exe",
"tools/sentry-cli-Windows-x86_64.exe"
]
},
"Sentry.AspNetCore/3.30.0": {
"sha512": "EpXvQQ6UbOQkyOwL0TNjXBBO0sK+XRETf8Oq6EdtmXdQuTfaLC48kqSXk3pxugBCqIxU/kT7fXd12rPkFG9EMA==",
"type": "package",
"path": "sentry.aspnetcore/3.30.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"README.md",
"lib/net5.0/Sentry.AspNetCore.dll",
"lib/net5.0/Sentry.AspNetCore.xml",
"lib/net6.0/Sentry.AspNetCore.dll",
"lib/net6.0/Sentry.AspNetCore.xml",
"lib/netcoreapp3.0/Sentry.AspNetCore.dll",
"lib/netcoreapp3.0/Sentry.AspNetCore.xml",
"lib/netstandard2.0/Sentry.AspNetCore.dll",
"lib/netstandard2.0/Sentry.AspNetCore.xml",
"sentry-nuget.png",
"sentry.aspnetcore.3.30.0.nupkg.sha512",
"sentry.aspnetcore.nuspec"
]
},
"Sentry.Extensions.Logging/3.30.0": {
"sha512": "tykAR21+TvzGT4/YnWB3HDKFQ0Vv+/9t//r/QDCyWN/9lzDseShXsK98Th66l/b4b1wOdYgDRfH3Dj0b6RikhQ==",
"type": "package",
"path": "sentry.extensions.logging/3.30.0",
"files": [
".nupkg.metadata",
".signature.p7s",
"README.md",
"lib/net5.0/Sentry.Extensions.Logging.dll",
"lib/net5.0/Sentry.Extensions.Logging.xml",
"lib/net6.0/Sentry.Extensions.Logging.dll",
"lib/net6.0/Sentry.Extensions.Logging.xml",
"lib/netcoreapp3.0/Sentry.Extensions.Logging.dll",
"lib/netcoreapp3.0/Sentry.Extensions.Logging.xml",
"lib/netstandard2.0/Sentry.Extensions.Logging.dll",
"lib/netstandard2.0/Sentry.Extensions.Logging.xml",
"sentry-nuget.png",
"sentry.extensions.logging.3.30.0.nupkg.sha512",
"sentry.extensions.logging.nuspec"
]
},
"Serilog/2.12.0": {
"sha512": "xaiJLIdu6rYMKfQMYUZgTy8YK7SMZjB4Yk50C/u//Z4OsvxkUfSPJy4nknfvwAC34yr13q7kcyh4grbwhSxyZg==",
"type": "package",
@ -8112,6 +8401,7 @@
"AWSSDK.S3 >= 3.7.103.39",
"BMA.EHR.Core >= 1.0.0",
"BMA.EHR.Extensions >= 1.0.1",
"BouncyCastle.NetCore >= 1.9.0",
"EPPlus >= 6.1.3",
"EPPlus.Interfaces >= 6.1.1",
"EPPlus.System.Drawing >= 6.1.1",
@ -8138,6 +8428,7 @@
"Microsoft.EntityFrameworkCore.Tools >= 7.0.4",
"Microsoft.VisualStudio.Azure.Containers.Tools.Targets >= 1.17.0",
"Pomelo.EntityFrameworkCore.MySql >= 7.0.0",
"Sentry.AspNetCore >= 3.30.0",
"Serilog >= 2.12.0",
"Serilog.AspNetCore >= 6.1.0",
"Serilog.Enrichers.Environment >= 2.2.0",
@ -8222,6 +8513,10 @@
"target": "Package",
"version": "[1.0.1, )"
},
"BouncyCastle.NetCore": {
"target": "Package",
"version": "[1.9.0, )"
},
"EPPlus": {
"target": "Package",
"version": "[6.1.3, )"
@ -8328,6 +8623,10 @@
"target": "Package",
"version": "[7.0.0, )"
},
"Sentry.AspNetCore": {
"target": "Package",
"version": "[3.30.0, )"
},
"Serilog": {
"target": "Package",
"version": "[2.12.0, )"

View file

@ -1,6 +1,6 @@
{
"version": 2,
"dgSpecHash": "UamAJ+luCR5BwXfEV/O5TWqxblwcXJsT9e9lSupRwpSjVNNTPJ+/XkVZ/YNA1yBoG23TF1II8FLxdnStLW+fkA==",
"dgSpecHash": "pGFU0xfNi4nLi0e2b+i6DR2wgiyob2yQxLxlDzkcCpOCdw+C03VAunyli3b7rozwKJ3GhD7nJifxVqr+m+OBHw==",
"success": true,
"projectFilePath": "D:\\BMA-EHR-Recurit-Exam-Service\\BMA.EHR.Recurit.Exam.Service.csproj",
"expectedPackageFiles": [
@ -8,6 +8,7 @@
"C:\\Users\\M\\.nuget\\packages\\awssdk.s3\\3.7.103.39\\awssdk.s3.3.7.103.39.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\bma.ehr.core\\1.0.0\\bma.ehr.core.1.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\bma.ehr.extensions\\1.0.1\\bma.ehr.extensions.1.0.1.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\bouncycastle.netcore\\1.9.0\\bouncycastle.netcore.1.9.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\elasticsearch.net\\7.17.5\\elasticsearch.net.7.17.5.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\epplus\\6.1.3\\epplus.6.1.3.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\epplus.interfaces\\6.1.1\\epplus.interfaces.6.1.1.nupkg.sha512",
@ -75,7 +76,7 @@
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.caching.memory\\7.0.0\\microsoft.extensions.caching.memory.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.configuration\\7.0.0\\microsoft.extensions.configuration.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\7.0.0\\microsoft.extensions.configuration.abstractions.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.configuration.binder\\2.0.0\\microsoft.extensions.configuration.binder.2.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.configuration.binder\\6.0.0\\microsoft.extensions.configuration.binder.6.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.configuration.fileextensions\\7.0.0\\microsoft.extensions.configuration.fileextensions.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.configuration.json\\7.0.0\\microsoft.extensions.configuration.json.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\7.0.0\\microsoft.extensions.dependencyinjection.7.0.0.nupkg.sha512",
@ -86,12 +87,15 @@
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.fileproviders.physical\\7.0.0\\microsoft.extensions.fileproviders.physical.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.filesystemglobbing\\7.0.0\\microsoft.extensions.filesystemglobbing.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.hosting.abstractions\\3.1.8\\microsoft.extensions.hosting.abstractions.3.1.8.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.http\\6.0.0\\microsoft.extensions.http.6.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.localization\\2.2.0\\microsoft.extensions.localization.2.2.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.localization.abstractions\\2.2.0\\microsoft.extensions.localization.abstractions.2.2.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.logging\\7.0.0\\microsoft.extensions.logging.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\7.0.0\\microsoft.extensions.logging.abstractions.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.logging.configuration\\6.0.0\\microsoft.extensions.logging.configuration.6.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.objectpool\\2.2.0\\microsoft.extensions.objectpool.2.2.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.options\\7.0.0\\microsoft.extensions.options.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\6.0.0\\microsoft.extensions.options.configurationextensions.6.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.primitives\\7.0.0\\microsoft.extensions.primitives.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.extensions.webencoders\\2.2.0\\microsoft.extensions.webencoders.2.2.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\microsoft.identitymodel.jsonwebtokens\\6.15.1\\microsoft.identitymodel.jsonwebtokens.6.15.1.nupkg.sha512",
@ -112,6 +116,9 @@
"C:\\Users\\M\\.nuget\\packages\\newtonsoft.json\\13.0.1\\newtonsoft.json.13.0.1.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\newtonsoft.json.bson\\1.0.2\\newtonsoft.json.bson.1.0.2.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\pomelo.entityframeworkcore.mysql\\7.0.0\\pomelo.entityframeworkcore.mysql.7.0.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\sentry\\3.30.0\\sentry.3.30.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\sentry.aspnetcore\\3.30.0\\sentry.aspnetcore.3.30.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\sentry.extensions.logging\\3.30.0\\sentry.extensions.logging.3.30.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\serilog\\2.12.0\\serilog.2.12.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\serilog.aspnetcore\\6.1.0\\serilog.aspnetcore.6.1.0.nupkg.sha512",
"C:\\Users\\M\\.nuget\\packages\\serilog.enrichers.environment\\2.2.0\\serilog.enrichers.environment.2.2.0.nupkg.sha512",