diff --git a/app/controllers/enquiries_controller.rb b/app/controllers/enquiries_controller.rb new file mode 100644 index 000000000..a278e6a1f --- /dev/null +++ b/app/controllers/enquiries_controller.rb @@ -0,0 +1,155 @@ +class EnquiriesController < ApplicationController + skip_before_filter :verify_authenticity_token + skip_before_filter :check_authentication, :only => [:reindex] + + before_filter :load_enquiry_or_redirect, :only => [:show, :edit, :destroy] + before_filter :current_user, :except => [:reindex] + + # GET /enquiries + def index + # Skeleton based on child controller code + authorize! :index, Enquiry + + @page_name = t("home.view_enquiries") + @aside = 'shared/sidebar_links' + @filter = params[:filter] || params[:status] || "all" + @order = params[:order_by] || 'enquirer_name' + setup_fields! + per_page = params[:per_page] || EnquiriesHelper::View::PER_PAGE + per_page = per_page.to_i unless per_page == 'all' + + filter_enquiries per_page + end + + # GET /enquiries/1 + def show + authorize! :read, @enquiry + + @page_name = t("enquiry.view") + @body_class = 'profile-page' + @enquiry = Enquiry.get(params[:id]) + setup_fields! + end + + # GET /enquiries/new + def new + # Skeleton based on child controller code + authorize! :create, Enquiry + + @page_name = t("enquiries.create_new_enquiry") + setup_fields! + @exclude_tabs = ["e98c765c"] + @enquiry = Enquiry.new + end + + # GET /enquiries/1/edit + def edit + # Skeleton based on child controller code + authorize! :update, @enquiry + + @page_name = t("enquiry.edit") + setup_fields! + end + + # POST /enquiries + def create + # Skeleton based on child controller code + authorize! :create, Enquiry + + enquirer_name = params[:child].delete('enquirer_name') + create_enquiry({:enquirer_name => enquirer_name, + :criteria => params[:child]}) + @enquiry['created_by_full_name'] = current_user_full_name + + respond_to do |format| + if @enquiry.save + format.html { redirect_to(@enquiry) } + format.xml { render :xml => @enquiry, :status => :created, :location => @enquiry } + format.json { + render :json => @enquiry.compact.to_json + } + else + format.html { + @form_sections = get_form_sections + render :action => "new" + } + format.xml { render :xml => @enquiry.errors, :status => :unprocessable_entity } + end + end + end + + def update + # Not yet implemented + end + + private + + def load_enquiry_or_redirect + @enquiry = Enquiry.get(params[:id]) + + if @enquiry.nil? + flash[:error] = "Enquiry with the given id is not found" + redirect_to :action => :index and return + end + end + + def filter_enquiries(per_page) + total_rows, enquiries = enquiries_by_user_access(@filter, per_page) + @enquiries = paginated_collection enquiries, total_rows + end + + def enquiries_by_user_access(filter_option, per_page) + # Skeleton based on child controller code + keys = [filter_option] # Not currently using keys + options = {} + all_rows = Enquiry.view("all") + return all_rows.length, all_rows + end + + def paginated_collection instances, total_rows + page = params[:page] || 1 + WillPaginate::Collection.create(page, EnquiriesHelper::View::PER_PAGE, total_rows) do |pager| + pager.replace(instances) + end + end + + def setup_fields! + @form_sections = get_form_sections + @fields = @form_sections.collect{ |section| section["fields"] }.flatten + @exclude_tabs = [] + end + + def get_form_sections + JSON.parse(File.read(Rails.root.join("config", "enquiry_form_sections.json").to_s)).collect do |form_section| + form_section["fields"].each do |field| + field["display_name"].each do |lang, str| + field["display_name_#{lang}"] = str + end + field.delete("display_name") + + if field.has_key? "option_strings_text" + field["option_strings_text"].each do |lang, arr| + field["option_strings_text_#{lang}"] = arr.join("\n") + end + field.delete("option_strings_text") + end + + Field.new(field) + end + + ["name", "help_text", "description"].each do |property| + form_section[property].each do |lang, str| + form_section["#{property}_#{lang}"] = str + end + form_section.delete(property) + end + + FormSection.new(form_section) + end + end + + def create_enquiry(enquiry_params) + @enquiry = Enquiry.new_with_user_name(current_user, enquiry_params) + end + +end diff --git a/app/helpers/enquiries_helper.rb b/app/helpers/enquiries_helper.rb new file mode 100644 index 000000000..7419c6c0c --- /dev/null +++ b/app/helpers/enquiries_helper.rb @@ -0,0 +1,11 @@ +module EnquiriesHelper + + module View + PER_PAGE = 20 + MAX_PER_PAGE = 9999 + end + + def text_to_identify_enquiry enquiry + enquiry['enquirer_name'].blank? ? enquiry.id : "Enquiry by #{enquiry['enquirer_name']}: #{enquiry.id}" + end +end diff --git a/app/models/enquiry.rb b/app/models/enquiry.rb index 1dc92b7d9..74113be94 100644 --- a/app/models/enquiry.rb +++ b/app/models/enquiry.rb @@ -1,7 +1,8 @@ class Enquiry < CouchRest::Model::Base use_database :enquiry - include RecordHelper + include RecordHelper + include RapidFTR::CouchRestRailsBackward before_save :find_matching_children property :enquirer_name @@ -49,7 +50,7 @@ def find_matching_children self.potential_matches = children.map { |child| child.id } verify_format_of(previous_matches) - unless previous_matches.eql?(self.potential_matches) + if previous_matches.empty? or not previous_matches.eql?(self.potential_matches) self.match_updated_at = Clock.now.to_s end end diff --git a/app/models/field.rb b/app/models/field.rb index 84c7bdecb..b3504531b 100644 --- a/app/models/field.rb +++ b/app/models/field.rb @@ -31,7 +31,8 @@ class Field NUMERIC_FIELD = "numeric_field", PHOTO_UPLOAD_BOX = "photo_upload_box", AUDIO_UPLOAD_BOX = "audio_upload_box", - DATE_FIELD = "date_field" + DATE_FIELD = "date_field", + LIST_RECORD_FIELD = "list_record_field" ] validates_presence_of "display_name_#{I18n.default_locale}", :message=> I18n.t("errors.models.field.display_name_presence") diff --git a/app/views/enquiries/_field_display_basic.html.erb b/app/views/enquiries/_field_display_basic.html.erb new file mode 100644 index 000000000..0b0f37154 --- /dev/null +++ b/app/views/enquiries/_field_display_basic.html.erb @@ -0,0 +1,6 @@ + +

+ + <%= field_value_for_display (@enquiry[field.name] ? @enquiry[field.name] : + (@enquiry[:criteria] || @enquiry)[field.name]) %> +

diff --git a/app/views/enquiries/_field_display_photo.html.erb b/app/views/enquiries/_field_display_photo.html.erb new file mode 100644 index 000000000..2082a637a --- /dev/null +++ b/app/views/enquiries/_field_display_photo.html.erb @@ -0,0 +1,22 @@ + + +<% content_for :javascript do %> + +<% end %> + +
+
+ <% # Not yet implemented %> +
+
\ No newline at end of file diff --git a/app/views/enquiries/_form_section.html.erb b/app/views/enquiries/_form_section.html.erb new file mode 100644 index 000000000..01021d172 --- /dev/null +++ b/app/views/enquiries/_form_section.html.erb @@ -0,0 +1,11 @@ +<% unless @exclude_tabs.include?(form_section.unique_id) %> +
+ <%= render :partial => "form_section_info", :locals => {:form_section => form_section} %> + <% (form_section.fields.select {|field| field.visible? }).each do |field| %> + <% if field.type != "list_record_field" && field.type != "photo_upload_box" %> + <%= render :partial => field.type, :object => field %> + <% end %> + <% end %> + +
+<% end %> \ No newline at end of file diff --git a/app/views/enquiries/_form_section_info.html.erb b/app/views/enquiries/_form_section_info.html.erb new file mode 100644 index 000000000..ccc5a7fc4 --- /dev/null +++ b/app/views/enquiries/_form_section_info.html.erb @@ -0,0 +1,15 @@ +

<%= t(form_section.unique_id,:default => form_section.name) %>

+
+ +
+ <% if form_section.description.present? %> +
+ <%= form_section.description %> +
+ <% end %> + <% if form_section.help_text.present? %> +
+ <%= form_section.help_text %> +
+ <% end %> +
diff --git a/app/views/enquiries/_header.html.erb b/app/views/enquiries/_header.html.erb new file mode 100644 index 000000000..f48b6c873 --- /dev/null +++ b/app/views/enquiries/_header.html.erb @@ -0,0 +1,4 @@ +

<%= t("enquiries.label") %>

+<% if can? :create, Enquiry %> + <%= link_to content_tag(:span, t("enquiries.create_new_enquiry"), :class => 'create_user'), new_enquiry_path, :class=>'btn' %> +<% end %> diff --git a/app/views/enquiries/_list_record_field.html.erb b/app/views/enquiries/_list_record_field.html.erb new file mode 100644 index 000000000..e69de29bb diff --git a/app/views/enquiries/_photo_upload_box.html.erb b/app/views/enquiries/_photo_upload_box.html.erb new file mode 100644 index 000000000..0510c540c --- /dev/null +++ b/app/views/enquiries/_photo_upload_box.html.erb @@ -0,0 +1,22 @@ +

+ Photos should be no larger than 10mb. Audio files should be no larger than 10mb. The smaller the better. +

+<% ChildrenHelper::EditView::ONETIME_PHOTOS_UPLOAD_LIMIT.times do |i|%> +

+ + <%= label_tag "enquiry[photo]#{i}", "Add Photo", :class=>'key' %> + + + <%= file_field_tag "enquiry[photo]#{i}" %> + + <%= image_tag "new/icon_help.png", title: photo_upload_box.help_text, class: 'tool-tip-icon vtip' if photo_upload_box.help_text.present? %> +

+<% end %> + +<% @enquiry.photos.each do |photo| %> +

+ <%= label_tag "delete_enquiry_photo[#{photo.name}]", t("enquiry.actions.delete_photo") %> + <%= check_box_tag("delete_enquiry_photo[#{photo.name}]") %> + <%= thumbnail_tag(@enquiry, photo.name) %> +

+<% end %> diff --git a/app/views/enquiries/_select_box.html.erb b/app/views/enquiries/_select_box.html.erb new file mode 100644 index 000000000..46d300464 --- /dev/null +++ b/app/views/enquiries/_select_box.html.erb @@ -0,0 +1,8 @@ +

+ + <%= label_tag select_box.tag_name_attribute, t(select_box.name, :default => select_box.display_name), :class=>'key' %> + +<%= select_tag select_box.tag_name_attribute, options_for_select(select_box.select_options, (@enquiry[select_box.name] || '')) %> + + <%= image_tag "new/icon_help.png", title: select_box.help_text, class: 'tool-tip-icon vtip' if select_box.help_text.present? %> +

diff --git a/app/views/enquiries/_show_form_section.html.erb b/app/views/enquiries/_show_form_section.html.erb new file mode 100644 index 000000000..12182bb69 --- /dev/null +++ b/app/views/enquiries/_show_form_section.html.erb @@ -0,0 +1,13 @@ +<% @form_sections.each do |section| %> + +
+
+ + <%= render :partial => "form_section_info", :locals => {:form_section => section} %> + + <% (section.fields.select{|field| field.visible?}).each do |field| %> + <%= render :partial => "field_display_#{field.display_type}", :locals=>{:field => field, :enquiry=>@enquiry} %> + <% end %> + +
+<% end %> diff --git a/app/views/enquiries/_summary_row.html.erb b/app/views/enquiries/_summary_row.html.erb new file mode 100644 index 000000000..6468fc0ca --- /dev/null +++ b/app/views/enquiries/_summary_row.html.erb @@ -0,0 +1,39 @@ + +
+ +
+ +

<%= link_to text_to_identify_enquiry(enquiry), enquiry_path(enquiry) %>

+
+ + <% @fields.each do |relevant_field| %> + <% if relevant_field.visible? and relevant_field.is_highlighted? %> +
+
<%= t(relevant_field.display_name) %>:
+
<%= enquiry[relevant_field[:name]] %>
+
+ <% end %> + <% end %> + <% if enquiry.match_updated_at %> +
+
<%= t("enquiry.match_updated") %>:
+
<%= current_user.localize_date(enquiry.match_updated_at) %>
+
+ <% end %> +
+ +
+
+ <% show_links = true unless local_assigns.has_key? :show_links %> + <% if show_links %> + + <% end %> +
+
+ diff --git a/app/views/enquiries/_tabs.html.erb b/app/views/enquiries/_tabs.html.erb new file mode 100644 index 000000000..cf45ee24d --- /dev/null +++ b/app/views/enquiries/_tabs.html.erb @@ -0,0 +1,15 @@ + \ No newline at end of file diff --git a/app/views/enquiries/_text_field.html.erb b/app/views/enquiries/_text_field.html.erb new file mode 100644 index 000000000..b5dfdf133 --- /dev/null +++ b/app/views/enquiries/_text_field.html.erb @@ -0,0 +1,10 @@ +

+ + <%= label_tag text_field.tag_name_attribute, t(text_field.name, :default => text_field.display_name), :class=>'key' %> + + <%= text_field_tag text_field.tag_name_attribute, + (@enquiry[text_field.name] ? @enquiry[text_field.name] : + (@enquiry[:criteria] || @enquiry)[text_field.name]) %> + + <%= image_tag "new/icon_help.png", title: text_field.help_text, class: 'tool-tip-icon vtip' if text_field.help_text.present? %> +

diff --git a/app/views/enquiries/_textarea.html.erb b/app/views/enquiries/_textarea.html.erb new file mode 100644 index 000000000..15bdefa7b --- /dev/null +++ b/app/views/enquiries/_textarea.html.erb @@ -0,0 +1,9 @@ +

+ + <%= label_tag textarea.tag_name_attribute, t(textarea.name,:default => textarea.display_name), :class=>'key' %> + + <%= text_area_tag textarea.tag_name_attribute, + (@enquiry[textarea.name] ? @enquiry[textarea.name] : + (@enquiry[:criteria] || @enquiry)[textarea.name]) %> + <%= image_tag "new/icon_help.png", title: textarea.help_text, class: 'tool-tip-icon vtip' if textarea.help_text.present? %> +

diff --git a/app/views/enquiries/index.html.erb b/app/views/enquiries/index.html.erb new file mode 100644 index 000000000..afbbd05b5 --- /dev/null +++ b/app/views/enquiries/index.html.erb @@ -0,0 +1,10 @@ +<%= render :partial => "enquiries/header" %> +
+ +
+ <%= render :partial => "enquiries/summary_row", :collection => @enquiries, :as => :enquiry %> + + <%= render :partial => 'shared/pagination', :locals => { :results => @enquiries } %> +
+ +
diff --git a/app/views/enquiries/new.html.erb b/app/views/enquiries/new.html.erb new file mode 100644 index 000000000..78257e9d1 --- /dev/null +++ b/app/views/enquiries/new.html.erb @@ -0,0 +1,21 @@ +

<%= link_to t("enquiries.label"), enquiries_path %> > <%= t("enquiries.create_new_enquiry") %>

+ +<%= form_tag enquiries_path, :multipart => true do %> +
+
+ <%= render :partial => "tabs", :object => @form_sections %> +
+
+
+ <%= render :partial => "form_section", :collection => @form_sections %> +
+ <%= discard_button :back %> + <%= submit_button %> +
+
+
+
+<% end %> + + + diff --git a/app/views/enquiries/show.html.erb b/app/views/enquiries/show.html.erb new file mode 100644 index 000000000..88eee72a7 --- /dev/null +++ b/app/views/enquiries/show.html.erb @@ -0,0 +1,23 @@ +

<%= link_to t("enquiries.label"), enquiries_path %> > <%= text_to_identify_enquiry(@enquiry) %>

+ +<% if can? :update, @enquiry %> + <%= link_to content_tag(:span, t("buttons.edit"), :class => 'edit'), edit_enquiry_path(@enquiry), :class=>'btn' %> +<% end %> + +
+ <% content_for :stylesheet do %> + <%= stylesheet_link_tag "jquery.lightbox-0.5" %> + <% end %> + +
+ +
+ <%= render :partial => "tabs", :object => @form_sections %> +
+ +
+
+ <%= render :partial => "show_form_section" %> +
+ +
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb index 181d4e53b..1e6da3ace 100644 --- a/app/views/layouts/application.html.erb +++ b/app/views/layouts/application.html.erb @@ -29,6 +29,9 @@ <% if can? :read, Child %>
  • <%= link_to t("navigation.children"), children_path %>
  • <% end %> + <% if can? :read, Enquiry %> +
  • <%= link_to t("navigation.enquiries"), enquiries_path %>
  • + <% end %> <% if current_user_name==nil or can? :manage, FormSection %>
  • <%= link_to t("navigation.forms"), form_sections_path %>
  • <% end %> diff --git a/config/enquiry_form_sections.json b/config/enquiry_form_sections.json index 0ee96a091..0266dfacc 100644 --- a/config/enquiry_form_sections.json +++ b/config/enquiry_form_sections.json @@ -1,880 +1,954 @@ -[ { - "name": { - "en": "Potential matches" - }, - "help_text": { - "en": "" - }, - "description": { - "en": "" - }, - "unique_id": "e98c765c", - "visible": "true", - "order": 1, - "fields": [{ - "name": "91aec05e", - "visible": "true", - "type": "list_record_field", - "highlight_information": { - "highlighted": false - }, - "editable": false, - "display_name": { - "en": "List of matching child records" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }], - "editable": false, - "base_language": "en" - },{ - "name": { - "en": "Enquirer Details" - }, - "help_text": { - "en": "" - }, - "description": { - "en": "Details of the enquirer looking for child" - }, - "unique_id": "5aaeeac6", - "visible": "true", - "order": 2, - "fields": [{ - "name": "enquirer_name", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Name" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "7b8124c6", - "visible": "true", - "type": "select_box", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Sex" - }, - "help_text": { - "en": "" - }, - "option_strings_text": { - "en": ["Male", "Female"] - }, - "base_language": "en" - }, { - "name": "f9e9ad8c", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Date of birth" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "012dea68", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Place of birth" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "0b4e5d02", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Address" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "1196a106", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Telephone number" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "19925d50", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Ethnic group/tribe" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "2087940e", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Nationality" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "39ef5e2c", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Relationship to child" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "4d64922e", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Message for the child" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }], - "editable": true, - "base_language": "en" -}, { - "name": { - "en": "Child Details" - }, - "help_text": { - "en": "" - }, - "description": { - "en": "Details of the child" - }, - "unique_id": "6fd43e0e", - "visible": "true", - "order": 3, - "fields": [{ - "name": "e078c116", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Name" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "ec630b8a", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Also known as(nickname)" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "000dbeb4", - "visible": "true", - "type": "select_box", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Sex" - }, - "help_text": { - "en": "" - }, - "option_strings_text": { - "en": ["Male", "Female"] - }, - "base_language": "en" - }, { - "name": "11dea89c", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Date of birth/age" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "1927505e", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Languages spoken" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "1e8ca2ba", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Nationality" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "27923c80", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Ethnic group/tribe" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "2e494f78", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Distinguishing physical characteristics" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }], - "editable": true, - "base_language": "en" -}, { - "name": { - "en": "Family Details" - }, - "help_text": { - "en": "" - }, - "description": { - "en": "Family details of child" - }, - "unique_id": "3b92cdc6", - "visible": "true", - "order": 4, - "fields": [{ - "name": "42f16c80", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Father's name" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "68af5f5e", - "visible": "true", - "type": "select_box", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Is father alive?" - }, - "help_text": { - "en": "" - }, - "option_strings_text": { - "en": ["Yes", "No"] - }, - "base_language": "en" - }, { - "name": "71e51c62", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "If father dead, please provide details" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "7bb943da", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Mother's name" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "8bfc073c", - "visible": "true", - "type": "select_box", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Is mother alive?" - }, - "help_text": { - "en": "" - }, - "option_strings_text": { - "en": ["Yes", "No"] - }, - "base_language": "en" - }, { - "name": "95f98cbe", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "If mother dead please provide details" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "9a04f5d2", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Address of child before separation" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }], - "editable": true, - "base_language": "en" -}, { - "name": { - "en": "Siblings Details" - }, - "help_text": { - "en": "" - }, - "description": { - "en": "Child's siblings details" - }, - "unique_id": "c5b7c470", - "visible": "true", - "order": 5, - "fields": [{ - "name": "cc937e6a", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "1) Name of sibling or other child accompanying the child" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "ddf329b2", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Relationship" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "e687920c", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Date of birth" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "ebcd630e", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Place of birth" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "02995c28", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Current address" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "0797bcce", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Telephone" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "10810aa2", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "2) Name of sibling or other child accompanying the child" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "19bbeb0a", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Relationship" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "230f18b2", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Date of birth" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "40e98016", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Place of birth" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "49cf0ebc", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Current address" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "5a0237fa", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Telephone" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "64594b8a", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "3) Name of sibling or other child accompanying the child" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "68eb61c4", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Relationship" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "6ee93600", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Date of birth" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "73c6a09a", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Place of birth" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "7d07c094", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Current address" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "8375bae4", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Telephone" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }], - "editable": true, - "base_language": "en" -}, { - "name": { - "en": "Separation History" - }, - "help_text": { - "en": "" - }, - "description": { - "en": "Separation History of child" - }, - "unique_id": "988771d4", - "visible": "true", - "order": 6, - "fields": [{ - "name": "9f1a1a9c", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Date of separation" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "acb62664", - "visible": "true", - "type": "text_field", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Place of separation" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }, { - "name": "d168820e", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Circumstances of separation" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }], - "editable": true, - "base_language": "en" -}, { - "name": { - "en": "Tracing Information" - }, - "help_text": { - "en": "" - }, - "description": { - "en": "Other information to assist in tracing the child" - }, - "unique_id": "e803e21a", - "visible": "true", - "order": 7, - "fields": [{ - "name": "fa2f96fa", - "visible": "true", - "type": "textarea", - "highlight_information": { - "highlighted": false - }, - "editable": true, - "display_name": { - "en": "Latest news received" - }, - "help_text": { - "en": "" - }, - "base_language": "en" - }], - "editable": true, - "base_language": "en" -}, -{ -"name": { -"en": "Photo" -}, -"help_text": { -"en": "" -}, -"description": { -"en": "Photo of the enquirer" -}, -"unique_id": "1e1198ae", -"visible": "true", -"order": 8, -"fields": [ -{ -"name": "current_photo_key", -"visible": "true", -"type": "photo_upload_box", -"highlight_information": { -"highlighted": false -}, -"editable": true, -"display_name": { -"en": "Photo" -}, -"help_text": { -"en": "" -}, -"base_language": "en" -} -], -"editable": true, -"base_language": "en" -} +[ + { + "name":{ + "en":"Potential Matches" + }, + "help_text":{ + "en":"" + }, + "description":{ + "en":"" + }, + "unique_id":"e98c765c", + "visible":"true", + "order":1, + "fields":[ + { + "name":"91aec05e", + "visible":"true", + "type":"list_record_field", + "highlight_information":{ + "highlighted":true + }, + "editable":false, + "display_name":{ + "en":"List of matching child records" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + } + ], + "editable":false, + "base_language":"en" + }, + { + "name":{ + "en":"Enquirer Details" + }, + "help_text":{ + "en":"" + }, + "description":{ + "en":"Details of the enquirer looking for child" + }, + "unique_id":"5aaeeac6", + "visible":"true", + "order":2, + "fields":[ + { + "name":"enquirer_name", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Name" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"7b8124c6", + "visible":"true", + "type":"select_box", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Sex" + }, + "help_text":{ + "en":"" + }, + "option_strings_text":{ + "en":[ + "Male", + "Female" + ] + }, + "base_language":"en" + }, + { + "name":"f9e9ad8c", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Date of birth" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"012dea68", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Place of birth" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"0b4e5d02", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Address" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"1196a106", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Telephone number" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"19925d50", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Ethnic group/tribe" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"2087940e", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Nationality" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"39ef5e2c", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Relationship to child" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"4d64922e", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Message for the child" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + } + ], + "editable":true, + "base_language":"en" + }, + { + "name":{ + "en":"Child Details" + }, + "help_text":{ + "en":"" + }, + "description":{ + "en":"Details of the child" + }, + "unique_id":"6fd43e0e", + "visible":"true", + "order":3, + "fields":[ + { + "name":"e078c116", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Name" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"ec630b8a", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Also known as(nickname)" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"000dbeb4", + "visible":"true", + "type":"select_box", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Sex" + }, + "help_text":{ + "en":"" + }, + "option_strings_text":{ + "en":[ + "Male", + "Female" + ] + }, + "base_language":"en" + }, + { + "name":"11dea89c", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Date of birth/age" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"1927505e", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Languages spoken" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"1e8ca2ba", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Nationality" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"27923c80", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Ethnic group/tribe" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"2e494f78", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Distinguishing physical characteristics" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + } + ], + "editable":true, + "base_language":"en" + }, + { + "name":{ + "en":"Family Details" + }, + "help_text":{ + "en":"" + }, + "description":{ + "en":"Family details of child" + }, + "unique_id":"3b92cdc6", + "visible":"true", + "order":4, + "fields":[ + { + "name":"42f16c80", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Father's name" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"68af5f5e", + "visible":"true", + "type":"select_box", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Is father alive?" + }, + "help_text":{ + "en":"" + }, + "option_strings_text":{ + "en":[ + "Yes", + "No" + ] + }, + "base_language":"en" + }, + { + "name":"71e51c62", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"If father dead, please provide details" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"7bb943da", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Mother's name" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"8bfc073c", + "visible":"true", + "type":"select_box", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Is mother alive?" + }, + "help_text":{ + "en":"" + }, + "option_strings_text":{ + "en":[ + "Yes", + "No" + ] + }, + "base_language":"en" + }, + { + "name":"95f98cbe", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"If mother dead please provide details" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"9a04f5d2", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Address of child before separation" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + } + ], + "editable":true, + "base_language":"en" + }, + { + "name":{ + "en":"Siblings Details" + }, + "help_text":{ + "en":"" + }, + "description":{ + "en":"Child's siblings details" + }, + "unique_id":"c5b7c470", + "visible":"true", + "order":5, + "fields":[ + { + "name":"cc937e6a", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"1) Name of sibling or other child accompanying the child" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"ddf329b2", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Relationship" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"e687920c", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Date of birth" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"ebcd630e", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Place of birth" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"02995c28", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Current address" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"0797bcce", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Telephone" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"10810aa2", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"2) Name of sibling or other child accompanying the child" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"19bbeb0a", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Relationship" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"230f18b2", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Date of birth" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"40e98016", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Place of birth" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"49cf0ebc", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Current address" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"5a0237fa", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Telephone" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"64594b8a", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"3) Name of sibling or other child accompanying the child" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"68eb61c4", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Relationship" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"6ee93600", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Date of birth" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"73c6a09a", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Place of birth" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"7d07c094", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Current address" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"8375bae4", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Telephone" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + } + ], + "editable":true, + "base_language":"en" + }, + { + "name":{ + "en":"Separation History" + }, + "help_text":{ + "en":"" + }, + "description":{ + "en":"Separation History of child" + }, + "unique_id":"988771d4", + "visible":"true", + "order":6, + "fields":[ + { + "name":"9f1a1a9c", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Date of separation" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"acb62664", + "visible":"true", + "type":"text_field", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Place of separation" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + }, + { + "name":"d168820e", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Circumstances of separation" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + } + ], + "editable":true, + "base_language":"en" + }, + { + "name":{ + "en":"Tracing Information" + }, + "help_text":{ + "en":"" + }, + "description":{ + "en":"Other information to assist in tracing the child" + }, + "unique_id":"e803e21a", + "visible":"true", + "order":7, + "fields":[ + { + "name":"fa2f96fa", + "visible":"true", + "type":"textarea", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Latest news received" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + } + ], + "editable":true, + "base_language":"en" + }, + { + "name":{ + "en":"Photo" + }, + "help_text":{ + "en":"" + }, + "description":{ + "en":"Photo of the enquirer" + }, + "unique_id":"1e1198ae", + "visible":"true", + "order":8, + "fields":[ + { + "name":"current_photo_key", + "visible":"true", + "type":"photo_upload_box", + "highlight_information":{ + "highlighted":false + }, + "editable":true, + "display_name":{ + "en":"Photo" + }, + "help_text":{ + "en":"" + }, + "base_language":"en" + } + ], + "editable":true, + "base_language":"en" + } ] \ No newline at end of file diff --git a/config/locales/en.yml b/config/locales/en.yml index ac0d827d8..2661c631d 100644 --- a/config/locales/en.yml +++ b/config/locales/en.yml @@ -14,6 +14,7 @@ en: current_time_zone: "Current time zone" language: "Language" view_records: "View Records" + view_enquiries: "View Enquiries" users: "Manage Users" manage_system_users: "Manage Server Synchronisation Users" records_need_attention: "Records need Attention" @@ -67,6 +68,7 @@ en: navigation: children: "CHILDREN" + enquiries: "ENQUIRIES" forms: "FORMS" users: "USERS" devices: "DEVICES" @@ -202,6 +204,18 @@ en: one: "child" other: "children" + enquiries: + label: "Enquiries" + create_new_enquiry: "Create New Enquiry" + + enquiry: + view: "View Enquiry" + edit: "Edit Enquiry" + match_updated: "Matches last updated" + + messages: + creation_success: "Enquiry successfully created." + users: unverified: "Unverified Users" select_role: "Please select a role before verifying the user" diff --git a/config/routes.rb b/config/routes.rb index c208b2e83..89a995500 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -64,6 +64,13 @@ match '/children' => 'children#index', :as => :child_filter, :via => [:post, :get, :put, :delete] +####################### +# ENQUIRY URLS +####################### + + resources :enquiries + + ####################### # API URLS ####################### diff --git a/spec/controllers/enquiries_controller_spec.rb b/spec/controllers/enquiries_controller_spec.rb new file mode 100644 index 000000000..cac4c96ca --- /dev/null +++ b/spec/controllers/enquiries_controller_spec.rb @@ -0,0 +1,120 @@ +require 'spec_helper' + +describe EnquiriesController do + + before :each do + Enquiry.all.each{|enquiry| enquiry.destroy} + fake_admin_login + end + + def mock_enquiry(stubs={}) + @mock_enquiry ||= mock_model(Enquiry, stubs).as_null_object + end + + describe '#authorizations' do + describe 'collection' do + it "GET index" do + @controller.current_ability.should_receive(:can?).with(:index, Enquiry).and_return(false); + get :index + response.status.should == 403 + end + + it "GET new" do + @controller.current_ability.should_receive(:can?).with(:create, Enquiry).and_return(false); + get :new + response.status.should == 403 + end + + it "POST create" do + @controller.current_ability.should_receive(:can?).with(:create, Enquiry).and_return(false); + post :create + response.status.should == 403 + end + + end + + describe 'member' do + before :each do + User.stub!(:find_by_user_name).with("uname").and_return(user = mock('user', :user_name => 'uname', :organisation => 'org')) + @enquiry = Enquiry.create(:enquirer_name => 'Someone', :criteria => {'name' => 'child name'}) + @enquiry_arg = hash_including("_id" => @enquiry.id) + end + + it "GET show" do + @controller.current_ability.should_receive(:can?).with(:read, @enquiry_arg).and_return(false); + get :show, :id => @enquiry.id + response.status.should == 403 + end + end + end + + describe "GET index" do + + describe "viewing enquiries by user with access to all data" do + describe "when the signed in user has access all data" do + before do + fake_field_admin_login + @options ||= {} + @stubs ||= {} + end + + it "should assign all enquiries as @enquiries" do + page = @options.delete(:page) + per_page = @options.delete(:per_page) + enquiries = [mock_enquiry(@stubs)] + @status ||= "all" + @filter ||= "all" + enquiries.stub!(:paginate).and_return(enquiries) + @controller.current_ability.should_receive(:can?).with(:index, Enquiry).and_return(true); + @controller.should_receive(:enquiries_by_user_access).and_return([1, enquiries]) + + get :index, :status => @status + assigns[:enquiries].should == enquiries + end + end + end + + end + + describe "GET show" do + + it "assigns the requested enquiry" do + Enquiry.stub!(:get).with("37").and_return(mock_enquiry) + get :show, :id => "37" + assigns[:enquiry].should equal(mock_enquiry) + end + + it "orders and assigns the forms" do + Enquiry.stub!(:get).with("37").and_return(mock_enquiry) + @controller.should_receive(:get_form_sections).and_return([:the_form_sections]) + get :show, :id => "37" + assigns[:form_sections].should == [:the_form_sections] + end + + it "should flash an error and go to listing page if the resource is not found" do + Enquiry.stub!(:get).with("invalid record").and_return(nil) + get :show, :id=> "invalid record" + flash[:error].should == "Enquiry with the given id is not found" + response.should redirect_to(:action => :index) + end + + end + + describe "GET new" do + + it "assigns a new enquiry as @enquiry" do + Enquiry.stub!(:new).and_return(mock_enquiry) + get :new + assigns[:enquiry].should equal(mock_enquiry) + end + + it "orders and assigns the forms" do + Enquiry.stub!(:new).and_return(mock_enquiry) + @controller.should_receive(:get_form_sections).and_return([:the_form_sections]) + get :new + assigns[:form_sections].should == [:the_form_sections] + end + + end + +end diff --git a/spec/views/enquiries/show.html.erb_spec.rb b/spec/views/enquiries/show.html.erb_spec.rb new file mode 100644 index 000000000..d7b0bc667 --- /dev/null +++ b/spec/views/enquiries/show.html.erb_spec.rb @@ -0,0 +1,63 @@ +require 'spec_helper' + +class Schema; +end + +describe "enquiries/show.html.erb" do + + describe "displaying an enquiry's details" do + before :each do + @user = mock('user', :has_permission? => true, :user_name => 'name', :id => 'test-user-id') + controller.stub(:current_user).and_return(@user) + view.stub(:current_user).and_return(@user) + view.stub(:logged_in?).and_return(true) + view.stub(:current_user_name).and_return('name') + view.instance_variable_set(:@exclude_tabs, []) + @form_section = FormSection.new :unique_id => "section_name" + @enquiry = Enquiry.create(:enquirer_name => 'Someone', :criteria => {'name' => 'child name'}) + + assign(:form_sections, [@form_section]) + assign(:enquiry, @enquiry) + assign(:current_user, User.new) + assign(:duplicates, Array.new) + end + + it "renders all fields found on the FormSection" do + @form_section.add_field Field.new_text_field("age", "Age") + @form_section.add_field Field.new_radio_button("gender", ["male", "female"], "Gender") + @form_section.add_field Field.new_select_box("date_of_separation", ["1-2 weeks ago", "More than"], "Date of separation") + + render + + rendered.should have_tag(".section_name") do + with_tag(".profile-section-label", /Age/) + with_tag(".profile-section-label", /Gender/) + with_tag(".profile-section-label", /Date of separation/) + end + + rendered.should have_tag(".key") do + with_tag(".value", "27") + with_tag(".value", "male") + with_tag(".value", "1-2 weeks ago") + end + end + + it "does not render fields found on a disabled FormSection" do + @form_section['enabled'] = false + + render + + rendered.should_not have_tag("dl.section_name dt") + end + + it "does not render fields found on an excluded FormSection" do + view.instance_variable_set(:@exclude_tabs, ['section_name']) + + render + + rendered.should_not have_tag("dl.section_name dt") + end + + end + +end