private Analog( Guid remoteId, PointName pointName, PointCoordinate pointCoordinate) : base(pointName) { _remoteId = remoteId; _pointCoordinate = pointCoordinate; }
public void Update(PointCoordinate newPointCoordinate) { _pointCoordinate = newPointCoordinate; }
public Maybe <AnalogCoordinateUpdated> GenerateAnalogCoordinateUpdatedWith(PointCoordinate newPointCoordinate) => _pointCoordinate.Equals(newPointCoordinate).OnBoth( () => Maybe <AnalogCoordinateUpdated> .None, () => new AnalogCoordinateUpdated(_remoteId, Id, _pointCoordinate, newPointCoordinate));
public static Analog AnalogFrom( Guid remoteId, PointName pointName, PointCoordinate pointCoordinate) => new Analog(remoteId, pointName, pointCoordinate);
public void UpdateCoordinate(PointName pointName, PointCoordinate newPointCoordinate) => _analogPoints[pointName].Update(newPointCoordinate);
public Result <Maybe <AnalogCoordinateUpdated> > GenerateAnalogCoordinateUpdatedWith(PointName pointName, PointCoordinate newPointCoordinate) => _analogPoints.MaybeGetValue(pointName).Unwrap( analog => analog.GenerateAnalogCoordinateUpdatedWith(newPointCoordinate).ToOkResult(), () => Result.Fail <Maybe <AnalogCoordinateUpdated> >($"Analog point with name '{pointName}' doesnt exist in remote."));
public void Add(PointName pointName, PointCoordinate pointCoordinate) => _analogPoints.Add(pointName, AnalogFrom(_remoteId, pointName, pointCoordinate));
public Result <AnalogAdded> GenerateAnalogAddedFor(PointName pointName, PointCoordinate pointCoordinate) => _analogPoints.MaybeGetValue(pointName).Unwrap( _ => Result.Fail <AnalogAdded>($"Analog point with name {pointName} already exists in remote."), () => new AnalogAdded(_remoteId, pointName, pointCoordinate).ToOkResult());
public Result <Remote> UpdateAnalogCoordinate(PointName pointName, PointCoordinate newPointCoordinate) => _analogPoints.GenerateAnalogCoordinateUpdatedWith(pointName, newPointCoordinate) .OnSuccess(maybeEvent => maybeEvent.Map(ApplyChange)) .ToTypedResult(this);
public Result <Remote> AddAnalog(PointName pointName, PointCoordinate pointCoordinate) => _analogPoints.GenerateAnalogAddedFor(pointName, pointCoordinate) .OnSuccess(e => ApplyChange(e)) .ToTypedResult(this);