コード例 #1
0
        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());
            }
        }
コード例 #2
0
        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());
            }
        }
コード例 #3
0
        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));
        }