using System; using System.Collections.Generic; #if _SINP using Wayne.ForecourtControl.Nfs; #endif namespace Wayne.ForecourtControl.Fusion { public class FUSIONTankGroup : ITankGroup { #region Fields FUSIONManager manager; int id; List tanks = new List(); bool blocked; int fuelGrade; #endregion #region Events public event EventHandler OnFuelDelivery; #endregion #region Construction public FUSIONTankGroup(FUSIONManager manager, int id, int fuelGrade) { this.manager = manager; this.id = id; this.fuelGrade = fuelGrade; } #endregion #region Properties public int Id { get { return id; } } public System.Collections.ObjectModel.ReadOnlyCollection Tanks { get { return tanks.AsReadOnly(); } } public bool Blocked { get { return blocked; } } public int FuelGrade { get { return fuelGrade; } } #endregion /*static public ITankGroup getTankGroupByIndex(int iTankGroupId) { foreach (ITankGroup tankgroup in FUSIONFactory.fusionForecourtControl.TankGroups) { if (tankgroup.Id == iTankGroupId) { return tankgroup; } } return null; }*/ #region Methods public void BlockAsync(EventHandler blockCompleted, object userToken) { throw new NotImplementedException(); } public void UnblockAsync(EventHandler unblockCompleted, object userToken) { throw new NotImplementedException(); } public void RegisterManualDeliveryAsync(IManualFuelDeliveryParameters manualDeliveryParameters, EventHandler deliveryRegistrationCompleted, object userToken) { throw new NotImplementedException(); //if (manualDeliveryParameters == null) // throw new ArgumentNullException("manualDeliveryParameters"); //AsyncOperation operation = manager.AsyncManager.RegisterOperation(this, deliveryRegistrationCompleted, userToken); ////Get tank number. Get the first tank number of the tank group. //int tankNumber = 0; //if (tanks.Count > 0) // tankNumber = tanks[0].Id + 1; //manager.Send(new Function(Fid.RpcReqRegisterManualDelivery, // ParserDomain.FillingServer, // new PrimitiveParameter(Pid.SequenceNumber, PrimitiveType.Int16, operation.Id), // new PrimitiveParameter(Pid.TankDeliveryStartDateTime, PrimitiveType.DateTime, manualDeliveryParameters.StartDateTime), // new PrimitiveParameter(Pid.TankDeliveryEndDateTime, PrimitiveType.DateTime, manualDeliveryParameters.EndDateTime), // new PrimitiveParameter(Pid.TankNumber, PrimitiveType.Byte, tankNumber), // new PrimitiveParameter(Pid.FuelCode, PrimitiveType.Byte, fuelGrade + 1), // new PrimitiveParameter(Pid.TankDeliveryVolume, PrimitiveType.Decimal, manualDeliveryParameters.Quantity), // new PrimitiveParameter(Pid.TankProductTemp, PrimitiveType.Decimal, manualDeliveryParameters.TruckFuelTemperature), // new PrimitiveParameter(Pid.DeliveryNote, PrimitiveType.String, manualDeliveryParameters.ReferenceNote), // new PrimitiveParameter(Pid.PlannedVolume, PrimitiveType.Decimal, manualDeliveryParameters.PlannedQuantity), // new PrimitiveParameter(Pid.PlantInfo, PrimitiveType.String, manualDeliveryParameters.SourcePlantInfo))); } #endregion #region Writable Properties internal List WritableTankList { get { return tanks; } } internal bool WritableBlocked { get { return blocked; } set { blocked = value; ; } } #endregion #region Event fire methods internal void FireOnFuelDelivery(FuelDeliveryEventArgs args) { if (OnFuelDelivery != null) OnFuelDelivery(this, args); } #endregion } }