private void ValidateId(string id, ScheduleSettingsContract contract) { if (contract?.Id != id) { throw new ArgumentException("Id must match with contract id"); } }
private static ScheduleSettings Convert(ScheduleSettingsContract shedule) { return(new ScheduleSettings( dayOffStartDay: shedule.DayOffStartDay, dayOffStartTime: shedule.DayOffStartTime, dayOffEndDay: shedule.DayOffEndDay, dayOffEndTime: shedule.DayOffEndTime, assetPairsWithoutDayOff: shedule.AssetPairsWithoutDayOff, pendingOrdersCutOff: shedule.PendingOrdersCutOff)); }
public static ScheduleSettingsContract CloneWithRank(this ScheduleSettingsContract schedule, int rank) => new ScheduleSettingsContract { Id = schedule.Id, Rank = rank, AssetPairRegex = schedule.AssetPairRegex, AssetPairs = schedule.AssetPairs, MarketId = schedule.MarketId, IsTradeEnabled = schedule.IsTradeEnabled, PendingOrdersCutOff = schedule.PendingOrdersCutOff, Start = schedule.Start.Clone(), End = schedule.End.Clone(), };
public async Task <ScheduleSettingsContract> Update(string settingId, [FromBody] ScheduleSettingsContract scheduleSetting) { await ValidateScheduleSettings(scheduleSetting); ValidateId(settingId, scheduleSetting); await _scheduleSettingsRepository.UpdateAsync( _convertService.Convert <ScheduleSettingsContract, ScheduleSettings>(scheduleSetting)); await _eventSender.SendSettingsChangedEvent($"{Request.Path}", SettingsChangedSourceType.ScheduleSettings, settingId); return(scheduleSetting); }
public async Task <ScheduleSettingsContract> Insert([FromBody] ScheduleSettingsContract scheduleSetting) { await ValidateScheduleSettings(scheduleSetting); if (!await _scheduleSettingsRepository.TryInsertAsync( _convertService.Convert <ScheduleSettingsContract, ScheduleSettings>(scheduleSetting))) { throw new ArgumentException($"Schedule setting with id {scheduleSetting.Id} already exists", nameof(scheduleSetting.Id)); } await _eventSender.SendSettingsChangedEvent($"{Request.Path}", SettingsChangedSourceType.ScheduleSettings, scheduleSetting.Id); return(scheduleSetting); }
public static ScheduleSettings Create(ScheduleSettingsContract scheduleSettingsContract) { return(new ScheduleSettings { Id = scheduleSettingsContract.Id, Rank = scheduleSettingsContract.Rank, IsTradeEnabled = scheduleSettingsContract.IsTradeEnabled, PendingOrdersCutOff = scheduleSettingsContract.PendingOrdersCutOff, Start = new ScheduleConstraint { Date = scheduleSettingsContract.Start.Date, DayOfWeek = scheduleSettingsContract.Start.DayOfWeek, Time = scheduleSettingsContract.Start.Time }, End = new ScheduleConstraint { Date = scheduleSettingsContract.End.Date, DayOfWeek = scheduleSettingsContract.End.DayOfWeek, Time = scheduleSettingsContract.End.Time, } }); }
private async Task ValidateScheduleSettings(ScheduleSettingsContract scheduleSetting) { if (scheduleSetting == null) { throw new ArgumentNullException(nameof(scheduleSetting), "Model is incorrect"); } if (string.IsNullOrWhiteSpace(scheduleSetting.Id)) { throw new ArgumentNullException(nameof(scheduleSetting.Id), "scheduleSetting Id must be set"); } if (!string.IsNullOrEmpty(scheduleSetting.MarketId) && await _marketRepository.GetAsync(scheduleSetting.MarketId) == null) { throw new InvalidOperationException($"Market {scheduleSetting.MarketId} does not exist"); } ScheduleConstraintContract.Validate(scheduleSetting); if (scheduleSetting.Start.DayOfWeek != null && !Enum.IsDefined(typeof(DayOfWeek), scheduleSetting.Start.DayOfWeek)) { throw new ArgumentNullException(nameof(scheduleSetting.Start.DayOfWeek), "AssetPair Start DayOfWeek is set to an incorrect value"); } if (scheduleSetting.End.DayOfWeek != null && !Enum.IsDefined(typeof(DayOfWeek), scheduleSetting.End.DayOfWeek)) { throw new ArgumentNullException(nameof(scheduleSetting.End.DayOfWeek), "AssetPair End DayOfWeek is set to an incorrect value"); } foreach (var assetPair in scheduleSetting.AssetPairs) { if (await _assetPairsRepository.GetAsync(assetPair) == null) { throw new InvalidOperationException($"Asset pair {assetPair} does not exist"); } } }
private static async Task CheckScheduleSettingsApiWorking(IHttpClientGenerator clientGenerator) { var scheduleSettings = new ScheduleSettingsContract { Id = "s1", Rank = 1000, AssetPairRegex = "", AssetPairs = new HashSet <string>() { "EURUSD" }, MarketId = "1", IsTradeEnabled = true, PendingOrdersCutOff = null, Start = new ScheduleConstraintContract { Date = null, DayOfWeek = DayOfWeek.Friday, Time = new TimeSpan(0, 0, 0) }, End = new ScheduleConstraintContract { Date = null, DayOfWeek = DayOfWeek.Sunday, Time = new TimeSpan(0, 0, 0) }, }; var scheduleSettingsApiClient = clientGenerator.Generate <IScheduleSettingsApi>(); await scheduleSettingsApiClient.List().Dump(); await scheduleSettingsApiClient.Insert(scheduleSettings).Dump(); await scheduleSettingsApiClient.Get("s1").Dump(); scheduleSettings.Rank = 100000; await scheduleSettingsApiClient.Update("s1", scheduleSettings).Dump(); await scheduleSettingsApiClient.StateList(new[] { "EURUSD" }).Dump(); await scheduleSettingsApiClient.Delete("s1"); }
public Task <ScheduleSettingsContract> SetSchedule([FromBody] ScheduleSettingsContract scheduleSettingsContract) { return(Task.FromResult(Convert(_dayOffSettingsService.SetScheduleSettings(Convert(scheduleSettingsContract))))); }