vyapari 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/MIT-LICENSE +20 -0
- data/README.md +49 -0
- data/Rakefile +37 -0
- data/app/assets/config/vyapari_manifest.js +2 -0
- data/app/assets/javascripts/vyapari/application.js +13 -0
- data/app/assets/stylesheets/vyapari/application.css +15 -0
- data/app/controllers/vyapari/admin/base_controller.rb +17 -0
- data/app/controllers/vyapari/admin/countries_controller.rb +64 -0
- data/app/controllers/vyapari/admin/dashboard_controller.rb +26 -0
- data/app/controllers/vyapari/admin/exchange_rates_controller.rb +70 -0
- data/app/controllers/vyapari/admin/regions_controller.rb +67 -0
- data/app/controllers/vyapari/admin/resource_controller.rb +15 -0
- data/app/controllers/vyapari/admin/users_controller.rb +130 -0
- data/app/controllers/vyapari/application_controller.rb +13 -0
- data/app/helpers/vyapari/application_helper.rb +4 -0
- data/app/jobs/vyapari/application_job.rb +4 -0
- data/app/mailers/vyapari/application_mailer.rb +6 -0
- data/app/models/brand.rb +114 -0
- data/app/models/category.rb +116 -0
- data/app/models/country.rb +45 -0
- data/app/models/exchange_rate.rb +38 -0
- data/app/models/product.rb +139 -0
- data/app/models/region.rb +58 -0
- data/app/models/vyapari/application_record.rb +6 -0
- data/app/views/layouts/kuppayam/_footer.html.erb +25 -0
- data/app/views/layouts/kuppayam/_header.html.erb +43 -0
- data/app/views/layouts/kuppayam/_navbar.html.erb +55 -0
- data/app/views/layouts/kuppayam/_sidebar.html.erb +136 -0
- data/app/views/vyapari/admin/countries/_form.html.erb +24 -0
- data/app/views/vyapari/admin/countries/_index.html.erb +51 -0
- data/app/views/vyapari/admin/countries/_row.html.erb +26 -0
- data/app/views/vyapari/admin/countries/_show.html.erb +73 -0
- data/app/views/vyapari/admin/countries/index.html.erb +32 -0
- data/app/views/vyapari/admin/dashboard/index.html.erb +52 -0
- data/app/views/vyapari/admin/exchange_rates/_form.html.erb +28 -0
- data/app/views/vyapari/admin/exchange_rates/_index.html.erb +57 -0
- data/app/views/vyapari/admin/exchange_rates/_row.html.erb +30 -0
- data/app/views/vyapari/admin/exchange_rates/_show.html.erb +72 -0
- data/app/views/vyapari/admin/exchange_rates/index.html.erb +32 -0
- data/app/views/vyapari/admin/regions/_form.html.erb +28 -0
- data/app/views/vyapari/admin/regions/_index.html.erb +54 -0
- data/app/views/vyapari/admin/regions/_row.html.erb +28 -0
- data/app/views/vyapari/admin/regions/_show.html.erb +74 -0
- data/app/views/vyapari/admin/regions/index.html.erb +32 -0
- data/app/views/vyapari/admin/users/_form.html.erb +39 -0
- data/app/views/vyapari/admin/users/_index.html.erb +101 -0
- data/app/views/vyapari/admin/users/_row.html.erb +72 -0
- data/app/views/vyapari/admin/users/_show.html.erb +199 -0
- data/app/views/vyapari/admin/users/index.html.erb +64 -0
- data/config/routes.rb +28 -0
- data/db/migrate/20170000000200_create_exchange_rates.rb +16 -0
- data/db/migrate/20170000000201_create_countries.rb +12 -0
- data/db/migrate/20170000000202_create_regions.rb +16 -0
- data/lib/tasks/vyapari_tasks.rake +4 -0
- data/lib/vyapari/engine.rb +20 -0
- data/lib/vyapari/version.rb +3 -0
- data/lib/vyapari.rb +5 -0
- metadata +401 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: da218da53569de87da0a9b0c55dacdf25d2bbc70
|
4
|
+
data.tar.gz: 31b85dcfba5486a6aaab46572c30e470a26e3f06
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9a64c3922a42bad1aa34bca312761afe95a1738245c351e25accc5d7a7b86e53ed0b25d53bfd3bd685cd160e7d76342312a338f5fabdc38dec83d82e5745c639
|
7
|
+
data.tar.gz: c1cbd25d90287b049a4bd0611fece2c941d4a75f71c149c94c2b7960285f266c99992ba74e65bc1760a123104c9c38b02a60682e40ed9755af41da61257cc328
|
data/MIT-LICENSE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright 2017 Prasad V
|
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,49 @@
|
|
1
|
+
# Vyapari
|
2
|
+
Short description and motivation.
|
3
|
+
|
4
|
+
## Usage
|
5
|
+
How to use my plugin.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
Add this line to your application's Gemfile:
|
9
|
+
|
10
|
+
```ruby
|
11
|
+
gem 'vyapari'
|
12
|
+
```
|
13
|
+
|
14
|
+
And then execute:
|
15
|
+
```bash
|
16
|
+
$ bundle
|
17
|
+
```
|
18
|
+
|
19
|
+
Or install it yourself as:
|
20
|
+
```bash
|
21
|
+
$ gem install vyapari
|
22
|
+
```
|
23
|
+
|
24
|
+
|
25
|
+
Installation Instructions
|
26
|
+
|
27
|
+
# Installation Instructions
|
28
|
+
|
29
|
+
Copy the migrations from the engines you are using
|
30
|
+
Run the below command
|
31
|
+
|
32
|
+
```bash
|
33
|
+
$ bundle exec rake railties:install:migrations
|
34
|
+
```
|
35
|
+
|
36
|
+
This will copy migrations from kuppayam and usman engines
|
37
|
+
which will have migrations to create images, documents, users, features and permissions respectively.
|
38
|
+
|
39
|
+
|
40
|
+
## Configurations
|
41
|
+
|
42
|
+
config.railties_order = [:main_app, Vyapari::Engine, Usman::Engine, :all]
|
43
|
+
|
44
|
+
|
45
|
+
## Contributing
|
46
|
+
Contribution directions go here.
|
47
|
+
|
48
|
+
## License
|
49
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
@@ -0,0 +1,37 @@
|
|
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 = 'Vyapari'
|
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/dummy/Rakefile", __FILE__)
|
18
|
+
load 'rails/tasks/engine.rake'
|
19
|
+
|
20
|
+
|
21
|
+
load 'rails/tasks/statistics.rake'
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
require 'bundler/gem_tasks'
|
26
|
+
|
27
|
+
require 'rake/testtask'
|
28
|
+
|
29
|
+
Rake::TestTask.new(:test) do |t|
|
30
|
+
t.libs << 'lib'
|
31
|
+
t.libs << 'test'
|
32
|
+
t.pattern = 'test/**/*_test.rb'
|
33
|
+
t.verbose = false
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
task default: :test
|
@@ -0,0 +1,13 @@
|
|
1
|
+
// This is a manifest file that'll be compiled into application.js, which will include all the files
|
2
|
+
// listed below.
|
3
|
+
//
|
4
|
+
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts,
|
5
|
+
// or any plugin's vendor/assets/javascripts directory can be referenced here using a relative path.
|
6
|
+
//
|
7
|
+
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the
|
8
|
+
// compiled file. JavaScript code in this file should be added after the last require_* statement.
|
9
|
+
//
|
10
|
+
// Read Sprockets README (https://github.com/rails/sprockets#sprockets-directives) for details
|
11
|
+
// about supported directives.
|
12
|
+
//
|
13
|
+
//= require_tree .
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/*
|
2
|
+
* This is a manifest file that'll be compiled into application.css, which will include all the files
|
3
|
+
* listed below.
|
4
|
+
*
|
5
|
+
* Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
|
6
|
+
* or any plugin's vendor/assets/stylesheets directory can be referenced here using a relative path.
|
7
|
+
*
|
8
|
+
* You're free to add application-wide styles to this file and they'll appear at the bottom of the
|
9
|
+
* compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
|
10
|
+
* files in this directory. Styles in this file should be added after the last require_* statement.
|
11
|
+
* It is generally better to create a new file per style scope.
|
12
|
+
*
|
13
|
+
*= require_tree .
|
14
|
+
*= require_self
|
15
|
+
*/
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Vyapari
|
2
|
+
module Admin
|
3
|
+
class BaseController < ApplicationController
|
4
|
+
|
5
|
+
layout 'kuppayam/admin'
|
6
|
+
|
7
|
+
before_action :require_user
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def set_default_title
|
12
|
+
set_title("Vyapari Admin | Vyapari Stock Management Module")
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
module Vyapari
|
2
|
+
module Admin
|
3
|
+
class CountriesController < ResourceController
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def get_collections
|
8
|
+
@relation = Country.where("")
|
9
|
+
|
10
|
+
parse_filters
|
11
|
+
apply_filters
|
12
|
+
|
13
|
+
@countries = @r_objects = @relation.page(@current_page).per(@per_page)
|
14
|
+
|
15
|
+
return true
|
16
|
+
end
|
17
|
+
|
18
|
+
def apply_filters
|
19
|
+
@relation = @relation.search(@query) if @query
|
20
|
+
|
21
|
+
@order_by = "created_at desc" unless @order_by
|
22
|
+
@relation = @relation.order(@order_by)
|
23
|
+
end
|
24
|
+
|
25
|
+
def configure_filter_settings
|
26
|
+
@filter_settings = {
|
27
|
+
string_filters: [
|
28
|
+
{ filter_name: :query }
|
29
|
+
],
|
30
|
+
boolean_filters: [],
|
31
|
+
reference_filters: [],
|
32
|
+
variable_filters: [],
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def configure_filter_ui_settings
|
37
|
+
@filter_ui_settings = {}
|
38
|
+
end
|
39
|
+
|
40
|
+
def resource_controller_configuration
|
41
|
+
{
|
42
|
+
page_title: "Manage Countries",
|
43
|
+
current_nav: "admin/countries",
|
44
|
+
js_view_path: "/kuppayam/workflows/parrot",
|
45
|
+
view_path: "/vyapari/admin/countries"
|
46
|
+
}
|
47
|
+
end
|
48
|
+
|
49
|
+
def breadcrumbs_configuration
|
50
|
+
{
|
51
|
+
heading: "Manage Countries",
|
52
|
+
description: "Listing all Countries",
|
53
|
+
links: [{name: "Home", link: admin_dashboard_path, icon: 'fa-home'},
|
54
|
+
{name: "Manage Countries", link: admin_countries_path, icon: 'fa-calendar', active: true}]
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
def permitted_params
|
59
|
+
params.require(:country).permit(:name, :code)
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Vyapari
|
2
|
+
module Admin
|
3
|
+
class DashboardController < Vyapari::Admin::BaseController
|
4
|
+
|
5
|
+
# GET /dashboard
|
6
|
+
def index
|
7
|
+
end
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
def breadcrumbs_configuration
|
12
|
+
{
|
13
|
+
heading: "Stock Dashboard",
|
14
|
+
description: "A Quick view of stocks",
|
15
|
+
links: [{name: "Dashboard", link: admin_dashboard_path, icon: 'fa-dashboard'}]
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def set_navs
|
20
|
+
set_nav("admin/dashboard")
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
@@ -0,0 +1,70 @@
|
|
1
|
+
module Vyapari
|
2
|
+
module Admin
|
3
|
+
class ExchangeRatesController < ResourceController
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def get_collections
|
8
|
+
@relation = ExchangeRate.where("")
|
9
|
+
|
10
|
+
parse_filters
|
11
|
+
apply_filters
|
12
|
+
|
13
|
+
@exchange_rates = @r_objects = @relation.page(@current_page).per(@per_page)
|
14
|
+
|
15
|
+
return true
|
16
|
+
end
|
17
|
+
|
18
|
+
def apply_filters
|
19
|
+
@relation = @relation.search(@query) if @query
|
20
|
+
|
21
|
+
@order_by = "created_at desc" unless @order_by
|
22
|
+
@relation = @relation.order(@order_by)
|
23
|
+
end
|
24
|
+
|
25
|
+
def configure_filter_settings
|
26
|
+
@filter_settings = {
|
27
|
+
string_filters: [
|
28
|
+
{ filter_name: :query }
|
29
|
+
],
|
30
|
+
boolean_filters: [],
|
31
|
+
reference_filters: [],
|
32
|
+
variable_filters: [],
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def configure_filter_ui_settings
|
37
|
+
@filter_ui_settings = {}
|
38
|
+
end
|
39
|
+
|
40
|
+
def resource_controller_configuration
|
41
|
+
{
|
42
|
+
page_title: "Manage Countries",
|
43
|
+
collection_name: :exchange_rates,
|
44
|
+
item_name: :exchange_rate,
|
45
|
+
class: ExchangeRate,
|
46
|
+
js_view_path: "/kuppayam/workflows/parrot",
|
47
|
+
view_path: "/vyapari/admin/exchange_rates"
|
48
|
+
}
|
49
|
+
end
|
50
|
+
|
51
|
+
def breadcrumbs_configuration
|
52
|
+
{
|
53
|
+
heading: "Manage Exchange Rates",
|
54
|
+
description: "Listing all Exchange Rates",
|
55
|
+
links: [{name: "Home", link: admin_dashboard_path, icon: 'fa-home'},
|
56
|
+
{name: "Manage Exchange Rates", link: admin_exchange_rates_path, icon: 'fa-calendar', active: true}]
|
57
|
+
}
|
58
|
+
end
|
59
|
+
|
60
|
+
def permitted_params
|
61
|
+
params.require(:exchange_rate).permit(:currency_name, :value, :effective_date, :country_id)
|
62
|
+
end
|
63
|
+
|
64
|
+
def set_navs
|
65
|
+
set_nav("admin/exchange_rates")
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,67 @@
|
|
1
|
+
module Vyapari
|
2
|
+
module Admin
|
3
|
+
class RegionsController < ResourceController
|
4
|
+
|
5
|
+
private
|
6
|
+
|
7
|
+
def get_collections
|
8
|
+
@relation = Region.where("")
|
9
|
+
|
10
|
+
parse_filters
|
11
|
+
apply_filters
|
12
|
+
|
13
|
+
@regions = @r_objects = @relation.page(@current_page).per(@per_page)
|
14
|
+
|
15
|
+
return true
|
16
|
+
end
|
17
|
+
|
18
|
+
def apply_filters
|
19
|
+
@relation = @relation.search(@query) if @query
|
20
|
+
|
21
|
+
@order_by = "created_at desc" unless @order_by
|
22
|
+
@relation = @relation.order(@order_by)
|
23
|
+
end
|
24
|
+
|
25
|
+
def configure_filter_settings
|
26
|
+
@filter_settings = {
|
27
|
+
string_filters: [
|
28
|
+
{ filter_name: :query }
|
29
|
+
],
|
30
|
+
boolean_filters: [],
|
31
|
+
reference_filters: [],
|
32
|
+
variable_filters: [],
|
33
|
+
}
|
34
|
+
end
|
35
|
+
|
36
|
+
def configure_filter_ui_settings
|
37
|
+
@filter_ui_settings = {}
|
38
|
+
end
|
39
|
+
|
40
|
+
def resource_controller_configuration
|
41
|
+
{
|
42
|
+
page_title: "Manage Countries",
|
43
|
+
js_view_path: "/kuppayam/workflows/parrot",
|
44
|
+
view_path: "/vyapari/admin/regions"
|
45
|
+
}
|
46
|
+
end
|
47
|
+
|
48
|
+
def breadcrumbs_configuration
|
49
|
+
{
|
50
|
+
heading: "Manage Regions",
|
51
|
+
description: "Listing all Regions",
|
52
|
+
links: [{name: "Home", link: admin_dashboard_path, icon: 'fa-home'},
|
53
|
+
{name: "Manage Regions", link: admin_regions_path, icon: 'fa-calendar', active: true}]
|
54
|
+
}
|
55
|
+
end
|
56
|
+
|
57
|
+
def permitted_params
|
58
|
+
params.require(:region).permit(:name, :code, :country_id)
|
59
|
+
end
|
60
|
+
|
61
|
+
def set_navs
|
62
|
+
set_nav("admin/regions")
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
@@ -0,0 +1,130 @@
|
|
1
|
+
module Usman
|
2
|
+
module Admin
|
3
|
+
class UsersController < ResourceController
|
4
|
+
|
5
|
+
def make_super_admin
|
6
|
+
@user = @r_object = User.find(params[:id])
|
7
|
+
if @user
|
8
|
+
@user.super_admin = true
|
9
|
+
if @user.valid?
|
10
|
+
@user.save
|
11
|
+
set_notification(true, I18n.t('status.success'), I18n.t('state.changed', item: default_item_name.titleize, new_state: @user.status))
|
12
|
+
else
|
13
|
+
set_notification(false, I18n.t('status.error'), I18n.translate("error"), @user.errors.full_messages.join("<br>"))
|
14
|
+
end
|
15
|
+
else
|
16
|
+
set_notification(false, I18n.t('status.not_found'), I18n.t('status.not_found', item: default_item_name.titleize))
|
17
|
+
end
|
18
|
+
render_row
|
19
|
+
end
|
20
|
+
|
21
|
+
def remove_super_admin
|
22
|
+
@user = @r_object = User.find(params[:id])
|
23
|
+
if @user
|
24
|
+
@user.super_admin = false
|
25
|
+
if @user.valid?
|
26
|
+
@user.save
|
27
|
+
set_notification(true, I18n.t('status.success'), I18n.t('state.changed', item: default_item_name.titleize, new_state: @user.status))
|
28
|
+
else
|
29
|
+
set_notification(false, I18n.t('status.error'), I18n.translate("error"), @user.errors.full_messages.join("<br>"))
|
30
|
+
end
|
31
|
+
else
|
32
|
+
set_notification(false, I18n.t('status.not_found'), I18n.t('status.not_found', item: default_item_name.titleize))
|
33
|
+
end
|
34
|
+
render_row
|
35
|
+
end
|
36
|
+
|
37
|
+
def masquerade
|
38
|
+
@user = @r_object = User.find(params[:id])
|
39
|
+
masquerade_as_user(@user)
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
def get_collections
|
45
|
+
# Fetching the users
|
46
|
+
@relation = User.includes(:profile_picture).where("")
|
47
|
+
|
48
|
+
parse_filters
|
49
|
+
apply_filters
|
50
|
+
|
51
|
+
@users = @r_objects = @relation.page(@current_page).per(@per_page)
|
52
|
+
|
53
|
+
return true
|
54
|
+
end
|
55
|
+
|
56
|
+
def apply_filters
|
57
|
+
@relation = @relation.search(@query) if @query
|
58
|
+
@relation = @relation.status(@status) if @status
|
59
|
+
|
60
|
+
# Normal users should not be able to view super admins
|
61
|
+
# He should not be seeing admins even while searching
|
62
|
+
if @current_user.is_super_admin?
|
63
|
+
@relation = @relation.where("super_admin IS #{@super_admin.to_s.upcase}") if @super_admin.nil? == false && @query.nil?
|
64
|
+
else
|
65
|
+
@relation = @relation.where("super_admin IS FALSE")
|
66
|
+
end
|
67
|
+
|
68
|
+
@order_by = "created_at desc" unless @order_by
|
69
|
+
@relation = @relation.order(@order_by)
|
70
|
+
end
|
71
|
+
|
72
|
+
def configure_filter_settings
|
73
|
+
@filter_settings = {
|
74
|
+
string_filters: [
|
75
|
+
{ filter_name: :query },
|
76
|
+
{ filter_name: :status }
|
77
|
+
],
|
78
|
+
|
79
|
+
boolean_filters: [
|
80
|
+
{ filter_name: :super_admin, options: {default: false }}
|
81
|
+
],
|
82
|
+
|
83
|
+
reference_filters: [],
|
84
|
+
variable_filters: [],
|
85
|
+
}
|
86
|
+
end
|
87
|
+
|
88
|
+
def configure_filter_ui_settings
|
89
|
+
@filter_ui_settings = {
|
90
|
+
status: {
|
91
|
+
object_filter: false,
|
92
|
+
select_label: "Select Status",
|
93
|
+
display_hash: User::STATUS,
|
94
|
+
current_value: @status,
|
95
|
+
values: User::STATUS_REVERSE,
|
96
|
+
current_filters: @filters,
|
97
|
+
filters_to_remove: [],
|
98
|
+
filters_to_add: {},
|
99
|
+
url_method_name: 'admin_users_url',
|
100
|
+
show_all_filter_on_top: true
|
101
|
+
}
|
102
|
+
}
|
103
|
+
end
|
104
|
+
|
105
|
+
def resource_controller_configuration
|
106
|
+
{
|
107
|
+
view_path: "usman/admin/users"
|
108
|
+
}
|
109
|
+
end
|
110
|
+
|
111
|
+
def breadcrumbs_configuration
|
112
|
+
{
|
113
|
+
heading: "Manage Users",
|
114
|
+
description: "Listing all Users",
|
115
|
+
links: [{name: "Home", link: admin_dashboard_path, icon: 'fa-home'},
|
116
|
+
{name: "Manage Users", link: admin_users_path, icon: 'fa-user', active: true}]
|
117
|
+
}
|
118
|
+
end
|
119
|
+
|
120
|
+
def permitted_params
|
121
|
+
params.require(:user).permit(:name, :username, :email, :designation, :phone, :password, :password_confirmation)
|
122
|
+
end
|
123
|
+
|
124
|
+
def set_navs
|
125
|
+
set_nav("admin/users")
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|
data/app/models/brand.rb
ADDED
@@ -0,0 +1,114 @@
|
|
1
|
+
class Brand < Vyapari::ApplicationRecord
|
2
|
+
|
3
|
+
# Constants
|
4
|
+
PUBLISHED = "published"
|
5
|
+
UNPUBLISHED = "unpublished"
|
6
|
+
REMOVED = "removed"
|
7
|
+
|
8
|
+
STATUS_HASH = {"Published" => PUBLISHED, "Unpublished" => UNPUBLISHED, "Removed" => REMOVED}
|
9
|
+
STATUS_HASH_REVERSE = {PUBLISHED => "Published", UNPUBLISHED => "Unpublished", REMOVED => "Removed"}
|
10
|
+
|
11
|
+
FEATURED_HASH = {"Featured" => true, "Non Featured" => false}
|
12
|
+
FEATURED_HASH_REVERSE = {true => "Featured", false => "Non Featured"}
|
13
|
+
|
14
|
+
# Validations
|
15
|
+
validates :name, :presence=> true
|
16
|
+
validates :status, :presence=> true, :inclusion => {:in => STATUS_HASH_REVERSE.keys, :presence_of => :status, :message => "%{value} is not a valid status" }
|
17
|
+
|
18
|
+
# Associations
|
19
|
+
has_one :brand_image, :as => :imageable, :dependent => :destroy, :class_name => "Image::BrandImage"
|
20
|
+
|
21
|
+
# ------------------
|
22
|
+
# Class Methods
|
23
|
+
# ------------------
|
24
|
+
|
25
|
+
# Scopes
|
26
|
+
|
27
|
+
# return an published record relation object with the search query in its where clause
|
28
|
+
# Return the ActiveRecord::Relation object
|
29
|
+
# == Examples
|
30
|
+
# >>> brand.search(query)
|
31
|
+
# => ActiveRecord::Relation object
|
32
|
+
scope :search, lambda { |query| where("LOWER(name) LIKE LOWER('%#{query}%')")
|
33
|
+
}
|
34
|
+
|
35
|
+
scope :status, lambda { |status| where("LOWER(status)='#{status}'") }
|
36
|
+
scope :featured, lambda { |val| where(featured: val) }
|
37
|
+
|
38
|
+
scope :published, -> { where(status: PUBLISHED) }
|
39
|
+
scope :unpublished, -> { where(status: UNPUBLISHED) }
|
40
|
+
scope :removed, -> { where(status: REMOVED) }
|
41
|
+
|
42
|
+
scope :this_month, lambda { where("created_at >= ? AND created_at <= ?", Time.zone.now.beginning_of_month, Time.zone.now.end_of_month) }
|
43
|
+
|
44
|
+
# * Return true if the brand is published, else false.
|
45
|
+
# == Examples
|
46
|
+
# >>> brand.published?
|
47
|
+
# => true
|
48
|
+
def published?
|
49
|
+
(status == PUBLISHED)
|
50
|
+
end
|
51
|
+
|
52
|
+
# change the status to :published
|
53
|
+
# Return the status
|
54
|
+
# == Examples
|
55
|
+
# >>> brand.publish!
|
56
|
+
# => "published"
|
57
|
+
def publish!
|
58
|
+
self.update_attribute(:status, PUBLISHED)
|
59
|
+
end
|
60
|
+
|
61
|
+
# * Return true if the brand is unpublished, else false.
|
62
|
+
# == Examples
|
63
|
+
# >>> brand.unpublished?
|
64
|
+
# => true
|
65
|
+
def unpublished?
|
66
|
+
(status == UNPUBLISHED)
|
67
|
+
end
|
68
|
+
|
69
|
+
# change the status to :unpublished
|
70
|
+
# Return the status
|
71
|
+
# == Examples
|
72
|
+
# >>> brand.unpublish!
|
73
|
+
# => "unpublished"
|
74
|
+
def unpublish!
|
75
|
+
self.update_attributes(status: UNPUBLISHED, featured: false)
|
76
|
+
end
|
77
|
+
|
78
|
+
# * Return true if the brand is removed, else false.
|
79
|
+
# == Examples
|
80
|
+
# >>> brand.removed?
|
81
|
+
# => true
|
82
|
+
def removed?
|
83
|
+
(status == REMOVED)
|
84
|
+
end
|
85
|
+
|
86
|
+
# change the status to :removed
|
87
|
+
# Return the status
|
88
|
+
# == Examples
|
89
|
+
# >>> brand.remove!
|
90
|
+
# => "removed"
|
91
|
+
def remove!
|
92
|
+
self.update_attributes(status: REMOVED, featured: false)
|
93
|
+
end
|
94
|
+
|
95
|
+
# TODO
|
96
|
+
def can_be_deleted?
|
97
|
+
#if self.jobs.any?
|
98
|
+
# self.errors.add(:base, DELETE_MESSAGE)
|
99
|
+
# return false
|
100
|
+
#else
|
101
|
+
# return true
|
102
|
+
#end
|
103
|
+
return true
|
104
|
+
end
|
105
|
+
|
106
|
+
def display_name
|
107
|
+
self.name
|
108
|
+
end
|
109
|
+
|
110
|
+
def default_image_url(size="medium")
|
111
|
+
"/assets/defaults/brand-#{size}.png"
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|