using Newtonsoft.Json;
using OCPPPacket.Packet.DataTransfer;
using OCPPPacket.Packet.Messages;
using OCPPPacket.Packet.Messages.Core;
using OCPPPacket.Packet.Messages.FirmwareManagement;
using OCPPPacket.Packet.Status;
using System;
namespace OCPPServer.Handler
{
public class MakeConfirmationHandler
{
#region Core
///
/// 建立 Authorize comfirm message
///
/// AuthorizeRequest
/// AuthorizationStatus
///
public IConfirmation MakeAuthorizeConfirmation(AuthorizeRequest request, AuthorizationStatus authstatus)
{
AuthorizeConfirmation conf = new AuthorizeConfirmation();
conf.idTagInfo = new IdTagInfo();
conf.idTagInfo.expiryDate = new DateTime(2020, 06, 19, 09, 10, 00, 000);//date;
conf.idTagInfo.parentIdTag = request.idTag;
conf.idTagInfo.status = authstatus;
return conf;
}
///
/// 建立 BootNotification comfirm message
///
/// BootNotificationRequest
///
public IConfirmation MakeBootNotificationConfirmation(BootNotificationRequest request)
{
BootNotificationConfirmation conf = new BootNotificationConfirmation();
conf.currentTime = DateTime.Now;
conf.interval = 10;
conf.status = RegistrationStatus.Accepted;
return conf;
}
///
/// 建立 StatusNotification comfirm message
///
/// StatusNotificationRequest
///
public IConfirmation MakeStatusNotificationConfirmation(StatusNotificationRequest request)
{
StatusNotificationConfirmation conf = new StatusNotificationConfirmation();
return conf;
}
///
/// 建立 Heartbeat comfirm message
///
/// HeartbeatRequest
///
public IConfirmation MakeHeartbeatConfirmation(HeartbeatRequest request)
{
HeartbeatConfirmation conf = new HeartbeatConfirmation();
conf.currentTime = DateTime.Now;
return conf;
}
///
/// 建立 ClearCache comfirm message
///
/// ClearCacheRequest
///
public IConfirmation MakeClearCacheConfirmation(ClearCacheRequest request)
{
ClearCacheConfirmation conf = new ClearCacheConfirmation();
conf.status = ClearCacheStatus.Accepted;
return conf;
}
///
/// 建立 MeterValues comfirm message
///
/// MeterValuesRequest
///
public IConfirmation MakeMeterValuesConfirmation(MeterValuesRequest request)
{
MeterValuesConfirmation conf = new MeterValuesConfirmation();
return conf;
}
///
/// 建立 StartTransaction comfirm message
///
/// StartTransactionRequest
///
///
public IConfirmation MakeStartTransactionConfirmation(StartTransactionRequest request, out int transactionId)
{
StartTransactionConfirmation conf = new StartTransactionConfirmation();
conf.idTagInfo = new IdTagInfo();
conf.idTagInfo.expiryDate = new DateTime(2020, 06, 19, 09, 10, 00, 000);
conf.idTagInfo.parentIdTag = request.idTag;
conf.transactionId = new Random().Next(1, int.MaxValue);
conf.idTagInfo.status = AuthorizationStatus.Accepted; // 一律回 "Accepted"
transactionId = conf.transactionId;
return conf;
}
///
/// 建立 Repeat StartTransaction comfirm message
///
/// StartTransactionRequest
///
///
public IConfirmation MakeRePeatStartTransactionConfirmation(StartTransactionRequest request, int transactionId)
{
StartTransactionConfirmation conf = new StartTransactionConfirmation();
conf.idTagInfo = new IdTagInfo();
conf.idTagInfo.expiryDate = new DateTime(2020, 06, 19, 09, 10, 00, 000);
conf.idTagInfo.parentIdTag = request.idTag;
conf.transactionId = transactionId;
conf.idTagInfo.status = AuthorizationStatus.Accepted; // 一律回 "Accepted"
return conf;
}
///
/// 建立 StopTransaction comfirm message
///
/// StopTransactionRequest
/// AuthorizationStatus
///
public IConfirmation MakeStopTransactionConfirmation(StopTransactionRequest request, AuthorizationStatus authstatus)
{
StopTransactionConfirmation conf = new StopTransactionConfirmation();
conf.idTagInfo = new IdTagInfo();
conf.idTagInfo.expiryDate = new DateTime(2020, 06, 19, 09, 10, 00, 000);
conf.idTagInfo.parentIdTag = request.idTag;
conf.idTagInfo.status = authstatus;
return conf;
}
///
/// 建立 GunStatus comfirm message
///
///
public IConfirmation MakeGunStatusConfirmation()
{
DataTransferConfirmation conf = new DataTransferConfirmation();
conf.status = DataTransferStatus.Accepted;
return conf;
}
///
/// 建立 ChargeComplete comfirm message
///
///
public IConfirmation MakeChargeCompleteConfirmation()
{
DataTransferConfirmation conf = new DataTransferConfirmation();
conf.status = DataTransferStatus.Accepted;
return conf;
}
///
/// 建立 Location comfirm message
///
///
public IConfirmation MakeLocationConfirmation()
{
DataTransferConfirmation conf = new DataTransferConfirmation();
conf.status = DataTransferStatus.Accepted;
return conf;
}
///
/// 建立 ChargingGunBMS comfirm message
///
///
public IConfirmation MakeChargingGunBMSConfirmation()
{
DataTransferConfirmation conf = new DataTransferConfirmation();
conf.status = DataTransferStatus.Accepted;
return conf;
}
///
/// 建立 UpgradeVersionConf comfirm message
///
///
///
///
public IConfirmation MakeUpgradeVersionConfConfirmation(bool result, ProgramParam param)
{
DataTransferConfirmation conf = new DataTransferConfirmation();
conf.status = DataTransferStatus.Accepted;
UpgradeVersionConf upgradeverConf = new UpgradeVersionConf();
upgradeverConf.param = param;
if (!result)
{
upgradeverConf.SameAsServer = true;
}
else
{
upgradeverConf.SameAsServer = false;
}
conf.data = JsonConvert.SerializeObject(upgradeverConf);
return conf;
}
#endregion Core
#region FirmwareManagement
///
/// 建立 DiagnosticsStatusNotification comfirm message
///
///
public IConfirmation MakeDiagnosticsStatusNotificationConfirmation()
{
DiagnosticsStatusNotificationConfirmation conf = new DiagnosticsStatusNotificationConfirmation();
return conf;
}
///
/// 建立 FirmwareStatusNotification comfirm message
///
///
public IConfirmation MakeFirmwareStatusNotificationConfirmation()
{
FirmwareStatusNotificationConfirmation conf = new FirmwareStatusNotificationConfirmation();
return conf;
}
#endregion FirmwareManagement
#region DataTransfer
public IConfirmation MakeAuthorizeDataConfConfirmation(AuthorizeData request, AuthorizeStatus authstatus)
{
DataTransferConfirmation conf = new DataTransferConfirmation();
conf.status = DataTransferStatus.Accepted;
AuthorizeResult authorizeResult = new AuthorizeResult();
authorizeResult.expiryDate = new DateTime(2020, 06, 19, 09, 10, 00, 000);//date;
authorizeResult.parentIdTag = request.idTag;
authorizeResult.status = authstatus;
conf.data = JsonConvert.SerializeObject(authorizeResult);
return conf;
}
#endregion
}
}