public async Task <Result <MarketSettingsErrorCodes> > AddAsync(MarketSettingsCreateOrUpdateDto model, string username, string correlationId) { var creationResult = CreateMarketSettingsWithDefaults(model, out var marketSettings); if (creationResult.IsFailed) { return(creationResult); } var validationResult = ValidateSettings(marketSettings); if (validationResult.IsFailed) { return(validationResult); } var addResult = await _marketSettingsRepository.AddAsync(marketSettings); if (addResult.IsFailed) { return(addResult); } await _auditService.TryAudit(correlationId, username, model.Id, AuditDataType.MarketSettings, marketSettings.ToJson()); await PublishMarketSettingsChangedEvent(null, marketSettings, username, correlationId, ChangeType.Creation); return(new Result <MarketSettingsErrorCodes>()); }
private static Result <MarketSettingsErrorCodes> CreateMarketSettingsWithDefaults( MarketSettingsCreateOrUpdateDto model, out MarketSettings marketSettings) { marketSettings = null; try { marketSettings = MarketSettings.GetMarketSettingsWithDefaults(model); } catch (InvalidOpenAndCloseHoursException) { return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes.InvalidOpenAndCloseHours)); } catch (WinterOpenAndCloseWithAppliedTimezoneMustBeInTheSameDayException) { return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes .WinterOpenAndCloseWithAppliedTimezoneMustBeInTheSameDay)); } catch (SummerOpenAndCloseWithAppliedTimezoneMustBeInTheSameDayException) { return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes .SummerOpenAndCloseWithAppliedTimezoneMustBeInTheSameDay)); } catch (InvalidTimeZoneException) { return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes.InvalidTimezone)); } catch (InconsistentWorkingCalendarException) { return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes.InconsistentWorkingCalendar)); } catch (InvalidWorkingDayStringException) { return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes.InvalidHalfWorkingDayString)); } return(new Result <MarketSettingsErrorCodes>()); }
public async Task <Result <MarketSettingsErrorCodes> > UpdateAsync(MarketSettingsCreateOrUpdateDto model, string username, string correlationId) { var creationResult = CreateMarketSettingsWithDefaults(model, out var marketSettings); if (creationResult.IsFailed) { return(creationResult); } var currentSettings = await _marketSettingsRepository.GetByIdAsync(marketSettings.Id); if (currentSettings == null) { return(new Result <MarketSettingsErrorCodes>(MarketSettingsErrorCodes.MarketSettingsDoNotExist)); } var validationResult = ValidateSettings(marketSettings, currentSettings); if (validationResult.IsFailed) { return(validationResult); } var updateResult = await _marketSettingsRepository.UpdateAsync(marketSettings); if (updateResult.IsFailed) { return(updateResult); } await _auditService.TryAudit(correlationId, username, marketSettings.Id, AuditDataType.MarketSettings, marketSettings.ToJson(), currentSettings.ToJson()); await PublishMarketSettingsChangedEvent(currentSettings, marketSettings, username, correlationId, ChangeType.Edition); return(new Result <MarketSettingsErrorCodes>()); }