phcdevworks_members 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +34 -0
  4. data/Rakefile +32 -0
  5. data/app/assets/config/phcdevworks_members_manifest.js +2 -0
  6. data/app/assets/javascripts/phcdevworks_members/application.js +2 -0
  7. data/app/assets/javascripts/phcdevworks_members/directory/categories.coffee +3 -0
  8. data/app/assets/javascripts/phcdevworks_members/info/dashboard.coffee +3 -0
  9. data/app/assets/javascripts/phcdevworks_members/member/addresses.coffee +3 -0
  10. data/app/assets/javascripts/phcdevworks_members/member/listings.coffee +3 -0
  11. data/app/assets/javascripts/phcdevworks_members/member/profiles.coffee +3 -0
  12. data/app/assets/stylesheets/phcdevworks_members/application.scss +2 -0
  13. data/app/assets/stylesheets/phcdevworks_members/directory/categories.scss +3 -0
  14. data/app/assets/stylesheets/phcdevworks_members/info/dashboard.scss +3 -0
  15. data/app/assets/stylesheets/phcdevworks_members/member/addresses.scss +3 -0
  16. data/app/assets/stylesheets/phcdevworks_members/member/listings.scss +3 -0
  17. data/app/assets/stylesheets/phcdevworks_members/member/profiles.scss +3 -0
  18. data/app/controllers/phcdevworks_members/api/v1/categories_controller.rb +15 -0
  19. data/app/controllers/phcdevworks_members/api/v1/listings_controller.rb +17 -0
  20. data/app/controllers/phcdevworks_members/application_controller.rb +13 -0
  21. data/app/controllers/phcdevworks_members/directory/categories_controller.rb +86 -0
  22. data/app/controllers/phcdevworks_members/info/dashboard_controller.rb +19 -0
  23. data/app/controllers/phcdevworks_members/member/addresses_controller.rb +94 -0
  24. data/app/controllers/phcdevworks_members/member/listings_controller.rb +94 -0
  25. data/app/controllers/phcdevworks_members/member/profiles_controller.rb +87 -0
  26. data/app/helpers/phcdevworks_members/application_helper.rb +4 -0
  27. data/app/helpers/phcdevworks_members/directory/categories_helper.rb +4 -0
  28. data/app/helpers/phcdevworks_members/info/dashboard_helper.rb +4 -0
  29. data/app/helpers/phcdevworks_members/member/addresses_helper.rb +4 -0
  30. data/app/helpers/phcdevworks_members/member/listings_helper.rb +4 -0
  31. data/app/helpers/phcdevworks_members/member/profiles_helper.rb +4 -0
  32. data/app/jobs/phcdevworks_members/application_job.rb +4 -0
  33. data/app/mailers/phcdevworks_members/application_mailer.rb +6 -0
  34. data/app/models/phcdevworks_members/address_versions.rb +5 -0
  35. data/app/models/phcdevworks_members/application_record.rb +5 -0
  36. data/app/models/phcdevworks_members/category_versions.rb +5 -0
  37. data/app/models/phcdevworks_members/directory.rb +7 -0
  38. data/app/models/phcdevworks_members/directory/category.rb +21 -0
  39. data/app/models/phcdevworks_members/listing_versions.rb +5 -0
  40. data/app/models/phcdevworks_members/member.rb +7 -0
  41. data/app/models/phcdevworks_members/member/address.rb +39 -0
  42. data/app/models/phcdevworks_members/member/listing.rb +58 -0
  43. data/app/models/phcdevworks_members/member/profile.rb +46 -0
  44. data/app/models/phcdevworks_members/profile_versions.rb +5 -0
  45. data/app/views/layouts/phcdevworks_members/application.html.erb +79 -0
  46. data/app/views/layouts/phcdevworks_members/components/backend/footer/_footer.html.erb +16 -0
  47. data/app/views/layouts/phcdevworks_members/components/backend/navigation/_top_menu.html.erb +37 -0
  48. data/app/views/layouts/phcdevworks_members/components/backend/sidebars/_side_menu.html.erb +189 -0
  49. data/app/views/layouts/phcdevworks_members/mailer.html.erb +11 -0
  50. data/app/views/layouts/phcdevworks_members/mailer.text.erb +1 -0
  51. data/app/views/layouts/phcdevworks_members/member_profile.html.erb +78 -0
  52. data/app/views/phcdevworks_members/api/v1/categories/index.json.rabl +2 -0
  53. data/app/views/phcdevworks_members/api/v1/listings/index.json.rabl +2 -0
  54. data/app/views/phcdevworks_members/directory/categories/_form.html.erb +22 -0
  55. data/app/views/phcdevworks_members/directory/categories/components/_category_audits.html.erb +25 -0
  56. data/app/views/phcdevworks_members/directory/categories/components/_category_list.html.erb +15 -0
  57. data/app/views/phcdevworks_members/directory/categories/components/_category_main.html.erb +31 -0
  58. data/app/views/phcdevworks_members/directory/categories/components/_category_sidebar.html.erb +16 -0
  59. data/app/views/phcdevworks_members/directory/categories/edit.html.erb +37 -0
  60. data/app/views/phcdevworks_members/directory/categories/index.html.erb +52 -0
  61. data/app/views/phcdevworks_members/directory/categories/new.html.erb +37 -0
  62. data/app/views/phcdevworks_members/directory/categories/show.html.erb +30 -0
  63. data/app/views/phcdevworks_members/info/dashboard/index.html.erb +54 -0
  64. data/app/views/phcdevworks_members/member/addresses/_form.html.erb +46 -0
  65. data/app/views/phcdevworks_members/member/addresses/components/_address_audits_table.html.erb +15 -0
  66. data/app/views/phcdevworks_members/member/addresses/components/_address_main.html.erb +17 -0
  67. data/app/views/phcdevworks_members/member/addresses/edit.html.erb +37 -0
  68. data/app/views/phcdevworks_members/member/addresses/index.html.erb +75 -0
  69. data/app/views/phcdevworks_members/member/addresses/new.html.erb +37 -0
  70. data/app/views/phcdevworks_members/member/addresses/show.html.erb +65 -0
  71. data/app/views/phcdevworks_members/member/dashboards/index.html.erb +54 -0
  72. data/app/views/phcdevworks_members/member/listings/_form.html.erb +68 -0
  73. data/app/views/phcdevworks_members/member/listings/components/_listing_audits_table.html.erb +15 -0
  74. data/app/views/phcdevworks_members/member/listings/components/_listing_main.html.erb +22 -0
  75. data/app/views/phcdevworks_members/member/listings/edit.html.erb +37 -0
  76. data/app/views/phcdevworks_members/member/listings/index.html.erb +77 -0
  77. data/app/views/phcdevworks_members/member/listings/new.html.erb +37 -0
  78. data/app/views/phcdevworks_members/member/listings/show.html.erb +65 -0
  79. data/app/views/phcdevworks_members/member/profiles/_form.html.erb +42 -0
  80. data/app/views/phcdevworks_members/member/profiles/components/_profile_addresses_table.html.erb +24 -0
  81. data/app/views/phcdevworks_members/member/profiles/components/_profile_audits_table.html.erb +15 -0
  82. data/app/views/phcdevworks_members/member/profiles/components/_profile_header.html.erb +31 -0
  83. data/app/views/phcdevworks_members/member/profiles/components/_profile_information_table.html.erb +27 -0
  84. data/app/views/phcdevworks_members/member/profiles/components/_profile_listings_table.html.erb +24 -0
  85. data/app/views/phcdevworks_members/member/profiles/edit.html.erb +37 -0
  86. data/app/views/phcdevworks_members/member/profiles/index.html.erb +72 -0
  87. data/app/views/phcdevworks_members/member/profiles/new.html.erb +37 -0
  88. data/app/views/phcdevworks_members/member/profiles/show.html.erb +102 -0
  89. data/config/initializers/friendly_id.rb +107 -0
  90. data/config/routes.rb +31 -0
  91. data/db/migrate/20170509002355_create_phcdevworks_members_friendly_id_slugs.rb +20 -0
  92. data/db/migrate/20170517064030_create_phcdevworks_members_profile_versions.rb +19 -0
  93. data/db/migrate/20170517064049_create_phcdevworks_members_listing_versions.rb +19 -0
  94. data/db/migrate/20170517064114_create_phcdevworks_members_address_versions.rb +19 -0
  95. data/db/migrate/20170517064427_create_phcdevworks_members_category_versions.rb +19 -0
  96. data/db/migrate/20190317215659_create_join_table_categories_listings.rb +10 -0
  97. data/db/migrate/20190728233154_create_phcdevworks_members_member_addresses.rb +23 -0
  98. data/db/migrate/20190729233450_create_phcdevworks_members_member_listings.rb +29 -0
  99. data/db/migrate/20190729235705_create_phcdevworks_members_member_profiles.rb +20 -0
  100. data/db/migrate/20190730101344_create_phcdevworks_members_directory_categories.rb +15 -0
  101. data/lib/phcdevworks_members.rb +5 -0
  102. data/lib/phcdevworks_members/engine.rb +33 -0
  103. data/lib/phcdevworks_members/version.rb +3 -0
  104. data/lib/tasks/phcdevworks_members_tasks.rake +4 -0
  105. metadata +306 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 7d2cb8d2fc01e5ae2db57db3f85e8485e2e5c1fa6150dd357e2e94965010be62
4
+ data.tar.gz: fca3095bf6b3020109146686e4ad3550e445593387d218a62e4442d56b27c646
5
+ SHA512:
6
+ metadata.gz: 1aa3bdd048cfcbe3d21221b98820974754f3f7a810d33ba63f4b0ed813e1884ba75b3d651cd1be9699dae28c728608f7d2f03722691d074ca1bf0ebafc212b70
7
+ data.tar.gz: 0a0a85a4edea5853e749b3048884076b205cae4f6bab56a3d5b76f3d8b583220aa69be1e224b6012be7868d94e19ae4b7e11fe521b31e08d31207dc0aa504d49
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright 2019 - PHCDEVWORKS
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,34 @@
1
+ ### PHCDevworks-Members (Membership & Directory Engine) Documentation
2
+ PHCDevworks-Members rails engine to manage membership information and directory listings.
3
+
4
+ * Fast setup of membership and web directory modules.
5
+ * Directory and listings manager with a web directory API.
6
+ * Member's list, contact information, and listings manager.
7
+ * Easy app integration with views that can be customized.
8
+
9
+ #### Step 1 - Add PHCMembers to your gemfile and run the commands below.
10
+
11
+ gem 'phcdevworks_members'
12
+ bundle install
13
+
14
+ #### Step 2 - Add PHCMembers Database Tables
15
+ To copy required database migrations, copy each command individually to your terminal's command line.
16
+
17
+ rails railties:install:migrations
18
+ rails db:migrate
19
+
20
+ #### Step 3 - Mount PHCMembers & Add Routes
21
+ Mount PHCMembers by adding the code below to your routes file.
22
+
23
+ mount PhcdevworksMembers::Engine, :at => '/'
24
+
25
+ #### Step 4 - Recompile Assets
26
+ To properly function re-compile your application's assets to copy over required files.
27
+
28
+ rails assets:clobber
29
+ rails assets:precompile
30
+
31
+ #### Step 5 - Generate Views (Customization)
32
+ Generate views for customization and app integration.
33
+
34
+ rails generate phcdevworks_members:views
data/Rakefile ADDED
@@ -0,0 +1,32 @@
1
+ begin
2
+ require 'bundler/setup'
3
+ rescue LoadError
4
+ puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
5
+ end
6
+
7
+ require 'rdoc/task'
8
+
9
+ RDoc::Task.new(:rdoc) do |rdoc|
10
+ rdoc.rdoc_dir = 'rdoc'
11
+ rdoc.title = 'PhcdevworksMembers'
12
+ rdoc.options << '--line-numbers'
13
+ rdoc.rdoc_files.include('README.md')
14
+ rdoc.rdoc_files.include('lib/**/*.rb')
15
+ end
16
+
17
+ APP_RAKEFILE = File.expand_path("test/test_app/Rakefile", __dir__)
18
+ load 'rails/tasks/engine.rake'
19
+
20
+ load 'rails/tasks/statistics.rake'
21
+
22
+ require 'bundler/gem_tasks'
23
+
24
+ require 'rake/testtask'
25
+
26
+ Rake::TestTask.new(:test) do |t|
27
+ t.libs << 'test'
28
+ t.pattern = 'test/**/*_test.rb'
29
+ t.verbose = false
30
+ end
31
+
32
+ task default: :test
@@ -0,0 +1,2 @@
1
+ //= link_directory ../javascripts/phcdevworks_members .js
2
+ //= link_directory ../stylesheets/phcdevworks_members .scss
@@ -0,0 +1,2 @@
1
+ // Load Admin Theme
2
+ //= require phcthemes_admin_panel_pack_coloradmin
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,3 @@
1
+ # Place all the behaviors and hooks related to the matching controller here.
2
+ # All this logic will automatically be available in application.js.
3
+ # You can use CoffeeScript in this file: http://coffeescript.org/
@@ -0,0 +1,2 @@
1
+ // Load Admin Theme
2
+ @import "phcthemes_admin_panel_pack_coloradmin";
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the directory::categories controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: https://sass-lang.com/
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the info/dashboard controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: https://sass-lang.com/
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the member::addresses controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: https://sass-lang.com/
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the member::listings controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: https://sass-lang.com/
@@ -0,0 +1,3 @@
1
+ // Place all the styles related to the member::profiles controller here.
2
+ // They will automatically be included in application.css.
3
+ // You can use Sass (SCSS) here: https://sass-lang.com/
@@ -0,0 +1,15 @@
1
+ require_dependency "phcmembers/application_controller"
2
+
3
+ module Phcmembers
4
+ class Api::V1::CategoriesController < ApplicationController
5
+
6
+ # Only Responds to API
7
+ respond_to :json
8
+
9
+ # Directory Category API
10
+ def index
11
+ @directory_categories = Directory::Category.where(org_id: current_user.org_id).order('category_name ASC')
12
+ end
13
+
14
+ end
15
+ end
@@ -0,0 +1,17 @@
1
+ require_dependency "phcmembers/application_controller"
2
+
3
+ module Phcmembers
4
+ class Api::V1::ListingsController < ApplicationController
5
+
6
+ # Only Responds to API
7
+ skip_before_action :phcmembers_get_member_profile_info
8
+ respond_to :json
9
+
10
+ # Directory Listing API
11
+ def index
12
+ category = Directory::Category.find(params[:category_id])
13
+ @member_listings = category.listings.where(org_id: current_user.org_id).order('listing_company_name ASC')
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,13 @@
1
+ module PhcdevworksMembers
2
+ class ApplicationController < ActionController::Base
3
+
4
+ # Security Filters
5
+ protect_from_forgery with: :exception
6
+
7
+ # Load Requried Helper Files
8
+ helper PhcdevworksActiveMenus::Engine.helpers
9
+ helper PhcdevworksNotifications::Engine.helpers
10
+ helper PhcdevworksTitleseo::Engine.helpers
11
+
12
+ end
13
+ end
@@ -0,0 +1,86 @@
1
+ require_dependency "phcdevworks_members/application_controller"
2
+
3
+ module PhcdevworksMembers
4
+ class Directory::CategoriesController < ApplicationController
5
+
6
+ # Filters & Security
7
+ #include PhcdevworksCore::PhcpluginsHelper
8
+ before_action :authenticate_user!
9
+ before_action :set_paper_trail_whodunnit
10
+ before_action :set_directory_category, only: [:show, :edit, :update, :destroy]
11
+
12
+ # GET /directory/categories
13
+ # GET /directory/categories.json
14
+ def index
15
+ @directory_categories = Directory::Category.all
16
+ end
17
+
18
+ # GET /directory/categories/1
19
+ # GET /directory/categories/1.json
20
+ def show
21
+ @directory_category_versions = PhcdevworksMembers::CategoryVersions.where(item_id: @directory_category, item_type: 'PhcdevworksMembers::Directory::Category')
22
+ end
23
+
24
+ # GET /directory/categories/new
25
+ def new
26
+ @directory_category = Directory::Category.new
27
+ end
28
+
29
+ # GET /directory/categories/1/edit
30
+ def edit
31
+ end
32
+
33
+ # POST /directory/categories
34
+ # POST /directory/categories.json
35
+ def create
36
+ @directory_category = Directory::Category.new(directory_category_params)
37
+ @directory_category.user_id = current_user.id
38
+ respond_to do |format|
39
+ if @directory_category.save
40
+ format.html { redirect_to directory_categories_path, :flash => { :success => 'Directory Category has been Created.' }}
41
+ format.json { render :show, status: :created, location: @directory_category }
42
+ else
43
+ format.html { render :new }
44
+ format.json { render json: @directory_category.errors, status: :unprocessable_entity }
45
+ end
46
+ end
47
+ end
48
+
49
+ # PATCH/PUT /directory/categories/1
50
+ # PATCH/PUT /directory/categories/1.json
51
+ def update
52
+ respond_to do |format|
53
+ if @directory_category.update(directory_category_params)
54
+ format.html { redirect_to directory_categories_path, :flash => { :notice => 'Directory Category has been Updated.' }}
55
+ format.json { render :show, status: :ok, location: @directory_category }
56
+ else
57
+ format.html { render :edit }
58
+ format.json { render json: @directory_category.errors, status: :unprocessable_entity }
59
+ end
60
+ end
61
+ end
62
+
63
+ # DELETE /directory/categories/1
64
+ # DELETE /directory/categories/1.json
65
+ def destroy
66
+ @directory_category.destroy
67
+ respond_to do |format|
68
+ format.html { redirect_to directory_categories_path, :flash => { :error => 'Directory Category and all Listing Connections Removed' }}
69
+ format.json { head :no_content }
70
+ end
71
+ end
72
+
73
+ private
74
+
75
+ # Common Callbacks
76
+ def set_directory_category
77
+ @directory_category = Directory::Category.friendly.find(params[:id])
78
+ end
79
+
80
+ # Whitelist
81
+ def directory_category_params
82
+ params.require(:directory_category).permit(:category_name, :slug, :user_id, :org_id)
83
+ end
84
+
85
+ end
86
+ end
@@ -0,0 +1,19 @@
1
+ require_dependency "phcdevworks_members/application_controller"
2
+
3
+ module PhcdevworksMembers
4
+ class Info::DashboardController < ApplicationController
5
+
6
+ # Filters & Security
7
+ #include PhcdevworksCore::PhcpluginsHelper
8
+ before_action :authenticate_user!
9
+
10
+ # INDEX
11
+ def index
12
+ @member_profile_dashboard = PhcdevworksMembers::Member::Profile.all
13
+ @member_listing_dashboard = PhcdevworksMembers::Member::Listing.all
14
+ @member_address_dashboard = PhcdevworksMembers::Member::Address.all
15
+ @directory_category_dashboard = PhcdevworksMembers::Directory::Category.all
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,94 @@
1
+ require_dependency "phcdevworks_members/application_controller"
2
+
3
+ module PhcdevworksMembers
4
+ class Member::AddressesController < ApplicationController
5
+
6
+ # Filters & Security
7
+ #include PhcdevworksCore::PhcpluginsHelper
8
+ before_action :authenticate_user!
9
+ before_action :set_paper_trail_whodunnit
10
+ before_action :set_member_address, only: [:show, :edit, :update, :destroy]
11
+
12
+ # GET /member/addresses
13
+ # GET /member/addresses.json
14
+ def index
15
+ @member_addresses = member_profile.addresses.all
16
+ end
17
+
18
+ # GET /member/addresses/1
19
+ # GET /member/addresses/1.json
20
+ def show
21
+ @member_address = member_profile.addresses.find(params[:id])
22
+ @member_address_versions = PhcdevworksMembers::AddressVersions.where(item_id: @member_address, item_type: 'PhcdevworksMembers::Member::Address')
23
+ end
24
+
25
+ # GET /member/addresses/new
26
+ def new
27
+ @member_address = member_profile.addresses.build
28
+ end
29
+
30
+ # GET /member/addresses/1/edit
31
+ def edit
32
+ @member_profile = Member::Profile.friendly.find(params[:profile_id])
33
+ end
34
+
35
+ # POST /member/addresses
36
+ # POST /member/addresses.json
37
+ def create
38
+ @member_address = member_profile.addresses.create(member_address_params)
39
+ @member_address.user_id = current_user.id
40
+ respond_to do |format|
41
+ if @member_address.save
42
+ format.html { redirect_to member_profile_addresses_url, :flash => { :success => 'Member Address has been Added' }}
43
+ format.json { render :show, status: :created, location: @member_address }
44
+ else
45
+ format.html { render :new }
46
+ format.json { render json: @member_address.errors, status: :unprocessable_entity }
47
+ end
48
+ end
49
+ end
50
+
51
+ # PATCH/PUT /member/addresses/1
52
+ # PATCH/PUT /member/addresses/1.json
53
+ def update
54
+ @member_profile = Member::Profile.friendly.find(params[:profile_id])
55
+ respond_to do |format|
56
+ if @member_address.update(member_address_params)
57
+ format.html { redirect_to member_profile_addresses_url, :flash => { :notice => 'Member Address has been Updated.' }}
58
+ format.json { render :show, status: :ok, location: @member_address }
59
+ else
60
+ format.html { render :edit }
61
+ format.json { render json: @member_address.errors, status: :unprocessable_entity }
62
+ end
63
+ end
64
+ end
65
+
66
+ # DELETE /member/addresses/1
67
+ # DELETE /member/addresses/1.json
68
+ def destroy
69
+ @member_address = member_profile.addresses.find(params[:id])
70
+ @member_address.destroy
71
+ respond_to do |format|
72
+ format.html { redirect_to member_profile_addresses_url, :flash => { :error => 'Member Address has been Removed' }}
73
+ format.json { head :no_content }
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ # Common Callbacks
80
+ def set_member_address
81
+ @member_address = Member::Address.friendly.find(params[:id])
82
+ end
83
+
84
+ def member_profile
85
+ @member_profile = Member::Profile.friendly.find(params[:profile_id])
86
+ end
87
+
88
+ # Whitelist
89
+ def member_address_params
90
+ params.require(:member_address).permit(:member_address_line_1, :member_address_line_2, :member_address_city, :member_address_province, :member_address_country, :member_address_postal_code, :member_address_type, :profile_id, :slug, :user_id, :org_id)
91
+ end
92
+
93
+ end
94
+ end
@@ -0,0 +1,94 @@
1
+ require_dependency "phcdevworks_members/application_controller"
2
+
3
+ module PhcdevworksMembers
4
+ class Member::ListingsController < ApplicationController
5
+
6
+ # Filters & Security
7
+ #include PhcdevworksCore::PhcpluginsHelper
8
+ before_action :authenticate_user!
9
+ before_action :set_paper_trail_whodunnit
10
+ before_action :set_member_listing, only: [:show, :edit, :update, :destroy]
11
+
12
+ # GET /member/listings
13
+ # GET /member/listings.json
14
+ def index
15
+ @member_listings = member_profile.listings.all
16
+ end
17
+
18
+ # GET /member/listings/1
19
+ # GET /member/listings/1.json
20
+ def show
21
+ @meber_listing = member_profile.listings.find(params[:id])
22
+ @member_listing_versions = PhcdevworksMembers::ListingVersions.where(item_id: @member_listing, item_type: 'PhcdevworksMembers::Member::Listing')
23
+ end
24
+
25
+ # GET /member/listings/new
26
+ def new
27
+ @member_listing = member_profile.listings.build
28
+ end
29
+
30
+ # GET /member/listings/1/edit
31
+ def edit
32
+ @member_profile = Member::Profile.friendly.find(params[:profile_id])
33
+ end
34
+
35
+ # POST /member/listings
36
+ # POST /member/listings.json
37
+ def create
38
+ @member_listing = member_profile.listings.create(member_listing_params)
39
+ @member_listing.user_id = current_user.id
40
+ respond_to do |format|
41
+ if @member_listing.save
42
+ format.html { redirect_to member_profile_listings_url, :flash => { :success => 'Member Listing has been Added' }}
43
+ format.json { render :show, status: :created, location: @member_listing }
44
+ else
45
+ format.html { render :new }
46
+ format.json { render json: @member_listing.errors, status: :unprocessable_entity }
47
+ end
48
+ end
49
+ end
50
+
51
+ # PATCH/PUT /member/listings/1
52
+ # PATCH/PUT /member/listings/1.json
53
+ def update
54
+ @member_profile = Member::Profile.friendly.find(params[:profile_id])
55
+ respond_to do |format|
56
+ if @member_listing.update(member_listing_params)
57
+ format.html { redirect_to member_profile_listings_url, :flash => { :notice => 'Member Listing has been Updated.' }}
58
+ format.json { render :show, status: :ok, location: @member_listing }
59
+ else
60
+ format.html { render :edit }
61
+ format.json { render json: @member_listing.errors, status: :unprocessable_entity }
62
+ end
63
+ end
64
+ end
65
+
66
+ # DELETE /member/listings/1
67
+ # DELETE /member/listings/1.json
68
+ def destroy
69
+ @member_listing = member_profile.listings.find(params[:id])
70
+ @member_listing.destroy
71
+ respond_to do |format|
72
+ format.html { redirect_to member_profile_listings_url, :flash => { :error => 'Member Listing has been Removed' }}
73
+ format.json { head :no_content }
74
+ end
75
+ end
76
+
77
+ private
78
+
79
+ # Common Callbacks
80
+ def set_member_listing
81
+ @member_listing = Member::Listing.friendly.find(params[:id])
82
+ end
83
+
84
+ def member_profile
85
+ @member_profile = Member::Profile.friendly.find(params[:profile_id])
86
+ end
87
+
88
+ # Whitelist
89
+ def member_listing_params
90
+ params.require(:member_listing).permit(:listing_company_name, :listing_contact_name, :listing_address_line_1, :listing_address_line_2, :listing_city, :listing_country, :listing_province, :listing_postal_code, :listing_phone, :listing_contact_email, :listing_website, :profile_id, :slug, :user_id, :org_id, category_ids: [])
91
+ end
92
+
93
+ end
94
+ end