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 =>
{
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 Name = InElement["name"].GetString() ?? string.Empty;
@ -127,6 +127,10 @@ public static partial class APIHandler
string Mission = InElement["mission"].GetString() ?? "-";
string Photo = InElement["photo"].GetString() ?? 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();
string UName = InElement["uname"].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);
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) =>
{
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["vision"] == DBNull.Value ? null : (string)a["vision"],
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];
int AgentIdx = Agents.FindIndex(a => a.AgentID == UpAgent.AgentID);
Agents[AgentIdx] = Agents[AgentIdx] with
@ -253,12 +261,29 @@ public static partial class APIHandler
TMUbah = UpAgent.TMUbah,
Vision = UpAgent.Vision,
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);
}
});
})
.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 =>
{
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["vision"] == DBNull.Value ? null : (string)r["vision"],
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);
}
Console.WriteLine("Done.");

View File

@ -4,7 +4,7 @@ using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
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 Deployment(short DeplID, string UnitKerja);
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))]
//////////----------DICTIONARIES----------//////////
[JsonSerializable(typeof(Dictionary<string, JsonElement>))]
// [JsonSerializable(typeof(ConcurrentDictionary<string, User>))]
[JsonSerializable(typeof(ConcurrentDictionary<string, User>))]
//////////-------------LISTS--------------//////////
[JsonSerializable(typeof(List<Agent>))]
[JsonSerializable(typeof(List<Deployment>))]
[JsonSerializable(typeof(List<SafeUser>))]
[JsonSourceGenerationOptions(GenerationMode = JsonSourceGenerationMode.Default, PropertyNameCaseInsensitive = true, PropertyNamingPolicy = JsonKnownNamingPolicy.CamelCase)]
internal partial class SGContext : JsonSerializerContext { }