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));
        }
Beispiel #2
0
 public static AgencyAccommodationBookingSettings ToAgencyAccommodationBookingSettings(this AgencyAccommodationBookingSettingsInfo settings)
 => new ()
Beispiel #3
0
 public async Task <IActionResult> SetSystemSettings([FromBody] AgencyAccommodationBookingSettingsInfo settings, [FromRoute] int agencyId)
 => NoContentOrBadRequest(await _systemSettingsManagementService.SetAvailabilitySearchSettings(agencyId, settings));
Beispiel #4
0
 public AgencySystemSettingsCreateOrEditEventData(int agencyId, AgencyAccommodationBookingSettingsInfo newSettings)
 {
     AgencyId    = agencyId;
     NewSettings = newSettings;
 }