mirror of https://github.com/docusealco/docuseal
				
				
				
			
							parent
							
								
									40f5fa4217
								
							
						
					
					
						commit
						e0a297cf81
					
				| @ -0,0 +1,77 @@ | ||||
| # frozen_string_literal: true | ||||
| 
 | ||||
| class SubmittersController < ApplicationController | ||||
|   load_and_authorize_resource :submitter, only: %i[edit update] | ||||
| 
 | ||||
|   def edit | ||||
|     @submitter_email_message = | ||||
|       if @submitter.preferences['email_message_uuid'].present? | ||||
|         @submitter.account | ||||
|                   .email_messages | ||||
|                   .find_by(uuid: @submitter.preferences['email_message_uuid']) | ||||
|       end | ||||
|   end | ||||
| 
 | ||||
|   def update | ||||
|     submission = @submitter.submission | ||||
| 
 | ||||
|     if @submitter.submission_events.exists?(event_type: 'start_form') || submission.archived_at? || submission.expired? | ||||
|       return redirect_back fallback_location: submission_path(submission), alert: I18n.t('submitter_cannot_be_updated') | ||||
|     end | ||||
| 
 | ||||
|     if submitter_params.values.all?(&:blank?) | ||||
|       return redirect_back fallback_location: submission_path(submission), | ||||
|                            alert: I18n.t('at_least_one_field_must_be_filled') | ||||
|     end | ||||
| 
 | ||||
|     if params[:is_custom_message] != '1' | ||||
|       params.delete(:subject) | ||||
|       params.delete(:body) | ||||
|     end | ||||
| 
 | ||||
|     assign_preferences(@submitter, params) | ||||
|     assign_submitter_attrs(@submitter, submitter_params) | ||||
| 
 | ||||
|     if @submitter.save | ||||
|       if @submitter.preferences['send_email'] || @submitter.preferences['send_sms'] | ||||
|         Submitters.send_signature_requests([@submitter]) | ||||
|       end | ||||
| 
 | ||||
|       redirect_back fallback_location: submission_path(submission), notice: I18n.t('changes_have_been_saved') | ||||
|     else | ||||
|       redirect_back fallback_location: submission_path(submission), alert: I18n.t('unable_to_save') | ||||
|     end | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
| 
 | ||||
|   def assign_submitter_attrs(submitter, attrs) | ||||
|     submitter.phone = attrs[:phone].to_s.gsub(/[^0-9+]/, '') if attrs.key?(:phone) | ||||
| 
 | ||||
|     submitter.email = Submissions.normalize_email(attrs[:email]) if attrs.key?(:email) | ||||
| 
 | ||||
|     submitter.name = attrs[:name] if attrs.key?(:name) | ||||
| 
 | ||||
|     submitter | ||||
|   end | ||||
| 
 | ||||
|   def assign_preferences(submitter, attrs) | ||||
|     submitter_preferences = Submitters.normalize_preferences(submitter.account, current_user, attrs) | ||||
| 
 | ||||
|     if submitter_preferences.key?('send_email') | ||||
|       submitter.preferences['send_email'] = submitter_preferences['send_email'] | ||||
|     end | ||||
| 
 | ||||
|     submitter.preferences['send_sms'] = submitter_preferences['send_sms'] if submitter_preferences.key?('send_sms') | ||||
| 
 | ||||
|     if submitter_preferences.key?('email_message_uuid') | ||||
|       submitter.preferences['email_message_uuid'] = submitter_preferences['email_message_uuid'] | ||||
|     end | ||||
| 
 | ||||
|     submitter | ||||
|   end | ||||
| 
 | ||||
|   def submitter_params | ||||
|     params.require(:submitter).permit(:email, :name, :phone).transform_values(&:strip) | ||||
|   end | ||||
| end | ||||
| @ -0,0 +1,29 @@ | ||||
| <%= render 'shared/turbo_modal_large', title: t('edit_recipient') do %> | ||||
|   <div class="px-5 mb-5 mt-4"> | ||||
|     <%= form_for '', url: submitter_path(@submitter), method: :patch, html: { class: 'space-y-4', autocomplete: 'off' }, data: { turbo_frame: :_top } do |f| %> | ||||
|       <div class="grid gap-4"> | ||||
|         <submitter-item class="form-control"> | ||||
|           <submitters-autocomplete data-field="name"> | ||||
|             <%= text_field_tag 'submitter[name]', @submitter.name, autocomplete: 'off', class: 'base-input !h-10 w-full', placeholder: "#{t('name')} (#{t('optional')})", dir: 'auto' %> | ||||
|           </submitters-autocomplete> | ||||
|           <div class="grid md:grid-cols-2 gap-1"> | ||||
|             <submitters-autocomplete data-field="email"> | ||||
|               <%= email_field_tag 'submitter[email]', @submitter.email, autocomplete: 'off', class: 'base-input !h-10 mt-1.5 w-full', placeholder: "#{t('email')} (#{t('optional')})" %> | ||||
|             </submitters-autocomplete> | ||||
|             <submitters-autocomplete data-field="phone"> | ||||
|               <%= telephone_field_tag 'submitter[phone]', @submitter.phone, autocomplete: 'off', pattern: '^\+[0-9\s\-]+$', class: 'base-input !h-10 mt-1.5 w-full', placeholder: "#{t('phone')} (#{t('optional')})", oninvalid: "this.value ? this.setCustomValidity('#{t('use_international_format_1xxx_')}') : ''", oninput: "this.setCustomValidity('')" %> | ||||
|             </submitters-autocomplete> | ||||
|           </div> | ||||
|         </submitter-item> | ||||
|       </div> | ||||
|       <div> | ||||
|         <%= render 'submissions/send_email', f:, template: @submitter.template, submitter: @submitter, resend_email: @submitter.sent_at?, submitter_email_message: @submitter_email_message, disable_save_as_default_template_option: true %> | ||||
|         <%= render 'submissions/send_sms', f:, resend_sms: @submitter.sent_at? %> | ||||
|       </div> | ||||
|       <div class="form-control"> | ||||
|         <%= f.button button_title(title: t('update_recipient'), disabled_with: t('updating')), class: 'base-button' %> | ||||
|       </div> | ||||
|     <% end %> | ||||
|   </div> | ||||
|   <%= content_for(:modal_extra) %> | ||||
| <% end %> | ||||
					Loading…
					
					
				
		Reference in new issue