agent-user read-mode support

This commit is contained in:
nugroho 2025-06-19 12:02:09 +07:00
parent ba741a3ab9
commit 717e026017
3 changed files with 37 additions and 7 deletions

View File

@ -113,7 +113,7 @@ public static partial class APIHandler
agent.Run(async runner => agent.Run(async runner =>
{ {
if (!await runner.RequestValidated(1, "POST", true)) return; if (!await runner.RequestValidated(1, "POST", true)) return;
if (await runner.TryGetBodyJsonAsync(["agentid", "name", "jabatan", "deplid", "skangkat", "tmt", "skper", "tgper", "vision", "mission", "photo", "createuser", "uname", "pass", "level"], CTS.Token) is Dictionary<string, JsonElement> InElement) if (await runner.TryGetBodyJsonAsync(["agentid", "name", "jabatan", "deplid", "skangkat", "tmt", "skper", "tgper", "vision", "mission", "photo", "seleksi", "nilaipilih", "eviden", "dokumentasi", "createuser", "uname", "pass", "level"], CTS.Token) is Dictionary<string, JsonElement> InElement)
{ {
string AgentID = InElement["agentid"].GetString() ?? string.Empty; string AgentID = InElement["agentid"].GetString() ?? string.Empty;
string Name = InElement["name"].GetString() ?? string.Empty; string Name = InElement["name"].GetString() ?? string.Empty;
@ -127,6 +127,10 @@ public static partial class APIHandler
string Mission = InElement["mission"].GetString() ?? "-"; string Mission = InElement["mission"].GetString() ?? "-";
string Photo = InElement["photo"].GetString() ?? string.Empty; string Photo = InElement["photo"].GetString() ?? string.Empty;
string PhotoURL = string.Empty; string PhotoURL = string.Empty;
string? Seleksi = InElement["seleksi"].GetString();
DateOnly? NilaiPilih = InElement["nilaipilih"].ValueKind == JsonValueKind.Null ? null : DateOnly.FromDateTime(InElement["nilaipilih"].GetDateTime());
string? Eviden = InElement["eviden"].GetString();
string? Dokumentasi = InElement["dokumentasi"].GetString();
bool CreateUser = InElement["createuser"].GetBoolean(); bool CreateUser = InElement["createuser"].GetBoolean();
string UName = InElement["uname"].GetString() ?? string.Empty; string UName = InElement["uname"].GetString() ?? string.Empty;
string PlainPass = InElement["pass"].GetString() ?? string.Empty; string PlainPass = InElement["pass"].GetString() ?? string.Empty;
@ -159,7 +163,7 @@ public static partial class APIHandler
if (!File.Exists(PhotoPath)) await File.WriteAllBytesAsync(PhotoPath, ImageBytes, CTS.Token); if (!File.Exists(PhotoPath)) await File.WriteAllBytesAsync(PhotoPath, ImageBytes, CTS.Token);
PhotoURL = Path.Combine("/assets/images/uploads", PhotoFileName); PhotoURL = Path.Combine("/assets/images/uploads", PhotoFileName);
} }
Agent NewAgent = new(AgentID, Name, Jabatan, DeploymentID, SKAngkat, TMT, SKPer.Length == 0 ? null : SKPer, SKPer.Length == 0 ? null : TGPer, Vision, Mission, Photo.Length == 0 ? null : PhotoURL); Agent NewAgent = new(AgentID, Name, Jabatan, DeploymentID, SKAngkat, TMT, SKPer.Length == 0 ? null : SKPer, SKPer.Length == 0 ? null : TGPer, Vision, Mission, Photo.Length == 0 ? null : PhotoURL, Seleksi, NilaiPilih, Eviden, Dokumentasi);
await RunTransactionAsync(CS, async (Conn, Trans) => await RunTransactionAsync(CS, async (Conn, Trans) =>
{ {
using (SqlCommand CreateAgent = Conn.CreateCommand()) using (SqlCommand CreateAgent = Conn.CreateCommand())
@ -239,7 +243,11 @@ public static partial class APIHandler
a["tgperubahan"] == DBNull.Value ? null : DateOnly.FromDateTime((DateTime)a["tgperubahan"]), a["tgperubahan"] == DBNull.Value ? null : DateOnly.FromDateTime((DateTime)a["tgperubahan"]),
a["vision"] == DBNull.Value ? null : (string)a["vision"], a["vision"] == DBNull.Value ? null : (string)a["vision"],
a["mission"] == DBNull.Value ? null : (string)a["mission"], a["mission"] == DBNull.Value ? null : (string)a["mission"],
a["photourl"] == DBNull.Value ? null : (string)a["photourl"] a["photourl"] == DBNull.Value ? null : (string)a["photourl"],
a["seleksi"] == DBNull.Value ? null : (string)a["seleksi"],
a["nilaipilih"] == DBNull.Value ? null : DateOnly.FromDateTime((DateTime)a["nilaipilih"]),
a["eviden"] == DBNull.Value ? null : (string)a["eviden"],
a["dokumentasi"] == DBNull.Value ? null : (string)a["dokumentasi"]
), CTS.Token))[0]; ), CTS.Token))[0];
int AgentIdx = Agents.FindIndex(a => a.AgentID == UpAgent.AgentID); int AgentIdx = Agents.FindIndex(a => a.AgentID == UpAgent.AgentID);
Agents[AgentIdx] = Agents[AgentIdx] with Agents[AgentIdx] = Agents[AgentIdx] with
@ -253,12 +261,29 @@ public static partial class APIHandler
TMUbah = UpAgent.TMUbah, TMUbah = UpAgent.TMUbah,
Vision = UpAgent.Vision, Vision = UpAgent.Vision,
Mission = UpAgent.Mission, Mission = UpAgent.Mission,
PhotoURL = UpAgent.PhotoURL PhotoURL = UpAgent.PhotoURL,
Seleksi = UpAgent.Seleksi,
NilaiPilih = UpAgent.NilaiPilih,
Eviden = UpAgent.Eviden,
Dokumentasi = UpAgent.Dokumentasi
}; };
await runner.WriteJsonResponse(StatusCodes.Status202Accepted, "Data updated.", UpAgent); await runner.WriteJsonResponse(StatusCodes.Status202Accepted, "Data updated.", UpAgent);
} }
}); });
}) })
.Map("/getusers", users =>
{
users.Run(async runner =>
{
if (!await runner.RequestValidated(2)) return;
List<SafeUser> SafeAccounts = [];
foreach (User UnsafeUser in UserAccounts.Values.ToList())
{
SafeAccounts.Add(SafeUser.FromUser(UnsafeUser));
}
await runner.WriteJsonResponse(StatusCodes.Status200OK, "Success", SafeAccounts);
});
})
.Map("/passwd", passwd => .Map("/passwd", passwd =>
{ {
passwd.Run(async runner => passwd.Run(async runner =>

View File

@ -174,7 +174,11 @@ internal static class Commons
r["tgperubahan"] == DBNull.Value ? null : DateOnly.FromDateTime((DateTime)r["tgperubahan"]), r["tgperubahan"] == DBNull.Value ? null : DateOnly.FromDateTime((DateTime)r["tgperubahan"]),
r["vision"] == DBNull.Value ? null : (string)r["vision"], r["vision"] == DBNull.Value ? null : (string)r["vision"],
r["mission"] == DBNull.Value ? null : (string)r["mission"], r["mission"] == DBNull.Value ? null : (string)r["mission"],
r["photourl"] == DBNull.Value ? null : (string)r["photourl"] r["photourl"] == DBNull.Value ? null : (string)r["photourl"],
r["seleksi"] == DBNull.Value ? null : (string)r["seleksi"],
r["nilaipilih"] == DBNull.Value ? null : DateOnly.FromDateTime((DateTime)r["nilaipilih"]),
r["eviden"] == DBNull.Value ? null : (string)r["eviden"],
r["dokumentasi"] == DBNull.Value ? null : (string)r["dokumentasi"]
),CTS.Token); ),CTS.Token);
} }
Console.WriteLine("Done."); Console.WriteLine("Done.");

View File

@ -4,7 +4,7 @@ using System.Text.Json.Serialization;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
namespace perubahan; namespace perubahan;
internal partial record Agent(string AgentID, string Name, string Jabatan, short DeplID, string SKAngkat, DateOnly TMT, string? SKPerb, DateOnly? TMUbah, string? Vision, string? Mission, string? PhotoURL); internal partial record Agent(string AgentID, string Name, string Jabatan, short DeplID, string SKAngkat, DateOnly TMT, string? SKPerb, DateOnly? TMUbah, string? Vision, string? Mission, string? PhotoURL, string? Seleksi, DateOnly? NilaiPilih, string? Eviden, string? Dokumentasi);
internal partial record ApiResponse(int Status, string Message, object Data); internal partial record ApiResponse(int Status, string Message, object Data);
internal partial record Deployment(short DeplID, string UnitKerja); internal partial record Deployment(short DeplID, string UnitKerja);
internal partial record LoginUser(string Username, string Password); internal partial record LoginUser(string Username, string Password);
@ -29,10 +29,11 @@ internal partial record User(string Username, string AgentID, string Password, b
[JsonSerializable(typeof(User))] [JsonSerializable(typeof(User))]
//////////----------DICTIONARIES----------////////// //////////----------DICTIONARIES----------//////////
[JsonSerializable(typeof(Dictionary<string, JsonElement>))] [JsonSerializable(typeof(Dictionary<string, JsonElement>))]
// [JsonSerializable(typeof(ConcurrentDictionary<string, User>))] [JsonSerializable(typeof(ConcurrentDictionary<string, User>))]
//////////-------------LISTS--------------////////// //////////-------------LISTS--------------//////////
[JsonSerializable(typeof(List<Agent>))] [JsonSerializable(typeof(List<Agent>))]
[JsonSerializable(typeof(List<Deployment>))] [JsonSerializable(typeof(List<Deployment>))]
[JsonSerializable(typeof(List<SafeUser>))]
[JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Default, PropertyNameCaseInsensitive = true, PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)] [JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Default, PropertyNameCaseInsensitive = true, PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
internal partial class SGContext : JsonSerializerContext { } internal partial class SGContext : JsonSerializerContext { }