|
@@ -1,6 +1,7 @@
|
|
|
using Dapper;
|
|
|
using EVCB_OCPP.Packet.Messages.SubTypes;
|
|
|
using EVCB_OCPP.WEBAPI.Models;
|
|
|
+using EVCB_OCPP.WEBAPI.Models.WebAPI.Dto;
|
|
|
using System;
|
|
|
using System.Collections.Generic;
|
|
|
using System.Configuration;
|
|
@@ -22,6 +23,83 @@ namespace EVCB_OCPP.WEBAPI.Services
|
|
|
{
|
|
|
string mainConnectionString = ConfigurationManager.ConnectionStrings["MainDBContext"].ConnectionString;
|
|
|
|
|
|
+ public DateTime GetLastUpdatedTimebyMachineId(string machineId)
|
|
|
+ {
|
|
|
+ DateTime lastUpdatedOn = DateTime.UtcNow;
|
|
|
+ using (SqlConnection conn = new SqlConnection(mainConnectionString))
|
|
|
+ {
|
|
|
+ var parameters = new DynamicParameters();
|
|
|
+
|
|
|
+ parameters.Add("@MachineId", machineId, DbType.String, ParameterDirection.Input);
|
|
|
+ parameters.Add("@LastUpdatedTime", lastUpdatedOn, DbType.DateTime, ParameterDirection.Output);
|
|
|
+ conn.Execute("GetBasicInfoLastUpdatedTimeById", parameters, commandType: System.Data.CommandType.StoredProcedure);
|
|
|
+ lastUpdatedOn = DateTime.SpecifyKind(parameters.Get<DateTime>("@LastUpdatedTime"), DateTimeKind.Utc);
|
|
|
+ }
|
|
|
+
|
|
|
+ return lastUpdatedOn;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public EVSE GetBasicInfobyId(string machineId)
|
|
|
+ {
|
|
|
+ EVSE cp = new EVSE();
|
|
|
+ Machine _machine = new Machine();
|
|
|
+ using (SqlConnection conn = new SqlConnection(mainConnectionString))
|
|
|
+ {
|
|
|
+ var parameters = new DynamicParameters();
|
|
|
+ parameters.Add("@Id", machineId, DbType.String, ParameterDirection.Input);
|
|
|
+ string strSql = "Select ChargeBoxId,RatedPower,Online,OfflineOn ,GunAmt,Latitude,Longitude,ConnectorType,ConnectorPowerType from [dbo].[Machine] where Id=@Id; ";
|
|
|
+ _machine = conn.Query<Machine>(strSql, parameters).FirstOrDefault();
|
|
|
+ }
|
|
|
+ if (_machine != null)
|
|
|
+ {
|
|
|
+ cp.ChargeBoxId = _machine.ChargeBoxId;
|
|
|
+ cp.NumberofConnectors = _machine.GunAmt;
|
|
|
+ cp.RatedPower = _machine.RatedPower;
|
|
|
+ cp.Status = _machine.Online ? Status.Available : Status.Remove;
|
|
|
+ cp.LastUpdated = _machine.CreatedOn > _machine.OfflineOn ? _machine.CreatedOn : _machine.OfflineOn;
|
|
|
+ cp.Coordinates = new GeoLocation() { Latitude = _machine.Latitude.ToString(), Longitude = _machine.Longitude.ToString() };
|
|
|
+ cp.Connectors = new List<Connector>();
|
|
|
+ var _Connectors = GetConnectorStatus(_machine.ChargeBoxId);
|
|
|
+ for (int i = 1; i <= _machine.GunAmt; i++)
|
|
|
+ {
|
|
|
+ var _RefConnector = _Connectors.Where(x => x.ConnectorId == i).FirstOrDefault();
|
|
|
+ cp.Connectors.Add(new Connector()
|
|
|
+ {
|
|
|
+ ConnectorId = _RefConnector == null ? i : _RefConnector.ConnectorId,
|
|
|
+ Status = cp.Status == Status.Remove ? Status.Remove : _RefConnector == null ? Status.Unknown : ConvertConnectorStatus(_RefConnector.Status),
|
|
|
+ ConnectorType = ConvertConnectorType(int.Parse(_machine.ConnectorType.Split(',')[i - 1])),
|
|
|
+ PowerType = ConvertConnectorPowerType(int.Parse(_machine.ConnectorPowerType.Split(',')[i - 1])),
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return _machine == null ? null : cp;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ public List<ConnectorStatus> GetConnectorStatus(string chargeBoxId)
|
|
|
+ {
|
|
|
+
|
|
|
+ List<ConnectorStatus> _Connectors = new List<ConnectorStatus>();
|
|
|
+ using (SqlConnection conn = new SqlConnection(mainConnectionString))
|
|
|
+ {
|
|
|
+ var parameters = new DynamicParameters();
|
|
|
+ parameters.Add("@ChargeBoxId", chargeBoxId, DbType.String, ParameterDirection.Input);
|
|
|
+ string strSql = "Select ConnectorId,Status from [dbo].[ConnectorStatus] where ChargeBoxId=@ChargeBoxId order by ConnectorId; ";
|
|
|
+ _Connectors = conn.Query<ConnectorStatus>(strSql, parameters).SkipWhile(x => x.ConnectorId == 0).ToList();
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ return _Connectors;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
public int GetNumberofConnectors(string chargeBoxId)
|
|
|
{
|
|
|
int count = 0;
|
|
@@ -68,7 +146,7 @@ namespace EVCB_OCPP.WEBAPI.Services
|
|
|
using (SqlConnection conn = new SqlConnection(mainConnectionString))
|
|
|
{
|
|
|
string strSql = "Select ConnectorId from [dbo].[TransactionRecord] where ChargeBoxId=@ChargeBoxId and Id= @TransactionId and StopTime='1991/01/01'; ";
|
|
|
- connectorId = conn.Query<Int32>(strSql, parameters).FirstOrDefault();
|
|
|
+ connectorId = conn.Query<Int32>(strSql, parameters).FirstOrDefault();
|
|
|
}
|
|
|
|
|
|
return connectorId;
|
|
@@ -272,5 +350,122 @@ namespace EVCB_OCPP.WEBAPI.Services
|
|
|
return detail;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ private Status ConvertConnectorStatus(int value)
|
|
|
+ {
|
|
|
+ Status result = Status.Unknown;
|
|
|
+
|
|
|
+ switch (value)
|
|
|
+ {
|
|
|
+ case 1://Available
|
|
|
+ {
|
|
|
+ result = Status.Available;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2://Preparing
|
|
|
+ case 3://Charging
|
|
|
+ case 4://SuspendedEVSE
|
|
|
+ case 5://SuspendedEV
|
|
|
+ case 6://Finishing
|
|
|
+ {
|
|
|
+ result = Status.Charging;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 7://Unavailable
|
|
|
+ {
|
|
|
+ result = Status.Unavailable;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 8://Reserved
|
|
|
+ {
|
|
|
+ result = Status.Reserved;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 9://Faulted
|
|
|
+ {
|
|
|
+ result = Status.Faulted;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private ConnectorPowerType ConvertConnectorPowerType(int value)
|
|
|
+ {
|
|
|
+ ConnectorPowerType result = ConnectorPowerType.Unknown;
|
|
|
+
|
|
|
+ switch (value)
|
|
|
+ {
|
|
|
+ case 1://AC_1_PHASE
|
|
|
+ {
|
|
|
+ result = ConnectorPowerType.AC_1_PHASE;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2://AC_3_PHASE
|
|
|
+ {
|
|
|
+ result = ConnectorPowerType.AC_3_PHASE;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3://DC
|
|
|
+ {
|
|
|
+ result = ConnectorPowerType.DC;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private ConnectorType ConvertConnectorType(int value)
|
|
|
+ {
|
|
|
+ ConnectorType result = ConnectorType.Other;
|
|
|
+
|
|
|
+ switch (value)
|
|
|
+ {
|
|
|
+ case 1://CHADEMO
|
|
|
+ {
|
|
|
+ result = ConnectorType.CHADEMO;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 2://AC
|
|
|
+ {
|
|
|
+ result = ConnectorType.AC;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 3://CCS1_COMBO
|
|
|
+ {
|
|
|
+ result = ConnectorType.CCS1_COMBO;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 4://CCS2_COMBO
|
|
|
+ {
|
|
|
+ result = ConnectorType.CCS2_COMBO;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ case 5://GBT
|
|
|
+ {
|
|
|
+ result = ConnectorType.GBT;
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
}
|