Преглед изворни кода

add main commit 77dfbd4e23fef9aaa3bc3b762d63636641ceffa3
Commit 77dfbd4e: 1. Fix LocalAuthList Auth enum 名稱
2.Fix 抓取電樁充電槍資訊 找不到充電槍資訊 API Exception問題

Robert пре 1 година
родитељ
комит
3efd3aa9d6

+ 1 - 1
EVCB_OCPP.WEBAPI/Controllers/Version1/CPOController.cs

@@ -181,7 +181,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                 if (string.IsNullOrEmpty(request.ChargeBoxId) ||
                     request.ChargeBoxId.Length > 25 ||
                     request.ConnectorId.HasValue &&
-                        (!(_CPService.GetNumberofConnectors(request.ChargeBoxId) >= request.ConnectorId) || !(request.ConnectorId > 0)) ||
+                        (!(await _CPService.GetNumberofConnectorsAsync(request.ChargeBoxId) >= request.ConnectorId) || !(request.ConnectorId > 0)) ||
                     string.IsNullOrEmpty(request.Token) ||
                     request.Token.Length > 20)
                 {

+ 55 - 46
EVCB_OCPP.WEBAPI/Controllers/Version1/InternalController.cs

@@ -518,7 +518,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
             {
                 ChargePointService chargePointService = serviceProvider.GetRequiredService<ChargePointService>();
 
-                if (!chargePointService.IsOnline(ChargeBoxId))
+                if (!await chargePointService.IsOnlineAsync(ChargeBoxId))
                 {
                     //return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Code = 2101, Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                     return StatusCode(
@@ -532,8 +532,13 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                 //check parameter
 
 
-                if (StartTransaction == null
-                    || (StartTransaction.ConnectorId.HasValue && (chargePointService.GetNumberofConnectors(ChargeBoxId) < StartTransaction.ConnectorId || StartTransaction.ConnectorId < 0)) || string.IsNullOrEmpty(StartTransaction.IdTag) || StartTransaction.IdTag.Length > 20)
+                if (StartTransaction is null
+                    || string.IsNullOrEmpty(StartTransaction.IdTag) 
+                    || StartTransaction.IdTag.Length > 20
+                    || (StartTransaction.ConnectorId.HasValue &&
+                        (StartTransaction.ConnectorId < 0
+                        || await chargePointService.GetNumberofConnectorsAsync(ChargeBoxId) < StartTransaction.ConnectorId)
+                        ) )
                 {
                     //return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Code = 2100, Message = EVCBConfiguration.ERROR_MSG_PARAMETER_OUTOFRANGE_INCORRECT });
                     return StatusCode(
@@ -578,23 +583,24 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
 
                 }
 
-
-                ChargePointStatus? currentStatus = StartTransaction.ConnectorId.HasValue ? chargePointService.GetChargePointCurrentSatus(ChargeBoxId, StartTransaction.ConnectorId.Value).Value : (ChargePointStatus?)null;
-
-
-                if (StartTransaction.ConnectorId.HasValue &&
-                    chargePointService.GetChargePointCurrentSatus(ChargeBoxId, StartTransaction.ConnectorId.Value).HasValue &&
-                    (currentStatus != ChargePointStatus.Available && 
-                    currentStatus != ChargePointStatus.Reserved &&
-                    currentStatus != ChargePointStatus.Preparing))
+                if (StartTransaction.ConnectorId is not null)
                 {
-                    //return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Code = 2103, Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
-                    return StatusCode(
-                        StatusCodes.Status400BadRequest,
-                        new ErrorResponse() {
-                            Code = 2103, 
-                            Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE 
-                        });
+                    ChargePointStatus? currentStatus = await chargePointService.GetChargePointCurrentSatusAsync(ChargeBoxId, StartTransaction.ConnectorId.Value);
+
+                    if (currentStatus is not null &&
+                        (currentStatus != ChargePointStatus.Available &&
+                        currentStatus != ChargePointStatus.Reserved &&
+                        currentStatus != ChargePointStatus.Preparing))
+                    {
+                        //return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Code = 2103, Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE });
+                        return StatusCode(
+                            StatusCodes.Status400BadRequest,
+                            new ErrorResponse()
+                            {
+                                Code = 2103,
+                                Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_AVAILIABLE_MODE
+                            });
+                    }
                 }
 
                 var _request = new RemoteStartTransactionRequest()
@@ -625,7 +631,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                 };
 
 
-                if (!AddCommandtoServer(ChargeBoxId, uuid, _request))
+                if (!await AddCommandtoServerAsync(ChargeBoxId, uuid, _request))
                 {
                     throw new Exception("Write Command Fail!!");
                 }
@@ -664,7 +670,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
         //[Produces(typeof(ErrorResponse))]
         [Produces(typeof(InternalGenericResponse))]
         [HttpPut]
-        public IActionResult StopTransaction(string ChargeBoxId, int TransactionId)
+        public async Task<IActionResult> StopTransaction(string ChargeBoxId, int TransactionId)
         {
             string uuid = Guid.NewGuid().ToString();
             var result = new InternalGenericResponse();
@@ -674,7 +680,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
             {
                 ChargePointService chargePointService = serviceProvider.GetRequiredService<ChargePointService>();
 
-                if (!chargePointService.IsOnline(ChargeBoxId))
+                if (!await chargePointService.IsOnlineAsync(ChargeBoxId))
                 {
                     //return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Code = 2101, Message = EVCBConfiguration.ERROR_MSG_CHARGEBOXID_ISNT_EXIST_OR_OFFLINE });
                     return StatusCode(
@@ -685,7 +691,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                         });
                 }
 
-                int? _ConnectorId = chargePointService.GetConnectorwithOngoingTransaction(ChargeBoxId, TransactionId);
+                int? _ConnectorId = await chargePointService.GetConnectorwithOngoingTransactionAsync(ChargeBoxId, TransactionId);
 
                 if (_ConnectorId is null)
                 {
@@ -699,7 +705,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                         });
                 }
 
-                var _ConnectorStatus = chargePointService.GetChargePointCurrentSatus(ChargeBoxId, _ConnectorId.Value);
+                ChargePointStatus? _ConnectorStatus = await chargePointService.GetChargePointCurrentSatusAsync(ChargeBoxId, _ConnectorId.Value);
 
                 if (!(_ConnectorStatus.HasValue && _ConnectorStatus == ChargePointStatus.Charging || _ConnectorStatus == ChargePointStatus.SuspendedEVSE || _ConnectorStatus == ChargePointStatus.SuspendedEV))
                 {
@@ -711,32 +717,30 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                             Message = EVCBConfiguration.ERROR_MSG_CONNECTOR_ISNOT_CHARGING_MODE 
                         });
                 }
-                else
+
+                if (await chargePointService.IsTransactionRunningAsync(ChargeBoxId, TransactionId))
                 {
-                    if (chargePointService.IsTransactionRunning(ChargeBoxId, TransactionId))
+                    var _request = new RemoteStopTransactionRequest()
                     {
-                        var _request = new RemoteStopTransactionRequest()
-                        {
-                            transactionId = TransactionId
-                        };
+                        transactionId = TransactionId
+                    };
 
-                        //下發停止
-                        if (!AddCommandtoServer(ChargeBoxId, uuid, _request))
-                        {
-                            throw new Exception("Write Command Fail!!");
-                        }
-                    }
-                    else
+                    //下發停止
+                    if (!await AddCommandtoServerAsync(ChargeBoxId, uuid, _request))
                     {
-                        //return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Code = 2104, Message = EVCBConfiguration.ERROR_MSG_SESSION_WAS_FINISHED });
-                        return StatusCode(
-                            StatusCodes.Status400BadRequest, 
-                            new ErrorResponse() { 
-                                Code = 2104,
-                                Message = EVCBConfiguration.ERROR_MSG_SESSION_WAS_FINISHED 
-                            });
+                        throw new Exception("Write Command Fail!!");
                     }
                 }
+                else
+                {
+                    //return Request.CreateResponse(HttpStatusCode.BadRequest, new ErrorResponse() { Code = 2104, Message = EVCBConfiguration.ERROR_MSG_SESSION_WAS_FINISHED });
+                    return StatusCode(
+                        StatusCodes.Status400BadRequest, 
+                        new ErrorResponse() { 
+                            Code = 2104,
+                            Message = EVCBConfiguration.ERROR_MSG_SESSION_WAS_FINISHED 
+                        });
+                }
 
                 //statusCode = HttpStatusCode.OK;
                 statusCode = StatusCodes.Status200OK;
@@ -1132,7 +1136,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
                               {
                                   expiryDate = LocalList.LocalAuthorizationList[i].IdTagInfo.ExpiryDate,
                                   parentIdTag = LocalList.LocalAuthorizationList[i].IdTagInfo.ParentIdTag,
-                                  status = (AuthorizationStatus)LocalList.LocalAuthorizationList[i].IdTagInfo.Status
+                                  status = LocalList.LocalAuthorizationList[i].IdTagInfo.Status
                               }
                     });
                 }
@@ -1788,12 +1792,17 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version1
 
 
         private bool AddCommandtoServer(string chargeBoxId, string uuid, IRequest request)
+        {
+            return AddCommandtoServerAsync(chargeBoxId, uuid, request).Result;
+        }
+
+        private async Task<bool> AddCommandtoServerAsync(string chargeBoxId, string uuid, IRequest request)
         {
             bool result = false;
             try
             {
                 ServerTriggerService service = serviceProvider.GetRequiredService<ServerTriggerService>();//new ServerTriggerService();
-                service.AddMessage(chargeBoxId, uuid, request);
+                await service.AddMessageAsync(chargeBoxId, uuid, request);
                 result = true;
             }
             catch (Exception ex)

+ 3 - 3
EVCB_OCPP.WEBAPI/Controllers/Version2/V2_CPOController.cs

@@ -167,7 +167,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version2
         [Route("stationInfo")]
         [Produces(typeof(CPOOuterResponse))]
         [HttpGet]
-        public IActionResult StationInfo(string ChargeBoxId)
+        public async Task<IActionResult> StationInfo(string ChargeBoxId)
         {
             var result = new CPOOuterResponse();
             //HttpStatusCode statusCode = HttpStatusCode.InternalServerError;
@@ -177,9 +177,9 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version2
             {
                 ChargingStationService service = serviceProvider.GetRequiredService<ChargingStationService>();
 
-                var _innerData = service.GetInfobyChargeBoxId(ChargeBoxId);
+                var _innerData = await service.GetInfobyChargeBoxIdAsync(ChargeBoxId);
 
-                if (_innerData == null)
+                if (_innerData is null)
                 {
                     result.StatusCode = (int)CPO_StatusCode.CANT_FOUND_DATA;
                     result.StatusMessage = CPO_StatusMessage.ERROR_MSG_CANT_FIND_SESSIONDETAIL;

+ 1 - 1
EVCB_OCPP.WEBAPI/Controllers/Version2/ocpp16/OCPP16_InternalController.cs

@@ -836,7 +836,7 @@ namespace EVCB_OCPP.WEBAPI.Controllers.Version2.ocpp16
                               {
                                   expiryDate = LocalList.LocalAuthorizationList[i].IdTagInfo.ExpiryDate,
                                   parentIdTag = LocalList.LocalAuthorizationList[i].IdTagInfo.ParentIdTag,
-                                  status = (AuthorizationStatus)LocalList.LocalAuthorizationList[i].IdTagInfo.Status
+                                  status = LocalList.LocalAuthorizationList[i].IdTagInfo.Status
                               }
                     });
                 }

+ 1 - 2
EVCB_OCPP.WEBAPI/Middleware/APILogMiddleware.cs

@@ -41,7 +41,6 @@ public class APILogMiddleware
         var request = context.Request;
         //string uri = request.GetDisplayUrl().ToString();
         CancellationToken cancellationToken = context?.RequestAborted ?? CancellationToken.None;
-
         var apiLogEntry = CreateApiLogEntryWithRequestData(request);
 
         //context.Request.Body.Position = 0;
@@ -106,7 +105,7 @@ public class APILogMiddleware
             }
 
             int errorMessageIndex = apiLogEntry.ResponseContentBody.IndexOf(",\"ErrorDetail\"");
-            string endTag = apiLogEntry.ResponseContentBody.Last().ToString();
+            //string endTag = apiLogEntry.ResponseContentBody.Last().ToString();
 
             if (errorMessageIndex > 0)
             {

+ 1 - 1
EVCB_OCPP.WEBAPI/Models/WebAPI/LocalListRequest.cs

@@ -42,6 +42,6 @@ namespace EVCB_OCPP.WEBAPI.Models.WebAPI
         public string ParentIdTag { get; set; }
     
         [Required]
-        public int Status { get; set; }
+        public AuthorizationStatus Status { get; set; }
     }
 }

+ 40 - 18
EVCB_OCPP.WEBAPI/Services/ChargePointService.cs

@@ -104,7 +104,7 @@ namespace EVCB_OCPP.WEBAPI.Services
                 """;
 
             var parameters = new DynamicParameters();
-            parameters.Add("@MachineIds", machineIds);
+            parameters.Add("@MachineIds", machineIds, direction: ParameterDirection.Input,size: 36);
 
             using SqlConnection conn = await mainDbConneciotnFactory.CreateAsync();
             var tmp = await conn.QueryAsync<LastUpdatedTimeDto>(cmd, parameters);
@@ -191,8 +191,7 @@ namespace EVCB_OCPP.WEBAPI.Services
                         ConnectorId = _RefConnector is null ? i : _RefConnector.ConnectorId,
                         Status = cp.Status == Status.Offline ? Status.Offline : _RefConnector is null ? Status.Unknown : ConvertConnectorStatus(_RefConnector.Status),
                         ConnectorType = ConvertConnectorType(int.Parse(_machine.ConnectorType.Split(',')[i - 1])),
-                        FaultMessage = _RefConnector is null ? "Connector not found" : ((ChargePointErrorCode)_RefConnector.ChargePointErrorCodeId).ToString() + (string.IsNullOrEmpty(_RefConnector.VendorErrorCode) ? "" : "-" + _RefConnector.VendorErrorCode)
-
+                        FaultMessage = _RefConnector is null ? ChargePointErrorCode.NoError.ToString() : ((ChargePointErrorCode)_RefConnector.ChargePointErrorCodeId).ToString() + (string.IsNullOrEmpty(_RefConnector.VendorErrorCode) ? "" : "-" + _RefConnector.VendorErrorCode)
                     });
                 }
             }
@@ -205,7 +204,7 @@ namespace EVCB_OCPP.WEBAPI.Services
             Dictionary<string , Machine> _machines = new();
 
             var parameters = new DynamicParameters();
-            parameters.Add("@MachineIds", machineIds);
+            parameters.Add("@MachineIds", machineIds, direction: ParameterDirection.Input, size: 36);
             string strSql = """
                     SELECT Id,ChargeBoxId,ChargePointSerialNumber,ChargePointModel,RatedPower,Online,OfflineOn ,GunAmt,Latitude,Longitude,ConnectorType 
                     FROM [dbo].[Machine]
@@ -286,7 +285,7 @@ namespace EVCB_OCPP.WEBAPI.Services
             Dictionary<string, List<ConnectorStatus>> toReturn = new();
             IEnumerable<ConnectorStatus> _Connectors;// = new List<ConnectorStatus>();
             var parameters = new DynamicParameters();
-            parameters.Add("@ChargeBoxIds", chargeBoxIds);
+            parameters.Add("@ChargeBoxIds", chargeBoxIds, direction: ParameterDirection.Input, size: 50);
             string strSql = """
                 SELECT ChargeBoxId,ConnectorId,Status,ChargePointErrorCodeId,VendorErrorCode 
                 FROM [dbo].[ConnectorStatus] 
@@ -318,6 +317,11 @@ namespace EVCB_OCPP.WEBAPI.Services
 
 
         public int GetNumberofConnectors(string chargeBoxId)
+        {
+            return GetNumberofConnectorsAsync(chargeBoxId).Result;
+        }
+
+        public async Task<int> GetNumberofConnectorsAsync(string chargeBoxId)
         {
             int count = 0;
 
@@ -326,10 +330,10 @@ namespace EVCB_OCPP.WEBAPI.Services
             {
                 var parameters = new DynamicParameters();
                 parameters.Add("@ChargeBoxId", chargeBoxId, DbType.String, ParameterDirection.Input, 50);
-                using (SqlConnection conn = mainDbConneciotnFactory.Create())
+                using (SqlConnection conn = await mainDbConneciotnFactory.CreateAsync())
                 {
                     string strSql = "Select GunAmt from [dbo].[Machine] where ChargeBoxId=@ChargeBoxId  and IsDelete=0; ";
-                    count = conn.ExecuteScalarAsync<int>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout).Result;
+                    count = await conn.ExecuteScalarAsync<int>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout);
                 }
 
             }
@@ -352,6 +356,11 @@ namespace EVCB_OCPP.WEBAPI.Services
         }
 
         public int? GetConnectorwithOngoingTransaction(string chargeBoxId, int transactionId)
+        {
+            return GetConnectorwithOngoingTransactionAsync(chargeBoxId, transactionId).Result;
+        }
+
+        public async Task<int?> GetConnectorwithOngoingTransactionAsync(string chargeBoxId, int transactionId)
         {
             int? connectorId = null;
 
@@ -360,19 +369,22 @@ namespace EVCB_OCPP.WEBAPI.Services
             var parameters = new DynamicParameters();
             parameters.Add("@ChargeBoxId", chargeBoxId, DbType.String, ParameterDirection.Input, 50);
             parameters.Add("@TransactionId", transactionId, DbType.Int32, ParameterDirection.Input);
-            using (SqlConnection conn = mainDbConneciotnFactory.Create())
+            using (SqlConnection conn = await mainDbConneciotnFactory.CreateAsync())
             {
                 string strSql = "Select ConnectorId from [dbo].[TransactionRecord] where ChargeBoxId=@ChargeBoxId and Id= @TransactionId and StopTime='1991/01/01'; ";
-                connectorId = conn.QueryFirstOrDefault<int?>(strSql, parameters);
+                connectorId = await conn.QueryFirstOrDefaultAsync<int?>(strSql, parameters);
             }
 
             return connectorId;
         }
 
 
-
-
         public bool IsTransactionRunning(string chargeBoxId, int transactionId)
+        {
+            return IsTransactionRunningAsync(chargeBoxId, transactionId).Result;
+        }
+
+        public async Task<bool> IsTransactionRunningAsync(string chargeBoxId, int transactionId)
         {
             bool exists = false;
 
@@ -381,10 +393,10 @@ namespace EVCB_OCPP.WEBAPI.Services
             var parameters = new DynamicParameters();
             parameters.Add("@ChargeBoxId", chargeBoxId, DbType.String, ParameterDirection.Input, 50);
             parameters.Add("@TransactionId", transactionId, DbType.Int32, ParameterDirection.Input);
-            using (SqlConnection conn = mainDbConneciotnFactory.Create())
+            using (SqlConnection conn = await mainDbConneciotnFactory.CreateAsync())
             {
                 string strSql = "Select Id from [dbo].[TransactionRecord] where ChargeBoxId=@ChargeBoxId and Id= @TransactionId and StopTime='1991/01/01'; ";
-                int id = conn.QueryFirstOrDefault<Int32>(strSql, parameters);//.FirstOrDefault();
+                int id = await conn.QueryFirstOrDefaultAsync<Int32>(strSql, parameters);//.FirstOrDefault();
                 exists = id > 0 ? true : false;
             }
             return exists;
@@ -397,6 +409,11 @@ namespace EVCB_OCPP.WEBAPI.Services
         /// <param name="connectorId">充電槍號(0代表樁/槍號從1開始)</param>
         /// <returns>依據OCPP狀態回覆 NULL表示離線</returns>
         public ChargePointStatus? GetChargePointCurrentSatus(string chargeBoxId, int connectorId = 0)
+        {
+            return GetChargePointCurrentSatusAsync(chargeBoxId, connectorId).Result;
+        }
+
+        public async Task<ChargePointStatus?> GetChargePointCurrentSatusAsync(string chargeBoxId, int connectorId = 0)
         {
             ChargePointStatus? _status = null;
 
@@ -406,16 +423,16 @@ namespace EVCB_OCPP.WEBAPI.Services
             parameters.Add("@ChargeBoxId", chargeBoxId, DbType.String, ParameterDirection.Input, 50);
             parameters.Add("@ConnectorId", connectorId, DbType.Int32, ParameterDirection.Input);
 
-            using (SqlConnection conn = mainDbConneciotnFactory.Create())
+            using (SqlConnection conn = await mainDbConneciotnFactory.CreateAsync())
             {
                 string strSql = "Select online from [dbo].[Machine] where ChargeBoxId=@ChargeBoxId  and IsDelete=0; ";
-                bool online = conn.ExecuteScalar<bool>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout);
+                bool online = await conn.ExecuteScalarAsync<bool>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout);
 
                 if (online)
                 {
                     string connectorStrSql = "Select Status from [dbo].[ConnectorStatus] where ChargeBoxId=@ChargeBoxId and ConnectorId=@ConnectorId; ";
 
-                    int _statusfromdb = conn.QueryFirstOrDefault<Int32>(connectorStrSql, parameters);//.FirstOrDefault();
+                    int _statusfromdb = await conn.QueryFirstOrDefaultAsync<Int32>(connectorStrSql, parameters);//.FirstOrDefault();
 
                     _status = (_statusfromdb <= 0 && connectorId == 0) ? ChargePointStatus.Available : (_statusfromdb <= 0 ? ((ChargePointStatus?)null) : ((ChargePointStatus)_statusfromdb));
 
@@ -427,6 +444,11 @@ namespace EVCB_OCPP.WEBAPI.Services
         }
 
         public bool IsOnline(string chargeBoxId)
+        {
+            return IsOnlineAsync(chargeBoxId).Result;
+        }
+
+        public async Task<bool> IsOnlineAsync(string chargeBoxId)
         {
             bool online = false;
 
@@ -436,10 +458,10 @@ namespace EVCB_OCPP.WEBAPI.Services
             parameters.Add("@ChargeBoxId", chargeBoxId, DbType.String, ParameterDirection.Input, 50);
 
 
-            using (SqlConnection conn = mainDbConneciotnFactory.Create())
+            using (SqlConnection conn = await mainDbConneciotnFactory.CreateAsync())
             {
                 string strSql = "Select online from [dbo].[Machine] where ChargeBoxId=@ChargeBoxId  and IsDelete=0; ";
-                online = conn.ExecuteScalar<bool>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout);
+                online = await conn.ExecuteScalarAsync<bool>(strSql, parameters, null, EVCBConfiguration.DB_DefaultConnectionTimeout);
             }
 
             return online;

+ 22 - 8
EVCB_OCPP.WEBAPI/Services/Integration/ChargingStationService.cs

@@ -12,6 +12,7 @@ using Microsoft.Data.SqlClient;
 using System.Linq;
 using EVCB_OCPP.WEBAPI.Helpers;
 using EVCB_OCPP.Domain;
+using System.Threading.Tasks;
 
 namespace EVCB_OCPP.WEBAPI.Services.Integration
 {
@@ -140,8 +141,12 @@ namespace EVCB_OCPP.WEBAPI.Services.Integration
             return _chargePoints;
         }
 
-
         public Station GetInfobyChargeBoxId(string chargeBoxId)
+        {
+            return GetInfobyChargeBoxIdAsync(chargeBoxId).Result;
+        }
+
+        public async Task<Station> GetInfobyChargeBoxIdAsync(string chargeBoxId)
         {
             Station result = null;
             var parameters = new DynamicParameters();
@@ -150,17 +155,26 @@ namespace EVCB_OCPP.WEBAPI.Services.Integration
             string machineId = string.Empty;
             using (SqlConnection conn = mainDbConnectionFactory.Create())
             {
-                string strSql = "SELECT Machine.Id from [dbo].[Machine] " +
-                " where ChargeBoxId=@ChargeBoxId; ";
-                machineId = conn.Query<string>(strSql, parameters).FirstOrDefault();
-
+                string strSql = """
+                    SELECT Machine.Id 
+                    FROM [dbo].[Machine]
+                    WHERE ChargeBoxId = @ChargeBoxId;
+                    """;
+                machineId = await conn.QueryFirstOrDefaultAsync<string>(strSql, parameters);
             }
             parameters.Add("@MachineId", machineId, DbType.String, ParameterDirection.Input, 36);
             using (SqlConnection conn = webDbConnectionFactory.Create())
             {
-                string strSql = "SELECT * from [dbo].[Station] station where Id in( select StationId  FROM[dbo].[Machine],[dbo].[StationMachine] " +
-                " where StationMachine.MachineId= @MachineId); ";
-                result = conn.Query<Station>(strSql, parameters).FirstOrDefault();
+                string strSql = """
+                    SELECT * 
+                    FROM [dbo].[Station] station
+                    WHERE Id IN ( 
+                        SELECT StationId
+                        FROM[dbo].[Machine],[dbo].[StationMachine]
+                        WHERE StationMachine.MachineId= @MachineId
+                        );
+                    """;
+                result = await conn.QueryFirstOrDefaultAsync<Station>(strSql, parameters);
 
             }