public async Task <Result> SetDisplayedPaymentOptions(int agencyId, DisplayedPaymentOptionsSettings settings) { return(await CheckAgencyExists(agencyId) .Bind(SetSettings)); async Task <Result> SetSettings() { var existingSettings = await _context.AgencySystemSettings.SingleOrDefaultAsync(s => s.AgencyId == agencyId); if (existingSettings == default) { var newSettings = new AgencySystemSettings { AgencyId = agencyId, DisplayedPaymentOptions = settings }; _context.AgencySystemSettings.Add(newSettings); } else { existingSettings.DisplayedPaymentOptions = settings; _context.Update(existingSettings); } await _context.SaveChangesAsync(); return(Result.Success()); } }
public async Task <Result> SetAvailabilitySearchSettings(int agencyId, AgencyAccommodationBookingSettings settings) { return(await CheckAgencyExists(agencyId) .Bind(SetSettings)); async Task <Result> SetSettings() { var existingSettings = await _context.AgencySystemSettings.SingleOrDefaultAsync(s => s.AgencyId == agencyId); if (existingSettings == default) { var newSettings = new AgencySystemSettings { AgencyId = agencyId, AccommodationBookingSettings = settings }; _context.AgencySystemSettings.Add(newSettings); } else { existingSettings.AccommodationBookingSettings = settings; _context.Update(existingSettings); } await _context.SaveChangesAsync(); return(Result.Success()); } }
public async Task <Result> SetAvailabilitySearchSettings(int agencyId, AgencyAccommodationBookingSettingsInfo settings) { return(await CheckAgencyExists(agencyId) .BindWithTransaction(_context, () => SetSettings() .Bind(WriteToAuditLog))); async Task <Result> SetSettings() { if (settings.CustomDeadlineShift.HasValue && settings.CustomDeadlineShift >= 0) { return(Result.Failure("Deadline shift must be less than zero")); } var existingSettings = await _context.AgencySystemSettings.SingleOrDefaultAsync(s => s.AgencyId == agencyId); if (existingSettings == default) { var newSettings = new AgencySystemSettings { AgencyId = agencyId, AccommodationBookingSettings = settings.ToAgencyAccommodationBookingSettings() }; _context.AgencySystemSettings.Add(newSettings); } else { existingSettings.AccommodationBookingSettings = settings.ToAgencyAccommodationBookingSettings(); _context.Update(existingSettings); } await _context.SaveChangesAsync(); return(Result.Success()); } Task <Result> WriteToAuditLog() => _managementAuditService.Write(ManagementEventType.AgencySystemSettingsCreateOrEdit, new AgencySystemSettingsCreateOrEditEventData(agencyId, settings)); }