From 127f21dc4361b26fca42d5823a2bd8aa1fec1ab1 Mon Sep 17 00:00:00 2001 From: Suphonchai Phoonsawat Date: Mon, 19 Aug 2024 17:18:58 +0700 Subject: [PATCH] Add Fake Checkin for K6 Test --- BMA.EHR.CheckInConsumer/Program.cs | 9 +---- BMA.EHR.Leave/Controllers/LeaveController.cs | 42 ++++++++++++++++++++ BMA.EHR.Leave/DTOs/CheckIn/CheckTimeDto.cs | 21 ++++++++++ 3 files changed, 65 insertions(+), 7 deletions(-) diff --git a/BMA.EHR.CheckInConsumer/Program.cs b/BMA.EHR.CheckInConsumer/Program.cs index 1c63bfaa..b87b513a 100644 --- a/BMA.EHR.CheckInConsumer/Program.cs +++ b/BMA.EHR.CheckInConsumer/Program.cs @@ -61,14 +61,9 @@ consumer.Received += async (model, ea) => channel.BasicConsume(queue: "checkin-queue", autoAck: true, consumer: consumer); -Console.WriteLine("\nPress 'Enter' to exit the process..."); - -// another use of "Console.ReadKey()" method -// here it asks to press the enter key to exit -while (Console.ReadKey().Key != ConsoleKey.Enter) -{ -} +//Console.WriteLine("\nPress 'Enter' to exit the process..."); +await Task.Delay(-1); static void WriteToConsole(string message) { diff --git a/BMA.EHR.Leave/Controllers/LeaveController.cs b/BMA.EHR.Leave/Controllers/LeaveController.cs index ed67d1e0..5d644061 100644 --- a/BMA.EHR.Leave/Controllers/LeaveController.cs +++ b/BMA.EHR.Leave/Controllers/LeaveController.cs @@ -483,6 +483,48 @@ namespace BMA.EHR.Leave.Service.Controllers return Success(new { date = currentDate }); } + /// + /// Fake Check in + /// + /// + /// + /// เมื่อทำรายการสำเร็จ + /// ไม่ได้ Login เข้าระบบ + /// เมื่อเกิดข้อผิดพลาดในการทำงาน + [HttpPost("check-in"), DisableRequestSizeLimit] + [ProducesResponseType(StatusCodes.Status200OK)] + [ProducesResponseType(StatusCodes.Status401Unauthorized)] + [ProducesResponseType(StatusCodes.Status500InternalServerError)] + [AllowAnonymous] + public ActionResult FakeCheckIn([FromBody] FakeCheckTimeDto data) + { + var currentDate = DateTime.Now; + + // create connection + var factory = new ConnectionFactory() + { + HostName = _configuration["Rabbit:Host"], + UserName = _configuration["Rabbit:User"], + Password = _configuration["Rabbit:Password"], + }; + + // create channel + using var connection = factory.CreateConnection(); + using var channel = connection.CreateModel(); + channel.QueueDeclare(queue: "fake-checkin-queue", durable: false, exclusive: false, autoDelete: false, arguments: null); + + // แปลง Object เป็น JSON สตริง + var serializedObject = JsonConvert.SerializeObject(data); + + // แปลง JSON สตริงเป็น byte array + var body = Encoding.UTF8.GetBytes(serializedObject); + + channel.BasicPublish(exchange: "", routingKey: "fake-checkin-queue", basicProperties: null, body: body); + Console.WriteLine($"Send to Queue: {serializedObject}"); + + return Success(new { date = currentDate }); + } + /// /// Check in Processing /// diff --git a/BMA.EHR.Leave/DTOs/CheckIn/CheckTimeDto.cs b/BMA.EHR.Leave/DTOs/CheckIn/CheckTimeDto.cs index f7e03b59..3a738170 100644 --- a/BMA.EHR.Leave/DTOs/CheckIn/CheckTimeDto.cs +++ b/BMA.EHR.Leave/DTOs/CheckIn/CheckTimeDto.cs @@ -27,6 +27,27 @@ namespace BMA.EHR.Leave.Service.DTOs.CheckIn public string? Remark { get; set; } = string.Empty; } + public class FakeCheckTimeDto + { + public Guid? CheckInId { get; set; } + + [Required] + public double Lat { get; set; } = 0; + + [Required] + public double Lon { get; set; } = 0; + + [Required] + public string POI { get; set; } = string.Empty; + + [Required] + public bool IsLocation { get; set; } = true; + + public string? LocationName { get; set; } = string.Empty; + + public string? Remark { get; set; } = string.Empty; + } + public class CheckTimeDtoRB { public string Token { get; set; } = "";