add: Add Person Profile to Table

This commit is contained in:
Suphonchai Phoonsawat 2024-07-11 14:52:54 +07:00
parent 49eb785a92
commit 96a2c8d94f
13 changed files with 3727 additions and 23 deletions

View file

@ -154,5 +154,11 @@ namespace BMA.EHR.Domain.Models.Leave.Requests
[Comment("สังกัดผู้ยื่นขอ")]
public string? OrganizationName { get; set; } = string.Empty;
public string? Prefix { get; set; }
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
}

View file

@ -26,5 +26,11 @@ namespace BMA.EHR.Domain.Models.Leave.TimeAttendants
[Required, Comment("รหัส User ของ Keycloak ที่ร้องขอ")]
public Guid KeycloakUserId { get; set; } = Guid.Empty;
public string? Prefix { get; set; }
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
}

View file

@ -67,9 +67,15 @@ namespace BMA.EHR.Domain.Models.Leave.TimeAttendants
public string? CheckOutStatus { get; set; } = string.Empty;
[Comment("สถานะการของลงเวลาพิเศษ")]
public string? EditStatus { get; set; } = string.Empty;
public string? EditStatus { get; set; } = string.Empty;
[Comment("เหตุผลการอนุมัติ/ไม่อนุมัติขอลงเวลาพิเศษ")]
public string? EditReason { get; set; } = string.Empty;
public string? EditReason { get; set; } = string.Empty;
public string? Prefix { get; set; }
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
}

View file

@ -37,7 +37,7 @@ namespace BMA.EHR.Domain.Models.Leave.TimeAttendants
public string CheckInImageUrl { get; set; } = string.Empty;
[Comment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-In")]
public string? CheckInRemark { get; set; } = string.Empty;
public string? CheckInRemark { get; set; } = string.Empty;
[Required, Comment("พิกัดละติจูด Check-Out")]
public double CheckOutLat { get; set; } = 0;
@ -59,5 +59,11 @@ namespace BMA.EHR.Domain.Models.Leave.TimeAttendants
[Comment("ข้อความหมายเหตุที่ต้องการระบุเพิ่ม(มีเผื่อไว้อาจไม่ได้ใช้) Check-Out")]
public string? CheckOutRemark { get; set; } = string.Empty;
public string? Prefix { get; set; }
public string? FirstName { get; set; }
public string? LastName { get; set; }
}
}

View file

@ -0,0 +1,84 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
{
/// <inheritdoc />
public partial class AddPersonDatatoTimeStamp : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "FirstName",
table: "UserTimeStamps",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "LastName",
table: "UserTimeStamps",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "Prefix",
table: "UserTimeStamps",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "FirstName",
table: "ProcessUserTimeStamps",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "LastName",
table: "ProcessUserTimeStamps",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "Prefix",
table: "ProcessUserTimeStamps",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "FirstName",
table: "UserTimeStamps");
migrationBuilder.DropColumn(
name: "LastName",
table: "UserTimeStamps");
migrationBuilder.DropColumn(
name: "Prefix",
table: "UserTimeStamps");
migrationBuilder.DropColumn(
name: "FirstName",
table: "ProcessUserTimeStamps");
migrationBuilder.DropColumn(
name: "LastName",
table: "ProcessUserTimeStamps");
migrationBuilder.DropColumn(
name: "Prefix",
table: "ProcessUserTimeStamps");
}
}
}

View file

@ -0,0 +1,51 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
{
/// <inheritdoc />
public partial class AddPersonDatatoLeaveRequest : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "FirstName",
table: "LeaveRequests",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "LastName",
table: "LeaveRequests",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "Prefix",
table: "LeaveRequests",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "FirstName",
table: "LeaveRequests");
migrationBuilder.DropColumn(
name: "LastName",
table: "LeaveRequests");
migrationBuilder.DropColumn(
name: "Prefix",
table: "LeaveRequests");
}
}
}

View file

@ -0,0 +1,51 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
{
/// <inheritdoc />
public partial class AddPersonDatatoAdditionalLoginRequest : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "FirstName",
table: "AdditionalCheckRequests",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "LastName",
table: "AdditionalCheckRequests",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
migrationBuilder.AddColumn<string>(
name: "Prefix",
table: "AdditionalCheckRequests",
type: "longtext",
nullable: true)
.Annotation("MySql:CharSet", "utf8mb4");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "FirstName",
table: "AdditionalCheckRequests");
migrationBuilder.DropColumn(
name: "LastName",
table: "AdditionalCheckRequests");
migrationBuilder.DropColumn(
name: "Prefix",
table: "AdditionalCheckRequests");
}
}
}

View file

@ -274,12 +274,18 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnType("longtext")
.HasComment("เรียนใคร");
b.Property<string>("FirstName")
.HasColumnType("longtext");
b.Property<bool>("HajjDayStatus")
.HasColumnType("tinyint(1)");
b.Property<Guid>("KeycloakUserId")
.HasColumnType("char(36)");
b.Property<string>("LastName")
.HasColumnType("longtext");
b.Property<string>("LastUpdateFullName")
.IsRequired()
.HasMaxLength(200)
@ -419,6 +425,9 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnType("longtext")
.HasComment("ตำแหน่งผู้ยื่นขอ");
b.Property<string>("Prefix")
.HasColumnType("longtext");
b.Property<double>("RestDayCurrentTotal")
.HasColumnType("double");
@ -524,10 +533,16 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnType("longtext")
.HasComment("*หมายเหตุขอลงเวลาพิเศษ");
b.Property<string>("FirstName")
.HasColumnType("longtext");
b.Property<Guid>("KeycloakUserId")
.HasColumnType("char(36)")
.HasComment("รหัส User ของ Keycloak ที่ร้องขอ");
b.Property<string>("LastName")
.HasColumnType("longtext");
b.Property<string>("LastUpdateFullName")
.IsRequired()
.HasMaxLength(200)
@ -547,6 +562,9 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnOrder(102)
.HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
b.Property<string>("Prefix")
.HasColumnType("longtext");
b.Property<string>("Status")
.IsRequired()
.HasColumnType("longtext")
@ -747,6 +765,9 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnType("longtext")
.HasComment("สถานะการของลงเวลาพิเศษ");
b.Property<string>("FirstName")
.HasColumnType("longtext");
b.Property<bool>("IsLocationCheckIn")
.HasColumnType("tinyint(1)")
.HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-In");
@ -763,6 +784,9 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnType("char(36)")
.HasComment("รหัส User ของ Keycloak");
b.Property<string>("LastName")
.HasColumnType("longtext");
b.Property<string>("LastUpdateFullName")
.IsRequired()
.HasMaxLength(200)
@ -782,6 +806,9 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnOrder(102)
.HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
b.Property<string>("Prefix")
.HasColumnType("longtext");
b.HasKey("Id");
b.ToTable("ProcessUserTimeStamps");
@ -1010,6 +1037,9 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnOrder(101)
.HasComment("User Id ที่สร้างข้อมูล");
b.Property<string>("FirstName")
.HasColumnType("longtext");
b.Property<bool>("IsLocationCheckIn")
.HasColumnType("tinyint(1)")
.HasComment("true คือ ณ สถานที่ตั้ง, false คือ นอกสถานที่ตั้ง Check-In");
@ -1026,6 +1056,9 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnType("char(36)")
.HasComment("รหัส User ของ Keycloak");
b.Property<string>("LastName")
.HasColumnType("longtext");
b.Property<string>("LastUpdateFullName")
.IsRequired()
.HasMaxLength(200)
@ -1045,6 +1078,9 @@ namespace BMA.EHR.Infrastructure.Migrations.LeaveDb
.HasColumnOrder(102)
.HasComment("แก้ไขข้อมูลล่าสุดเมื่อ");
b.Property<string>("Prefix")
.HasColumnType("longtext");
b.HasKey("Id");
b.ToTable("UserTimeStamps");

View file

@ -477,7 +477,10 @@ namespace BMA.EHR.Leave.Service.Controllers
CheckInPOI = data.POI,
CheckInRemark = data.Remark,
CheckInImageUrl = fileName,
CheckIn = currentDate
CheckIn = currentDate,
Prefix = profile.Prefix,
FirstName = profile.FirstName,
LastName = profile.LastName,
};
var checkInStatus = DateTime.Parse(currentDate.ToString("yyyy-MM-dd HH:mm")) >
@ -502,7 +505,10 @@ namespace BMA.EHR.Leave.Service.Controllers
CheckInRemark = data.Remark,
CheckInImageUrl = fileName,
CheckIn = currentDate,
CheckInStatus = checkInStatus
CheckInStatus = checkInStatus,
Prefix = profile.Prefix,
FirstName = profile.FirstName,
LastName = profile.LastName,
};
await _userTimeStampRepository.AddAsync(checkin);
@ -689,7 +695,8 @@ namespace BMA.EHR.Leave.Service.Controllers
.Select(d => new CheckInHistoryForAdminDto
{
Id = d.Id,
FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
//FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
FullName = $"{d.Prefix}{d.FirstName} {d.LastName}",
CheckInDate = d.CheckIn.Date,
CheckInTime = d.CheckIn.ToString("HH:mm:ss"),
@ -775,7 +782,9 @@ namespace BMA.EHR.Leave.Service.Controllers
var result = new CheckInDetailForAdminDto
{
Id = d.Id,
FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}", // _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
FullName = $"{d.Prefix}{d.FirstName} {d.LastName}",
//FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}", // _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
CheckInDate = d.CheckIn.Date,
CheckInTime = d.CheckIn.ToString("HH:mm"),
@ -880,22 +889,22 @@ namespace BMA.EHR.Leave.Service.Controllers
foreach (var d in resultData)
{
var pf = profiles.FirstOrDefault(x => x.Keycloak == d.KeycloakUserId);
if (pf == null)
{
pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(d.KeycloakUserId, AccessToken);
if (pf == null)
continue;
else
profiles.Add(pf);
}
//var pf = profiles.FirstOrDefault(x => x.Keycloak == d.KeycloakUserId);
//if (pf == null)
//{
// pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(d.KeycloakUserId, AccessToken);
// if (pf == null)
// continue;
// else
// profiles.Add(pf);
//}
//var pf = await _userProfileRepository.GetProfileByKeycloakIdAsync(d.KeycloakUserId, AccessToken);
//if (pf == null) continue;
data.Add(new CheckInProcessHistoryForAdminDto
{
Id = d.Id,
FullName = $"{pf.Prefix}{pf.FirstName} {pf.LastName}",
FullName = $"{d.Prefix}{d.FirstName} {d.LastName}",
CheckInDate = d.CheckIn.Date,
CheckInTime = d.CheckIn.ToString("HH:mm"),
CheckInLocation = d.CheckInPOI,
@ -909,8 +918,6 @@ namespace BMA.EHR.Leave.Service.Controllers
DateTime.Parse($"{d.CheckIn.ToString("yyyy-MM-dd")} {duty.EndTimeMorning}") ?
"ABSENT" :
"LATE" :
"NORMAL",
CheckInIsLocation = d.IsLocationCheckIn,
CheckInLocationName = d.CheckInLocationName,
@ -1157,6 +1164,13 @@ namespace BMA.EHR.Leave.Service.Controllers
return Error("ไม่สามารถขอลงเวลากรณีพิเศษในวันที่มากกว่าวันที่ปัจจุบันได้", StatusCodes.Status400BadRequest);
}
var userId = UserId != null ? Guid.Parse(UserId) : Guid.Empty;
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(userId, AccessToken);
if (profile == null)
{
throw new Exception(GlobalMessages.DataNotFound);
}
var request = new AdditionalCheckRequest
{
KeycloakUserId = UserId != null ? Guid.Parse(UserId) : Guid.Empty,
@ -1164,6 +1178,9 @@ namespace BMA.EHR.Leave.Service.Controllers
CheckInEdit = req.CheckInEdit,
CheckOutEdit = req.CheckOutEdit,
Description = req.Description,
Prefix = profile.Prefix,
FirstName = profile.FirstName,
LastName = profile.LastName,
};
await _additionalCheckRequestRepository.AddAsync(request);
@ -1215,7 +1232,8 @@ namespace BMA.EHR.Leave.Service.Controllers
var resObj = new GetAdditionalCheckRequestDto
{
Id = data.Id,
FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}",
FullName = $"{data.Prefix}{data.FirstName} {data.LastName}",
//FullName = $"{profile.Prefix}{profile.FirstName} {profile.LastName}",
CreatedAt = data.CreatedAt,
CheckDate = data.CheckDate,
CheckInEdit = data.CheckInEdit,
@ -1308,6 +1326,8 @@ namespace BMA.EHR.Leave.Service.Controllers
if (processTimeStamp == null)
{
var profile = await _userProfileRepository.GetProfileByKeycloakIdAsync(requestData.KeycloakUserId, AccessToken);
processTimeStamp = new ProcessUserTimeStamp
{
KeycloakUserId = requestData.KeycloakUserId,
@ -1323,7 +1343,11 @@ namespace BMA.EHR.Leave.Service.Controllers
CheckInPOI = "ลงเวลากรณีพิเศษ",
CheckOutPOI = "ลงเวลากรณีพิเศษ",
CheckInStatus = req.CheckInStatus,
CheckOutStatus = req.CheckOutStatus
CheckOutStatus = req.CheckOutStatus,
Prefix = profile.Prefix,
FirstName = profile.FirstName,
LastName = profile.LastName,
};
@ -1454,7 +1478,8 @@ namespace BMA.EHR.Leave.Service.Controllers
var result = new CheckInDetailForAdminDto
{
Id = d.Id,
FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
FullName = $"{d.Prefix}{d.FirstName} {d.LastName}",
//FullName = _userProfileRepository.GetUserFullName(d.KeycloakUserId, AccessToken),
CheckInDate = d.CheckIn.Date,
CheckInTime = d.CheckIn.ToString("HH:mm"),

View file

@ -176,7 +176,11 @@ namespace BMA.EHR.Leave.Service.Controllers
LeaveSalaryText = req.LeaveSalaryText ?? "",
LeaveStatus = "DRAFT",
KeycloakUserId = userId,
ApproveStep = APPROVE_STEP_CREATE
ApproveStep = APPROVE_STEP_CREATE,
Prefix = profile.Prefix,
FirstName = profile.FirstName,
LastName = profile.LastName,
};
// get leave last