├── database
├── .gitignore
├── seeds
│ ├── DatabaseSeeder.php
│ └── AreaTableSeeder.php
└── migrations
│ ├── 2017_04_29_032406_create_area_table.php
│ ├── 2017_05_13_163951_crate_table_notification.php
│ ├── 2017_05_05_162344_create_expense_item_table.php
│ ├── 2014_10_12_000000_create_users_table.php
│ ├── 2017_05_05_160742_create_expense_table.php
│ ├── 2017_04_29_115946_create_table_flats.php
│ ├── 2017_04_29_032416_create_project_table.php
│ ├── 2017_05_05_160721_create_rentcollection_table.php
│ ├── 2017_05_05_061142_create_rent_table.php
│ ├── 2017_05_01_104538_create_curstomer_table.php
│ └── 2017_05_12_110201_create_permission_tables.php
├── resources
├── views
│ ├── vendor
│ │ └── .gitkeep
│ ├── layouts
│ │ └── footer.blade.php
│ ├── home.blade.php
│ ├── errors
│ │ ├── 503.blade.php
│ │ ├── 403.blade.php
│ │ ├── 500.blade.php
│ │ └── 404.blade.php
│ ├── report
│ │ └── balance.blade.php
│ └── lock.blade.php
├── assets
│ ├── sass
│ │ ├── app.scss
│ │ └── _variables.scss
│ └── js
│ │ ├── components
│ │ └── Example.vue
│ │ ├── app.js
│ │ └── bootstrap.js
└── lang
│ └── en
│ ├── pagination.php
│ ├── auth.php
│ └── passwords.php
├── public
├── assets
│ ├── js
│ │ ├── core
│ │ │ ├── demo
│ │ │ │ └── DemoDashboard.js
│ │ │ ├── utils.js
│ │ │ └── source
│ │ │ │ ├── AppNavSearch.js
│ │ │ │ ├── AppCard.js
│ │ │ │ └── AppForm.js
│ │ └── libs
│ │ │ ├── autosize
│ │ │ ├── license.txt
│ │ │ └── jquery.autosize.min.js
│ │ │ ├── flot
│ │ │ ├── LICENSE.txt
│ │ │ ├── jquery.flot.symbol.min.js
│ │ │ ├── jquery.flot.threshold.min.js
│ │ │ ├── jquery.flot.crosshair.min.js
│ │ │ ├── jquery.flot.fillbetween.min.js
│ │ │ ├── jquery.flot.resize.min.js
│ │ │ ├── jquery.flot.stack.min.js
│ │ │ ├── jquery.flot.categories.min.js
│ │ │ ├── jquery.flot.image.min.js
│ │ │ ├── jquery.flot.symbol.js
│ │ │ ├── jquery.colorhelpers.min.js
│ │ │ ├── jquery.flot.resize.js
│ │ │ └── jquery.flot.canvas.min.js
│ │ │ ├── jquery-knob
│ │ │ └── LICENSE
│ │ │ ├── moment
│ │ │ └── LICENSE
│ │ │ ├── sparkline
│ │ │ └── LICENSE
│ │ │ ├── DemoFormEditors.js
│ │ │ ├── utils
│ │ │ ├── html5shiv.js
│ │ │ └── respond.min.js
│ │ │ └── spin.js
│ │ │ └── spin.min.js
│ ├── img
│ │ ├── logo.png
│ │ ├── rhm.jpg
│ │ ├── avatar.png
│ │ └── building.png
│ ├── fonts
│ │ ├── FontAwesome.otf
│ │ ├── fontawesome-webfont.eot
│ │ ├── fontawesome-webfont.ttf
│ │ ├── fontawesome-webfont.woff
│ │ ├── fontawesome-webfont.woff2
│ │ ├── Material-Design-Iconic-Font.eot
│ │ ├── Material-Design-Iconic-Font.ttf
│ │ ├── Material-Design-Iconic-Font.woff
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ ├── glyphicons-halflings-regular.woff2
│ │ ├── bootstrap
│ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ └── glyphicons-halflings-regular.woff2
│ │ └── LICENSE.txt
│ ├── sound
│ │ ├── notification.mp3
│ │ └── notification.ogg
│ └── css
│ │ └── libs
│ │ ├── select2
│ │ ├── select2x2.png
│ │ └── select2-spinner.gif
│ │ └── morris
│ │ └── morris.core.css
├── robots.txt
├── favicon.ico
├── fonts
│ ├── FontAwesome.otf
│ ├── fontawesome-webfont.eot
│ ├── fontawesome-webfont.ttf
│ ├── fontawesome-webfont.woff
│ ├── fontawesome-webfont.woff2
│ ├── Material-Design-Iconic-Font.eot
│ ├── Material-Design-Iconic-Font.ttf
│ ├── Material-Design-Iconic-Font.woff
│ ├── glyphicons-halflings-regular.eot
│ ├── glyphicons-halflings-regular.ttf
│ ├── glyphicons-halflings-regular.woff
│ ├── glyphicons-halflings-regular.woff2
│ ├── bootstrap
│ │ ├── glyphicons-halflings-regular.eot
│ │ ├── glyphicons-halflings-regular.ttf
│ │ ├── glyphicons-halflings-regular.woff
│ │ └── glyphicons-halflings-regular.woff2
│ └── LICENSE.txt
├── .htaccess
├── web.config
├── index.php
└── css
│ └── custom.css
├── bootstrap
├── cache
│ └── .gitignore
├── autoload.php
└── app.php
├── storage
├── logs
│ └── .gitignore
├── app
│ ├── .gitignore
│ └── public
│ │ ├── rents
│ │ └── .gitignore
│ │ ├── customers
│ │ ├── .gitignore
│ │ └── avatar.png
│ │ └── .gitignore
└── framework
│ ├── cache
│ └── .gitignore
│ ├── views
│ └── .gitignore
│ ├── sessions
│ └── .gitignore
│ └── .gitignore
├── screenshots
├── 1.png
├── 2.png
├── 3.png
├── 4.png
├── 6.png
└── 7.png
├── .gitattributes
├── .gitignore
├── app
├── Http
│ ├── Composers
│ │ └── MasterComposer.php
│ ├── Middleware
│ │ ├── EncryptCookies.php
│ │ ├── VerifyCsrfToken.php
│ │ ├── RedirectIfAuthenticated.php
│ │ └── RoleMiddleware.php
│ ├── Controllers
│ │ ├── Controller.php
│ │ ├── AreaController.php
│ │ ├── ExpenseController.php
│ │ └── CollectionController.php
│ ├── Helpers
│ │ └── AppHelper.php
│ └── Kernel.php
├── MyNotify.php
├── ExpenseItem.php
├── Area.php
├── Providers
│ ├── BroadcastServiceProvider.php
│ ├── AuthServiceProvider.php
│ ├── EventServiceProvider.php
│ ├── AppServiceProvider.php
│ └── RouteServiceProvider.php
├── Console
│ └── Kernel.php
├── User.php
├── Expense.php
├── Flat.php
├── Project.php
├── RentCollection.php
├── helpers.php
├── Exceptions
│ └── Handler.php
├── Customer.php
└── Rent.php
├── package.json
├── tests
├── ExampleTest.php
└── TestCase.php
├── routes
├── api.php
├── console.php
└── web.php
├── .env.example
├── gulpfile.js
├── server.php
├── phpunit.xml
├── config
├── compile.php
├── services.php
├── view.php
├── broadcasting.php
├── filesystems.php
├── queue.php
├── cache.php
├── laravel-permission.php
├── auth.php
└── database.php
├── README.md
├── composer.json
└── artisan
/database/.gitignore:
--------------------------------------------------------------------------------
1 | *.sqlite
2 |
--------------------------------------------------------------------------------
/resources/views/vendor/.gitkeep:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/public/assets/js/core/demo/DemoDashboard.js:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/bootstrap/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/logs/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/public/robots.txt:
--------------------------------------------------------------------------------
1 | User-agent: *
2 | Disallow:
3 |
--------------------------------------------------------------------------------
/storage/app/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !public/
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/storage/app/public/rents/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/cache/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/views/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/framework/sessions/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !.gitignore
3 |
--------------------------------------------------------------------------------
/storage/app/public/customers/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !avatar.png
3 | !.gitignore
4 |
--------------------------------------------------------------------------------
/screenshots/1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/screenshots/1.png
--------------------------------------------------------------------------------
/screenshots/2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/screenshots/2.png
--------------------------------------------------------------------------------
/screenshots/3.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/screenshots/3.png
--------------------------------------------------------------------------------
/screenshots/4.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/screenshots/4.png
--------------------------------------------------------------------------------
/screenshots/6.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/screenshots/6.png
--------------------------------------------------------------------------------
/screenshots/7.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/screenshots/7.png
--------------------------------------------------------------------------------
/storage/app/public/.gitignore:
--------------------------------------------------------------------------------
1 | *
2 | !customers/
3 | !rents/
4 | !.gitignore
5 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | * text=auto
2 | *.css linguist-vendored
3 | *.scss linguist-vendored
4 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/favicon.ico
--------------------------------------------------------------------------------
/public/assets/img/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/img/logo.png
--------------------------------------------------------------------------------
/public/assets/img/rhm.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/img/rhm.jpg
--------------------------------------------------------------------------------
/public/assets/img/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/img/avatar.png
--------------------------------------------------------------------------------
/public/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/public/assets/img/building.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/img/building.png
--------------------------------------------------------------------------------
/public/assets/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/public/assets/sound/notification.mp3:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/sound/notification.mp3
--------------------------------------------------------------------------------
/public/assets/sound/notification.ogg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/sound/notification.ogg
--------------------------------------------------------------------------------
/public/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/public/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/public/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/public/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/storage/app/public/customers/avatar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/storage/app/public/customers/avatar.png
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | /node_modules
2 | /public/storage
3 | /storage/*.key
4 | /vendor
5 | /.idea
6 | Homestead.json
7 | Homestead.yaml
8 | .env
9 |
--------------------------------------------------------------------------------
/public/assets/css/libs/select2/select2x2.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/css/libs/select2/select2x2.png
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/public/fonts/Material-Design-Iconic-Font.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/Material-Design-Iconic-Font.eot
--------------------------------------------------------------------------------
/public/fonts/Material-Design-Iconic-Font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/Material-Design-Iconic-Font.ttf
--------------------------------------------------------------------------------
/public/assets/fonts/fontawesome-webfont.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/fontawesome-webfont.woff2
--------------------------------------------------------------------------------
/public/fonts/Material-Design-Iconic-Font.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/Material-Design-Iconic-Font.woff
--------------------------------------------------------------------------------
/public/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/public/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/public/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/public/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/public/assets/css/libs/select2/select2-spinner.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/css/libs/select2/select2-spinner.gif
--------------------------------------------------------------------------------
/public/assets/fonts/Material-Design-Iconic-Font.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/Material-Design-Iconic-Font.eot
--------------------------------------------------------------------------------
/public/assets/fonts/Material-Design-Iconic-Font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/Material-Design-Iconic-Font.ttf
--------------------------------------------------------------------------------
/public/assets/fonts/Material-Design-Iconic-Font.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/Material-Design-Iconic-Font.woff
--------------------------------------------------------------------------------
/public/assets/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/public/assets/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/public/assets/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/public/assets/fonts/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/public/fonts/bootstrap/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/bootstrap/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/public/fonts/bootstrap/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/bootstrap/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/public/fonts/bootstrap/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/bootstrap/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/public/fonts/bootstrap/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/fonts/bootstrap/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/storage/framework/.gitignore:
--------------------------------------------------------------------------------
1 | config.php
2 | routes.php
3 | schedule-*
4 | compiled.php
5 | services.json
6 | events.scanned.php
7 | routes.scanned.php
8 | down
9 |
--------------------------------------------------------------------------------
/public/assets/fonts/bootstrap/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/bootstrap/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/public/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/bootstrap/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/public/assets/fonts/bootstrap/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/bootstrap/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/public/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hrshadhin/HRM/HEAD/public/assets/fonts/bootstrap/glyphicons-halflings-regular.woff2
--------------------------------------------------------------------------------
/app/Http/Composers/MasterComposer.php:
--------------------------------------------------------------------------------
1 | with('idc', '8d4e3c7bd08118bb031dbde8a7f787283c5f94da');
12 | }
13 |
14 | }
--------------------------------------------------------------------------------
/resources/assets/sass/app.scss:
--------------------------------------------------------------------------------
1 |
2 | // Fonts
3 | @import url(https://fonts.googleapis.com/css?family=Raleway:300,400,600);
4 |
5 | // Variables
6 | @import "variables";
7 |
8 | // Bootstrap
9 | @import "node_modules/bootstrap-sass/assets/stylesheets/bootstrap";
10 |
11 | .home{
12 | justify-content: center;
13 | text-align:center;
14 | margin:0 auto;
15 | }
16 |
--------------------------------------------------------------------------------
/database/seeds/DatabaseSeeder.php:
--------------------------------------------------------------------------------
1 | call(AreaTableSeeder::class);
15 | $this->call(RolePermissionSeeder::class);
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/app/Http/Middleware/EncryptCookies.php:
--------------------------------------------------------------------------------
1 | 'Dhanmondi', 'created_at' => Carbon::now(), 'updated_at' => Carbon::now()],
17 | ]);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/public/assets/fonts/LICENSE.txt:
--------------------------------------------------------------------------------
1 |
2 | -- Material Design Iconic Font --
3 |
4 | license: SIL OFL 1.1
5 | author: Sergey Kupletsky
6 | url: http://scripts.sil.org/OFL
7 |
8 | -- FontAwesome --
9 |
10 | license: SIL OFL 1.1
11 | author: Dave Gandy
12 | url: http://scripts.sil.org/OFL
13 |
14 | -- GLYPHICONS Halflings --
15 |
16 | license: The MIT License (MIT)
17 | author: Jan Kovařík
18 | url: http://glyphicons.com/
19 |
--------------------------------------------------------------------------------
/resources/views/layouts/footer.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "private": true,
3 | "scripts": {
4 | "prod": "gulp --production",
5 | "dev": "gulp watch"
6 | },
7 | "devDependencies": {
8 | "bootstrap-sass": "^3.3.7",
9 | "gulp": "^3.9.1",
10 | "jquery": "^3.1.0",
11 | "laravel-elixir": "^6.0.0-11",
12 | "laravel-elixir-vue-2": "^0.2.0",
13 | "laravel-elixir-webpack-official": "^1.0.2",
14 | "lodash": "^4.16.2",
15 | "vue": "^2.0.1",
16 | "vue-resource": "^1.0.3"
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/app/Area.php:
--------------------------------------------------------------------------------
1 | hasMany('App\Project','areas_id');
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/tests/ExampleTest.php:
--------------------------------------------------------------------------------
1 | visit('/')
17 | ->see('Laravel');
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/routes/api.php:
--------------------------------------------------------------------------------
1 | user();
18 | })->middleware('auth:api');
19 |
--------------------------------------------------------------------------------
/routes/console.php:
--------------------------------------------------------------------------------
1 | comment(Inspiring::quote());
18 | })->describe('Display an inspiring quote');
19 |
--------------------------------------------------------------------------------
/.env.example:
--------------------------------------------------------------------------------
1 | APP_ENV=local
2 | APP_KEY=
3 | APP_DEBUG=true
4 | APP_LOG_LEVEL=debug
5 | APP_URL=http://localhost
6 |
7 | DB_CONNECTION=mysql
8 | DB_HOST=127.0.0.1
9 | DB_PORT=3306
10 | DB_DATABASE=homestead
11 | DB_USERNAME=homestead
12 | DB_PASSWORD=secret
13 |
14 | BROADCAST_DRIVER=log
15 | CACHE_DRIVER=file
16 | SESSION_DRIVER=file
17 | QUEUE_DRIVER=sync
18 |
19 | REDIS_HOST=127.0.0.1
20 | REDIS_PASSWORD=null
21 | REDIS_PORT=6379
22 |
23 | MAIL_DRIVER=smtp
24 | MAIL_HOST=mailtrap.io
25 | MAIL_PORT=2525
26 | MAIL_USERNAME=null
27 | MAIL_PASSWORD=null
28 | MAIL_ENCRYPTION=null
29 |
30 | PUSHER_APP_ID=
31 | PUSHER_KEY=
32 | PUSHER_SECRET=
33 |
--------------------------------------------------------------------------------
/gulpfile.js:
--------------------------------------------------------------------------------
1 | const elixir = require('laravel-elixir');
2 |
3 | require('laravel-elixir-vue-2');
4 |
5 | /*
6 | |--------------------------------------------------------------------------
7 | | Elixir Asset Management
8 | |--------------------------------------------------------------------------
9 | |
10 | | Elixir provides a clean, fluent API for defining some basic Gulp tasks
11 | | for your Laravel application. By default, we are compiling the Sass
12 | | file for your application as well as publishing vendor resources.
13 | |
14 | */
15 |
16 | elixir((mix) => {
17 | mix.sass('app.scss')
18 | .webpack('app.js');
19 | });
20 |
--------------------------------------------------------------------------------
/resources/lang/en/pagination.php:
--------------------------------------------------------------------------------
1 | '« Previous',
17 | 'next' => 'Next »',
18 |
19 | ];
20 |
--------------------------------------------------------------------------------
/public/.htaccess:
--------------------------------------------------------------------------------
1 |
2 |
3 | Options -MultiViews
4 |
5 |
6 | RewriteEngine On
7 |
8 | # Redirect Trailing Slashes If Not A Folder...
9 | RewriteCond %{REQUEST_FILENAME} !-d
10 | RewriteRule ^(.*)/$ /$1 [L,R=301]
11 |
12 | # Handle Front Controller...
13 | RewriteCond %{REQUEST_FILENAME} !-d
14 | RewriteCond %{REQUEST_FILENAME} !-f
15 | RewriteRule ^ index.php [L]
16 |
17 | # Handle Authorization Header
18 | RewriteCond %{HTTP:Authorization} .
19 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
20 |
21 |
--------------------------------------------------------------------------------
/public/assets/css/libs/morris/morris.core.css:
--------------------------------------------------------------------------------
1 | .morris-hover {
2 | position: absolute;
3 | z-index: 900;
4 | }
5 | .morris-hover.morris-default-style {
6 | border-radius: 10px;
7 | padding: 6px;
8 | color: #666;
9 | background: rgba(255, 255, 255, 0.8);
10 | border: solid 2px rgba(230, 230, 230, 0.8);
11 | font-family: sans-serif;
12 | font-size: 12px;
13 | text-align: center;
14 | }
15 | .morris-hover.morris-default-style .morris-hover-row-label {
16 | font-weight: bold;
17 | margin: 0.25em 0;
18 | }
19 | .morris-hover.morris-default-style .morris-hover-point {
20 | white-space: nowrap;
21 | margin: 0.1em 0;
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/server.php:
--------------------------------------------------------------------------------
1 |
8 | */
9 |
10 | $uri = urldecode(
11 | parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH)
12 | );
13 |
14 | // This file allows us to emulate Apache's "mod_rewrite" functionality from the
15 | // built-in PHP web server. This provides a convenient way to test a Laravel
16 | // application without having installed a "real" web server software here.
17 | if ($uri !== '/' && file_exists(__DIR__.'/public'.$uri)) {
18 | return false;
19 | }
20 |
21 | require_once __DIR__.'/public/index.php';
22 |
--------------------------------------------------------------------------------
/tests/TestCase.php:
--------------------------------------------------------------------------------
1 | make(Illuminate\Contracts\Console\Kernel::class)->bootstrap();
22 |
23 | return $app;
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/app/Http/Middleware/RedirectIfAuthenticated.php:
--------------------------------------------------------------------------------
1 | check()) {
21 | return redirect('/dashboard');
22 | }
23 |
24 | return $next($request);
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/app/Providers/BroadcastServiceProvider.php:
--------------------------------------------------------------------------------
1 | id === (int) $userId;
24 | });
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/resources/assets/js/components/Example.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Example Component
7 |
8 |
9 | I'm an example component!
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
24 |
--------------------------------------------------------------------------------
/app/Http/Helpers/AppHelper.php:
--------------------------------------------------------------------------------
1 | 'These credentials do not match our records.',
17 | 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
18 |
19 | ];
20 |
--------------------------------------------------------------------------------
/app/Providers/AuthServiceProvider.php:
--------------------------------------------------------------------------------
1 | 'App\Policies\ModelPolicy',
17 | ];
18 |
19 | /**
20 | * Register any authentication / authorization services.
21 | *
22 | * @return void
23 | */
24 | public function boot()
25 | {
26 | $this->registerPolicies();
27 |
28 | //
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/resources/assets/js/app.js:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * First we will load all of this project's JavaScript dependencies which
4 | * include Vue and Vue Resource. This gives a great starting point for
5 | * building robust, powerful web applications using Vue and Laravel.
6 | */
7 |
8 | require('./bootstrap');
9 |
10 | /**
11 | * Next, we will create a fresh Vue application instance and attach it to
12 | * the page. Then, you may begin adding components to this application
13 | * or customize the JavaScript scaffolding to fit your unique needs.
14 | */
15 |
16 | //Vue.component('example', require('./components/Example.vue'));
17 |
18 | const app = new Vue({
19 | el: '#app',
20 | data: {
21 | message: '-: Welcome To RHM :-'
22 | }
23 | });
24 |
--------------------------------------------------------------------------------
/app/Providers/EventServiceProvider.php:
--------------------------------------------------------------------------------
1 | [
17 | 'App\Listeners\EventListener',
18 | ],
19 | ];
20 |
21 | /**
22 | * Register any events for your application.
23 | *
24 | * @return void
25 | */
26 | public function boot()
27 | {
28 | parent::boot();
29 |
30 | //
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/database/migrations/2017_04_29_032406_create_area_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('name',255);
19 | $table->timestamps();
20 | $table->softDeletes();
21 | });
22 | }
23 |
24 | /**
25 | * Reverse the migrations.
26 | *
27 | * @return void
28 | */
29 | public function down()
30 | {
31 | Schema::dropIfExists('areas');
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/resources/views/home.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | RHM Home
6 |
7 |
23 |
24 |
25 |
26 | -: Welcome To HRM :-
27 | Easy & hassle free
HousE rENT Management
28 | Email: admin@HRM.com ||
29 | Password: demo123
30 |
31 |
32 | Login
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/resources/lang/en/passwords.php:
--------------------------------------------------------------------------------
1 | 'Passwords must be at least six characters and match the confirmation.',
17 | 'reset' => 'Your password has been reset!',
18 | 'sent' => 'We have e-mailed your password reset link!',
19 | 'token' => 'This password reset token is invalid.',
20 | 'user' => "We can't find a user with that e-mail address.",
21 |
22 | ];
23 |
--------------------------------------------------------------------------------
/database/migrations/2017_05_13_163951_crate_table_notification.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('title');
19 | $table->string('value');
20 | $table->enum('notiType',['collection','due','tolet']);
21 | $table->timestamps();
22 |
23 |
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | Schema::dropIfExists('notification');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/database/migrations/2017_05_05_162344_create_expense_item_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->unsignedInteger('expenses_id');
19 | $table->string('name');
20 | $table->decimal('amount',18,2);
21 | $table->foreign('expenses_id')->references('id')->on('expenses');
22 |
23 |
24 | });
25 | }
26 |
27 | /**
28 | * Reverse the migrations.
29 | *
30 | * @return void
31 | */
32 | public function down()
33 | {
34 | Schema::dropIfExists('expenseItems');
35 | }
36 | }
37 |
--------------------------------------------------------------------------------
/resources/assets/sass/_variables.scss:
--------------------------------------------------------------------------------
1 |
2 | // Body
3 | $body-bg: #f5f8fa;
4 |
5 | // Borders
6 | $laravel-border-color: darken($body-bg, 10%);
7 | $list-group-border: $laravel-border-color;
8 | $navbar-default-border: $laravel-border-color;
9 | $panel-default-border: $laravel-border-color;
10 | $panel-inner-border: $laravel-border-color;
11 |
12 | // Brands
13 | $brand-primary: #3097D1;
14 | $brand-info: #8eb4cb;
15 | $brand-success: #2ab27b;
16 | $brand-warning: #cbb956;
17 | $brand-danger: #bf5329;
18 |
19 | // Typography
20 | $font-family-sans-serif: "Raleway", sans-serif;
21 | $font-size-base: 14px;
22 | $line-height-base: 1.6;
23 | $text-color: #636b6f;
24 |
25 | // Navbar
26 | $navbar-default-bg: #fff;
27 |
28 | // Buttons
29 | $btn-default-color: $text-color;
30 |
31 | // Inputs
32 | $input-border: lighten($text-color, 40%);
33 | $input-border-focus: lighten($brand-primary, 25%);
34 | $input-color-placeholder: lighten($text-color, 30%);
35 |
36 | // Panels
37 | $panel-default-heading-bg: #fff;
38 |
--------------------------------------------------------------------------------
/app/Console/Kernel.php:
--------------------------------------------------------------------------------
1 | command('inspire')
28 | // ->hourly();
29 | }
30 |
31 | /**
32 | * Register the Closure based commands for the application.
33 | *
34 | * @return void
35 | */
36 | protected function commands()
37 | {
38 | require base_path('routes/console.php');
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/public/web.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
--------------------------------------------------------------------------------
/app/User.php:
--------------------------------------------------------------------------------
1 | belongsTo('App\User','users_id');
35 | }
36 |
37 | public function setPasswordAttribute($pass){
38 |
39 | $this->attributes['password'] = bcrypt($pass);
40 |
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/phpunit.xml:
--------------------------------------------------------------------------------
1 |
2 |
11 |
12 |
13 | ./tests
14 |
15 |
16 |
17 |
18 | ./app
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
--------------------------------------------------------------------------------
/database/migrations/2014_10_12_000000_create_users_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('name');
19 | $table->string('email')->unique();
20 | $table->string('password');
21 | $table->text('description')->nullable();
22 | $table->unsignedInteger('users_id')->nullable();
23 | $table->rememberToken();
24 | $table->timestamps();
25 | $table->softDeletes();
26 |
27 | });
28 | }
29 |
30 | /**
31 | * Reverse the migrations.
32 | *
33 | * @return void
34 | */
35 | public function down()
36 | {
37 | Schema::dropIfExists('users');
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/config/compile.php:
--------------------------------------------------------------------------------
1 | [
17 | //
18 | ],
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Compiled File Providers
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may list service providers which define a "compiles" function
26 | | that returns additional files that should be compiled, providing an
27 | | easy way to get common files from any packages you are utilizing.
28 | |
29 | */
30 |
31 | 'providers' => [
32 | //
33 | ],
34 |
35 | ];
36 |
--------------------------------------------------------------------------------
/app/Http/Controllers/AreaController.php:
--------------------------------------------------------------------------------
1 | validate($request, [
21 | 'name' => 'required|min:2|max:255'
22 | ]);
23 | $data = $request->all();
24 | Area::create($data);
25 | $notification= array('title' => 'Data Store', 'body' => 'Area created Successfully');
26 | return redirect()->route('area.index')->with('success',$notification);
27 | }
28 |
29 | public function destroy($id)
30 | {
31 | $area = Area::findOrFail($id);
32 | $area->delete();
33 | $notification= array('title' => 'Data Remove', 'body' => 'Area deleted Successfully');
34 | return redirect()->route('area.index')->with('success',$notification);
35 | }
36 |
37 | }
38 |
--------------------------------------------------------------------------------
/config/services.php:
--------------------------------------------------------------------------------
1 | [
18 | 'domain' => env('MAILGUN_DOMAIN'),
19 | 'secret' => env('MAILGUN_SECRET'),
20 | ],
21 |
22 | 'ses' => [
23 | 'key' => env('SES_KEY'),
24 | 'secret' => env('SES_SECRET'),
25 | 'region' => 'us-east-1',
26 | ],
27 |
28 | 'sparkpost' => [
29 | 'secret' => env('SPARKPOST_SECRET'),
30 | ],
31 |
32 | 'stripe' => [
33 | 'model' => App\User::class,
34 | 'key' => env('STRIPE_KEY'),
35 | 'secret' => env('STRIPE_SECRET'),
36 | ],
37 |
38 | ];
39 |
--------------------------------------------------------------------------------
/public/assets/js/libs/autosize/license.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011-2014 Jack Moore
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy
4 | of this software and associated documentation files (the "Software"), to deal
5 | in the Software without restriction, including without limitation the rights
6 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7 | copies of the Software, and to permit persons to whom the Software is
8 | furnished to do so, subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in
11 | all copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19 | THE SOFTWARE.
20 |
--------------------------------------------------------------------------------
/config/view.php:
--------------------------------------------------------------------------------
1 | [
17 | realpath(base_path('resources/views')),
18 | ],
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Compiled View Path
23 | |--------------------------------------------------------------------------
24 | |
25 | | This option determines where all the compiled Blade templates will be
26 | | stored for your application. Typically, this is within the storage
27 | | directory. However, as usual, you are free to change this value.
28 | |
29 | */
30 |
31 | 'compiled' => realpath(storage_path('framework/views')),
32 |
33 | ];
34 |
--------------------------------------------------------------------------------
/app/Expense.php:
--------------------------------------------------------------------------------
1 | belongsTo('App\Project','projects_id')->withTrashed()->select(['id','name']);
30 | }
31 | public function item() {
32 | return $this->hasMany('App\ExpenseItem','expenses_id');
33 | }
34 | public function entry() {
35 | return $this->belongsTo('App\User','users_id')->withTrashed()->select(['id','name']);
36 | }
37 |
38 | function setEntryDateAttribute($value)
39 | {
40 | $this->attributes['entryDate'] = Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d');
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright (c) 2007-2013 IOLA and Ole Laursen
2 |
3 | Permission is hereby granted, free of charge, to any person
4 | obtaining a copy of this software and associated documentation
5 | files (the "Software"), to deal in the Software without
6 | restriction, including without limitation the rights to use,
7 | copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the
9 | Software is furnished to do so, subject to the following
10 | conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/public/assets/js/libs/jquery-knob/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2012 Anthony Terrien
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
--------------------------------------------------------------------------------
/public/assets/js/libs/moment/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2011-2013 Tim Wood, Iskren Chernev, Moment.js contributors
2 |
3 | Permission is hereby granted, free of charge, to any person
4 | obtaining a copy of this software and associated documentation
5 | files (the "Software"), to deal in the Software without
6 | restriction, including without limitation the rights to use,
7 | copy, modify, merge, publish, distribute, sublicense, and/or sell
8 | copies of the Software, and to permit persons to whom the
9 | Software is furnished to do so, subject to the following
10 | conditions:
11 |
12 | The above copyright notice and this permission notice shall be
13 | included in all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
17 | OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
19 | HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
20 | WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
22 | OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.symbol.min.js:
--------------------------------------------------------------------------------
1 | /* Javascript plotting library for jQuery, version 0.8.3.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | */
7 | (function($){function processRawData(plot,series,datapoints){var handlers={square:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.rect(x-size,y-size,size+size,size+size)},diamond:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI/2);ctx.moveTo(x-size,y);ctx.lineTo(x,y-size);ctx.lineTo(x+size,y);ctx.lineTo(x,y+size);ctx.lineTo(x-size,y)},triangle:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(2*Math.PI/Math.sin(Math.PI/3));var height=size*Math.sin(Math.PI/3);ctx.moveTo(x-size/2,y+height/2);ctx.lineTo(x+size/2,y+height/2);if(!shadow){ctx.lineTo(x,y-height/2);ctx.lineTo(x-size/2,y+height/2)}},cross:function(ctx,x,y,radius,shadow){var size=radius*Math.sqrt(Math.PI)/2;ctx.moveTo(x-size,y-size);ctx.lineTo(x+size,y+size);ctx.moveTo(x-size,y+size);ctx.lineTo(x+size,y-size)}};var s=series.points.symbol;if(handlers[s])series.points.symbol=handlers[s]}function init(plot){plot.hooks.processDatapoints.push(processRawData)}$.plot.plugins.push({init:init,name:"symbols",version:"1.0"})})(jQuery);
--------------------------------------------------------------------------------
/bootstrap/autoload.php:
--------------------------------------------------------------------------------
1 | belongsTo('App\Project','projects_id')->withTrashed();
36 | }
37 | public function entry() {
38 | return $this->belongsTo('App\User','users_id')->withTrashed();
39 | }
40 | public function rents()
41 | {
42 | return $this->hasMany('App\Rent','flats_id');
43 | }
44 |
45 | function setEntryDateAttribute($value)
46 | {
47 | $this->attributes['entryDate'] = Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d');
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/database/migrations/2017_05_05_160742_create_expense_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->unsignedInteger('projects_id');
19 | $table->string('expenseNo',50);
20 | $table->decimal('amount',18,2)->default('0.00');
21 | $table->text('note')->nullable();
22 | $table->date('entryDate');
23 | $table->unsignedInteger('users_id');
24 | $table->timestamps();
25 | $table->softDeletes();
26 | $table->foreign('projects_id')->references('id')->on('projects');
27 | $table->foreign('users_id')->references('id')->on('users');
28 |
29 |
30 | });
31 |
32 | }
33 |
34 | /**
35 | * Reverse the migrations.
36 | *
37 | * @return void
38 | */
39 | public function down()
40 | {
41 | Schema::dropIfExists('expenses');
42 | }
43 | }
44 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | HRM[House Rent Management]
2 | ==========================================
3 |
4 | # Description
5 | Easy & hassle free 'House Rent Management' web application.
6 |
7 | # Installation and use
8 | ### HRM is build using Laravel 5.3
9 | ```
10 | $ git clone https://github.com/hrshadhin/HRM.git
11 | ```
12 | ```
13 | $ cd HRM
14 | ```
15 | ```
16 | $ mv .env.example .env
17 | ```
18 | **Change configuration in .env according your need and create Database**
19 | ```
20 | $ composer install
21 | ```
22 | ```
23 | $ php artisan migrate
24 | ```
25 | ```
26 | $ php artisan db:seed
27 | ```
28 | ```
29 | $ php artisan storage:link
30 | ```
31 | **Give write permission to storage and bootstrap/cache directory**
32 |
33 | ```
34 | $ php artisan serve
35 | ```
36 | **http://localhost:8000** \
37 | USER: admin@hrm.com \
38 | PASS: demo123
39 |
40 | # Demo Live Link
41 | URL: http://hrm.hrshadhin.me \
42 | USER: admin@hrm.com \
43 | PASS: demo123
44 |
45 |
46 | # Screenshot
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 | # License
56 | HRM is open-sourced software licensed under the AGPL-3.0 license. Frameworks and libraries has it own licensed
57 |
58 | Enjoy :)
59 |
--------------------------------------------------------------------------------
/database/migrations/2017_04_29_115946_create_table_flats.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->unsignedInteger('projects_id');
19 | $table->date('entryDate');
20 | $table->unsignedInteger('users_id');
21 | $table->integer('floor');
22 | $table->integer('type');
23 | $table->enum('parking',['Yes','No']);
24 | $table->string('parkingNo',255)->nullable();
25 | $table->bigInteger('size');
26 | $table->text('description')->nullable();
27 | $table->tinyInteger('status')->default('0'); // 0 for empty 1 for booked
28 | $table->timestamps();
29 | $table->softDeletes();
30 | $table->foreign('projects_id')->references('id')->on('projects');
31 | $table->foreign('users_id')->references('id')->on('users');
32 |
33 |
34 | });
35 | }
36 |
37 | /**
38 | * Reverse the migrations.
39 | *
40 | * @return void
41 | */
42 | public function down()
43 | {
44 | Schema::dropIfExists('flats');
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/public/assets/js/libs/sparkline/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012, Splunk, Inc
2 | All rights reserved.
3 |
4 | Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
5 |
6 | 1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
7 |
8 | 2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
9 |
10 | 3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
11 |
12 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/resources/assets/js/bootstrap.js:
--------------------------------------------------------------------------------
1 |
2 | window._ = require('lodash');
3 |
4 | /**
5 | * We'll load jQuery and the Bootstrap jQuery plugin which provides support
6 | * for JavaScript based Bootstrap features such as modals and tabs. This
7 | * code may be modified to fit the specific needs of your application.
8 | */
9 |
10 | window.$ = window.jQuery = require('jquery');
11 | require('bootstrap-sass');
12 |
13 | /**
14 | * Vue is a modern JavaScript library for building interactive web interfaces
15 | * using reactive data binding and reusable components. Vue's API is clean
16 | * and simple, leaving you to focus on building your next great project.
17 | */
18 |
19 | window.Vue = require('vue');
20 | require('vue-resource');
21 |
22 | /**
23 | * We'll register a HTTP interceptor to attach the "CSRF" header to each of
24 | * the outgoing requests issued by this application. The CSRF middleware
25 | * included with Laravel will automatically verify the header's value.
26 | */
27 |
28 | Vue.http.interceptors.push((request, next) => {
29 | request.headers.set('X-CSRF-TOKEN', Laravel.csrfToken);
30 |
31 | next();
32 | });
33 |
34 | /**
35 | * Echo exposes an expressive API for subscribing to channels and listening
36 | * for events that are broadcast by Laravel. Echo and event broadcasting
37 | * allows your team to easily build robust real-time web applications.
38 | */
39 |
40 | // import Echo from "laravel-echo"
41 |
42 | // window.Echo = new Echo({
43 | // broadcaster: 'pusher',
44 | // key: 'your-pusher-key'
45 | // });
46 |
--------------------------------------------------------------------------------
/app/Project.php:
--------------------------------------------------------------------------------
1 | belongsTo('App\Area','areas_id')->withTrashed();
40 | }
41 | public function entry() {
42 | return $this->belongsTo('App\User','users_id')->withTrashed();
43 | }
44 | public function flats()
45 | {
46 | return $this->hasMany('App\Flat','projects_id');
47 | }
48 | public function expenses()
49 | {
50 | return $this->hasMany('App\Expense','projects_id');
51 | }
52 | public function rents()
53 | {
54 | return $this->hasMany('App\Rent','projects_id');
55 | }
56 | function setEntryDateAttribute($value)
57 | {
58 | $this->attributes['entryDate'] = Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d');
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/public/assets/js/libs/DemoFormEditors.js:
--------------------------------------------------------------------------------
1 | (function (namespace, $) {
2 | "use strict";
3 |
4 | var DemoFormEditors = function () {
5 | // Create reference to this instance
6 | var o = this;
7 | // Initialize app when document is ready
8 | $(document).ready(function () {
9 | o.initialize();
10 | });
11 |
12 | };
13 | var p = DemoFormEditors.prototype;
14 |
15 | // =========================================================================
16 | // INIT
17 | // =========================================================================
18 |
19 | p.initialize = function () {
20 | this._initSummernote();
21 |
22 | };
23 |
24 | // =========================================================================
25 | // SUMMERNOTE EDITOR
26 | // =========================================================================
27 |
28 | p._initSummernote = function () {
29 | if (!$.isFunction($.fn.summernote)) {
30 | return;
31 | }
32 |
33 | // Full toolbar
34 | $('#summernote').summernote();
35 |
36 | // Simple toolbar
37 | $('#simple-summernote').summernote({
38 | height: $('#simple-summernote').height(),
39 | toolbar: [
40 | ['style', ['bold', 'italic', 'underline', 'clear']],
41 | ['fontsize', ['fontsize']],
42 | ['color', ['color']],
43 | ['para', ['ul', 'ol', 'paragraph']],
44 | ['height', ['height']]
45 | ]
46 | });
47 | };
48 |
49 |
50 |
51 | // =========================================================================
52 | namespace.DemoFormEditors = new DemoFormEditors;
53 | }(this.materialadmin, jQuery)); // pass in (namespace, jQuery):
54 |
--------------------------------------------------------------------------------
/app/Http/Middleware/RoleMiddleware.php:
--------------------------------------------------------------------------------
1 | with('error', 'CRV: Application encounted problems.Please contact ShanixLab at [hello@hrshadhin.me]');
31 |
32 | }
33 |
34 |
35 | if (! $request->user()->hasAnyRole(Role::all())) {
36 | if($request->ajax()) {
37 | return response('Access denied!', 401);
38 | }
39 | abort(403);
40 | }
41 | $routeName = $request->route()->getName();
42 | // dd($routeName);
43 | if (! $request->user()->hasPermissionTo($routeName)) {
44 | if($request->ajax()) {
45 | return response('Access denied!', 401);
46 | }
47 | abort(403);
48 | }
49 |
50 | return $next($request);
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/public/assets/js/core/utils.js:
--------------------------------------------------------------------------------
1 | var Utils = {
2 | takaFormat:function(num){
3 | num = String(num);
4 | num = num.replace(/,/g, '');
5 |
6 | function makeComma(input){
7 | // This function is written by some anonymous person - I got it from Google
8 | if(input.length<=2)
9 | {
10 | return input;
11 | }
12 | var length = input.substr(0, input.length - 2);
13 | return makeComma(length)+ "," + input.slice(-2);
14 | }
15 |
16 |
17 | // This is my function
18 | // $pos = strpos((string)$num, ".");
19 | var pos = num.indexOf(".");
20 | var decimalpart = false;
21 | if(pos > -1){
22 | decimalpart = num.substr(pos+1, 2);
23 | num = num.substr(0, pos);
24 | }
25 |
26 | if(decimalpart.length < 1){ decimalpart = "00"};
27 |
28 | if( parseInt(decimalpart) < 1 ){
29 | decimalpart = "00";
30 | }
31 |
32 | var last3digits,numexceptlastdigits,formatted,stringtoreturn;
33 | if( num.length > 3 ){
34 | last3digits = num.slice(-3);
35 | numexceptlastdigits = num.slice(0,num.length - 3);
36 | formatted = makeComma(numexceptlastdigits);
37 | stringtoreturn = formatted + "," + last3digits + (decimalpart? "." + decimalpart :"") ;
38 | }
39 | else if(num.length <=3){
40 | stringtoreturn = num + ( decimalpart ? "."+decimalpart : "" ) ;
41 | }
42 | // else if(num.length > 12){
43 | // stringtoreturn = String(Number(num).toFixed(2));
44 | // }
45 |
46 | if( stringtoreturn.substr(0, 2) == "-,"){
47 | stringtoreturn = "-" + stringtoreturn.substr(2);
48 | }
49 | return stringtoreturn;
50 | }
51 | };
52 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "laravel/laravel",
3 | "description": "The Laravel Framework.",
4 | "keywords": ["framework", "laravel"],
5 | "license": "MIT",
6 | "type": "project",
7 | "require": {
8 | "php": ">=5.6.4",
9 | "laravel/framework": "5.3.*",
10 | "laravelcollective/html": "^5.3.0",
11 | "barryvdh/laravel-dompdf": "^0.7.0",
12 | "spatie/laravel-permission": "^1.3"
13 | },
14 | "require-dev": {
15 | "fzaninotto/faker": "~1.4",
16 | "mockery/mockery": "0.9.*",
17 | "phpunit/phpunit": "~5.0",
18 | "symfony/css-selector": "3.1.*",
19 | "symfony/dom-crawler": "3.1.*"
20 | },
21 | "autoload": {
22 | "classmap": [
23 | "database"
24 | ],
25 | "psr-4": {
26 | "App\\": "app/"
27 | },
28 | "files": [
29 | "app/helpers.php"
30 | ]
31 | },
32 | "autoload-dev": {
33 | "classmap": [
34 | "tests/TestCase.php"
35 | ]
36 | },
37 | "scripts": {
38 | "post-root-package-install": [
39 | "php -r \"file_exists('.env') || copy('.env.example', '.env');\""
40 | ],
41 | "post-create-project-cmd": [
42 | "php artisan key:generate"
43 | ],
44 | "post-install-cmd": [
45 | "Illuminate\\Foundation\\ComposerScripts::postInstall",
46 | "php artisan optimize"
47 | ],
48 | "post-update-cmd": [
49 | "Illuminate\\Foundation\\ComposerScripts::postUpdate",
50 | "php artisan optimize"
51 | ]
52 | },
53 | "config": {
54 | "preferred-install": "dist"
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/database/migrations/2017_04_29_032416_create_project_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('projectId',255);
19 | $table->enum('projectType',['Commerical','Residential','Residential & Commerical']);
20 | $table->string('name',255);
21 | $table->date('entryDate');
22 | $table->unsignedInteger('users_id');
23 | $table->unsignedInteger('areas_id');
24 | $table->string('address',500);
25 | $table->text('description')->nullable();
26 | $table->text('storied');
27 | $table->integer('noOfUnits');
28 | $table->integer('noOfFloor');
29 | $table->integer('noOfCarParking');
30 | $table->unsignedInteger('unitSize');
31 | $table->enum('lift',['Yes','No']);
32 | $table->enum('generator',['Yes','No']);
33 | $table->timestamps();
34 | $table->softDeletes();
35 | $table->foreign('users_id')->references('id')->on('users');
36 | $table->foreign('areas_id')->references('id')->on('areas');
37 |
38 |
39 | });
40 | }
41 |
42 | /**
43 | * Reverse the migrations.
44 | *
45 | * @return void
46 | */
47 | public function down()
48 | {
49 | Schema::dropIfExists('projects');
50 | }
51 | }
52 |
--------------------------------------------------------------------------------
/config/broadcasting.php:
--------------------------------------------------------------------------------
1 | env('BROADCAST_DRIVER', 'null'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Broadcast Connections
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may define all of the broadcast connections that will be used
26 | | to broadcast events to other systems or over websockets. Samples of
27 | | each available type of connection are provided inside this array.
28 | |
29 | */
30 |
31 | 'connections' => [
32 |
33 | 'pusher' => [
34 | 'driver' => 'pusher',
35 | 'key' => env('PUSHER_KEY'),
36 | 'secret' => env('PUSHER_SECRET'),
37 | 'app_id' => env('PUSHER_APP_ID'),
38 | 'options' => [
39 | //
40 | ],
41 | ],
42 |
43 | 'redis' => [
44 | 'driver' => 'redis',
45 | 'connection' => 'default',
46 | ],
47 |
48 | 'log' => [
49 | 'driver' => 'log',
50 | ],
51 |
52 | 'null' => [
53 | 'driver' => 'null',
54 | ],
55 |
56 | ],
57 |
58 | ];
59 |
--------------------------------------------------------------------------------
/app/RentCollection.php:
--------------------------------------------------------------------------------
1 | belongsTo('App\Rent','rents_id')->withTrashed();
44 | }
45 | public function customer() {
46 | return $this->belongsTo('App\Customer','customers_id')->withTrashed()->select(['id','name','cellNo']);
47 | }
48 | public function entry() {
49 | return $this->belongsTo('App\User','users_id')->withTrashed()->select('id','name');
50 | }
51 |
52 | function setCollectionDateAttribute($value)
53 | {
54 | $this->attributes['collectionDate'] = Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d');
55 | }
56 | function setIsDeductionAttribute($value)
57 | {
58 | if($value=='on'){
59 | $this->attributes['isDeduction'] = 1;
60 |
61 | }
62 | else{
63 | $this->attributes['isDeduction'] = 0;
64 | }
65 | }
66 | }
67 |
--------------------------------------------------------------------------------
/bootstrap/app.php:
--------------------------------------------------------------------------------
1 | singleton(
30 | Illuminate\Contracts\Http\Kernel::class,
31 | App\Http\Kernel::class
32 | );
33 |
34 | $app->singleton(
35 | Illuminate\Contracts\Console\Kernel::class,
36 | App\Console\Kernel::class
37 | );
38 |
39 | $app->singleton(
40 | Illuminate\Contracts\Debug\ExceptionHandler::class,
41 | App\Exceptions\Handler::class
42 | );
43 |
44 | /*
45 | |--------------------------------------------------------------------------
46 | | Return The Application
47 | |--------------------------------------------------------------------------
48 | |
49 | | This script returns the application instance. The instance is given to
50 | | the calling script so we can separate the building of the instances
51 | | from the actual running of the application and sending responses.
52 | |
53 | */
54 |
55 | return $app;
56 |
--------------------------------------------------------------------------------
/artisan:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env php
2 | make(Illuminate\Contracts\Console\Kernel::class);
32 |
33 | $status = $kernel->handle(
34 | $input = new Symfony\Component\Console\Input\ArgvInput,
35 | new Symfony\Component\Console\Output\ConsoleOutput
36 | );
37 |
38 | /*
39 | |--------------------------------------------------------------------------
40 | | Shutdown The Application
41 | |--------------------------------------------------------------------------
42 | |
43 | | Once Artisan has finished running. We will fire off the shutdown events
44 | | so that any final work may be done by the application before we shut
45 | | down the process. This is the last thing to happen to the request.
46 | |
47 | */
48 |
49 | $kernel->terminate($input, $status);
50 |
51 | exit($status);
52 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.threshold.min.js:
--------------------------------------------------------------------------------
1 | /* Javascript plotting library for jQuery, version 0.8.3.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | */
7 | (function($){var options={series:{threshold:null}};function init(plot){function thresholdData(plot,s,datapoints,below,color){var ps=datapoints.pointsize,i,x,y,p,prevp,thresholded=$.extend({},s);thresholded.datapoints={points:[],pointsize:ps,format:datapoints.format};thresholded.label=null;thresholded.color=color;thresholded.threshold=null;thresholded.originSeries=s;thresholded.data=[];var origpoints=datapoints.points,addCrossingPoints=s.lines.show;var threspoints=[];var newpoints=[];var m;for(i=0;i0&&origpoints[i-ps]!=null){var interx=x+(below-y)*(x-origpoints[i-ps])/(y-origpoints[i-ps+1]);prevp.push(interx);prevp.push(below);for(m=2;m0){var origIndex=$.inArray(s,plot.getData());plot.getData().splice(origIndex+1,0,thresholded)}}function processThresholds(plot,s,datapoints){if(!s.threshold)return;if(s.threshold instanceof Array){s.threshold.sort(function(a,b){return a.below-b.below});$(s.threshold).each(function(i,th){thresholdData(plot,s,datapoints,th.below,th.color)})}else{thresholdData(plot,s,datapoints,s.threshold.below,s.threshold.color)}}plot.hooks.processDatapoints.push(processThresholds)}$.plot.plugins.push({init:init,options:options,name:"threshold",version:"1.2"})})(jQuery);
--------------------------------------------------------------------------------
/app/Providers/AppServiceProvider.php:
--------------------------------------------------------------------------------
1 | composer('layouts.master', 'App\Http\Composers\MasterComposer');
24 |
25 | Area::deleted(
26 | function ($area) {
27 | $area->projects()->delete();
28 | }
29 | );
30 |
31 | Project::deleted(
32 | function ($project) {
33 | $project->flats()->delete();
34 | $project->expenses()->delete();
35 | $project->rents()->delete();
36 | }
37 | );
38 |
39 | Flat::deleted(
40 | function ($flat) {
41 | $flat->rents()->delete();
42 | }
43 | );
44 |
45 | Customer::deleted(
46 | function ($customer) {
47 | $customer->rents()->delete();
48 | $customer->collections()->delete();
49 | }
50 | );
51 | Rent::deleted(
52 | function ($rent) {
53 | $rent->collections()->delete();
54 | }
55 | );
56 |
57 | // Project::restored(function($project) {
58 | // $project->services()->withTrashed()->restore();
59 | // });
60 | }
61 |
62 | /**
63 | * Register any application services.
64 | *
65 | * @return void
66 | */
67 | public function register()
68 | {
69 | //
70 | }
71 | }
72 |
--------------------------------------------------------------------------------
/app/Http/Kernel.php:
--------------------------------------------------------------------------------
1 | [
27 | \App\Http\Middleware\EncryptCookies::class,
28 | \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
29 | \Illuminate\Session\Middleware\StartSession::class,
30 | \Illuminate\View\Middleware\ShareErrorsFromSession::class,
31 | \App\Http\Middleware\VerifyCsrfToken::class,
32 | \Illuminate\Routing\Middleware\SubstituteBindings::class,
33 | ],
34 |
35 | 'api' => [
36 | 'throttle:60,1',
37 | 'bindings',
38 | ],
39 | ];
40 |
41 | /**
42 | * The application's route middleware.
43 | *
44 | * These middleware may be assigned to groups or used individually.
45 | *
46 | * @var array
47 | */
48 | protected $routeMiddleware = [
49 | 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
50 | 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
51 | 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
52 | 'can' => \Illuminate\Auth\Middleware\Authorize::class,
53 | 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
54 | 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class,
55 | 'role' => \App\Http\Middleware\RoleMiddleware::class,
56 | ];
57 | }
58 |
--------------------------------------------------------------------------------
/public/index.php:
--------------------------------------------------------------------------------
1 |
8 | */
9 |
10 | /*
11 | |--------------------------------------------------------------------------
12 | | Register The Auto Loader
13 | |--------------------------------------------------------------------------
14 | |
15 | | Composer provides a convenient, automatically generated class loader for
16 | | our application. We just need to utilize it! We'll simply require it
17 | | into the script here so that we don't have to worry about manual
18 | | loading any of our classes later on. It feels nice to relax.
19 | |
20 | */
21 |
22 | require __DIR__.'/../bootstrap/autoload.php';
23 |
24 | /*
25 | |--------------------------------------------------------------------------
26 | | Turn On The Lights
27 | |--------------------------------------------------------------------------
28 | |
29 | | We need to illuminate PHP development, so let us turn on the lights.
30 | | This bootstraps the framework and gets it ready for use, then it
31 | | will load up this application so that we can run it and send
32 | | the responses back to the browser and delight our users.
33 | |
34 | */
35 |
36 | $app = require_once __DIR__.'/../bootstrap/app.php';
37 |
38 | /*
39 | |--------------------------------------------------------------------------
40 | | Run The Application
41 | |--------------------------------------------------------------------------
42 | |
43 | | Once we have the application, we can handle the incoming request
44 | | through the kernel, and send the associated response back to
45 | | the client's browser allowing them to enjoy the creative
46 | | and wonderful application we have prepared for them.
47 | |
48 | */
49 |
50 | $kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
51 |
52 | $response = $kernel->handle(
53 | $request = Illuminate\Http\Request::capture()
54 | );
55 |
56 | $response->send();
57 |
58 | $kernel->terminate($request, $response);
59 |
--------------------------------------------------------------------------------
/app/Providers/RouteServiceProvider.php:
--------------------------------------------------------------------------------
1 | mapApiRoutes();
39 |
40 | $this->mapWebRoutes();
41 |
42 | //
43 | }
44 |
45 | /**
46 | * Define the "web" routes for the application.
47 | *
48 | * These routes all receive session state, CSRF protection, etc.
49 | *
50 | * @return void
51 | */
52 | protected function mapWebRoutes()
53 | {
54 | Route::group([
55 | 'middleware' => 'web',
56 | 'namespace' => $this->namespace,
57 | ], function ($router) {
58 | require base_path('routes/web.php');
59 | });
60 | }
61 |
62 | /**
63 | * Define the "api" routes for the application.
64 | *
65 | * These routes are typically stateless.
66 | *
67 | * @return void
68 | */
69 | protected function mapApiRoutes()
70 | {
71 | Route::group([
72 | 'middleware' => 'api',
73 | 'namespace' => $this->namespace,
74 | 'prefix' => 'api',
75 | ], function ($router) {
76 | require base_path('routes/api.php');
77 | });
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/app/helpers.php:
--------------------------------------------------------------------------------
1 | where('user_id',$user_id)->where('permission_id',$permission_id)->get();
12 | if(count($havePermission)){
13 | return true;
14 | }
15 | return false;
16 | }
17 | function getUserRole($user){
18 | if($user->hasRole('admin')) { return 'Admin'; }
19 | if($user->hasRole('supervisor')) { return 'Supervisor'; }
20 | if($user->hasRole('operator')) { return 'Operator'; }
21 |
22 | }
23 |
24 | function floorLevel($floor){
25 | $floors = [
26 | '-1' => 'Basement',
27 | '0' => 'Ground',
28 | '1' => '1st',
29 | '2' => '2nd',
30 | '3' => '3rd',
31 | '4' => '4th',
32 | '5' => '5th',
33 | '6' => '6th',
34 | '7' => '7th',
35 | '8' => '8th',
36 | '9' => '9th',
37 | '10' => '10th',
38 | '11' => '11th',
39 | '12' => '12th',
40 | '13' => '13th',
41 | '14' => '14th',
42 | '15' => '15th',
43 | '16' => '16th',
44 | '17' => '17th',
45 | '18' => '18th',
46 | '19' => '19th',
47 | '20' => '20th',
48 | '21' => '21th',
49 | '22' => '22th',
50 | '23' => '23th',
51 | '24' => '24th',
52 | '25' => '25th',
53 | '26' => '26th',
54 | '27' => '27th',
55 | '28' => '28th',
56 | '29' => '29th',
57 | '30' => '30th'
58 | ];
59 | return $floors[$floor];
60 | }
61 | function flatType($type){
62 | $types = [
63 | '1' => 'A',
64 | '2' => 'B',
65 | '3' => 'C',
66 | '4' => 'D',
67 | '5' => 'E',
68 | '6' => 'F',
69 | '7' => 'G',
70 | '8' => 'H',
71 | '9' => 'I',
72 | '10' => 'J',
73 | '11' => 'K',
74 | '12' => 'L'
75 | ];
76 | return $types[$type];
77 | }
--------------------------------------------------------------------------------
/database/migrations/2017_05_05_160721_create_rentcollection_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->unsignedInteger('customers_id');
19 | $table->unsignedInteger('rents_id');
20 | $table->string('collectionNo',50);
21 | $table->decimal('amount',18,2);
22 | // $table->decimal('monthlyDeduction',18,2);
23 | // $table->decimal('monthlyDeductionTax',18,2);
24 | $table->smallInteger('isDeduction')->default('0');//1 for yes 0 no
25 | $table->enum('collectionType',['Cash','Cheque','P.O']);
26 | $table->string('chequeNo')->nullable();
27 | $table->string('bankName')->nullable();
28 | $table->string('branchName')->nullable();
29 | $table->string('poNo')->nullable();
30 | $table->string('poName')->nullable();
31 | $table->string('poCode')->nullable();
32 | $table->text('note')->nullable();
33 | $table->date('collectionDate');
34 | $table->tinyInteger('fromAdvance')->default('0');//0 for none 1 for money came from advance
35 | $table->unsignedInteger('users_id');
36 | $table->timestamps();
37 | $table->softDeletes();
38 | $table->foreign('customers_id')->references('id')->on('customers');
39 | $table->foreign('rents_id')->references('id')->on('rents');
40 | $table->foreign('users_id')->references('id')->on('users');
41 |
42 |
43 | });
44 | }
45 |
46 | /**
47 | * Reverse the migrations.
48 | *
49 | * @return void
50 | */
51 | public function down()
52 | {
53 | Schema::dropIfExists('collections');
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/app/Exceptions/Handler.php:
--------------------------------------------------------------------------------
1 | expectsJson()) {
60 | return response()->json(['error' => 'Unauthenticated.'], 401);
61 | }
62 |
63 | return redirect()->guest('login');
64 | }
65 | }
66 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.crosshair.min.js:
--------------------------------------------------------------------------------
1 | /* Javascript plotting library for jQuery, version 0.8.3.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | */
7 | (function($){var options={crosshair:{mode:null,color:"rgba(170, 0, 0, 0.80)",lineWidth:1}};function init(plot){var crosshair={x:-1,y:-1,locked:false};plot.setCrosshair=function setCrosshair(pos){if(!pos)crosshair.x=-1;else{var o=plot.p2c(pos);crosshair.x=Math.max(0,Math.min(o.left,plot.width()));crosshair.y=Math.max(0,Math.min(o.top,plot.height()))}plot.triggerRedrawOverlay()};plot.clearCrosshair=plot.setCrosshair;plot.lockCrosshair=function lockCrosshair(pos){if(pos)plot.setCrosshair(pos);crosshair.locked=true};plot.unlockCrosshair=function unlockCrosshair(){crosshair.locked=false};function onMouseOut(e){if(crosshair.locked)return;if(crosshair.x!=-1){crosshair.x=-1;plot.triggerRedrawOverlay()}}function onMouseMove(e){if(crosshair.locked)return;if(plot.getSelection&&plot.getSelection()){crosshair.x=-1;return}var offset=plot.offset();crosshair.x=Math.max(0,Math.min(e.pageX-offset.left,plot.width()));crosshair.y=Math.max(0,Math.min(e.pageY-offset.top,plot.height()));plot.triggerRedrawOverlay()}plot.hooks.bindEvents.push(function(plot,eventHolder){if(!plot.getOptions().crosshair.mode)return;eventHolder.mouseout(onMouseOut);eventHolder.mousemove(onMouseMove)});plot.hooks.drawOverlay.push(function(plot,ctx){var c=plot.getOptions().crosshair;if(!c.mode)return;var plotOffset=plot.getPlotOffset();ctx.save();ctx.translate(plotOffset.left,plotOffset.top);if(crosshair.x!=-1){var adj=plot.getOptions().crosshair.lineWidth%2?.5:0;ctx.strokeStyle=c.color;ctx.lineWidth=c.lineWidth;ctx.lineJoin="round";ctx.beginPath();if(c.mode.indexOf("x")!=-1){var drawX=Math.floor(crosshair.x)+adj;ctx.moveTo(drawX,0);ctx.lineTo(drawX,plot.height())}if(c.mode.indexOf("y")!=-1){var drawY=Math.floor(crosshair.y)+adj;ctx.moveTo(0,drawY);ctx.lineTo(plot.width(),drawY)}ctx.stroke()}ctx.restore()});plot.hooks.shutdown.push(function(plot,eventHolder){eventHolder.unbind("mouseout",onMouseOut);eventHolder.unbind("mousemove",onMouseMove)})}$.plot.plugins.push({init:init,options:options,name:"crosshair",version:"1.0"})})(jQuery);
--------------------------------------------------------------------------------
/config/filesystems.php:
--------------------------------------------------------------------------------
1 | 'public',
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Default Cloud Filesystem Disk
21 | |--------------------------------------------------------------------------
22 | |
23 | | Many applications store files both locally and in the cloud. For this
24 | | reason, you may specify a default "cloud" driver here. This driver
25 | | will be bound as the Cloud disk implementation in the container.
26 | |
27 | */
28 |
29 | 'cloud' => 's3',
30 |
31 | /*
32 | |--------------------------------------------------------------------------
33 | | Filesystem Disks
34 | |--------------------------------------------------------------------------
35 | |
36 | | Here you may configure as many filesystem "disks" as you wish, and you
37 | | may even configure multiple disks of the same driver. Defaults have
38 | | been setup for each driver as an example of the required options.
39 | |
40 | | Supported Drivers: "local", "ftp", "s3", "rackspace"
41 | |
42 | */
43 |
44 | 'disks' => [
45 |
46 | 'local' => [
47 | 'driver' => 'local',
48 | 'root' => storage_path('app'),
49 | ],
50 |
51 | 'public' => [
52 | 'driver' => 'local',
53 | 'root' => storage_path('app/public'),
54 | 'visibility' => 'public',
55 | ],
56 |
57 | 's3' => [
58 | 'driver' => 's3',
59 | 'key' => 'your-key',
60 | 'secret' => 'your-secret',
61 | 'region' => 'your-region',
62 | 'bucket' => 'your-bucket',
63 | ],
64 |
65 | ],
66 |
67 | ];
68 |
--------------------------------------------------------------------------------
/database/migrations/2017_05_05_061142_create_rent_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->unsignedInteger('projects_id');
19 | $table->unsignedInteger('customers_id');
20 | $table->unsignedInteger('flats_id');
21 | $table->string('rentNo',50);
22 | $table->decimal('perSftRent',18,2);
23 | $table->decimal('rent',18,2);
24 | $table->decimal('serviceCharge',18,2);
25 | $table->decimal('securityMoney',18,2);
26 | $table->decimal('advanceMoney',18,2);
27 | $table->decimal('monthlyDeduction',18,2);
28 | $table->decimal('monthlyDeductionTax',18,2);
29 | $table->decimal('utilityCharge',18,2);
30 | $table->decimal('delayCharge',18,2);
31 | $table->text('note')->nullable();
32 | $table->string('deepPaper')->nullable();
33 | $table->string('othersPaper')->nullable();
34 | $table->tinyInteger('status')->default('1'); // 1 for active 0 for inactive
35 | $table->date('entryDate');
36 | $table->date('deedStart');
37 | $table->date('deedEnd');
38 | $table->unsignedInteger('users_id');
39 | $table->timestamps();
40 | $table->softDeletes();
41 | $table->foreign('customers_id')->references('id')->on('customers');
42 | $table->foreign('projects_id')->references('id')->on('projects');
43 | $table->foreign('flats_id')->references('id')->on('flats');
44 | $table->foreign('users_id')->references('id')->on('users');
45 |
46 |
47 | });
48 | }
49 |
50 | /**
51 | * Reverse the migrations.
52 | *
53 | * @return void
54 | */
55 | public function down()
56 | {
57 | Schema::dropIfExists('rents');
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.fillbetween.min.js:
--------------------------------------------------------------------------------
1 | /* Javascript plotting library for jQuery, version 0.8.3.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | */
7 | (function($){var options={series:{fillBetween:null}};function init(plot){function findBottomSeries(s,allseries){var i;for(i=0;i=allseries.length){return null}return allseries[s.fillBetween]}return null}function computeFillBottoms(plot,s,datapoints){if(s.fillBetween==null){return}var other=findBottomSeries(s,plot.getData());if(!other){return}var ps=datapoints.pointsize,points=datapoints.points,otherps=other.datapoints.pointsize,otherpoints=other.datapoints.points,newpoints=[],px,py,intery,qx,qy,bottom,withlines=s.lines.show,withbottom=ps>2&&datapoints.format[2].y,withsteps=withlines&&s.lines.steps,fromgap=true,i=0,j=0,l,m;while(true){if(i>=points.length){break}l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+1]-py)*(qx-px)/(points[i-ps]-px);newpoints.push(qx);newpoints.push(intery);for(m=2;m0&&otherpoints[j-otherps]!=null){bottom=qy+(otherpoints[j-otherps+1]-qy)*(px-qx)/(otherpoints[j-otherps]-qx)}i+=ps}fromgap=false;if(l!==newpoints.length&&withbottom){newpoints[l+2]=bottom}}if(withsteps&&l!==newpoints.length&&l>0&&newpoints[l]!==null&&newpoints[l]!==newpoints[l-ps]&&newpoints[l+1]!==newpoints[l-ps+1]){for(m=0;m=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);(function($){var options={};function init(plot){function onResize(){var placeholder=plot.getPlaceholder();if(placeholder.width()==0||placeholder.height()==0)return;plot.resize();plot.setupGrid();plot.draw()}function bindEvents(plot,eventHolder){plot.getPlaceholder().resize(onResize)}function shutdown(plot,eventHolder){plot.getPlaceholder().unbind("resize",onResize)}plot.hooks.bindEvents.push(bindEvents);plot.hooks.shutdown.push(shutdown)}$.plot.plugins.push({init:init,options:options,name:"resize",version:"1.0"})})(jQuery);
--------------------------------------------------------------------------------
/public/assets/js/libs/utils/html5shiv.js:
--------------------------------------------------------------------------------
1 | /*
2 | HTML5 Shiv v3.6.2pre | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
3 | */
4 | (function(l,f){function m(){var a=e.elements;return"string"==typeof a?a.split(" "):a}function i(a){var b=n[a[o]];b||(b={},h++,a[o]=h,n[h]=b);return b}function p(a,b,c){b||(b=f);if(g)return b.createElement(a);c||(c=i(b));b=c.cache[a]?c.cache[a].cloneNode():r.test(a)?(c.cache[a]=c.createElem(a)).cloneNode():c.createElem(a);return b.canHaveChildren&&!s.test(a)?c.frag.appendChild(b):b}function t(a,b){if(!b.cache)b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag();
5 | a.createElement=function(c){return!e.shivMethods?b.createElem(c):p(c,a,b)};a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+m().join().replace(/\w+/g,function(a){b.createElem(a);b.frag.createElement(a);return'c("'+a+'")'})+");return n}")(e,b.frag)}function q(a){a||(a=f);var b=i(a);if(e.shivCSS&&!j&&!b.hasCSS){var c,d=a;c=d.createElement("p");d=d.getElementsByTagName("head")[0]||d.documentElement;c.innerHTML="x";
6 | c=d.insertBefore(c.lastChild,d.firstChild);b.hasCSS=!!c}g||t(a,b);return a}var k=l.html5||{},s=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,r=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,j,o="_html5shiv",h=0,n={},g;(function(){try{var a=f.createElement("a");a.innerHTML="";j="hidden"in a;var b;if(!(b=1==a.childNodes.length)){f.createElement("a");var c=f.createDocumentFragment();b="undefined"==typeof c.cloneNode||
7 | "undefined"==typeof c.createDocumentFragment||"undefined"==typeof c.createElement}g=b}catch(d){g=j=!0}})();var e={elements:k.elements||"abbr article aside audio bdi canvas data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video",version:"3.6.2pre",shivCSS:!1!==k.shivCSS,supportsUnknownElements:g,shivMethods:!1!==k.shivMethods,type:"default",shivDocument:q,createElement:p,createDocumentFragment:function(a,b){a||(a=f);if(g)return a.createDocumentFragment();
8 | for(var b=b||i(a),c=b.frag.cloneNode(),d=0,e=m(),h=e.length;dbelongsTo('App\User','users_id')->withTrashed()->select(['id','name']);
56 | }
57 |
58 |
59 | public function rents()
60 | {
61 | return $this->hasMany('App\Rent','customers_id');
62 | }
63 | public function collections()
64 | {
65 | return $this->hasMany('App\RentCollection','customers_id');
66 | }
67 |
68 | function setDobAttribute($value)
69 | {
70 | if(strlen($value)){
71 | $this->attributes['dob'] = Carbon::createFromFormat('d/m/Y', trim($value));
72 | }
73 | else{
74 | $this->attributes['dob'] = null;
75 | }
76 | }
77 | public function getDobAttribute($value)
78 | {
79 | if(strlen($value)){
80 | return Carbon::parse($value)->format('d/m/Y');
81 | }
82 | else{
83 | return '';
84 | }
85 | }
86 | function setEntryDateAttribute($value)
87 | {
88 | $this->attributes['entryDate'] = Carbon::createFromFormat('d/m/Y', trim($value));
89 | }
90 |
91 | }
92 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.stack.min.js:
--------------------------------------------------------------------------------
1 | /* Javascript plotting library for jQuery, version 0.8.3.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | */
7 | (function($){var options={series:{stack:null}};function init(plot){function findMatchingSeries(s,allseries){var res=null;for(var i=0;i2&&(horizontal?datapoints.format[2].x:datapoints.format[2].y),withsteps=withlines&&s.lines.steps,fromgap=true,keyOffset=horizontal?1:0,accumulateOffset=horizontal?0:1,i=0,j=0,l,m;while(true){if(i>=points.length)break;l=newpoints.length;if(points[i]==null){for(m=0;m=otherpoints.length){if(!withlines){for(m=0;mqx){if(withlines&&i>0&&points[i-ps]!=null){intery=py+(points[i-ps+accumulateOffset]-py)*(qx-px)/(points[i-ps+keyOffset]-px);newpoints.push(qx);newpoints.push(intery+qy);for(m=2;m0&&otherpoints[j-otherps]!=null)bottom=qy+(otherpoints[j-otherps+accumulateOffset]-qy)*(px-qx)/(otherpoints[j-otherps+keyOffset]-qx);newpoints[l+accumulateOffset]+=bottom;i+=ps}fromgap=false;if(l!=newpoints.length&&withbottom)newpoints[l+2]+=bottom}if(withsteps&&l!=newpoints.length&&l>0&&newpoints[l]!=null&&newpoints[l]!=newpoints[l-ps]&&newpoints[l+1]!=newpoints[l-ps+1]){for(m=0;m
2 |
3 |
4 | RHM- 503
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
34 |
35 |
36 |
37 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
503
52 | Where Am I !?
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/resources/views/errors/403.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RHM- 404
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
34 |
35 |
36 |
37 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
403
52 | Access denied!
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/resources/views/errors/500.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RHM- 500
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
34 |
35 |
36 |
37 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
500
52 | Internal Server Error!
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/resources/views/errors/404.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RHM- 404
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
34 |
35 |
36 |
37 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
404
52 | This page does not exist :;)
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.categories.min.js:
--------------------------------------------------------------------------------
1 | /* Javascript plotting library for jQuery, version 0.8.3.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | */
7 | (function($){var options={xaxis:{categories:null},yaxis:{categories:null}};function processRawData(plot,series,data,datapoints){var xCategories=series.xaxis.options.mode=="categories",yCategories=series.yaxis.options.mode=="categories";if(!(xCategories||yCategories))return;var format=datapoints.format;if(!format){var s=series;format=[];format.push({x:true,number:true,required:true});format.push({y:true,number:true,required:true});if(s.bars.show||s.lines.show&&s.lines.fill){var autoscale=!!(s.bars.show&&s.bars.zero||s.lines.show&&s.lines.zero);format.push({y:true,number:true,required:false,defaultValue:0,autoscale:autoscale});if(s.bars.horizontal){delete format[format.length-1].y;format[format.length-1].x=true}}datapoints.format=format}for(var m=0;mindex)index=categories[v];return index+1}function categoriesTickGenerator(axis){var res=[];for(var label in axis.categories){var v=axis.categories[label];if(v>=axis.min&&v<=axis.max)res.push([v,label])}res.sort(function(a,b){return a[0]-b[0]});return res}function setupCategoriesForAxis(series,axis,datapoints){if(series[axis].options.mode!="categories")return;if(!series[axis].categories){var c={},o=series[axis].options.categories||{};if($.isArray(o)){for(var i=0;ibelongsTo('App\Project','projects_id')->withTrashed()->select(['id','name']);
48 | }
49 | public function flat() {
50 | return $this->belongsTo('App\Flat','flats_id')->withTrashed()->select(['id','description']);
51 | }
52 | public function customer() {
53 | return $this->belongsTo('App\Customer','customers_id')->withTrashed()->select(['id','name','cellNo','permanentAddress','photo']);
54 | }
55 | public function entry() {
56 | return $this->belongsTo('App\User','users_id')->withTrashed()->select(['id','name']);
57 | }
58 | public function collections()
59 | {
60 | return $this->hasMany('App\RentCollection','rents_id');
61 | }
62 | public function collectionSum()
63 | {
64 | return $this->hasMany('App\RentCollection','rents_id')
65 | ->selectRaw('rents_id,SUM(amount) as total')
66 | ->groupBy('rents_id');
67 | }
68 |
69 |
70 | function setEntryDateAttribute($value)
71 | {
72 | $this->attributes['entryDate'] = Carbon::createFromFormat('d/m/Y', $value)->format('Y-m-d');
73 | }
74 | function setDeedStartAttribute($value)
75 | {
76 | $this->attributes['deedStart'] = Carbon::createFromFormat('m-Y', $value)->format('Y-m-d');
77 | }
78 | function setDeedEndAttribute($value)
79 | {
80 | $this->attributes['deedEnd'] = Carbon::createFromFormat('m-Y', $value)->format('Y-m-d');
81 | }
82 | }
83 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.image.min.js:
--------------------------------------------------------------------------------
1 | /* Javascript plotting library for jQuery, version 0.8.3.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | */
7 | (function($){var options={series:{images:{show:false,alpha:1,anchor:"corner"}}};$.plot.image={};$.plot.image.loadDataImages=function(series,options,callback){var urls=[],points=[];var defaultShow=options.series.images.show;$.each(series,function(i,s){if(!(defaultShow||s.images.show))return;if(s.data)s=s.data;$.each(s,function(i,p){if(typeof p[0]=="string"){urls.push(p[0]);points.push(p)}})});$.plot.image.load(urls,function(loadedImages){$.each(points,function(i,p){var url=p[0];if(loadedImages[url])p[0]=loadedImages[url]});callback()})};$.plot.image.load=function(urls,callback){var missing=urls.length,loaded={};if(missing==0)callback({});$.each(urls,function(i,url){var handler=function(){--missing;loaded[url]=this;if(missing==0)callback(loaded)};$("
").load(handler).error(handler).attr("src",url)})};function drawSeries(plot,ctx,series){var plotOffset=plot.getPlotOffset();if(!series.images||!series.images.show)return;var points=series.datapoints.points,ps=series.datapoints.pointsize;for(var i=0;ix2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}if(series.images.anchor=="center"){tmp=.5*(x2-x1)/(img.width-1);x1-=tmp;x2+=tmp;tmp=.5*(y2-y1)/(img.height-1);y1-=tmp;y2+=tmp}if(x1==x2||y1==y2||x1>=xaxis.max||x2<=xaxis.min||y1>=yaxis.max||y2<=yaxis.min)continue;var sx1=0,sy1=0,sx2=img.width,sy2=img.height;if(x1xaxis.max){sx2+=(sx2-sx1)*(xaxis.max-x2)/(x2-x1);x2=xaxis.max}if(y1yaxis.max){sy1+=(sy1-sy2)*(yaxis.max-y2)/(y2-y1);y2=yaxis.max}x1=xaxis.p2c(x1);x2=xaxis.p2c(x2);y1=yaxis.p2c(y1);y2=yaxis.p2c(y2);if(x1>x2){tmp=x2;x2=x1;x1=tmp}if(y1>y2){tmp=y2;y2=y1;y1=tmp}tmp=ctx.globalAlpha;ctx.globalAlpha*=series.images.alpha;ctx.drawImage(img,sx1,sy1,sx2-sx1,sy2-sy1,x1+plotOffset.left,y1+plotOffset.top,x2-x1,y2-y1);ctx.globalAlpha=tmp}}function processRawData(plot,series,data,datapoints){if(!series.images.show)return;datapoints.format=[{required:true},{x:true,number:true,required:true},{y:true,number:true,required:true},{x:true,number:true,required:true},{y:true,number:true,required:true}]}function init(plot){plot.hooks.processRawData.push(processRawData);plot.hooks.drawSeries.push(drawSeries)}$.plot.plugins.push({init:init,options:options,name:"image",version:"1.1"})})(jQuery);
--------------------------------------------------------------------------------
/resources/views/report/balance.blade.php:
--------------------------------------------------------------------------------
1 | @extends('layouts.master')
2 |
3 | @section('title', 'Report-Balance')
4 |
5 | @section('content')
6 |
7 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
25 |
26 |
27 |
28 |

29 |
ShanixLab
30 |
31 |
32 |
Balance
33 |
34 |
35 |
Print:{{ date('d/m/Y') }}
36 |
37 |
38 |
39 |
40 |
41 |
Total Collection
৳{{ $collections }}
42 |
43 |
44 |
45 |
46 |
Total Expense
৳{{$expenses}}
47 |
48 |
49 |
50 |
Balance
৳{{$collections - $expenses}}
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 | @endsection
66 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.symbol.js:
--------------------------------------------------------------------------------
1 | /* Flot plugin that adds some extra symbols for plotting points.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | The symbols are accessed as strings through the standard symbol options:
7 |
8 | series: {
9 | points: {
10 | symbol: "square" // or "diamond", "triangle", "cross"
11 | }
12 | }
13 |
14 | */
15 |
16 | (function ($) {
17 | function processRawData(plot, series, datapoints) {
18 | // we normalize the area of each symbol so it is approximately the
19 | // same as a circle of the given radius
20 |
21 | var handlers = {
22 | square: function (ctx, x, y, radius, shadow) {
23 | // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2
24 | var size = radius * Math.sqrt(Math.PI) / 2;
25 | ctx.rect(x - size, y - size, size + size, size + size);
26 | },
27 | diamond: function (ctx, x, y, radius, shadow) {
28 | // pi * r^2 = 2s^2 => s = r * sqrt(pi/2)
29 | var size = radius * Math.sqrt(Math.PI / 2);
30 | ctx.moveTo(x - size, y);
31 | ctx.lineTo(x, y - size);
32 | ctx.lineTo(x + size, y);
33 | ctx.lineTo(x, y + size);
34 | ctx.lineTo(x - size, y);
35 | },
36 | triangle: function (ctx, x, y, radius, shadow) {
37 | // pi * r^2 = 1/2 * s^2 * sin (pi / 3) => s = r * sqrt(2 * pi / sin(pi / 3))
38 | var size = radius * Math.sqrt(2 * Math.PI / Math.sin(Math.PI / 3));
39 | var height = size * Math.sin(Math.PI / 3);
40 | ctx.moveTo(x - size/2, y + height/2);
41 | ctx.lineTo(x + size/2, y + height/2);
42 | if (!shadow) {
43 | ctx.lineTo(x, y - height/2);
44 | ctx.lineTo(x - size/2, y + height/2);
45 | }
46 | },
47 | cross: function (ctx, x, y, radius, shadow) {
48 | // pi * r^2 = (2s)^2 => s = r * sqrt(pi)/2
49 | var size = radius * Math.sqrt(Math.PI) / 2;
50 | ctx.moveTo(x - size, y - size);
51 | ctx.lineTo(x + size, y + size);
52 | ctx.moveTo(x - size, y + size);
53 | ctx.lineTo(x + size, y - size);
54 | }
55 | };
56 |
57 | var s = series.points.symbol;
58 | if (handlers[s])
59 | series.points.symbol = handlers[s];
60 | }
61 |
62 | function init(plot) {
63 | plot.hooks.processDatapoints.push(processRawData);
64 | }
65 |
66 | $.plot.plugins.push({
67 | init: init,
68 | name: 'symbols',
69 | version: '1.0'
70 | });
71 | })(jQuery);
72 |
--------------------------------------------------------------------------------
/config/queue.php:
--------------------------------------------------------------------------------
1 | env('QUEUE_DRIVER', 'sync'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Queue Connections
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may configure the connection information for each server that
26 | | is used by your application. A default configuration has been added
27 | | for each back-end shipped with Laravel. You are free to add more.
28 | |
29 | */
30 |
31 | 'connections' => [
32 |
33 | 'sync' => [
34 | 'driver' => 'sync',
35 | ],
36 |
37 | 'database' => [
38 | 'driver' => 'database',
39 | 'table' => 'jobs',
40 | 'queue' => 'default',
41 | 'retry_after' => 90,
42 | ],
43 |
44 | 'beanstalkd' => [
45 | 'driver' => 'beanstalkd',
46 | 'host' => 'localhost',
47 | 'queue' => 'default',
48 | 'retry_after' => 90,
49 | ],
50 |
51 | 'sqs' => [
52 | 'driver' => 'sqs',
53 | 'key' => 'your-public-key',
54 | 'secret' => 'your-secret-key',
55 | 'prefix' => 'https://sqs.us-east-1.amazonaws.com/your-account-id',
56 | 'queue' => 'your-queue-name',
57 | 'region' => 'us-east-1',
58 | ],
59 |
60 | 'redis' => [
61 | 'driver' => 'redis',
62 | 'connection' => 'default',
63 | 'queue' => 'default',
64 | 'retry_after' => 90,
65 | ],
66 |
67 | ],
68 |
69 | /*
70 | |--------------------------------------------------------------------------
71 | | Failed Queue Jobs
72 | |--------------------------------------------------------------------------
73 | |
74 | | These options configure the behavior of failed queue job logging so you
75 | | can control which database and table are used to store the jobs that
76 | | have failed. You may change them to any database / table you wish.
77 | |
78 | */
79 |
80 | 'failed' => [
81 | 'database' => env('DB_CONNECTION', 'mysql'),
82 | 'table' => 'failed_jobs',
83 | ],
84 |
85 | ];
86 |
--------------------------------------------------------------------------------
/public/css/custom.css:
--------------------------------------------------------------------------------
1 | .form-group .form-control ~ label {
2 | opacity: 1;
3 | }
4 | .myAction{
5 | float: right !important;
6 | display: inline; !important;
7 | }
8 | .mytable td {
9 | text-align: center;
10 | }
11 | .fa-taka {
12 | height: 37px;
13 | font-size: 30px
14 | }
15 |
16 | .header-nav-options .dropdown .dropdown-menu {
17 | top: 64px;
18 | }
19 | .dropdown-header {
20 | display: block;
21 | padding: 3px 20px;
22 | font-size: 12px;
23 | line-height: 1.846153846;
24 | color: #16c1c1;
25 | white-space: nowrap;
26 | opacity: 1!important;
27 | }
28 | table thead th {
29 | font-weight: 900;
30 | font-size: 16px;
31 | text-align: center;
32 | }
33 | table tbody tr td {
34 | text-align: center;
35 | }
36 | table tfoot tr td {
37 | text-align: center;
38 | }
39 |
40 | .gui-icon {
41 | font-size: 16px;
42 | }
43 | li.gui-folder span.title{
44 | font-size: 16px;
45 | }
46 | li.dd span.title{
47 | font-size: 16px;
48 | }
49 | @media print
50 | {
51 | body * {
52 | margin: 0 !important;
53 | padding: 0 !important;
54 | }
55 | html, body {
56 | height: 99%;
57 | }
58 | .no-print, .no-print *
59 | {
60 | display: none !important;
61 | }
62 | .top-zero{
63 | top: 0 !important;
64 | }
65 | section {
66 | top: 0 !important;
67 | position: relative;
68 | padding: 0 !important;
69 | }
70 | .section-body:first-child {
71 | top: 0 !important;
72 | margin-top: 0px !important;
73 | }
74 | #content {
75 | position: relative;
76 | width: 100%;
77 | left: 0;
78 | padding-top: 0px !important;
79 | }
80 | }
81 |
82 | fieldset {
83 | background: #ffffff;
84 | border: 2px solid #0aa89e;
85 | border-radius: 5px;
86 | margin: 20px 20px 20px 20px;
87 | padding: 25px;
88 | position: relative;
89 | }
90 | fieldset legend {
91 | background: inherit;
92 | font-family: "Lato", sans-serif;
93 | color: #007AFF;
94 | font-size: 15px;
95 | left: 10px;
96 | padding: 0 10px;
97 | position: absolute;
98 | top: -12px;
99 | font-weight: 400;
100 | width: auto !important;
101 | border: none !important;
102 | margin: 0;
103 | }
104 | footer strong {
105 | color: #1abb9c;
106 | }
107 | footer a {
108 | color: #3498db;
109 | font-weight: bold;
110 | }
111 |
112 | .footer_fixed {
113 | position: fixed;
114 | left: 0px;
115 | bottom: 0px;
116 | width: 100%;
117 | z-index: 100;
118 | }
119 |
120 | footer {
121 | background: #f2f3f3;
122 | padding: 15px 20px;
123 | display: block;
124 | }
125 | #content{
126 | margin-bottom: 55px;
127 | }
--------------------------------------------------------------------------------
/database/migrations/2017_05_01_104538_create_curstomer_table.php:
--------------------------------------------------------------------------------
1 | increments('id');
18 | $table->string('name');
19 | $table->string('cellNo',15)->unique();
20 | $table->string('phoneNo',15)->nullable();
21 | $table->string('email',100)->nullable();
22 | $table->date('dob')->nullable();
23 | $table->string('contactPerson',100)->nullable();
24 | $table->string('contactPersonCellNo',15)->nullable();
25 | $table->string('fatherName',100)->nullable();
26 | $table->string('motherName',100)->nullable();
27 | $table->string('spouseName',100)->nullable();
28 | $table->string('nidNo')->nullable();
29 | $table->string('passportNo')->nullable();
30 | $table->string('mailingAddress',500)->nullable();
31 | $table->string('presentAddress',500)->nullable();
32 | $table->string('permanentAddress',500);
33 | $table->string('birthCertificate')->nullable();
34 | $table->string('passport')->nullable();
35 | $table->string('photo')->nullable();
36 | //business info
37 | $table->string('companyName')->nullable();
38 | $table->string('designation',100)->nullable();
39 | $table->string('cContactPerson',100)->nullable();
40 | $table->string('cContactPersonCellNo',15)->nullable();
41 | $table->string('cCellNo',15)->nullable();
42 | $table->string('cPhoneNo',15)->nullable();
43 | $table->string('cFaxNo',15)->nullable();
44 | $table->string('cEmail',100)->nullable();
45 | $table->string('cAddress',500)->nullable();
46 | $table->string('cNote',1000)->nullable();
47 |
48 | $table->enum('active',['Yes','No']);
49 | $table->enum('customerType',['Person','Company']);
50 | $table->date('entryDate');
51 | $table->unsignedInteger('users_id');
52 | $table->timestamps();
53 | $table->softDeletes();
54 |
55 | $table->index(['users_id', 'entryDate']);
56 | $table->foreign('users_id')->references('id')->on('users');
57 | });
58 | }
59 |
60 | /**
61 | * Reverse the migrations.
62 | *
63 | * @return void
64 | */
65 | public function down()
66 | {
67 | Schema::dropIfExists('customers');
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/config/cache.php:
--------------------------------------------------------------------------------
1 | env('CACHE_DRIVER', 'file'),
19 |
20 | /*
21 | |--------------------------------------------------------------------------
22 | | Cache Stores
23 | |--------------------------------------------------------------------------
24 | |
25 | | Here you may define all of the cache "stores" for your application as
26 | | well as their drivers. You may even define multiple stores for the
27 | | same cache driver to group types of items stored in your caches.
28 | |
29 | */
30 |
31 | 'stores' => [
32 |
33 | 'apc' => [
34 | 'driver' => 'apc',
35 | ],
36 |
37 | 'array' => [
38 | 'driver' => 'array',
39 | ],
40 |
41 | 'database' => [
42 | 'driver' => 'database',
43 | 'table' => 'cache',
44 | 'connection' => null,
45 | ],
46 |
47 | 'file' => [
48 | 'driver' => 'file',
49 | 'path' => storage_path('framework/cache'),
50 | ],
51 |
52 | 'memcached' => [
53 | 'driver' => 'memcached',
54 | 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'),
55 | 'sasl' => [
56 | env('MEMCACHED_USERNAME'),
57 | env('MEMCACHED_PASSWORD'),
58 | ],
59 | 'options' => [
60 | // Memcached::OPT_CONNECT_TIMEOUT => 2000,
61 | ],
62 | 'servers' => [
63 | [
64 | 'host' => env('MEMCACHED_HOST', '127.0.0.1'),
65 | 'port' => env('MEMCACHED_PORT', 11211),
66 | 'weight' => 100,
67 | ],
68 | ],
69 | ],
70 |
71 | 'redis' => [
72 | 'driver' => 'redis',
73 | 'connection' => 'default',
74 | ],
75 |
76 | ],
77 |
78 | /*
79 | |--------------------------------------------------------------------------
80 | | Cache Key Prefix
81 | |--------------------------------------------------------------------------
82 | |
83 | | When utilizing a RAM based store such as APC or Memcached, there might
84 | | be other applications utilizing the same cache. So, we'll specify a
85 | | value to get prefixed to all our keys so we can avoid collisions.
86 | |
87 | */
88 |
89 | 'prefix' => 'laravel',
90 |
91 | ];
92 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.colorhelpers.min.js:
--------------------------------------------------------------------------------
1 | (function($){$.color={};$.color.make=function(r,g,b,a){var o={};o.r=r||0;o.g=g||0;o.b=b||0;o.a=a!=null?a:1;o.add=function(c,d){for(var i=0;i=1){return"rgb("+[o.r,o.g,o.b].join(",")+")"}else{return"rgba("+[o.r,o.g,o.b,o.a].join(",")+")"}};o.normalize=function(){function clamp(min,value,max){return valuemax?max:value}o.r=clamp(0,parseInt(o.r),255);o.g=clamp(0,parseInt(o.g),255);o.b=clamp(0,parseInt(o.b),255);o.a=clamp(0,o.a,1);return o};o.clone=function(){return $.color.make(o.r,o.b,o.g,o.a)};return o.normalize()};$.color.extract=function(elem,css){var c;do{c=elem.css(css).toLowerCase();if(c!=""&&c!="transparent")break;elem=elem.parent()}while(elem.length&&!$.nodeName(elem.get(0),"body"));if(c=="rgba(0, 0, 0, 0)")c="transparent";return $.color.parse(c)};$.color.parse=function(str){var res,m=$.color.make;if(res=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10));if(res=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseInt(res[1],10),parseInt(res[2],10),parseInt(res[3],10),parseFloat(res[4]));if(res=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55);if(res=/rgba\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(str))return m(parseFloat(res[1])*2.55,parseFloat(res[2])*2.55,parseFloat(res[3])*2.55,parseFloat(res[4]));if(res=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(str))return m(parseInt(res[1],16),parseInt(res[2],16),parseInt(res[3],16));if(res=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(str))return m(parseInt(res[1]+res[1],16),parseInt(res[2]+res[2],16),parseInt(res[3]+res[3],16));var name=$.trim(str).toLowerCase();if(name=="transparent")return m(255,255,255,0);else{res=lookupColors[name]||[0,0,0];return m(res[0],res[1],res[2])}};var lookupColors={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255,165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0]}})(jQuery);
--------------------------------------------------------------------------------
/public/assets/js/core/source/AppNavSearch.js:
--------------------------------------------------------------------------------
1 | (function (namespace, $) {
2 | "use strict";
3 |
4 | var AppNavSearch = function () {
5 | // Create reference to this instance
6 | var o = this;
7 | // Initialize app when document is ready
8 | $(document).ready(function () {
9 | o.initialize();
10 | });
11 |
12 | };
13 | var p = AppNavSearch.prototype;
14 |
15 | // =========================================================================
16 | // MEMBERS
17 | // =========================================================================
18 |
19 | p._clearSearchTimer = null;
20 |
21 | // =========================================================================
22 | // INIT
23 | // =========================================================================
24 |
25 | p.initialize = function () {
26 | this._enableEvents();
27 | };
28 |
29 | // =========================================================================
30 | // EVENTS
31 | // =========================================================================
32 |
33 | // events
34 | p._enableEvents = function () {
35 | var o = this;
36 |
37 | // Listen for the nav search button click
38 | $('.navbar-search .btn').on('click', function (e) {
39 | o._handleButtonClick(e);
40 | });
41 |
42 | // When the search field loses focus
43 | $('.navbar-search input').on('blur', function (e) {
44 | o._handleFieldBlur(e);
45 | });
46 | };
47 |
48 | // =========================================================================
49 | // NAV SEARCH
50 | // =========================================================================
51 |
52 | p._handleButtonClick = function (e) {
53 | e.preventDefault();
54 |
55 | var form = $(e.currentTarget).closest('form');
56 | var input = form.find('input');
57 | var keyword = input.val();
58 |
59 | if ($.trim(keyword) === '') {
60 | // When there is no keyword, just open the bar
61 | form.addClass('expanded');
62 | input.focus();
63 | }
64 | else {
65 | // When there is a keyword, submit the keyword
66 | form.addClass('expanded');
67 | form.submit();
68 |
69 | // Clear the timer that removes the keyword
70 | clearTimeout(this._clearSearchTimer);
71 | }
72 | };
73 |
74 | // =========================================================================
75 | // FIELD BLUR
76 | // =========================================================================
77 |
78 | p._handleFieldBlur = function (e) {
79 | // When the search field loses focus
80 | var input = $(e.currentTarget);
81 | var form = input.closest('form');
82 |
83 | // Collapse the search field
84 | form.removeClass('expanded');
85 |
86 | // Clear the textfield after 300 seconds (the time it takes to collapse the field)
87 | clearTimeout(this._clearSearchTimer);
88 | this._clearSearchTimer = setTimeout(function () {
89 | input.val('');
90 | }, 300);
91 | };
92 |
93 | // =========================================================================
94 | // DEFINE NAMESPACE
95 | // =========================================================================
96 |
97 | window.materialadmin.AppNavSearch = new AppNavSearch;
98 | }(this.materialadmin, jQuery)); // pass in (namespace, jQuery):
99 |
--------------------------------------------------------------------------------
/public/assets/js/libs/autosize/jquery.autosize.min.js:
--------------------------------------------------------------------------------
1 | /*!
2 | Autosize 1.18.17
3 | license: MIT
4 | http://www.jacklmoore.com/autosize
5 | */
6 | !function(e){var t,o={className:"autosizejs",id:"autosizejs",append:"\n",callback:!1,resizeDelay:10,placeholder:!0},i='',a=["fontFamily","fontSize","fontWeight","fontStyle","letterSpacing","textTransform","wordSpacing","textIndent","whiteSpace"],n=e(i).data("autosize",!0)[0];n.style.lineHeight="99px","99px"===e(n).css("lineHeight")&&a.push("lineHeight"),n.style.lineHeight="",e.fn.autosize=function(i){return this.length?(i=e.extend({},o,i||{}),n.parentNode!==document.body&&e(document.body).append(n),this.each(function(){function o(){var t,o=window.getComputedStyle?window.getComputedStyle(u,null):null;o?(t=parseFloat(o.width),("border-box"===o.boxSizing||"border-box"===o.webkitBoxSizing||"border-box"===o.mozBoxSizing)&&e.each(["paddingLeft","paddingRight","borderLeftWidth","borderRightWidth"],function(e,i){t-=parseFloat(o[i])})):t=p.width(),n.style.width=Math.max(t,0)+"px"}function s(){var s={};if(t=u,n.className=i.className,n.id=i.id,d=parseFloat(p.css("maxHeight")),e.each(a,function(e,t){s[t]=p.css(t)}),e(n).css(s).attr("wrap",p.attr("wrap")),o(),window.chrome){var r=u.style.width;u.style.width="0px";{u.offsetWidth}u.style.width=r}}function r(){var e,a;t!==u?s():o(),n.value=!u.value&&i.placeholder?p.attr("placeholder")||"":u.value,n.value+=i.append||"",n.style.overflowY=u.style.overflowY,a=parseFloat(u.style.height)||0,n.scrollTop=0,n.scrollTop=9e4,e=n.scrollTop,d&&e>d?(u.style.overflowY="scroll",e=d):(u.style.overflowY="hidden",c>e&&(e=c)),e+=z,Math.abs(a-e)>.01&&(u.style.height=e+"px",n.className=n.className,w&&i.callback.call(u,u),p.trigger("autosize.resized"))}function l(){clearTimeout(h),h=setTimeout(function(){var e=p.width();e!==b&&(b=e,r())},parseInt(i.resizeDelay,10))}var d,c,h,u=this,p=e(u),z=0,w=e.isFunction(i.callback),f={height:u.style.height,overflow:u.style.overflow,overflowY:u.style.overflowY,wordWrap:u.style.wordWrap,resize:u.style.resize},b=p.width(),g=p.css("resize");p.data("autosize")||(p.data("autosize",!0),("border-box"===p.css("box-sizing")||"border-box"===p.css("-moz-box-sizing")||"border-box"===p.css("-webkit-box-sizing"))&&(z=p.outerHeight()-p.height()),c=Math.max(parseFloat(p.css("minHeight"))-z||0,p.height()),p.css({overflow:"hidden",overflowY:"hidden",wordWrap:"break-word"}),"vertical"===g?p.css("resize","none"):"both"===g&&p.css("resize","horizontal"),"onpropertychange"in u?"oninput"in u?p.on("input.autosize keyup.autosize",r):p.on("propertychange.autosize",function(){"value"===event.propertyName&&r()}):p.on("input.autosize",r),i.resizeDelay!==!1&&e(window).on("resize.autosize",l),p.on("autosize.resize",r),p.on("autosize.resizeIncludeStyle",function(){t=null,r()}),p.on("autosize.destroy",function(){t=null,clearTimeout(h),e(window).off("resize",l),p.off("autosize").off(".autosize").css(f).removeData("autosize")}),r())})):this}}(jQuery||$);
--------------------------------------------------------------------------------
/public/assets/js/core/source/AppCard.js:
--------------------------------------------------------------------------------
1 | (function(namespace, $) {
2 | "use strict";
3 |
4 | var AppCard = function() {
5 | // Create reference to this instance
6 | var o = this;
7 | // Initialize app when document is ready
8 | $(document).ready(function() {
9 | o.initialize();
10 | });
11 |
12 | };
13 | var p = AppCard.prototype;
14 |
15 | // =========================================================================
16 | // INIT
17 | // =========================================================================
18 |
19 | p.initialize = function() {};
20 |
21 | // =========================================================================
22 | // CARD LOADER
23 | // =========================================================================
24 |
25 | p.addCardLoader = function (card) {
26 | var container = $('').appendTo(card);
27 | container.hide().fadeIn();
28 | var opts = {
29 | lines: 17, // The number of lines to draw
30 | length: 0, // The length of each line
31 | width: 3, // The line thickness
32 | radius: 6, // The radius of the inner circle
33 | corners: 1, // Corner roundness (0..1)
34 | rotate: 13, // The rotation offset
35 | direction: 1, // 1: clockwise, -1: counterclockwise
36 | color: '#000', // #rgb or #rrggbb or array of colors
37 | speed: 2, // Rounds per second
38 | trail: 76, // Afterglow percentage
39 | shadow: false, // Whether to render a shadow
40 | hwaccel: false, // Whether to use hardware acceleration
41 | className: 'spinner', // The CSS class to assign to the spinner
42 | zIndex: 2e9 // The z-index (defaults to 2000000000)
43 | };
44 | var spinner = new Spinner(opts).spin(container.get(0));
45 | card.data('card-spinner', spinner);
46 | };
47 |
48 | p.removeCardLoader = function (card) {
49 | var spinner = card.data('card-spinner');
50 | var loader = card.find('.card-loader');
51 | loader.fadeOut(function () {
52 | spinner.stop();
53 | loader.remove();
54 | });
55 | };
56 |
57 | // =========================================================================
58 | // CARD COLLAPSE
59 | // =========================================================================
60 |
61 | p.toggleCardCollapse = function (card, duration) {
62 | duration = typeof duration !== 'undefined' ? duration : 400;
63 | var dispatched = false;
64 | card.find('.nano').slideToggle(duration);
65 | card.find('.card-body').slideToggle(duration, function () {
66 | if (dispatched === false) {
67 | $('#COLLAPSER').triggerHandler('card.bb.collapse', [!$(this).is(":visible")]);
68 | dispatched = true;
69 | }
70 | });
71 | card.toggleClass('card-collapsed');
72 | };
73 |
74 | // =========================================================================
75 | // CARD REMOVE
76 | // =========================================================================
77 |
78 | p.removeCard = function (card) {
79 | card.fadeOut(function () {
80 | card.remove();
81 | });
82 | };
83 |
84 | // =========================================================================
85 | // DEFINE NAMESPACE
86 | // =========================================================================
87 |
88 | window.materialadmin.AppCard = new AppCard;
89 | }(this.materialadmin, jQuery)); // pass in (namespace, jQuery):
90 |
--------------------------------------------------------------------------------
/resources/views/lock.blade.php:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | RHM- Locked
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
25 |
26 |
27 |
28 |
29 |
30 |
31 | {{----}}
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
}}/img/avatar.png)
40 |
{{session('name')}}
41 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.resize.js:
--------------------------------------------------------------------------------
1 | /* Flot plugin for automatically redrawing plots as the placeholder resizes.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | It works by listening for changes on the placeholder div (through the jQuery
7 | resize event plugin) - if the size changes, it will redraw the plot.
8 |
9 | There are no options. If you need to disable the plugin for some plots, you
10 | can just fix the size of their placeholders.
11 |
12 | */
13 |
14 | /* Inline dependency:
15 | * jQuery resize event - v1.1 - 3/14/2010
16 | * http://benalman.com/projects/jquery-resize-plugin/
17 | *
18 | * Copyright (c) 2010 "Cowboy" Ben Alman
19 | * Dual licensed under the MIT and GPL licenses.
20 | * http://benalman.com/about/license/
21 | */
22 | (function($,e,t){"$:nomunge";var i=[],n=$.resize=$.extend($.resize,{}),a,r=false,s="setTimeout",u="resize",m=u+"-special-event",o="pendingDelay",l="activeDelay",f="throttleWindow";n[o]=200;n[l]=20;n[f]=true;$.event.special[u]={setup:function(){if(!n[f]&&this[s]){return false}var e=$(this);i.push(this);e.data(m,{w:e.width(),h:e.height()});if(i.length===1){a=t;h()}},teardown:function(){if(!n[f]&&this[s]){return false}var e=$(this);for(var t=i.length-1;t>=0;t--){if(i[t]==this){i.splice(t,1);break}}e.removeData(m);if(!i.length){if(r){cancelAnimationFrame(a)}else{clearTimeout(a)}a=null}},add:function(e){if(!n[f]&&this[s]){return false}var i;function a(e,n,a){var r=$(this),s=r.data(m)||{};s.w=n!==t?n:r.width();s.h=a!==t?a:r.height();i.apply(this,arguments)}if($.isFunction(e)){i=e;return a}else{i=e.handler;e.handler=a}}};function h(t){if(r===true){r=t||1}for(var s=i.length-1;s>=0;s--){var l=$(i[s]);if(l[0]==e||l.is(":visible")){var f=l.width(),c=l.height(),d=l.data(m);if(d&&(f!==d.w||c!==d.h)){l.trigger(u,[d.w=f,d.h=c]);r=t||true}}else{d=l.data(m);d.w=0;d.h=0}}if(a!==null){if(r&&(t==null||t-r<1e3)){a=e.requestAnimationFrame(h)}else{a=setTimeout(h,n[o]);r=false}}}if(!e.requestAnimationFrame){e.requestAnimationFrame=function(){return e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t,i){return e.setTimeout(function(){t((new Date).getTime())},n[l])}}()}if(!e.cancelAnimationFrame){e.cancelAnimationFrame=function(){return e.webkitCancelRequestAnimationFrame||e.mozCancelRequestAnimationFrame||e.oCancelRequestAnimationFrame||e.msCancelRequestAnimationFrame||clearTimeout}()}})(jQuery,this);
23 |
24 | (function ($) {
25 | var options = { }; // no options
26 |
27 | function init(plot) {
28 | function onResize() {
29 | var placeholder = plot.getPlaceholder();
30 |
31 | // somebody might have hidden us and we can't plot
32 | // when we don't have the dimensions
33 | if (placeholder.width() == 0 || placeholder.height() == 0)
34 | return;
35 |
36 | plot.resize();
37 | plot.setupGrid();
38 | plot.draw();
39 | }
40 |
41 | function bindEvents(plot, eventHolder) {
42 | plot.getPlaceholder().resize(onResize);
43 | }
44 |
45 | function shutdown(plot, eventHolder) {
46 | plot.getPlaceholder().unbind("resize", onResize);
47 | }
48 |
49 | plot.hooks.bindEvents.push(bindEvents);
50 | plot.hooks.shutdown.push(shutdown);
51 | }
52 |
53 | $.plot.plugins.push({
54 | init: init,
55 | options: options,
56 | name: 'resize',
57 | version: '1.0'
58 | });
59 | })(jQuery);
60 |
--------------------------------------------------------------------------------
/database/migrations/2017_05_12_110201_create_permission_tables.php:
--------------------------------------------------------------------------------
1 | increments('id');
20 | $table->string('name')->unique();
21 | $table->timestamps();
22 | });
23 |
24 | Schema::create($tableNames['permissions'], function (Blueprint $table) {
25 | $table->increments('id');
26 | $table->string('name')->unique();
27 | $table->timestamps();
28 | });
29 |
30 | Schema::create($tableNames['user_has_permissions'], function (Blueprint $table) use ($tableNames, $foreignKeys) {
31 | $table->integer($foreignKeys['users'])->unsigned();
32 | $table->integer('permission_id')->unsigned();
33 |
34 | $table->foreign($foreignKeys['users'])
35 | ->references('id')
36 | ->on($tableNames['users'])
37 | ->onDelete('cascade');
38 |
39 | $table->foreign('permission_id')
40 | ->references('id')
41 | ->on($tableNames['permissions'])
42 | ->onDelete('cascade');
43 |
44 | $table->primary([$foreignKeys['users'], 'permission_id']);
45 | });
46 |
47 | Schema::create($tableNames['user_has_roles'], function (Blueprint $table) use ($tableNames, $foreignKeys) {
48 | $table->integer('role_id')->unsigned();
49 | $table->integer($foreignKeys['users'])->unsigned();
50 |
51 | $table->foreign('role_id')
52 | ->references('id')
53 | ->on($tableNames['roles'])
54 | ->onDelete('cascade');
55 |
56 | $table->foreign($foreignKeys['users'])
57 | ->references('id')
58 | ->on($tableNames['users'])
59 | ->onDelete('cascade');
60 |
61 | $table->primary(['role_id', $foreignKeys['users']]);
62 | });
63 |
64 | Schema::create($tableNames['role_has_permissions'], function (Blueprint $table) use ($tableNames) {
65 | $table->integer('permission_id')->unsigned();
66 | $table->integer('role_id')->unsigned();
67 |
68 | $table->foreign('permission_id')
69 | ->references('id')
70 | ->on($tableNames['permissions'])
71 | ->onDelete('cascade');
72 |
73 | $table->foreign('role_id')
74 | ->references('id')
75 | ->on($tableNames['roles'])
76 | ->onDelete('cascade');
77 |
78 | $table->primary(['permission_id', 'role_id']);
79 | });
80 | }
81 |
82 | /**
83 | * Reverse the migrations.
84 | *
85 | * @return void
86 | */
87 | public function down()
88 | {
89 | $tableNames = config('laravel-permission.table_names');
90 |
91 | Schema::drop($tableNames['role_has_permissions']);
92 | Schema::drop($tableNames['user_has_roles']);
93 | Schema::drop($tableNames['user_has_permissions']);
94 | Schema::drop($tableNames['roles']);
95 | Schema::drop($tableNames['permissions']);
96 | }
97 | }
98 |
--------------------------------------------------------------------------------
/config/laravel-permission.php:
--------------------------------------------------------------------------------
1 | [
6 |
7 | /*
8 | * When using the "HasRoles" trait from this package, we need to know which
9 | * Eloquent model should be used to retrieve your permissions. Of course, it
10 | * is often just the "Permission" model but you may use whatever you like.
11 | *
12 | * The model you want to use as a Permission model needs to implement the
13 | * `Spatie\Permission\Contracts\Permission` contract.
14 | */
15 |
16 | 'permission' => Spatie\Permission\Models\Permission::class,
17 |
18 | /*
19 | * When using the "HasRoles" trait from this package, we need to know which
20 | * Eloquent model should be used to retrieve your roles. Of course, it
21 | * is often just the "Role" model but you may use whatever you like.
22 | *
23 | * The model you want to use as a Role model needs to implement the
24 | * `Spatie\Permission\Contracts\Role` contract.
25 | */
26 |
27 | 'role' => Spatie\Permission\Models\Role::class,
28 |
29 | ],
30 |
31 | 'table_names' => [
32 |
33 | /*
34 | * The table that your application uses for users. This table's model will
35 | * be using the "HasRoles" and "HasPermissions" traits.
36 | */
37 |
38 | 'users' => 'users',
39 |
40 | /*
41 | * When using the "HasRoles" trait from this package, we need to know which
42 | * table should be used to retrieve your roles. We have chosen a basic
43 | * default value but you may easily change it to any table you like.
44 | */
45 |
46 | 'roles' => 'roles',
47 |
48 | /*
49 | * When using the "HasRoles" trait from this package, we need to know which
50 | * table should be used to retrieve your permissions. We have chosen a basic
51 | * default value but you may easily change it to any table you like.
52 | */
53 |
54 | 'permissions' => 'permissions',
55 |
56 | /*
57 | * When using the "HasRoles" trait from this package, we need to know which
58 | * table should be used to retrieve your users permissions. We have chosen a
59 | * basic default value but you may easily change it to any table you like.
60 | */
61 |
62 | 'user_has_permissions' => 'user_has_permissions',
63 |
64 | /*
65 | * When using the "HasRoles" trait from this package, we need to know which
66 | * table should be used to retrieve your users roles. We have chosen a
67 | * basic default value but you may easily change it to any table you like.
68 | */
69 |
70 | 'user_has_roles' => 'user_has_roles',
71 |
72 | /*
73 | * When using the "HasRoles" trait from this package, we need to know which
74 | * table should be used to retrieve your roles permissions. We have chosen a
75 | * basic default value but you may easily change it to any table you like.
76 | */
77 |
78 | 'role_has_permissions' => 'role_has_permissions',
79 | ],
80 |
81 | 'foreign_keys' => [
82 |
83 | /*
84 | * The name of the foreign key to the users table.
85 | */
86 | 'users' => 'user_id',
87 | ],
88 |
89 | /*
90 | *
91 | * By default we'll make an entry in the application log when the permissions
92 | * could not be loaded. Normally this only occurs while installing the packages.
93 | *
94 | * If for some reason you want to disable that logging, set this value to false.
95 | */
96 |
97 | 'log_registration_exception' => true,
98 | ];
99 |
--------------------------------------------------------------------------------
/config/auth.php:
--------------------------------------------------------------------------------
1 | [
17 | 'guard' => 'web',
18 | 'passwords' => 'users',
19 | ],
20 |
21 | /*
22 | |--------------------------------------------------------------------------
23 | | Authentication Guards
24 | |--------------------------------------------------------------------------
25 | |
26 | | Next, you may define every authentication guard for your application.
27 | | Of course, a great default configuration has been defined for you
28 | | here which uses session storage and the Eloquent user provider.
29 | |
30 | | All authentication drivers have a user provider. This defines how the
31 | | users are actually retrieved out of your database or other storage
32 | | mechanisms used by this application to persist your user's data.
33 | |
34 | | Supported: "session", "token"
35 | |
36 | */
37 |
38 | 'guards' => [
39 | 'web' => [
40 | 'driver' => 'session',
41 | 'provider' => 'users',
42 | ],
43 |
44 | 'api' => [
45 | 'driver' => 'token',
46 | 'provider' => 'users',
47 | ],
48 | ],
49 |
50 | /*
51 | |--------------------------------------------------------------------------
52 | | User Providers
53 | |--------------------------------------------------------------------------
54 | |
55 | | All authentication drivers have a user provider. This defines how the
56 | | users are actually retrieved out of your database or other storage
57 | | mechanisms used by this application to persist your user's data.
58 | |
59 | | If you have multiple user tables or models you may configure multiple
60 | | sources which represent each model / table. These sources may then
61 | | be assigned to any extra authentication guards you have defined.
62 | |
63 | | Supported: "database", "eloquent"
64 | |
65 | */
66 |
67 | 'providers' => [
68 | 'users' => [
69 | 'driver' => 'eloquent',
70 | 'model' => App\User::class,
71 | ],
72 |
73 | // 'users' => [
74 | // 'driver' => 'database',
75 | // 'table' => 'users',
76 | // ],
77 | ],
78 |
79 | /*
80 | |--------------------------------------------------------------------------
81 | | Resetting Passwords
82 | |--------------------------------------------------------------------------
83 | |
84 | | You may specify multiple password reset configurations if you have more
85 | | than one user table or model in the application and you want to have
86 | | separate password reset settings based on the specific user types.
87 | |
88 | | The expire time is the number of minutes that the reset token should be
89 | | considered valid. This security feature keeps tokens short-lived so
90 | | they have less time to be guessed. You may change this as needed.
91 | |
92 | */
93 |
94 | 'passwords' => [
95 | 'users' => [
96 | 'provider' => 'users',
97 | 'table' => 'password_resets',
98 | 'expire' => 60,
99 | ],
100 | ],
101 |
102 | ];
103 |
--------------------------------------------------------------------------------
/routes/web.php:
--------------------------------------------------------------------------------
1 | name('home');
18 | Route::get('/login','UserController@login')->name('user.login');
19 | Route::post('/login','UserController@postLogin');
20 | Route::group(['middleware' => 'role'], function () {
21 | Route::resource('user','UserController');
22 | Route::get('/dashboard','DashboardController@index')->name('user.dashboard');
23 | Route::get('/profile','UserController@profile')->name('user.profile');
24 | Route::get('/logout','UserController@logout')->name('user.logout');
25 | Route::get('/lock','UserController@lock')->name('user.lock');
26 | Route::resource('area','AreaController');
27 | Route::resource('project','ProjectController');
28 | Route::get('/project-by-type/{ptype}','ProjectController@projectByType')->name('project.bytype');
29 | Route::resource('flat','FlatController');
30 | Route::get('/flats-by-project/{project}','FlatController@flatByProject')->name('flat.byproject');
31 | Route::resource('customer','CustomerController');
32 | Route::get('/customer-ajax/{customerId}','CustomerController@customerAjax')->name('customer.ajax');
33 | Route::resource('rent','RentController');
34 | Route::get('/rent/customers/{projectId}','RentController@customerByProject')->name('customer.byproject');
35 | Route::get('/rent/flats/{customerId}/{projectId}','RentController@flatsByCustomer')->name('flat.bycustomer');
36 | Route::resource('collection','CollectionController');
37 | Route::resource('expense','ExpenseController');
38 |
39 | Route::get('/report/projects','ReportController@projects')->name('report.projects');
40 | Route::get('/report/flats','ReportController@flats')->name('report.flats');
41 | Route::get('/report/customers','ReportController@customers')->name('report.customers');
42 | Route::get('/report/rents','ReportController@rents')->name('report.rents');
43 | Route::get('/report/collections','ReportController@collections')->name('report.collections');
44 | Route::get('/report/collections-summary','ReportController@collectionsSummary')->name('report.collectionSummary');
45 | Route::get('/report/dues','ReportController@dues')->name('report.dues');
46 | Route::get('/report/expenses','ReportController@expenses')->name('report.expenses');
47 | Route::get('/report/balance','ReportController@balance')->name('report.balance');
48 | Route::get('/report/rental-status','ReportController@rentaStatus')->name('report.rentalStatus');
49 |
50 |
51 | Route::get('/mail-compose','DashboardController@mailCompose')->name('mail.compose');
52 | Route::post('/mail-send','DashboardController@mailSend')->name('mail.send');
53 |
54 | });
55 |
56 | Route::get('/make-link',function(){
57 | App::make('files')->link(storage_path('app/public'), public_path('storage'));
58 | return 'Done link';
59 | });
60 | Route::get('/clear-cache', function() {
61 | $exitCode = Artisan::call('cache:clear');
62 | $exitCode = Artisan::call('view:clear');
63 | $exitCode = Artisan::call('route:clear');
64 | return 'clear cache';
65 | });
66 | Route::get('/notification-read','DashboardController@deleteNotification')->name('notification.read');
67 | Route::get('/notification','DashboardController@fetchAll')->name('notification.fetch.all');
68 |
--------------------------------------------------------------------------------
/app/Http/Controllers/ExpenseController.php:
--------------------------------------------------------------------------------
1 | validate($request, [
34 | 'projects_id' => 'required|integer',
35 | 'expenseNo' => 'required',
36 | 'entryDate' => 'required',
37 | 'items' => 'required',
38 | 'amounts' => 'required'
39 | ]);
40 |
41 | $items = $request->get('items');
42 | $amounts = $request->get('amounts');
43 | $data = $request->all();
44 | $data['users_id'] = auth()->user()->id;
45 |
46 | DB::beginTransaction();
47 | try {
48 | try {
49 | $expense = Expense::create($data);
50 | }catch(\Exception $e)
51 | {
52 | DB::rollback();
53 | throw $e;
54 | }
55 |
56 | $totalAmount = 0;
57 | $dataItems = [];
58 | foreach ($items as $index => $item){
59 | $dataItem = [
60 | 'expenses_id' => $expense->id,
61 | 'name' => $item,
62 | 'amount' => $amounts[$index]
63 | ];
64 | $totalAmount += $amounts[$index];
65 | array_push($dataItems,$dataItem);
66 | }
67 | $expense->amount = $totalAmount;
68 | $expense->save();
69 |
70 | try{
71 | ExpenseItem::insert($dataItems);
72 | }catch(\Exception $e)
73 | {
74 | DB::rollback();
75 | throw $e;
76 | }
77 |
78 | }
79 | catch(\Exception $e){
80 | $trimmed = str_replace(array("\r", "\n","'","`"), ' ', $e->getMessage());
81 | $notification= array('title' => 'Data Store Failed', 'body' => $trimmed);
82 | return redirect()->route('expense.create')->with("error",$notification);
83 | }
84 | DB::commit();
85 |
86 | $notification= array('title' => 'Data Store', 'body' => 'Expense added successfully');
87 | return redirect()->route('expense.create')->with('success',$notification);
88 | }
89 |
90 | public function index()
91 | {
92 | $expenses = Expense::orderBy('created_at','desc')->with('project')->with('entry')->paginate(10);
93 | return view('expense.index',compact('expenses'));
94 | }
95 |
96 | public function show($id)
97 | {
98 | $expense = Expense::with('item')->findOrFail($id);
99 | return $expense;
100 | }
101 |
102 | public function destroy($id)
103 | {
104 | $expense = Expense::findOrFail($id);
105 | $expense->delete();
106 | $notification= array('title' => 'Data Remove', 'body' => 'Expense deleted Successfully');
107 | return redirect()->route('expense.index')->with('success',$notification);
108 | }
109 |
110 |
111 | }
112 |
--------------------------------------------------------------------------------
/public/assets/js/libs/flot/jquery.flot.canvas.min.js:
--------------------------------------------------------------------------------
1 | /* Javascript plotting library for jQuery, version 0.8.3.
2 |
3 | Copyright (c) 2007-2014 IOLA and Ole Laursen.
4 | Licensed under the MIT license.
5 |
6 | */
7 | (function($){var options={canvas:true};var render,getTextInfo,addText;var hasOwnProperty=Object.prototype.hasOwnProperty;function init(plot,classes){var Canvas=classes.Canvas;if(render==null){getTextInfo=Canvas.prototype.getTextInfo,addText=Canvas.prototype.addText,render=Canvas.prototype.render}Canvas.prototype.render=function(){if(!plot.getOptions().canvas){return render.call(this)}var context=this.context,cache=this._textCache;context.save();context.textBaseline="middle";for(var layerKey in cache){if(hasOwnProperty.call(cache,layerKey)){var layerCache=cache[layerKey];for(var styleKey in layerCache){if(hasOwnProperty.call(layerCache,styleKey)){var styleCache=layerCache[styleKey],updateStyles=true;for(var key in styleCache){if(hasOwnProperty.call(styleCache,key)){var info=styleCache[key],positions=info.positions,lines=info.lines;if(updateStyles){context.fillStyle=info.font.color;context.font=info.font.definition;updateStyles=false}for(var i=0,position;position=positions[i];i++){if(position.active){for(var j=0,line;line=position.lines[j];j++){context.fillText(lines[j].text,line[0],line[1])}}else{positions.splice(i--,1)}}if(positions.length==0){delete styleCache[key]}}}}}}}context.restore()};Canvas.prototype.getTextInfo=function(layer,text,font,angle,width){if(!plot.getOptions().canvas){return getTextInfo.call(this,layer,text,font,angle,width)}var textStyle,layerCache,styleCache,info;text=""+text;if(typeof font==="object"){textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family}else{textStyle=font}layerCache=this._textCache[layer];if(layerCache==null){layerCache=this._textCache[layer]={}}styleCache=layerCache[textStyle];if(styleCache==null){styleCache=layerCache[textStyle]={}}info=styleCache[text];if(info==null){var context=this.context;if(typeof font!=="object"){var element=$("
").css("position","absolute").addClass(typeof font==="string"?font:null).appendTo(this.getTextLayer(layer));font={lineHeight:element.height(),style:element.css("font-style"),variant:element.css("font-variant"),weight:element.css("font-weight"),family:element.css("font-family"),color:element.css("color")};font.size=element.css("line-height",1).height();element.remove()}textStyle=font.style+" "+font.variant+" "+font.weight+" "+font.size+"px "+font.family;info=styleCache[text]={width:0,height:0,positions:[],lines:[],font:{definition:textStyle,color:font.color}};context.save();context.font=textStyle;var lines=(text+"").replace(/
|\r\n|\r/g,"\n").split("\n");for(var i=0;i #mq-test-1 { width: 42px; }',d.insertBefore(f,e),c=42===g.offsetWidth,d.removeChild(f),{matches:c,media:a}}}(document);
4 |
5 | /*! Respond.js v1.1.0: min/max-width media query polyfill. (c) Scott Jehl. MIT/GPLv2 Lic. j.mp/respondjs */
6 | (function(a){"use strict";function x(){u(!0)}var b={};a.respond=b,b.update=function(){},b.mediaQueriesSupported=a.matchMedia&&a.matchMedia("only all").matches,b.mediaQueriesSupported;var q,r,t,c=a.document,d=c.documentElement,e=[],f=[],g=[],h={},i=30,j=c.getElementsByTagName("head")[0]||d,k=c.getElementsByTagName("base")[0],l=j.getElementsByTagName("link"),m=[],n=function(){for(var b=0;l.length>b;b++){var c=l[b],d=c.href,e=c.media,f=c.rel&&"stylesheet"===c.rel.toLowerCase();d&&f&&!h[d]&&(c.styleSheet&&c.styleSheet.rawCssText?(p(c.styleSheet.rawCssText,d,e),h[d]=!0):(!/^([a-zA-Z:]*\/\/)/.test(d)&&!k||d.replace(RegExp.$1,"").split("/")[0]===a.location.host)&&m.push({href:d,media:e}))}o()},o=function(){if(m.length){var a=m.shift();v(a.href,function(b){p(b,a.href,a.media),h[a.href]=!0,setTimeout(function(){o()},0)})}},p=function(a,b,c){var d=a.match(/@media[^\{]+\{([^\{\}]*\{[^\}\{]*\})+/gi),g=d&&d.length||0;b=b.substring(0,b.lastIndexOf("/"));var h=function(a){return a.replace(/(url\()['"]?([^\/\)'"][^:\)'"]+)['"]?(\))/g,"$1"+b+"$2$3")},i=!g&&c;b.length&&(b+="/"),i&&(g=1);for(var j=0;g>j;j++){var k,l,m,n;i?(k=c,f.push(h(a))):(k=d[j].match(/@media *([^\{]+)\{([\S\s]+?)$/)&&RegExp.$1,f.push(RegExp.$2&&h(RegExp.$2))),m=k.split(","),n=m.length;for(var o=0;n>o;o++)l=m[o],e.push({media:l.split("(")[0].match(/(only\s+)?([a-zA-Z]+)\s?/)&&RegExp.$2||"all",rules:f.length-1,hasquery:l.indexOf("(")>-1,minw:l.match(/\(min\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||""),maxw:l.match(/\(max\-width:[\s]*([\s]*[0-9\.]+)(px|em)[\s]*\)/)&&parseFloat(RegExp.$1)+(RegExp.$2||"")})}u()},s=function(){var a,b=c.createElement("div"),e=c.body,f=!1;return b.style.cssText="position:absolute;font-size:1em;width:1em",e||(e=f=c.createElement("body"),e.style.background="none"),e.appendChild(b),d.insertBefore(e,d.firstChild),a=b.offsetWidth,f?d.removeChild(e):e.removeChild(b),a=t=parseFloat(a)},u=function(a){var b="clientWidth",h=d[b],k="CSS1Compat"===c.compatMode&&h||c.body[b]||h,m={},n=l[l.length-1],o=(new Date).getTime();if(a&&q&&i>o-q)return clearTimeout(r),r=setTimeout(u,i),void 0;q=o;for(var p in e)if(e.hasOwnProperty(p)){var v=e[p],w=v.minw,x=v.maxw,y=null===w,z=null===x,A="em";w&&(w=parseFloat(w)*(w.indexOf(A)>-1?t||s():1)),x&&(x=parseFloat(x)*(x.indexOf(A)>-1?t||s():1)),v.hasquery&&(y&&z||!(y||k>=w)||!(z||x>=k))||(m[v.media]||(m[v.media]=[]),m[v.media].push(f[v.rules]))}for(var B in g)g.hasOwnProperty(B)&&g[B]&&g[B].parentNode===j&&j.removeChild(g[B]);for(var C in m)if(m.hasOwnProperty(C)){var D=c.createElement("style"),E=m[C].join("\n");D.type="text/css",D.media=C,j.insertBefore(D,n.nextSibling),D.styleSheet?D.styleSheet.cssText=E:D.appendChild(c.createTextNode(E)),g.push(D)}},v=function(a,b){var c=w();c&&(c.open("GET",a,!0),c.onreadystatechange=function(){4!==c.readyState||200!==c.status&&304!==c.status||b(c.responseText)},4!==c.readyState&&c.send(null))},w=function(){var b=!1;try{b=new a.XMLHttpRequest}catch(c){b=new a.ActiveXObject("Microsoft.XMLHTTP")}return function(){return b}}();n(),b.update=n,a.addEventListener?a.addEventListener("resize",x,!1):a.attachEvent&&a.attachEvent("onresize",x)})(this);
7 |
--------------------------------------------------------------------------------
/app/Http/Controllers/CollectionController.php:
--------------------------------------------------------------------------------
1 | where('active','Yes')->pluck('text','id');
18 | // $customers->prepend('','');
19 | $collectionTotal = RentCollection::count()+1;
20 | $collectionNo = "C";
21 | if($collectionTotal<10){
22 | $collectionNo .= "00".(string)$collectionTotal;
23 | }
24 | elseif($collectionTotal<100){
25 | $collectionNo .= "0".(string)$collectionTotal;
26 | }
27 | else{
28 | $collectionNo .= (string)$collectionTotal;
29 | }
30 |
31 | return view('collection.create',compact('today','collectionNo'));
32 | }
33 |
34 | public function store(Request $request)
35 | {
36 | $rules = [
37 | 'customers_id' => 'required|numeric',
38 | 'rents_id' => 'required|numeric',
39 | 'amount' => 'required|numeric',
40 | 'collectionType' => 'required'
41 | ];
42 | if($request->get('collectionType')=="Cheque"){
43 | $rules['chequeNo'] = 'required';
44 | $rules['bankName'] = 'required';
45 | $rules['branchName'] = 'required';
46 | }
47 | if($request->get('collectionType')=="P.O"){
48 | $rules['poNo'] = 'required';
49 | $rules['poName'] = 'required';
50 | $rules['poCode'] = 'required';
51 | }
52 | //validate form
53 | $this->validate($request,$rules);
54 | $data = $request->all();
55 | $data['users_id'] = auth()->user()->id;
56 | // //advance money d
57 | // if($data['collectionType']=="Cash"){
58 | // $rent = Rent::where('id',$data['rents_id'])->first();
59 | // $paidAmount = floatval($data['amount']);
60 | //
61 | // RentCollection::create($data);
62 | // if($rent->advanceMoney >= $paidAmount){
63 | // $rent->advanceMoney -= $paidAmount;
64 | // $data['fromAdvance'] = 1;
65 | // $rent->save();
66 | // }
67 | //
68 | // }
69 | // else{
70 | RentCollection::create($data);
71 | //}
72 | //notification code
73 | $customer = Customer::where('id',$data['customers_id'])->first();
74 | $myNoti = new MyNotify();
75 | $myNoti->title = $customer->name;
76 | $myNoti->value = $data['amount'];
77 | $myNoti->notiType = "collection";
78 | $myNoti->save();
79 | //end mynoti
80 | $notification= array('title' => 'Data Store', 'body' => 'Rent collected Successfully');
81 | return redirect()->route('collection.create')->with('success',$notification);
82 | }
83 |
84 | public function index()
85 | {
86 | $collections = RentCollection::orderBy('created_at','desc')->with('customer')->with('entry')->paginate(10);
87 | return view('collection.index',compact('collections'));
88 | }
89 |
90 | public function destroy($id)
91 | {
92 | $collection = RentCollection::findOrFail($id);
93 | if($collection->fromAdvance == 1){
94 | $rent = Rent::findOrFail($collection->rents_id);
95 | $rent->advanceMoney += $collection->amount;
96 | $rent->save();
97 | }
98 |
99 | $collection->delete();
100 | $notification= array('title' => 'Data Remove', 'body' => 'Collection deleted Successfully');
101 | return redirect()->route('collection.index')->with('success',$notification);
102 | }
103 |
104 |
105 | }
106 |
--------------------------------------------------------------------------------
/public/assets/js/libs/spin.js/spin.min.js:
--------------------------------------------------------------------------------
1 | //fgnass.github.com/spin.js#v2.0.1
2 | !function(a,b){"object"==typeof exports?module.exports=b():"function"==typeof define&&define.amd?define(b):a.Spinner=b()}(this,function(){"use strict";function a(a,b){var c,d=document.createElement(a||"div");for(c in b)d[c]=b[c];return d}function b(a){for(var b=1,c=arguments.length;c>b;b++)a.appendChild(arguments[b]);return a}function c(a,b,c,d){var e=["opacity",b,~~(100*a),c,d].join("-"),f=.01+c/d*100,g=Math.max(1-(1-a)/b*(100-f),a),h=j.substring(0,j.indexOf("Animation")).toLowerCase(),i=h&&"-"+h+"-"||"";return l[e]||(m.insertRule("@"+i+"keyframes "+e+"{0%{opacity:"+g+"}"+f+"%{opacity:"+a+"}"+(f+.01)+"%{opacity:1}"+(f+b)%100+"%{opacity:"+a+"}100%{opacity:"+g+"}}",m.cssRules.length),l[e]=1),e}function d(a,b){var c,d,e=a.style;for(b=b.charAt(0).toUpperCase()+b.slice(1),d=0;d',c)}m.addRule(".spin-vml","behavior:url(#default#VML)"),h.prototype.lines=function(a,d){function f(){return e(c("group",{coordsize:k+" "+k,coordorigin:-j+" "+-j}),{width:k,height:k})}function h(a,h,i){b(m,b(e(f(),{rotation:360/d.lines*a+"deg",left:~~h}),b(e(c("roundrect",{arcsize:d.corners}),{width:j,height:d.width,left:d.radius,top:-d.width>>1,filter:i}),c("fill",{color:g(d.color,a),opacity:d.opacity}),c("stroke",{opacity:0}))))}var i,j=d.length+d.width,k=2*j,l=2*-(d.width+d.length)+"px",m=e(f(),{position:"absolute",top:l,left:l});if(d.shadow)for(i=1;i<=d.lines;i++)h(i,-2,"progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)");for(i=1;i<=d.lines;i++)h(i);return b(a,m)},h.prototype.opacity=function(a,b,c,d){var e=a.firstChild;d=d.shadow&&d.lines||0,e&&b+d>1)+"px"})}for(var i,k=0,l=(f.lines-1)*(1-f.direction)/2;k');
58 | }
59 | });
60 | };
61 |
62 | // =========================================================================
63 | // FLOATING LABELS
64 | // =========================================================================
65 |
66 | p._initFloatingLabels = function () {
67 | var o = this;
68 |
69 | $('.floating-label .form-control').on('keyup change', function (e) {
70 | var input = $(e.currentTarget);
71 |
72 | if ($.trim(input.val()) !== '') {
73 | input.addClass('dirty').removeClass('static');
74 | } else {
75 | input.removeClass('dirty').removeClass('static');
76 | }
77 | });
78 |
79 | $('.floating-label .form-control').each(function () {
80 | var input = $(this);
81 |
82 | if ($.trim(input.val()) !== '') {
83 | input.addClass('static').addClass('dirty');
84 | }
85 | });
86 |
87 | $('.form-horizontal .form-control').each(function () {
88 | $(this).after('');
89 | });
90 | };
91 |
92 | // =========================================================================
93 | // VALIDATION
94 | // =========================================================================
95 |
96 | p._initValidation = function () {
97 | if (!$.isFunction($.fn.validate)) {
98 | return;
99 | }
100 | $.validator.setDefaults({
101 | highlight: function (element) {
102 | $(element).closest('.form-group').addClass('has-error');
103 | },
104 | unhighlight: function (element) {
105 | $(element).closest('.form-group').removeClass('has-error');
106 | },
107 | errorElement: 'span',
108 | errorClass: 'help-block',
109 | errorPlacement: function (error, element) {
110 | if (element.parent('.input-group').length) {
111 | error.insertAfter(element.parent());
112 | }
113 | else if (element.parent('label').length) {
114 | error.insertAfter(element.parent());
115 | }
116 | else {
117 | error.insertAfter(element);
118 | }
119 | }
120 | });
121 |
122 | $('.form-validate').each(function () {
123 | var validator = $(this).validate();
124 | $(this).data('validator', validator);
125 | });
126 | };
127 |
128 | // =========================================================================
129 | // DEFINE NAMESPACE
130 | // =========================================================================
131 |
132 | window.materialadmin.AppForm = new AppForm;
133 | }(this.materialadmin, jQuery)); // pass in (namespace, jQuery):
134 |
--------------------------------------------------------------------------------
/config/database.php:
--------------------------------------------------------------------------------
1 | PDO::FETCH_OBJ,
17 |
18 | /*
19 | |--------------------------------------------------------------------------
20 | | Default Database Connection Name
21 | |--------------------------------------------------------------------------
22 | |
23 | | Here you may specify which of the database connections below you wish
24 | | to use as your default connection for all database work. Of course
25 | | you may use many connections at once using the Database library.
26 | |
27 | */
28 |
29 | 'default' => env('DB_CONNECTION', 'mysql'),
30 |
31 | /*
32 | |--------------------------------------------------------------------------
33 | | Database Connections
34 | |--------------------------------------------------------------------------
35 | |
36 | | Here are each of the database connections setup for your application.
37 | | Of course, examples of configuring each database platform that is
38 | | supported by Laravel is shown below to make development simple.
39 | |
40 | |
41 | | All database work in Laravel is done through the PHP PDO facilities
42 | | so make sure you have the driver for your particular database of
43 | | choice installed on your machine before you begin development.
44 | |
45 | */
46 |
47 | 'connections' => [
48 |
49 | 'sqlite' => [
50 | 'driver' => 'sqlite',
51 | 'database' => env('DB_DATABASE', database_path('database.sqlite')),
52 | 'prefix' => '',
53 | ],
54 |
55 | 'mysql' => [
56 | 'driver' => 'mysql',
57 | 'host' => env('DB_HOST', 'localhost'),
58 | 'port' => env('DB_PORT', '3306'),
59 | 'database' => env('DB_DATABASE', 'forge'),
60 | 'username' => env('DB_USERNAME', 'forge'),
61 | 'password' => env('DB_PASSWORD', ''),
62 | 'charset' => 'utf8',
63 | 'collation' => 'utf8_unicode_ci',
64 | 'prefix' => '',
65 | 'strict' => true,
66 | 'engine' => null,
67 | ],
68 |
69 | 'pgsql' => [
70 | 'driver' => 'pgsql',
71 | 'host' => env('DB_HOST', 'localhost'),
72 | 'port' => env('DB_PORT', '5432'),
73 | 'database' => env('DB_DATABASE', 'forge'),
74 | 'username' => env('DB_USERNAME', 'forge'),
75 | 'password' => env('DB_PASSWORD', ''),
76 | 'charset' => 'utf8',
77 | 'prefix' => '',
78 | 'schema' => 'public',
79 | 'sslmode' => 'prefer',
80 | ],
81 |
82 | ],
83 |
84 | /*
85 | |--------------------------------------------------------------------------
86 | | Migration Repository Table
87 | |--------------------------------------------------------------------------
88 | |
89 | | This table keeps track of all the migrations that have already run for
90 | | your application. Using this information, we can determine which of
91 | | the migrations on disk haven't actually been run in the database.
92 | |
93 | */
94 |
95 | 'migrations' => 'migrations',
96 |
97 | /*
98 | |--------------------------------------------------------------------------
99 | | Redis Databases
100 | |--------------------------------------------------------------------------
101 | |
102 | | Redis is an open source, fast, and advanced key-value store that also
103 | | provides a richer set of commands than a typical key-value systems
104 | | such as APC or Memcached. Laravel makes it easy to dig right in.
105 | |
106 | */
107 |
108 | 'redis' => [
109 |
110 | 'cluster' => false,
111 |
112 | 'default' => [
113 | 'host' => env('REDIS_HOST', 'localhost'),
114 | 'password' => env('REDIS_PASSWORD', null),
115 | 'port' => env('REDIS_PORT', 6379),
116 | 'database' => 0,
117 | ],
118 |
119 | ],
120 |
121 | ];
122 |
--------------------------------------------------------------------------------