public override async Task <StartTransactionResponse> StartTransaction(StartTransactionRequest request, ServerCallContext context) { var transId = await this.internalApi.StartTrasaction(request.ExpireInMin); return(new StartTransactionResponse() { TransId = transId }); }
/// <summary> /// Send a start transaction request to QLDB. /// </summary> /// /// <returns>The result of the start transaction request.</returns> internal virtual StartTransactionResult StartTransaction() { var startTransactionRequest = new StartTransactionRequest(); var request = new SendCommandRequest { StartTransaction = startTransactionRequest, }; var response = this.SendCommand(request); return(response.StartTransaction); }
/// <summary> /// Send a start transaction request to QLDB. /// /// <param name="cancellationToken"> /// A cancellation token that can be used by other objects or threads to receive notice of cancellation. /// </param> /// /// </summary> /// /// <returns>The result of the start transaction request.</returns> internal virtual async Task <StartTransactionResult> StartTransaction(CancellationToken cancellationToken = default) { var startTransactionRequest = new StartTransactionRequest(); var request = new SendCommandRequest { StartTransaction = startTransactionRequest, }; var response = await this.SendCommand(request, cancellationToken); return(response.StartTransaction); }
public async Task StartTransactionV1_ShouldReturn() { try { using (var httpClient = new HttpClient()) { var requestData = new StartTransactionRequest(); var content = new StringContent(JsonConvert.SerializeObject(requestData), Encoding.UTF8, "application/json"); var result = await httpClient.PostAsync(new Uri(_url + "/v1/starttransaction"), content); result.EnsureSuccessStatusCode(); } } catch (Exception ex) { throw; } }
public async Task <StartTransactionResponse> StartTransactionAsync(StartTransactionRequest request) => await Task.FromResult(new StartTransactionResponse { TimeStamp = DateTime.Now });
public Task <StartTransactionResponse> StartTransactionAsync(StartTransactionRequest request) => FromResult(new StartTransactionResponse() { TimeStamp = DateTime.UtcNow });
public string HandleStartTransaction(OCPPMessage msgIn, OCPPMessage msgOut) { string errorCode = null; StartTransactionResponse startTransactionResponse = new StartTransactionResponse(); int?connectorId = null; try { Logger.LogTrace("Processing startTransaction request..."); StartTransactionRequest startTransactionRequest = JsonConvert.DeserializeObject <StartTransactionRequest>(msgIn.JsonPayload); Logger.LogTrace("StartTransaction => Message deserialized"); string idTag = Utils.CleanChargeTagId(startTransactionRequest.IdTag, Logger); connectorId = startTransactionRequest.ConnectorId; startTransactionResponse.IdTagInfo.ParentIdTag = string.Empty; startTransactionResponse.IdTagInfo.ExpiryDate = Utils.MaxExpiryDate; if (string.IsNullOrWhiteSpace(idTag)) { // no RFID-Tag => accept request startTransactionResponse.IdTagInfo.Status = IdTagInfoStatus.Accepted; Logger.LogInformation("StartTransaction => no charge tag => Status: {0}", startTransactionResponse.IdTagInfo.Status); } else { try { using (OCPPCoreContext dbContext = new OCPPCoreContext(Configuration)) { ChargeTag ct = dbContext.Find <ChargeTag>(idTag); if (ct != null) { if (ct.ExpiryDate.HasValue) { startTransactionResponse.IdTagInfo.ExpiryDate = ct.ExpiryDate.Value; } startTransactionResponse.IdTagInfo.ParentIdTag = ct.ParentTagId; if (ct.Blocked.HasValue && ct.Blocked.Value) { startTransactionResponse.IdTagInfo.Status = IdTagInfoStatus.Blocked; } else if (ct.ExpiryDate.HasValue && ct.ExpiryDate.Value < DateTime.Now) { startTransactionResponse.IdTagInfo.Status = IdTagInfoStatus.Expired; } else { startTransactionResponse.IdTagInfo.Status = IdTagInfoStatus.Accepted; } } else { startTransactionResponse.IdTagInfo.Status = IdTagInfoStatus.Invalid; } Logger.LogInformation("StartTransaction => Charge tag='{0}' => Status: {1}", idTag, startTransactionResponse.IdTagInfo.Status); } } catch (Exception exp) { Logger.LogError(exp, "StartTransaction => Exception reading charge tag ({0}): {1}", idTag, exp.Message); startTransactionResponse.IdTagInfo.Status = IdTagInfoStatus.Invalid; } } if (startTransactionResponse.IdTagInfo.Status == IdTagInfoStatus.Accepted) { try { using (OCPPCoreContext dbContext = new OCPPCoreContext(Configuration)) { Transaction transaction = new Transaction(); transaction.ChargePointId = ChargePointStatus?.Id; transaction.ConnectorId = startTransactionRequest.ConnectorId; transaction.StartTagId = idTag; transaction.StartTime = startTransactionRequest.Timestamp.UtcDateTime; transaction.MeterStart = (double)startTransactionRequest.MeterStart / 1000; // Meter value here is always Wh transaction.StartResult = startTransactionResponse.IdTagInfo.Status.ToString(); dbContext.Add <Transaction>(transaction); dbContext.SaveChanges(); // Return DB-ID as transaction ID startTransactionResponse.TransactionId = transaction.TransactionId; } } catch (Exception exp) { Logger.LogError(exp, "StartTransaction => Exception writing transaction: chargepoint={0} / tag={1}", ChargePointStatus?.Id, idTag); errorCode = ErrorCodes.InternalError; } } msgOut.JsonPayload = JsonConvert.SerializeObject(startTransactionResponse); Logger.LogTrace("StartTransaction => Response serialized"); } catch (Exception exp) { Logger.LogError(exp, "StartTransaction => Exception: {0}", exp.Message); errorCode = ErrorCodes.FormationViolation; } WriteMessageLog(ChargePointStatus?.Id, connectorId, msgIn.Action, startTransactionResponse.IdTagInfo?.Status.ToString(), errorCode); return(errorCode); }
public async Task <StartTransactionResponse> StartTransactionAsync(StartTransactionRequest request) => await ExecuteHttpPostAsync <StartTransactionResponse>("v1", "starttransaction", request).ConfigureAwait(false);