This commit is contained in:
Deon George 2017-08-06 09:53:57 +10:00
parent d7f6bde3a5
commit c7e2a6866e
60 changed files with 70970 additions and 529 deletions

View File

@ -28,4 +28,12 @@ class Account extends Authenticatable
]; ];
protected $table = 'account'; protected $table = 'account';
/**
* Check if the user is an admin user
*/
public function isAdministrator()
{
return TRUE; //@todo
}
} }

View File

@ -5,9 +5,11 @@ namespace App\Http\Controllers\Auth;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers; use Illuminate\Foundation\Auth\AuthenticatesUsers;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class LoginController extends Controller class LoginController extends Controller
{ {
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Login Controller | Login Controller
@ -40,6 +42,11 @@ class LoginController extends Controller
$this->middleware('guest', ['except' => 'logout']); $this->middleware('guest', ['except' => 'logout']);
} }
protected function guard()
{
return Auth::guard('web');
}
/** /**
* Returns field name to use at login. * Returns field name to use at login.
* *

View File

@ -50,6 +50,7 @@ class Kernel extends HttpKernel
'acl' => \Kodeine\Acl\Middleware\HasPermission::class, 'acl' => \Kodeine\Acl\Middleware\HasPermission::class,
'auth' => \Illuminate\Auth\Middleware\Authenticate::class, 'auth' => \Illuminate\Auth\Middleware\Authenticate::class,
'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class,
'admin' => \App\Http\Middleware\CheckAdmin::class,
'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class,
'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,

View File

@ -0,0 +1,58 @@
<?php
/**
* Created by PhpStorm.
* User: deon
* Date: 4/8/17
* Time: 9:33 PM
*/
namespace App\Http\Middleware;
use Closure;
use Illuminate\Contracts\Auth\Guard;
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
class CheckAdmin {
/**
* The Guard implementation.
*
* @var Guard
*/
protected $auth;
/**
* Create a new filter instance.
*
* @param Guard $auth
* @return void
*/
public function __construct(Guard $auth)
{
$this->auth = $auth;
}
/**
* Handle an incoming request.
*
* @param Request $request
* @param Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ( ! $this->auth->user()->isAdministrator())
{
if ($request->ajax())
{
return response('Forbbiden.', 403);
}
else
{
throw new AccessDeniedHttpException;
}
}
return $next($request);
}
}

View File

@ -13,6 +13,7 @@ return [
*/ */
'name' => env('APP_NAME', 'B2C2B'), 'name' => env('APP_NAME', 'B2C2B'),
'copyright' => env('APP_COPYRIGHT', '&copy; Copywright'),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View File

@ -57,6 +57,12 @@ return [
'themes' => [ 'themes' => [
'adminlte-be' => [
'extends' => null,
'views-path' => 'backend/adminlte',
'asset-path' => 'theme/backend/adminlte',
],
'metronic-fe' => [ 'metronic-fe' => [
'extends' => null, 'extends' => null,
'views-path' => 'frontend/metronic', 'views-path' => 'frontend/metronic',
@ -69,6 +75,12 @@ return [
'asset-path' => 'theme/backend/metronic', 'asset-path' => 'theme/backend/metronic',
], ],
'sbadmin-be' => [
'extends' => null,
'views-path' => 'backend/sbadmin',
'asset-path' => 'theme/backend/sbadmin',
],
], ],
]; ];

23629
public/theme/backend/adminlte/css/all.css vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,45 @@
<style>
#favourite.selected {
color: orange;
}
</style>
@extends('adminlte::layouts.app')
@section('htmlheader_title')
{{ $co->name }}|{{ $name }}
@endsection
@section('contentheader_title')
<span id="favourite" class="@if(Auth::user()->accounts->contains($ao->id)) selected @endif"><i class="fa fa-star" ></i></span> Detail for {{$ao->name}}
@endsection
@section('contentheader_description')
{{ $ido->import_date->format('Y-m-d') }}
@endsection
@section('main-content')
@include('widgets.account')
@yield('account')
@endsection
@section('page-scripts')
<script type="text/javascript">
$(document).ready(function() {
$("#favourite").click(function() {
var item = this;
//alert('{{csrf_token()}}');
$.ajax({
'type':'POST',
'data':'id={{$ao->id}}&_token={{csrf_token()}}',
'success':function() {
$(item).toggleClass('selected');
},
'error':function(){ alert('That didnt work? Please try again....') },
'url':'{{ url('favourite') }}',
'cache':false
})
});
});
</script>
@append

View File

@ -0,0 +1,46 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Reset Password</div>
<div class="panel-body">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<form class="form-horizontal" role="form" method="POST" action="{{ route('password.email') }}">
{{ csrf_field() }}
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required>
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
Send Password Reset Link
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,76 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Reset Password</div>
<div class="panel-body">
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
<form class="form-horizontal" role="form" method="POST" action="{{ route('password.request') }}">
{{ csrf_field() }}
<input type="hidden" name="token" value="{{ $token }}">
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control" name="email" value="{{ $email or old('email') }}" required autofocus>
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
<label for="password" class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control" name="password" required>
@if ($errors->has('password'))
<span class="help-block">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('password_confirmation') ? ' has-error' : '' }}">
<label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
@if ($errors->has('password_confirmation'))
<span class="help-block">
<strong>{{ $errors->first('password_confirmation') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
Reset Password
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,76 @@
@extends('layouts.app')
@section('content')
<div class="container">
<div class="row">
<div class="col-md-8 col-md-offset-2">
<div class="panel panel-default">
<div class="panel-heading">Register</div>
<div class="panel-body">
<form class="form-horizontal" role="form" method="POST" action="{{ route('register') }}">
{{ csrf_field() }}
<div class="form-group{{ $errors->has('name') ? ' has-error' : '' }}">
<label for="name" class="col-md-4 control-label">Name</label>
<div class="col-md-6">
<input id="name" type="text" class="form-control" name="name" value="{{ old('name') }}" required autofocus>
@if ($errors->has('name'))
<span class="help-block">
<strong>{{ $errors->first('name') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}">
<label for="email" class="col-md-4 control-label">E-Mail Address</label>
<div class="col-md-6">
<input id="email" type="email" class="form-control" name="email" value="{{ old('email') }}" required>
@if ($errors->has('email'))
<span class="help-block">
<strong>{{ $errors->first('email') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}">
<label for="password" class="col-md-4 control-label">Password</label>
<div class="col-md-6">
<input id="password" type="password" class="form-control" name="password" required>
@if ($errors->has('password'))
<span class="help-block">
<strong>{{ $errors->first('password') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group">
<label for="password-confirm" class="col-md-4 control-label">Confirm Password</label>
<div class="col-md-6">
<input id="password-confirm" type="password" class="form-control" name="password_confirmation" required>
</div>
</div>
<div class="form-group">
<div class="col-md-6 col-md-offset-4">
<button type="submit" class="btn btn-primary">
Register
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,63 @@
@extends('adminlte::page')
@section('htmlheader_title')
Authorise an Email address
@endsection
@section('main-content')
<div class="container-fluid spark-screen">
<div class="row">
<div class="col-md-5 col-md-offset-1">
<div class="box box-solid">
<div class="box-header with-border">
<h3 class="box-title">Authorise Email address</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div>
<!-- /.box-tools -->
</div>
<!-- /.box-header -->
<div class="box-body">
<form role="form" method="POST">
{{ csrf_field() }}
<div class="box-body">
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
@if ($doorman->count())
<div class="alert alert-success">
<ul>
@foreach ($doorman->all() as $invite)
<li>Invite Code: <strong>{{ $invite->code }}</strong> for: <strong>{{ $invite->for }}</strong> valid {{ $invite->max }} times until {{ $invite->valid_until }}.</li>
@endforeach
</ul>
</div>
@endif
<div class="form-group">
<label for="email">Email address</label>
<input type="email" class="form-control" id="email" name="email" placeholder="Enter email">
</div>
</div>
<!-- /.box-body -->
<div class="box-footer">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
</div>
<!-- /.box-body -->
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,186 @@
@extends('adminlte::layouts.app')
@section('htmlheader_title')
{{ trans('adminlte_lang::message.home') }}
@endsection
@section('contentheader_title')
{{ $name }}
@endsection
@section('contentheader_description')
{{ $ido->import_date->format('Y-m-d') }}
@endsection
@section('main-content')
@php
$data = collect();
@endphp
<div class="col-sm-3 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">IBM</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<div id="chart"></div>
</div>
</div>
</div>
<div class="col-sm-9 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">IBM</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<table width="100%" class="table table-striped table-bordered table-hover" style="color: #000000;" id="brand">
<thead>
<tr>
<th rowspan="1" colspan="3">Categories</th>
<th rowspan="2" class="text-right bg-primary">Entitled</th>
<th colspan="3" class="text-center" style="background-color: #5cb85c !important">Deployed</th>
<th rowspan="2" style="background-color: #d6d6c2 !important">Behind</th>
<th rowspan="2" class="text-right" style="background-color: #f0ad4e !important">Assigned</th>
<th rowspan="2" class="text-right" style="background-color: #d9534f !important; color: white;">Unassigned</th>
</tr>
<tr>
<th>Unit</th>
<th>Segment</th>
<th>Category</th>
<th style="background-color: #5cb85c !important">Actual</th>
<th style="background-color: #7cd87c !important">Ahead</th>
<th style="background-color: #0099e6 !important">Over</th>
</tr>
</thead>
<tbody>
@foreach ($scope->get()->sortBy(function ($item,$key) { return sprintf('%s.%s.%s',$item->segment->unit->name,$item->segment->name,$item->name); }) as $o)
@php
$data->push($o->summary($ido)->pop());
$filter = $o->summary($ido);
if (! $e=$filter->sum('entitled')) continue;
@endphp
<tr>
<td>{{ $o->segment->unit->name }}</td>
<td>{{ $o->segment->name }}</td>
<td><a href="{{ $next ? url('/'.$next.'/'.$o->id.'/'.$ido->id) : '#' }}"> {{ $o->name }}</a></td>
<td class="text-right bg-primary" style="!important">{{ number_format($e,2) }}</td>
<td class="text-right" style="background-color: #5cb85c !important">{{ number_format($filter->sum('actual')/$e*100,1) }}%</td>
<td class="text-right" style="background-color: #7cd87c !important">{{ number_format($filter->sum('ahead')/$e*100,1) }}%</td>
<td class="text-right" style="background-color: #0099e6 !important">{{ number_format($filter->sum('over')/$e*100,1) }}%</td>
<td class="text-right" style="background-color: #d6d6c2 !important">{{ number_format($filter->sum('behind')/$e*100,1) }}%</td>
<td class="text-right" style="background-color: #f0ad4e !important">{{ number_format($filter->sum('assigned')/$e*100,1) }}%</td>
<td class="text-right" style="background-color: #d9534f !important; color: white;">{{ number_format($filter->sum('unassigned')/$e*100,1) }}%</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
</div>
@endsection
@section('page-scripts')
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<script src="{{ url('/plugins/dataTables.bootstrap.min.js') }}"></script>
<script src="{{ url('/plugins/jquery.dataTables.js') }}"></script>
<link href="{{ url('/plugins/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css">
<link href="{{ url('/plugins/dataTables.bootstrap.css') }}" rel="stylesheet" type="text/css">
<script type="text/javascript">
revenueData = [];
revenueData.push({ color: '#337ab7', name: 'Entitled', y: {{ $data->sum('entitled') }}, });
revenueData.push({ color: '#0099e6', name: 'Over', y: {{ $data->sum('over') }}, });
riskData = [];
riskData.push({ color: '#004d00', name: 'Actual', y: {{ $data->sum('deployed') }}, });
riskData.push({ color: '#7cd87c', name: 'Ahead', y: {{ $data->sum('ahead') }}, });
riskData.push({ color: '#d6d6c2', name: 'Behind', y: {{ $data->sum('behind') }}, });
riskData.push({ color: '#f0ad4e', name: 'Assigned', y: {{ $data->sum('assigned') }}, });
riskData.push({ color: '#d9534f', name: 'Unassigned', y: {{ $data->sum('unassigned') }}, });
// Create the chart
Highcharts.chart('chart', {
chart: {
type: 'pie',
},
title: {
text: ''
},
yAxis: {
title: {
text: ''
}
},
plotOptions: {
pie: {
shadow: false,
center: ['50%', '40%'],
dataLabels: {
enabled: true,
crop: false,
},
},
},
exporting: {
enabled: false
},
credits: {
enabled: false
},
tooltip: {
valuePrefix: '$',
valueSuffix: 'm',
},
series: [{
name: 'Revenue',
data: revenueData,
size: '80%',
innerSize: '70%',
dataLabels: {
/*
formatter: function () {
return this.y > 5 ? this.point.name : null;
},
*/
color: '#ffffff',
distance: 20,
}
}, {
name: 'Risk',
data: riskData,
size: '60%',
innerSize: '70%',
dataLabels: {
/*
formatter: function () {
// display only if larger than 1
return this.y > 1 ? '<b>' + this.point.name + ':</b> $' + this.y + 'm' : null;
},
*/
distance: 20,
}
}]
});
$(document).ready(function() {
$("#brand").DataTable({
"pageLength": 20,
});
});
</script>
@append

View File

@ -0,0 +1,20 @@
@extends('adminlte::layouts.errors')
@section('htmlheader_title')
{{ trans('adminlte_lang::message.servererror') }}
@endsection
@section('main-content')
<div class="error-page">
<h2 class="headline text-red">403</h2>
<div class="error-content">
<h3><i class="fa fa-warning text-red"></i> Oops! Bad Authentication</h3>
<p>
Sorry, your authentication failed.
{{ trans('adminlte_lang::message.mainwhile') }} <a href='{{ url('/home') }}'>{{ trans('adminlte_lang::message.returndashboard') }}</a>.
</p>
<br>
</div>
</div><!-- /.error-page -->
@endsection

View File

@ -0,0 +1,20 @@
@extends('adminlte::layouts.errors')
@section('htmlheader_title')
{{ trans('adminlte_lang::message.pagenotfound') }}
@endsection
@section('main-content')
<div class="error-page">
<h2 class="headline text-yellow">404</h2>
<div class="error-content">
<h3><i class="fa fa-warning text-yellow"></i> Oops! {{ trans('adminlte_lang::message.pagenotfound') }}.</h3>
<p>
{{ trans('adminlte_lang::message.notfindpage') }}
{{ trans('adminlte_lang::message.mainwhile') }} <a href='{{ url('/home') }}'>{{ trans('adminlte_lang::message.returndashboard') }}</a>.
</p>
<br/>
</div><!-- /.error-content -->
</div><!-- /.error-page -->
@endsection

View File

@ -0,0 +1,20 @@
@extends('adminlte::layouts.errors')
@section('htmlheader_title')
{{ trans('adminlte_lang::message.servererror') }}
@endsection
@section('main-content')
<div class="error-page">
<h2 class="headline text-red">500</h2>
<div class="error-content">
<h3><i class="fa fa-warning text-red"></i> Oops! {{ trans('adminlte_lang::message.somethingwrong') }}</h3>
<h4><i class="text-red"></i> {{ trans($msg) }}</h4>
<p>
{{ trans('adminlte_lang::message.wewillwork') }}
{{ trans('adminlte_lang::message.mainwhile') }} <a href='{{ url('/home') }}'>{{ trans('adminlte_lang::message.returndashboard') }}</a>.
</p>
</div>
</div><!-- /.error-page -->
@endsection

View File

@ -0,0 +1,93 @@
@extends('adminlte::layouts.app')
@section('htmlheader_title')
{{ trans('adminlte_lang::message.home') }}
@endsection
@section('contentheader_title')
Expiring Contracts
@endsection
@section('contentheader_description')
{{ $ido->import_date->format('Y-m-d') }}
@endsection
@section('main-content')
@php
$data = collect();
@endphp
<div class="col-sm-11 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">{{ $name }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<table width="100%" class="table table-striped table-bordered table-hover small" style="color: #000000;" id="table">
<thead>
<tr>
<th rowspan="1" colspan="4">{{ $name }}</th>
<th rowspan="2" class="text-right bg-primary">Entitled</th>
<th colspan="3" class="text-center" style="background-color: #5cb85c !important">Deployed</th>
<th rowspan="2" style="background-color: #d6d6c2 !important">Behind</th>
<th rowspan="2" class="text-right" style="background-color: #f0ad4e !important">Assign</th>
<th rowspan="2" class="text-right" style="background-color: #d9534f !important; color: white;">UnAssign</th>
</tr>
<tr>
<th>Ending</th>
<th>Unit</th>
<th>Segment</th>
<th>Category</th>
<th class="text-right" style="background-color: #5cb85c !important">Actual</th>
<th style="background-color: #7cd87c !important">Ahead</th>
<th class="text-right" style="background-color: #0099e6 !important">Over</th>
</tr>
</thead>
<tbody>
@foreach ($scope->get() as $o)
@php
$filter = $o->category_summary($ido)->filter(function($item,$value) use ($co) { return $item['category_id'] == $co->id; });
if (! $e=$filter->sum('entitled')) continue;
@endphp
<tr>
<td>{{ $o->contract_end->format('Y-m-d') }}</td>
<td>{{ $o->account->imt->iot->name }}</td>
<td>{{ $o->account->imt->name }}</td>
<td><a href="{{ $next ? url('/'.$next.'/'.$co->id.'/'.$ido->id.'/'.$o->account->id) : '#' }}"> {{ $o->account->name }}</a></td>
<td class="text-right bg-primary" style="!important">{{ number_format($e,2) }}</td>
<td class="text-right" style="background-color: #5cb85c !important">{{ number_format($filter->sum('deployed'),1) }}</td>
<td class="text-right" style="background-color: #7cd87c !important">{{ number_format($filter->sum('ahead'),1) }}</td>
<td class="text-right" style="background-color: #0099e6 !important">{{ number_format($filter->sum('over'),1) }}</td>
<td class="text-right" style="background-color: #d6d6c2 !important">{{ number_format($filter->sum('behind'),1) }}</td>
<td class="text-right" style="background-color: #f0ad4e !important">{{ number_format($filter->sum('assigned'),1) }}</td>
<td class="text-right" style="background-color: #d9534f !important; color: white;">{{ number_format($filter->sum('unassigned'),1) }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection
@section('page-scripts')
<script src="{{ url('/plugins/dataTables.bootstrap.min.js') }}"></script>
<script src="{{ url('/plugins/jquery.dataTables.js') }}"></script>
<link href="{{ url('/plugins/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css">
<link href="{{ url('/plugins/dataTables.bootstrap.css') }}" rel="stylesheet" type="text/css">
<script type="text/javascript">
$(document).ready(function() {
$("#table").DataTable({
"pageLength": 20,
});
});
</script>
@append

View File

@ -0,0 +1,16 @@
@extends('layouts.app')
@section('htmlheader_title')
{{ trans('adminlte_lang::message.home') }}
@endsection
@section('contentheader_title')
Software Deployment
@endsection
@section('contentheader_description')
Home
@endsection
@section('main-content')
@endsection

View File

@ -0,0 +1,40 @@
<!DOCTYPE html>
<html lang="en">
@section('htmlheader')
@include('layouts.partials.htmlheader')
@show
<!-- BODY BEGIN -->
<body class="fixed skin-blue sidebar-mini">
<div id="app" v-cloak>
<div class="wrapper">
@include('layouts.partials.mainheader')
@include('layouts.partials.sidebar')
<!-- Content Wrapper. Contains page content -->
<div class="content-wrapper">
@include('adminlte::layouts.partials.contentheader')
<!-- Main content -->
<section class="content">
<div class="row">
<!-- Your Page Content Here -->
@yield('main-content')
</div>
</section><!-- /.content -->
</div><!-- /.content-wrapper -->
<!-- #include('adminlte::layouts.partials.controlsidebar') -->
@include('adminlte::layouts.partials.footer')
</div><!-- ./wrapper -->
</div> <!-- ./app -->
@section('scripts')
@include('layouts.partials.scripts')
@show
</body>
<!-- BODY END -->
</html>

View File

@ -0,0 +1,17 @@
<!-- Content Header (Page header) -->
<section class="content-header">
<div id="search_results"></div>
<h1>
@yield('contentheader_title', 'Software Deployment')
<small>@yield('contentheader_description')</small>
</h1>
<ol class="breadcrumb">
<li><a href="{{ url('/home') }}"><i class="fa fa-dashboard"></i>Home</a></li>
@isset($breadcrumb)
@foreach ($breadcrumb as $item => $url)
<li><a href="{{url($url)}}">{{ $item }}</a></li>
@endforeach
<li class="active">{{ $name }}</li>
@endisset
</ol> <!-- /.breadcrumb -->
</section> <!-- /.content-header -->

View File

@ -0,0 +1,9 @@
<!-- FOOTER BEGIN -->
<footer class="main-footer">
<!-- To the right -->
<div class="pull-right hidden-xs">
<a href="#"></a><b>{{ config('app.name') }}</b></a>
</div>
<strong>{{ config('app.copyright') }}</strong>
</footer>
<!-- FOOTER END -->

View File

@ -0,0 +1,38 @@
<head>
<meta charset="UTF-8">
<title> {{ config('app.name') }} - @yield('htmlheader_title', 'Your title here') </title>
<meta content='width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no' name='viewport'>
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">
<link href="{{ asset('/css/all.css') }}" rel="stylesheet" type="text/css" />
<link href="{{-- asset('/css/softdeploy.css') --}}" rel="stylesheet" type="text/css" />
@css('css/all.css')
<!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
<script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
<![endif]-->
<script>
//See https://laracasts.com/discuss/channels/vue/use-trans-in-vuejs
window.trans =
@php
// copy all translations from /resources/lang/CURRENT_LOCALE/* to global JS variable
$lang_files = File::files(resource_path() . '/lang/' . App::getLocale());
$trans = [];
foreach ($lang_files as $f) {
$filename = pathinfo($f)['filename'];
$trans[$filename] = trans($filename);
}
$trans['adminlte_lang_message'] = trans('adminlte_lang::message');
echo json_encode($trans);
@endphp
</script>
{{-- Styles --}}
{!! Asset::styles() !!}
</head>

View File

@ -0,0 +1,74 @@
<!-- Main Header -->
<header class="main-header">
<!-- Logo -->
<a href="{{ url('/home') }}" class="logo">
<!-- mini logo for sidebar mini 50x50 pixels -->
<span class="logo-mini"><b>S</b>D</span>
<!-- logo for regular state and mobile devices -->
<span class="logo-lg"><b>Software</b>Deployment</span>
</a>
<!-- Header Navbar -->
<nav class="navbar navbar-static-top" role="navigation">
<!-- Sidebar toggle button-->
<a href="#" class="sidebar-toggle" data-toggle="offcanvas" role="button">
<span class="sr-only">{{ trans('adminlte_lang::message.togglenav') }}</span>
</a>
<!-- Navbar Right Menu -->
<div class="navbar-custom-menu">
<ul class="nav navbar-nav">
<!-- Tasks Menu -->
@if (Auth::guest())
<li><a href="{{ url('/register') }}">{{ trans('adminlte_lang::message.register') }}</a></li>
<li><a href="{{ url('/login') }}">{{ trans('adminlte_lang::message.login') }}</a></li>
@else
<!-- User Account Menu -->
<li class="dropdown user user-menu" id="user_menu">
<!-- Menu Toggle Button -->
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<!-- The user image in the navbar-->
<img src="{{ Gravatar::get($user->email) }}" class="user-image" alt="User Image"/>
<!-- hidden-xs hides the username on small devices so only the image appears. -->
<span class="hidden-xs">{{ Auth::user()->name }}</span>
</a>
<ul class="dropdown-menu">
<!-- The user image in the menu -->
<li class="user-header">
<img src="{{ Gravatar::get($user->email) }}" class="img-circle" alt="User Image" />
<p>
{{ Auth::user()->name }}
<small>{{ trans('adminlte_lang::message.login') }}: @if(Auth::user()->last_access){{ Auth::user()->last_access->format('Y-m-d') }} @else Unknown @endif</small>
</p>
</li>
<!-- Menu Footer-->
<li class="user-footer">
<div class="pull-left">
<a href="{{ url('/settings') }}" class="btn btn-default btn-flat">{{ trans('adminlte_lang::message.profile') }}</a>
</div>
<div class="pull-right">
<a href="{{ url('/logout') }}" class="btn btn-default btn-flat" id="logout"
onclick="event.preventDefault();
document.getElementById('logout-form').submit();">
{{ trans('adminlte_lang::message.signout') }}
</a>
<form id="logout-form" action="{{ url('/logout') }}" method="POST" style="display: none;">
{{ csrf_field() }}
<input type="submit" value="logout" style="display: none;">
</form>
</div>
</li>
</ul>
</li>
@endif
<!-- Control Sidebar Toggle Button -->
<li>
<a href="#" data-toggle="control-sidebar"><i class="fa fa-gears"></i></a>
</li>
</ul>
</div>
</nav>
</header>

View File

@ -0,0 +1,17 @@
<!-- REQUIRED JS SCRIPTS -->
<!-- JQuery and bootstrap are required by Laravel 5.3 in resources/assets/js/bootstrap.js-->
<!-- Laravel App -->
<script src="{{-- url (mix('/js/app.js')) --}}" type="text/javascript"></script>
@js('/js/app.js')
{{-- Scripts --}}
{!! Asset::scripts() !!}
@yield('page-scripts')
<!-- Optionally, you can add Slimscroll and FastClick plugins.
Both of these plugins are recommended to enhance the
user experience. Slimscroll is required when using the
fixed layout. -->
<script src="{{ url('/plugins/jquery.slimscroll.min.js') }}" type="text/javascript"></script>
<script src="{{ url('/plugins/fastclick/fastclick.min.js') }}" type="text/javascript"></script>

View File

@ -0,0 +1,117 @@
<!-- Left side column. contains the logo and sidebar -->
<aside class="main-sidebar">
<!-- sidebar: style can be found in sidebar.less -->
<section class="sidebar">
<!-- Sidebar user panel (optional) -->
@if (! Auth::guest())
<div class="user-panel">
<div class="pull-left image">
<img src="{{ Gravatar::get($user->email) }}" class="img-circle" alt="User Image" />
</div>
<div class="pull-left info">
<p>{{ Auth::user()->name }}</p>
<!-- Status -->
<a href="#"><i class="fa fa-circle text-success"></i> {{ trans('adminlte_lang::message.online') }}</a>
</div>
</div>
@endif
<!-- search form (Optional) -->
<form action="#" method="get" class="sidebar-form">
<div class="input-group">
<input type="text" name="q" class="form-control" autocomplete="off" placeholder="{{ trans('adminlte_lang::message.search') }}..."/>
<span class="input-group-btn">
<button type='submit' name='search' id='search-btn' class="btn btn-flat"><i class="fa fa-search"></i></button>
</span>
</div>
</form>
<!-- /.search form -->
<!-- Sidebar Menu -->
<ul class="sidebar-menu">
<li class="header">Menu</li>
<!-- Optionally, you can add icons to the links -->
<li class="active"><a href="{{ url('home') }}"><i class='fa fa-link'></i> <span>{{ trans('adminlte_lang::message.home') }}</span></a></li>
<li class="active"><a href="{{ url('my') }}"><i class='fa fa-link'></i> <span>My Accounts</span></a></li>
<li class="active"><a href="{{ url('brand') }}"><i class='fa fa-link'></i> <span>Brand Compare</span></a></li>
<li class="treeview">
<a href="#"><i class='fa fa-link'></i> <span>Contracts</span> <i class="fa fa-angle-left pull-right"></i></a>
<ul class="treeview-menu">
<li><a href="{{ url('new') }}">New</a></li>
<li><a href="{{ url('expiring') }}">Expiring</a></li>
</ul>
</li>
</ul><!-- /.sidebar-menu -->
</section>
<!-- /.sidebar -->
</aside>
@section('page-scripts')
<script src="{{ url('/plugins/bootstrap3-typeahead.min.js') }}"></script>
<script type="text/javascript">
$(document).ready(function() {
$("input[name=q]").typeahead({
delay: 300,
minLength: 2,
fitToElement: false,
appendTo: "#search_results",
source: function (query,process) {
search('{{ url("search") }}',query,process);
},
matcher: function () { return true; },
updater: function (item) {
window.parent.location.href = '{{ url("/") }}'+users[item];
},
});
});
var c=0;
var search = _.debounce(function(url,query,process,icon){
$.ajax({
url : url,
type : 'GET',
data : 'term=' + query,
dataType : 'JSON',
async : false,
cache : false,
beforeSend : function() {
if (c++ == 0) {
if (icon)
$('i[name='+icon+']').addClass("fa-spin");
else
$('i[name=searching]').removeClass("hidden");
}
},
success : function(data) {
// if json is null, means no match, won't do again.
if(data==null || (data.length===0)) return;
users = {};
userLabels = [];
_.each(data,function(item,ix,list) {
if (_.includes(users,item.label))
item.label = item.label + ' #' + item.value;
userLabels.push(item.label);
users[item.label] = item.value;
});
process(userLabels);
},
complete : function() {
if (--c == 0) {
if (icon)
$('i[name='+icon+']').removeClass("fa-spin");
else
$('i[name=searching]').addClass("hidden");
}
}
})
}, 500);
</script>
@append

View File

@ -0,0 +1,93 @@
@extends('adminlte::layouts.app')
@section('htmlheader_title')
{{ trans('adminlte_lang::message.home') }}
@endsection
@section('contentheader_title')
New Contracts
@endsection
@section('contentheader_description')
{{ $ido->import_date->format('Y-m-d') }}
@endsection
@section('main-content')
@php
$data = collect();
@endphp
<div class="col-sm-11 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">{{ $name }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<table width="100%" class="table table-striped table-bordered table-hover small" style="color: #000000;" id="table">
<thead>
<tr>
<th rowspan="1" colspan="4">{{ $name }}</th>
<th rowspan="2" class="text-right bg-primary">Entitled</th>
<th colspan="3" class="text-center" style="background-color: #5cb85c !important">Deployed</th>
<th rowspan="2" style="background-color: #d6d6c2 !important">Behind</th>
<th rowspan="2" class="text-right" style="background-color: #f0ad4e !important">Assign</th>
<th rowspan="2" class="text-right" style="background-color: #d9534f !important; color: white;">UnAssign</th>
</tr>
<tr>
<th>Start</th>
<th>Unit</th>
<th>Segment</th>
<th>Category</th>
<th class="text-right" style="background-color: #5cb85c !important">Actual</th>
<th style="background-color: #7cd87c !important">Ahead</th>
<th class="text-right" style="background-color: #0099e6 !important">Over</th>
</tr>
</thead>
<tbody>
@foreach ($scope->get() as $o)
@php
$filter = $o->category_summary($ido)->filter(function($item,$value) use ($co) { return $item['category_id'] == $co->id; });
if (! $e=$filter->sum('entitled')) continue;
@endphp
<tr>
<td>{{ $o->contract_start->format('Y-m-d') }}</td>
<td>{{ $o->account->imt->iot->name }}</td>
<td>{{ $o->account->imt->name }}</td>
<td><a href="{{ $next ? url('/'.$next.'/'.$co->id.'/'.$ido->id.'/'.$o->account->id) : '#' }}"> {{ $o->account->name }}</a></td>
<td class="text-right bg-primary" style="!important">{{ number_format($e,2) }}</td>
<td class="text-right" style="background-color: #5cb85c !important">{{ number_format($filter->sum('actual'),1) }}</td>
<td class="text-right" style="background-color: #7cd87c !important">{{ number_format($filter->sum('ahead'),1) }}</td>
<td class="text-right" style="background-color: #0099e6 !important">{{ number_format($filter->sum('over'),1) }}</td>
<td class="text-right" style="background-color: #d6d6c2 !important">{{ number_format($filter->sum('behind'),1) }}</td>
<td class="text-right" style="background-color: #f0ad4e !important">{{ number_format($filter->sum('assigned'),1) }}</td>
<td class="text-right" style="background-color: #d9534f !important; color: white;">{{ number_format($filter->sum('unassigned'),1) }}</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
@endsection
@section('page-scripts')
<script src="{{ url('/plugins/dataTables.bootstrap.min.js') }}"></script>
<script src="{{ url('/plugins/jquery.dataTables.js') }}"></script>
<link href="{{ url('/plugins/jquery.dataTables.min.css') }}" rel="stylesheet" type="text/css">
<link href="{{ url('/plugins/dataTables.bootstrap.css') }}" rel="stylesheet" type="text/css">
<script type="text/javascript">
$(document).ready(function() {
$("#table").DataTable({
"pageLength": 20,
});
});
</script>
@append

View File

@ -0,0 +1,35 @@
@extends('adminlte::page')
@section('htmlheader_title')
Change Title here!
@endsection
@section('main-content')
<div class="container-fluid spark-screen">
<div class="row">
<div class="col-md-9 col-md-offset-1">
<div class="box box-solid">
<div class="box-header">
<h3 class="box-title">No Accounts tagged!</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="remove"><i class="fa fa-times"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="collapse"><i class="fa fa-minus"></i></button>
</div>
<!-- /.box-tools -->
</div>
<!-- /.box-header -->
<div class="box-body">
<p>
You havent tagged any accounts.<br>
To tag an account, press the <i class="fa fa-2x fa-star"></i> icon so that it turns orange <i style="color: orange;" class="fa fa-2x fa-star"></i>.
</p>
</div>
<!-- /.box-body -->
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,18 @@
@extends('adminlte::layouts.app')
@section('htmlheader_title')
{{ trans('adminlte_lang::message.home') }}
@endsection
@section('contentheader_title')
Summary for {{$co->name}}
@endsection
@section('contentheader_description')
{{ $ido->import_date->format('Y-m-d') }}
@endsection
@section('main-content')
@include('widgets.product-iot')
@yield('product')
@endsection

View File

@ -0,0 +1,63 @@
@extends('adminlte::layouts.app')
@section('htmlheader_title')
{{ trans('adminlte_lang::message.home') }}
@endsection
@section('contentheader_title')
Product Detail
@endsection
@section('contentheader_description')
{{ $ido->import_date->format('Y-m-d') }}
@endsection
@section('main-content')
<div class="col-sm-9 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">{{ $po->name }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<table width="100%" class="table table-striped table-bordered table-hover" style="color: #000000">
<tr>
<th>&nbsp;</td>
<th colspan="2" class="text-center bg-primary">Entitled</td>
<th colspan="3" class="text-center" style="background-color: #5cb85c">Deployment</td>
<th colspan="2" class="text-center" style="background-color: #d9534f; color: white;">Unassigned</td>
</tr>
<tr>
<th>Name</th>
<th class="text-right bg-primary">Qty</th>
<th class="text-right bg-primary">Value</th>
<th class="text-right" style="background-color: #5cb85c">Qty</th>
<th class="text-right" style="background-color: #5cb85c">Deployed</th>
<th class="text-right" style="background-color: #f0ad4e">Assigned</th>
<th class="text-right" style="background-color: #d9534f; color: white;">Qty</th>
<th class="text-right" style="background-color: #d9534f; color: white;">Unassigned</th>
</tr>
@foreach ($po->accounts($ido) as $o)
<tr>
<td><a href="{{ url('/account/'.$po->category_id().'/'.$ido->id.'/'.$o->account_id) }}">{{ $o->account_name }}</a></td>
<td class="text-right bg-primary">{{ $q=(isset($o->qty_entitled) ? $o->qty_entitled : 0) }}</td>
<td class="text-right bg-primary">J${{ number_format($e=(isset($o->entitled) ? $o->entitled : 0),3) }}m</td>
<td class="text-right" style="background-color: #5cb85c">{{ $r=(isset($o->qty_rate) ? $o->qty_rate : 0) }}</td>
<td class="text-right" style="background-color: #5cb85c">J${{ number_format($d=(isset($o->deployed) ? $o->deployed : 0),3) }}m</td>
<td class="text-right" style="background-color: #f0ad4e">J${{ number_format($a=(isset($o->assigned) ? $o->assigned : 0),3) }}m</td>
<td class="text-right" style="background-color: #d9534f; color: white;">{{ $q-$r }}</td>
<td class="text-right" style="background-color: #d9534f; color: white;">J${{ number_format(($e-$d-$a),3) }}m</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,24 @@
@extends('adminlte::layouts.app')
@section('htmlheader_title')
{{ $co->name }}@if ($name != $co->name)|{{ $name }}@endif
@endsection
@section('contentheader_title')
Summary for {{$co->name}}@if ($name != $co->name)|{{ $name }}@endif
@endsection
@section('contentheader_description')
{{ $ido->import_date->format('Y-m-d') }}
@endsection
@section('main-content')
@include('widgets.category-select')
@include('widgets.summary')
@yield('category-select')
@yield('summary')
@if($pdata)
@include('widgets.product-iot')
@yield('product')
@endif
@endsection

View File

@ -0,0 +1,53 @@
@extends('adminlte::layouts.auth')
@section('htmlheader_title')
Log in
@endsection
@section('content')
<body class="hold-transition login-page">
<div id="app" v-cloak>
<div class="login-box">
<div class="login-logo">
<a href="{{ url('/home') }}"><b>Software</b>Deployment</a>
</div><!-- /.login-logo -->
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> {{ trans('adminlte_lang::message.someproblems') }}<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="login-box-body">
<p class="login-box-msg"> {{ trans('adminlte_lang::message.siginsession') }} </p>
<login-form name="{{ config('auth.providers.users.field','email') }}"
domain="{{ config('auth.defaults.domain','') }}"></login-form>
<a href="{{ url('/password/reset') }}">{{ trans('adminlte_lang::message.forgotpassword') }}</a><br>
@include('adminlte::auth.partials.social_login')
</div>
</div>
</div>
@include('adminlte::layouts.partials.scripts_auth')
<script>
$(function () {
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
});
</script>
</body>
@endsection

View File

@ -0,0 +1,4 @@
<div class="social-auth-links text-center">
<p>- OR -</p>
<a href="{{ url('/auth/ibm') }}" class="btn btn-block btn-social btn-facebook btn-flat"><i class="fa fa-address-card-o"></i> Sign In with W3id</a>
</div><!-- /.social-auth-links -->

View File

@ -0,0 +1,59 @@
@extends('adminlte::layouts.auth')
@section('htmlheader_title')
Password recovery
@endsection
@section('content')
<body class="login-page">
<div id="app">
<div class="login-box">
<div class="login-logo">
<a href="{{ url('/home') }}"><b>Admin</b>LTE</a>
</div><!-- /.login-logo -->
@if (session('status'))
<div class="alert alert-success">
{{ session('status') }}
</div>
@endif
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> {{ trans('adminlte_lang::message.someproblems') }}<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="login-box-body">
<p class="login-box-msg">Reset Password</p>
<email-reset-password-form></email-reset-password-form>
<a href="{{ url('/login') }}">Log in</a><br>
</div><!-- /.login-box-body -->
</div><!-- /.login-box -->
</div>
@include('adminlte::layouts.partials.scripts_auth')
<script>
$(function () {
$('input').iCheck({
checkboxClass: 'icheckbox_square-blue',
radioClass: 'iradio_square-blue',
increaseArea: '20%' // optional
});
});
</script>
</body>
@endsection

View File

@ -0,0 +1,44 @@
@extends('adminlte::layouts.auth')
@section('htmlheader_title')
Register
@endsection
@section('content')
<body class="hold-transition register-page">
<div id="app" v-cloak>
<div class="register-box">
<div class="register-logo">
<a href="{{ url('/home') }}"><b>Software</b>Deployment</a>
</div>
@if (count($errors) > 0)
<div class="alert alert-danger">
<strong>Whoops!</strong> {{ trans('adminlte_lang::message.someproblems') }}<br><br>
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
<div class="register-box-body">
<p class="login-box-msg">Register for access</p>
<register-form></register-form>
<!-- #include('adminlte::auth.partials.social_login') -->
<a href="{{ url('/login') }}" class="text-center">I already have an account</a>
</div><!-- /.form-box -->
</div><!-- /.register-box -->
</div>
@include('adminlte::layouts.partials.scripts_auth')
@include('adminlte::auth.terms')
</body>
@endsection

View File

@ -0,0 +1,212 @@
@php
use App\Models\Product;
use App\Models\Prodsum;
$codata = $data->filter(function($item,$key) use ($co) { return $item['category_id'] == $co->id; })->pop();
@endphp
@section('account')
<div class="col-sm-6 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Deployment Summary [{{$co->name}}]</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<div id="donutchart"></div>
</div>
</div>
</div>
<div class="col-sm-5 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Account Summary [{{$co->name}}]</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
<ul class="list-unstyled">
<li>Type: <strong>{{ $ao->diamond }}</strong> @if (! is_null($ao->diamondreport) AND $ao->diamond == 'Diamond') @if ($ao->diamondreport) <small>(Reporting)</small> @else <small>(Not Reporting)</small> @endif @endif</li>
<li>SDL: <strong>{{ $ao->sdl }}</strong></li>
<li>{{ $co->name }} Entitlement: <strong>J${{ array_get($codata,'entitled',0) }}m</strong> [ J${{ $data->sum('entitled') }}m ]</li>
<li>Contracts: <strong>{{ $ao->contracts()->count() }}</strong> [<strong>{{ $ao->contracts()->min('contract_start') }}</strong> -> <strong>{{ $ao->contracts()->max('contract_end') }}</strong>]</li>
<li>Projects: <strong>{{ $ao->projects()->count() }}</strong></li>
<li>Estimated Sub IN: <strong>J${{ $codata['subin'] }}m</strong></li>
<li>Estimated Sub OUT: <strong>J${{ $codata['subout'] }}m</strong></li>
@if(array_get($codata,'subchance')) <li>Estimated Sub RISK: <strong>{{ $codata['subchance'] }}</strong></li>@endif
</ul>
</div>
</div>
</div>
<div class="col-sm-5 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Substitution Position</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<div id="substitution"></div>
</div>
</div>
</div>
<div class="col-sm-12 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Contracts with [{{$co->name}}] Entitlement or Deployment</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<table width="100%" class="table table-striped table-bordered table-hover small">
<tr>
<th>Name</th><th>Start</th><th>End</th><th>Progress</th><th>Status</th><th>Type</th>
<th class="sd-entitled">Entitled</th>
<th class="sd-actual">Actual</th>
<th class="sd-ahead">Ahead</th>
<th class="sd-behind">Behind</th>
<th class="sd-over">Over</th>
<th class="sd-assigned">Assigned</th>
<th class="sd-unassigned">Unassigned</th>
</tr>
@foreach ($ao->contracts->sortBy(['contract_start']) as $o)
<tr>
@php
$filter = $o->category_summary($ido)->filter(function($item,$key) use ($co) { return $item['category_id'] == $co->id; })->pop();
@endphp
<td>{{ $o->name }}</td>
<td>{{ $o->contract_start->format('Y-m-d') }}</td>
<td>{{ $o->contract_end->format('Y-m-d') }}</td>
<td>{{ number_format($o->progress($ido->import_date->lastOfHalf())*100,1) }}%</td>
<td>{{ $o->contract_status }} @if ($o->contract_status_reason) ({{ $o->contract_status_reason }}) @endif</td>
<td>{{ $o->contract_type }}</td>
<td class="sd-entitled">J${{ number_format(array_get($filter,'entitled'),3) }}m</td>
<td class="sd-actual">J${{ number_format(array_get($filter,'actual'),3) }}m</td>
<td class="sd-ahead">J${{ number_format(array_get($filter,'ahead'),3) }}m</td>
<td class="sd-behind">J${{ number_format(array_get($filter,'behind'),3) }}m</td>
<td class="sd-over">J${{ number_format(array_get($filter,'over'),3) }}m</td>
<td class="sd-assigned">J${{ number_format(array_get($filter,'assigned'),3) }}m</td>
<td class="sd-unassigned">J${{ number_format(array_get($filter,'unassigned'),3) }}m</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
<div class="col-sm-12 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">Projects with [{{$co->name}}] Deployment</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<table width="100%" class="table table-striped table-bordered table-hover small" id="dataTables-contracts">
<tr>
<th>Name</th><th>Start</th><th>End</th><th>Status</th>
</tr>
@foreach ($ao->product_projects($ido)->filter(function($item,$key) use ($co) { return $item->category_id == $co->id; }) as $o)
<tr>
<td>{{ $o->project_name }}</td><td>{{ $o->project_start }}</td><td>{{ $o->project_end }}</td><td>{{ $o->project_status }}</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
<div class="col-sm-12 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title">[{{$co->name}}] Products</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<table width="100%" class="table table-striped table-bordered table-hover small" id="dataTables-contracts">
<tr>
<th>&nbsp;</td>
<th colspan="2" class="text-center sd-entitled">Entitled</td>
<th colspan="3" class="text-center sd-deployed">Deployment</td>
<th colspan="2" class="text-center sd-unassigned">Unassigned</td>
</tr>
<tr>
<th>Name</th>
<th class="text-right sd-entitled">Qty</th>
<th class="text-right sd-entitled">Value</th>
<th class="text-right sd-deployed">Qty</th>
<th class="text-right sd-deployed">Deployed</th>
<th class="text-right sd-assigned">Assigned</th>
<th class="text-right sd-unassigned">Qty</th>
<th class="text-right sd-unassigned">Unassigned</th>
</tr>
@foreach ($ao->product_summary($ido)->filter(function($item,$key) use ($co) { return $item['category_id'] == $co->id; }) as $o)
<tr>
<td>
@if (isset($o['id']))
{{ $o['id'] }}: <a href="{{ url('/product/'.$o['id']) }}">{{ Product::find($o['id'])->name }}</a>
@elseif (isset($o['prodsum_id']))
<a href="{{ url('/prodsum/'.$o['prodsum_id']) }}">{{ Prodsum::find($o['prodsum_id'])->name }}</a>
@else
Other
@endif
</td>
<td class="text-right sd-entitled">{{ $q=$o['entitled_qty'] }}</td>
<td class="text-right sd-entitled">J${{ number_format($o['entitled'],3) }}m</td>
<td class="text-right sd-deployed">{{ $r=$o['qty'] }}</td>
<td class="text-right sd-deployed">J${{ number_format($o['deployed'],3) }}m</td>
<td class="text-right sd-assigned">J${{ number_format($o['assigned'],3) }}m</td>
<td class="text-right sd-unassigned">{{ $q-$r < 0 ? 0 : $q-$r }}</td>
<td class="text-right sd-unassigned">J${{ number_format($o['unassigned'],3) }}m</td>
</tr>
@endforeach
</table>
</div>
</div>
</div>
@endsection
@include('widgets.donut_chart',['chart'=>$codata])
@include('widgets.sub_scater',['chart'=>$data])

View File

@ -0,0 +1,63 @@
@php
use App\Models\{Category,Import};
@endphp
@section('category-select')
<div class="col-md-5 col-md-offset-0">
<!-- Default box -->
<div class="box {{isset($co->id) ? 'collapsed-box' : ''}}">
<div class="box-header with-border">
<h3 class="box-title">Select Data to View</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-{{ isset($co->id) ? 'plus' : 'minus' }}"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
<form class="form-horizontal">
<div class="form-group">
<label for="category" class="col-sm-2 control-label">Category</label>
<div class="col-sm-7">
<select class="form-control" id="category">
@foreach (Category::active()->orderby('name')->get() as $o)
<option value="{{ $o->id }}" {{ ((isset($co) AND $o->id == $co->id) OR (Auth::user()->category_id == $o->id)) ? 'selected="selected"' : '' }}>{{ $o->name }} ({{ $o->segment->unit->name.':'.$o->segment->name }})</option>
@endforeach
</select>
</div>
</div>
<div class="form-group">
<label for="import" class="col-sm-2 control-label">Import Data</label>
<div class="col-sm-3">
<select class="form-control" id="import">
@foreach (Import::orderby('import_date','DESC')->get() as $o)
<option value="{{ $o->id }}" {{ (isset($io) AND $o->id == $io->id) ? 'selected="selected"' : '' }}>{{ $o->import_date->format('Y-m-d') }}</option>
@endforeach
</select>
</div>
</div>
<div class="box-footer">
<button id="go" class="btn btn-info pull-right">Submit</button>
</div>
</form>
</div>
</div> <!-- /.box -->
</div>
@endsection
@section('page-scripts')
<script type="text/javascript">
$(document).ready(function() {
$("#go").click(function() {
location.replace('{{ url('/category.iot/') }}/'+$('#category').val()+'/'+$('#import').val());
return false;
});
});
</script>
@endsection

View File

@ -0,0 +1,3 @@
<div id="areachart"></div>

View File

@ -0,0 +1,2 @@
<canvas id="cbar" width="350" height="220"></canvas>

View File

@ -0,0 +1,2 @@
<canvas class ="round" id="cdonut" width="250" height="195"></canvas>

View File

@ -0,0 +1,2 @@
<canvas id="cline" width="350" height="220"></canvas>

View File

@ -0,0 +1,2 @@
<canvas class ="round" id="cpie" width="250" height="200"></canvas>

View File

@ -0,0 +1,2 @@
<div id="donutchart"></div>

View File

@ -0,0 +1,3 @@
<div id="linechart"></div>

View File

@ -0,0 +1,2 @@
<div id="piechart"></div>

View File

@ -0,0 +1,81 @@
@section('page-scripts')
<script src="https://code.highcharts.com/highcharts.js"></script>
<script type="text/javascript">
revenueData = [];
revenueData.push({ color: '#337ab7', name: 'Entitled', y: {{ array_get($chart,'entitled',0) }} });
revenueData.push({ color: '#0099e6', name: 'Over', y: {{ array_get($chart,'over',0) }} });
riskData = [];
riskData.push({ color: '#004d00', name: 'Actual', y: {{ array_get($chart,'actual',0) }} });
riskData.push({ color: '#7cd87c', name: 'Ahead', y: {{ array_get($chart,'ahead',0) }} });
riskData.push({ color: '#ffc48c', name: 'Behind', y: {{ $b=array_get($chart,'behind',0) }} });
riskData.push({ color: '#f0ad4e', name: 'Assigned', y: {{ ($a=array_get($chart,'assigned',0)) > $b ? $a-$b : $a }} });
riskData.push({ color: '#d9534f', name: 'Unassigned', y: {{ array_get($chart,'unassigned',0)-$b }} });
riskData.push({ color: '#0099e6', name: 'Over', y: {{ array_get($chart,'over',0) }} });
// Create the chart
Highcharts.chart('donutchart', {
chart: {
type: 'pie',
},
title: {
text: ''
},
yAxis: {
title: {
text: ''
}
},
plotOptions: {
pie: {
shadow: false,
center: ['50%', '40%'],
dataLabels: {
enabled: true,
crop: false,
},
},
},
exporting: {
enabled: false
},
credits: {
enabled: false
},
tooltip: {
valuePrefix: '$',
valueSuffix: 'm',
},
series: [{
name: 'Revenue',
data: revenueData,
size: '80%',
innerSize: '70%',
dataLabels: {
/*
formatter: function () {
return this.y > 5 ? this.point.name : null;
},
*/
color: '#ffffff',
distance: 20,
}
}, {
name: 'Risk',
data: riskData,
size: '60%',
innerSize: '70%',
dataLabels: {
/*
formatter: function () {
// display only if larger than 1
return this.y > 1 ? '<b>' + this.point.name + ':</b> $' + this.y + 'm' : null;
},
*/
distance: 20,
}
}]
});
</script>
@append

View File

@ -0,0 +1,108 @@
@section('product')
@php
$cols = $model->find($pdata->pluck($model_key)->unique())->sortBy('name');
@endphp
<!-- Default box -->
<div class="container-fluid spark-screen">
<div class="row">
<div class="col-md-12 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title"> Product Data: {{ $co->name }} ({{$co->segment->unit->name."|".$co->segment->name}}) as at {{ $ido->import_date->format('Y-m-d') }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a data-target="#entitled" data-toggle="tab">Entitled</a></li>
<li><a data-target="#unassigned" data-toggle="tab">Unassigned</a></li>
</ul>
<div class="tab-content">
@foreach (['entitled','unassigned'] as $show)
<div class="tab-pane @if($show=='entitled') active @endif" id="{{ $show }}">
<table width="100%" class="table table-striped table-bordered table-hover" style="color: #000000;">
<tr>
<th>&nbsp;</th>
@foreach ($cols as $col)
<th class="text-right" colspan="2">{{ $col->name }}</th>
@endforeach
<th class="text-right" colspan="2">TOTAL</th>
</tr>
<tr>
<th>&nbsp;</th>
@foreach ($cols as $col)
<th class="text-right">#</th>
<th class="text-right">$</th>
@endforeach
<th class="text-right">#</th>
<th class="text-right">$</th>
</tr>
<!-- Show group products -->
@foreach (\App\Models\Prodsum::find($pdata->pluck('prodsum_id')->unique())->sortBy('name') as $o)
<tr>
<td><a href="{{ $next ? url('/prodsum/'.$o->id) : '#' }}"> {{ $o->name }}</a></td>
@foreach ($cols as $col)
<td class="text-right">{{$pdata->filter(function($item,$key) use ($o,$col) { return isset($item->prodsum_id) AND $item->prodsum_id == $o->id AND $item->iot_id == $col->id; })->pluck('account_id')->unique()->count() }}</td>
<td class="text-right">{{ number_format($pdata->filter(function($item,$key) use ($o,$col) { return isset($item->prodsum_id) AND $item->prodsum_id == $o->id AND $item->iot_id == $col->id; })->sum($show),3) }}</td>
@endforeach
<th class="text-right">{{$pdata->filter(function($item,$key) use ($o,$col) { return isset($item->prodsum_id) AND $item->prodsum_id == $o->id; })->pluck('account_id')->unique()->count()}}</th>
<th class="text-right">{{ number_format($pdata->filter(function($item,$key) use ($o,$col) { return isset($item->prodsum_id) AND $item->prodsum_id == $o->id; })->sum($show),3) }}</th>
</tr>
@endforeach
<!-- Show non-group products -->
@php
$rest = $pdata->reject(function($item,$key) { return isset($item->prodsum_id); });
//dd($rest);
@endphp
<tr>
<td><i>Other Items</i></td>
@foreach ($cols as $col)
<td class="text-right">{{ $rest->filter(function($item,$key) use ($col) { return $item->iot_id == $col->id; })->pluck('account_id')->unique()->count() }}</td>
<td class="text-right">{{ number_format($rest->filter(function($item,$key) use ($col) { return $item->iot_id == $col->id; })->sum($show),3) }}</td>
@endforeach
<th class="text-right">{{ $rest->pluck('account_id')->unique()->count() }}</th>
<th class="text-right">{{ number_format($rest->sum($show),3) }}</th>
</tr>
<tr>
<th>TOTAL</th>
@foreach ($cols as $col)
<th class="text-right">{{ $pdata->filter(function($item,$key) use ($col) { return $item->iot_id == $col->id; })->pluck('account_id')->unique()->count() }}</th>
<th class="text-right">{{ number_format($pdata->filter(function($item,$key) use ($col) { return $item->iot_id == $col->id; })->sum($show),3) }}</th>
@endforeach
<th class="text-right">{{ $pdata->pluck('account_id')->unique()->count() }}</th>
<th class="text-right">{{ number_format($pdata->sum($show),3) }}</th>
</tr>
</table>
</div>
@endforeach
</div>
</div>
<p><strong>Please Note:</strong> This view is a product centric view and does not reduce the "Unassigned" value when clients
deploy products that they do not have a recorded entitlement allocated to it. For a truer representation of Risk, please use the Geography/Market view</p>
</div>
</div>
</div>
</div>
</div>
@endsection

View File

@ -0,0 +1,98 @@
@section('page-scripts')
<script src="https://code.highcharts.com/highcharts.js"></script>
<script type="text/javascript">
subout = [];
subin = [];
@php
$x=0;
@endphp
@foreach ($chart->sortBy(function($item,$key) { $co = \App\Models\Category::findOrFail($item['category_id']); return sprintf('%s|%s|%s',$co->segment->unit->name,$co->segment->name,$co->name); }) as $data)
@php
$co = \App\Models\Category::findOrFail($data['category_id']);
$name = sprintf('%s|%s|%s',$co->segment->unit->name,$co->segment->name,$co->name);
$x++;
@endphp
@if ($data['subout'] > 0)
subout.push({ "x": {{ $x }}, "y": -{{ $data['subout'] }}, "name": '{{ $name }}' });
@else
subin.push({ "x": {{ $x }}, "y": {{ $data['subin'] }}, "name": '{{ $name }}' });
@endif
@endforeach
// Create the chart
Highcharts.chart('substitution', {
chart: {
type: 'scatter',
zoomtype: 'xy',
height: '30%',
},
title: {
text: ''
},
yAxis: {
title: {
text: 'Rev J$m'
}
},
xAxis: {
title: {
text: 'BU Categories'
},
visible: true,
labels: { enabled: false }
},
plotOptions: {
scatter: {
marker: {
radius: 5,
states: {
hover: {
enabled: true,
lineColor: 'rgb(100,100,100)'
}
}
},
states: {
hover: {
marker: {
enabled: true,
}
}
},
tooltip: {
headerFormat: '{series.name}<br>',
pointFormat: '<b>{point.name}</b>: {point.y}'
}
},
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'top',
floating: true,
backgroundColor: (Highcharts.theme && Highcharts.theme.legendBackgroundColor) || '#FFFFFF',
borderWidth: 1
},
exporting: {
enabled: false
},
credits: {
enabled: false
},
tooltip: {
valuePrefix: '$',
valueSuffix: 'm',
},
series: [{
name: 'Sub Out',
color: '#d9534f',
data: subout,
}, {
name: 'Sub In',
color: '#0099e6',
data: subin,
}],
});
</script>
@append

View File

@ -0,0 +1,247 @@
@section('summary')
@php
$e=$data->sum('entitled');
@endphp
@if ($e)
<div class="col-sm-2 col-md-offset-0">
<div class="box collapsed-box">
<div class="box-header with-border">
<h3 class="box-title">Summary</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-plus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<table width="100%" class="table table-condensed table-striped" style="color: #000000;">
<tr>
<td class="sd-actual">Deployment</td><td class="text-right sd-actual">{{ number_format($data->sum('actual')/$e*100,1) }}%</td>
</tr>
<tr>
<td class="sd-ahead">Deployment (with Ahead)</td><td class="text-right sd-ahead">{{ number_format(($data->sum('actual')+$data->sum('ahead'))/$e*100,1) }}%</td>
</tr>
<tr>
<td class="sd-shouldbe">Should Be</td><td class="text-right sd-shouldbe">{{ number_format(($data->sum('actual')+$data->sum('behind'))/$e*100,1) }}%</td>
</tr>
<tr>
<td class="sd-behind">Gap</td><td class="text-right sd-behind">{{ number_format($data->sum('behind')/$e*100,1) }}%</td>
</tr>
<tr>
<td class="sd-assigned">Deployment with Plans</td><td class="text-right sd-assigned">{{ number_format(($data->sum('actual')+$data->sum('ahead')+$data->sum('assigned'))/$e*100,1) }}%</td>
</tr>
<tr>
<td class="sd-unassigned">Unassigned</td><td class="text-right sd-unassigned">{{ number_format($data->sum('unassigned')/$e*100,1) }}%</td>
</tr>
</table>
</div>
</div>
</div>
<div class="col-sm-3 col-md-offset-0">
<div class="box collapsed-box">
<div class="box-header with-border">
<h3 class="box-title">Substition Estimatation</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-plus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body no-padding">
<table width="100%" class="table table-condensed table-striped" style="color: #000000;">
<tr>
<td class="sd-over">Sub Ins</td><td class="text-right sd-over">J${{ $si=number_format($data->sum('subin'),3) }}m</td>
</tr>
<tr>
<td class="sd-unassigned">Sub Outs</td><td class="text-right sd-unassigned">J${{ $so=number_format($data->sum('subout'),3) }}m</td>
</tr>
</table>
</div>
</div>
</div>
@endif
<div class="col-sm-12 col-md-offset-0">
<div class="container-fluid spark-screen">
<div class="row" style="line-height: 1.4; color: black;">
<div class="col-sm-2 col-md-offset-0">
<div class="info-box sd-entitled">
<div class="info-box-icon"><i class="fa fa-money"></i></div>
<div class="info-box-content">
<span class="info-box-text">Clients</span>
<span class="info-box-number">{{ $n=$data->filter(function($item) { return array_get($item,'entitled',0) > 0; })->count() }}</span>
<div class="progress">
<span class="progress-bar" style="width: 100%"></span>
</div>
<span class="progress-description">J${{ $data->sum('entitled') }}m</span>
</div>
</div>
</div>
<div class="col-sm-2 col-md-offset-0">
<div class="info-box sd-deployed">
<div class="info-box-icon"><i class="fa fa-thumbs-o-up"></i></div>
<div class="info-box-content">
<span class="info-box-text">Deployed</span>
<span class="info-box-number">{{ $d=($data->filter(function($item) { return array_get($item,'actual',0) > 0; })->count()) }}</span>
<div class="progress">
<span class="progress-bar" style="width: {{ number_format(($n-$d)/$n*100,0) }}%"></span>
</div>
<span class="progress-description">J${{ $data->sum('actual')+$data->sum('ahead') }}m</span>
</div>
</div>
</div>
<div class="col-sm-2 col-md-offset-0">
<div class="info-box sd-unassigned">
<div class="info-box-icon"><i class="fa fa-question"></i></div>
<div class="info-box-content">
<span class="info-box-text">Not Deploying</span>
<span class="info-box-number">{{ $not=($data->filter(function($item) { return array_get($item,'actual',0) == 0 AND $item['assigned'] == 0 AND $item['entitled'] > 0; })->count()) }}</span>
<div class="progress">
<span class="progress-bar" style="width: {{ number_format(($n-$not)/$n*100,0) }}%"></span>
</div>
<span class="progress-description">J${{ $data->filter(function($item) { return array_get($item,'actual',0) == 0 AND $item['assigned'] == 0 AND $item['entitled'] > 0; })->sum('unassigned') }}m</span>
</div>
</div>
</div>
<div class="col-sm-2 col-md-offset-0">
<div class="info-box sd-behind">
<div class="info-box-icon"><i class="fa fa-warning"></i></div>
<div class="info-box-content">
<span class="info-box-text">Behind</span>
<span class="info-box-number">{{ $b=($data->filter(function($item) { return array_get($item,'behind',0) > 0; })->count()) }}</span>
<div class="progress">
<span class="progress-bar" style="width: {{ number_format(($n-$b)/$n*100,0) }}%"></span>
</div>
<span class="progress-description">J${{ $data->sum('behind') }}m</span>
</div>
</div>
</div>
<div class="col-sm-2 col-md-offset-0">
<div class="info-box sd-unassigned">
<div class="info-box-icon"><i class="fa fa-thumbs-o-down"></i></div>
<div class="info-box-content">
<span class="info-box-text">No Plans</span>
<span class="info-box-number">{{ $u=($data->filter(function($item) { return array_get($item,'unassigned',0) > 0; })->count()) }}</span>
<div class="progress">
<span class="progress-bar" style="width: {{ number_format(($n-$u)/$n*100,0) }}%"></span>
</div>
<span class="progress-description">J${{ $data->sum('unassigned') }}m</span>
</div>
</div>
</div>
<div class="col-sm-2 col-md-offset-0">
<div class="info-box @if( $si >= $so) sd-over @else sd-unassigned @endif">
<div class="info-box-icon"><i class="fa @if( $si >= $so) fa-money @else fa-exclamation @endif"></i></div>
<div class="info-box-content">
<span class="info-box-text">Sub Estimate</span>
<span class="info-box-number">{{ $data->filter(function($item) use ($si,$so) { return array_get($item,($si >= $so ? 'subin' : 'subout'),0) > 0; })->count() }}</span>
<span class="progress-description">@if( $si >= $so) J${{ $si }}m @else J${{ $so }}m @endif</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- Default box -->
<div class="container-fluid spark-screen">
<div class="row">
<div class="col-md-12 col-md-offset-0">
<div class="box">
<div class="box-header with-border">
<h3 class="box-title"> Deployment Data: {{ $co->name }} ({{$co->segment->unit->name."|".$co->segment->name}}) as at {{ $ido->import_date->format('Y-m-d') }}</h3>
<div class="box-tools pull-right">
<button type="button" class="btn btn-box-tool" data-widget="collapse" data-toggle="tooltip" title="Collapse">
<i class="fa fa-minus"></i></button>
<button type="button" class="btn btn-box-tool" data-widget="remove" data-toggle="tooltip" title="Remove">
<i class="fa fa-times"></i></button>
</div>
</div>
<div class="box-body">
<div class="row">
<div class="col-md-4">
<div id="donutchart"></div>
</div>
<div class="col-md-8">
<table width="100%" class="table table-striped table-bordered table-hover" style="color: #000000;">
<tr>
<th rowspan="2">{{ $name }}</th>
<th rowspan="2" class="text-right sd-entitled">Entitled</th>
<th colspan="3" class="text-center sd-deployed">Deployed</th>
<th rowspan="2" class="text-right sd-behind">Behind</th>
<th rowspan="2" class="text-right sd-assigned">Assigned</th>
<th rowspan="2" class="text-right sd-unassigned">Unassigned</th>
</tr>
<tr>
<th class="text-right sd-actual">Actual</th>
<th class="text-right sd-ahead">Ahead</th>
<th class="text-right sd-over">Over</th>
</tr>
@foreach ($model->find($data->pluck($model_key)->unique())->sortBy('name') as $o)
@php
$row = $data->where($model_key,$o->id);
if (! $row->sum('entitled') AND ! $row->sum('over') AND ! Request::query('hidden'))
continue;
@endphp
<tr>
<td><a href="{{ $next ? url('/'.$next.'/'.$co->id.'/'.$ido->id.'/'.$o->id) : '#' }}"> {{ $o->name }}</a></td>
<td class="text-right sd-entitled">{{ number_format($row->sum('entitled'),3) }}</td>
<td class="text-right sd-actual">{{ number_format($row->sum('actual'),3) }}</td>
<td class="text-right sd-ahead">{{ number_format($row->sum('ahead'),3) }}</td>
<td class="text-right sd-over">{{ number_format($row->sum('over'),3) }}</td>
<td class="text-right sd-behind">{{ number_format($row->sum('behind'),3) }}</td>
<td class="text-right sd-assigned">{{ number_format($row->sum('assigned'),3) }}</td>
<td class="text-right sd-unassigned">{{ number_format($row->sum('unassigned'),3) }}</td>
</tr>
@endforeach
<tr>
<th>TOTAL</th>
<th class="text-right sd-entitled">{{ number_format($e,3) }}</th>
<th class="text-right sd-actual">{{ number_format($data->sum('actual'),3) }}</th>
<th class="text-right sd-ahead">{{ number_format($data->sum('ahead'),3) }}</th>
<th class="text-right sd-over">{{ number_format($data->sum('over'),3) }}</th>
<th class="text-right sd-behind">{{ number_format($data->sum('behind'),3) }}</th>
<th class="text-right sd-assigned">{{ number_format($data->sum('assigned'),3) }}</th>
<th class="text-right sd-unassigned">{{ number_format($data->sum('unassigned'),3) }}</th>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
@endsection
@include('widgets.donut_chart',['chart'=>[
'entitled'=>$data->sum('entitled'),
'over'=>$data->sum('over'),
'actual'=>$data->sum('actual'),
'ahead'=>$data->sum('ahead'),
'behind'=>$data->sum('behind'),
'assigned'=>$data->sum('assigned'),
'unassigned'=>$data->sum('unassigned'),
]])

View File

@ -1,18 +1,8 @@
@extends('layouts.frontend') @extends('layouts.app')
@section('page_heading','Careers') @section('page_heading','Careers')
@section('section') @section('main-content')
<div class="main">
<div class="container">
<ul class="breadcrumb">
<li><a href="index.html">Home</a></li>
<li><a href="javascript:;">Pages</a></li>
<li class="active">Careers</li>
</ul>
<!-- BEGIN SIDEBAR & CONTENT -->
<div class="row margin-bottom-40">
<!-- BEGIN CONTENT --> <!-- BEGIN CONTENT -->
<div class="col-md-9 col-sm-9">
<h1>Careers</h1> <h1>Careers</h1>
<div class="content-page"> <div class="content-page">
<!-- BEGIN CAROUSEL --> <!-- BEGIN CAROUSEL -->
@ -161,49 +151,29 @@
</div> </div>
</div> </div>
</div> </div>
</div>
<div class="col-md-3 col-sm-3 sidebar2"> <!-- BEGIN PAGE LEVEL JAVASCRIPTS (REQUIRED ONLY FOR CURRENT PAGE) -->
<h2 class="padding-top-30">Our Contacts</h2> @js('assets/jquery/plugins/fancybox/source/jquery.fancybox.pack.js','jq-fancybox','jquery')<!-- pop up -->
<address> @js('assets/jquery/plugins/owl.carousel/2.0.0/js/owl.carousel.min.js','jq-owl-carousel','jquery')<!-- slider for products -->
<strong>Loop, Inc.</strong><br> @js('assets/jquery/plugins/uniform/2.1.0/js/jquery.uniform.min.js','jq-uniform','jquery')
795 Park Ave, Suite 120<br>
San Francisco, CA 94107<br>
<abbr title="Phone">P:</abbr> (234) 145-1810
</address>
<address>
<strong>Email</strong><br>
<a href="mailto:info@email.com">info@email.com</a><br>
<a href="mailto:support@example.com">support@example.com</a>
</address>
<h2 class="padding-top-20">Contact Form</h2> @js('corporate/scripts/layout.js','layout','jquery')
<!-- BEGIN FORM--> @js('pages/scripts/bs-carousel.js','bs-carousel','jq-owl-carousel')
<form action="#" role="form"> @js('pages/scripts/contact-us.js','contact-us','jquery')
<div class="form-group">
<label for="career-name">Name</label>
<input type="text" class="form-control" id="career-name">
</div>
<div class="form-group">
<label for="career-position">Position</label>
<select class="form-control" id="career-position">
<option>Senior Software Engineer</option>
<option>Systems Administrator/Operations Engineer</option>
<option>Technical Support Engineer</option>
</select>
</div>
<div class="form-group">
<label for="career-resume">Resume</label>
<input type="file" id="career-resume">
</div>
<button type="submit" class="btn btn-primary"><i class="icon-ok"></i> Send</button>
</form>
<!-- END FORM-->
</div>
<!-- END CONTENT -->
</div>
<!-- BEGIN SIDEBAR & CONTENT -->
</div>
</div>
@stop @stop
@section('page-scripts')
<script type="text/javascript">
jQuery(document).ready(function() {
Layout.init();
Layout.initOWL();
<!-- Layout.initTwitter(); -->
Layout.initUniform();
Layout.initFixHeaderWithPreHeader();
Layout.initNavScrolling();
<!-- ContactUs.init(); -->
});
</script>
<!-- END PAGE LEVEL JAVASCRIPTS -->
@stop

View File

@ -5,66 +5,37 @@
<html lang="en"> <html lang="en">
<!--<![endif]--> <!--<![endif]-->
<!-- Head BEGIN --> @section('htmlheader')
<head> @include('layouts.partials.htmlheader')
<meta charset="utf-8" /> @show
<title>@yield('page_heading')</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport" /> <!-- BODY BEGIN -->
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <body class="corporate">
@include('layouts.partials.mainheader')
<meta property="og:site_name" content="{{ config('app.name') }}" /> {{-- @include('layouts.partials.sidebar') --}}
<meta property="og:title" content="{{ $so->site->name }}" /> {{-- No sidebar in this theme --}}
<meta property="og:description" content="{{ $so->site->description }}" />
<meta property="og:type" content="website" />
<meta property="og:image" content="{{ $so->site->logo }}" />
<meta property="og:url" content="{{ url('') }}" />
<link rel="shortcut icon" href="@yield('site_favicon','favicon.ico')" /> <div class="main">
<div class="container">
@include('layouts.partials.contentheader')
{{-- Fonts START --}} <div class="row margin-bottom-40">
<link href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700|PT+Sans+Narrow|Source+Sans+Pro:200,300,400,600,700,900&amp;subset=all" rel="stylesheet" type="text/css"> <div class="col-md-9 col-sm-9">
{{-- Fonts END --}} @yield('main-content')
</div>
{{-- Global styles START --}} @include('layouts.partials.rightsidebar')
@css('assets/font-awesome/css/font-awesome.min.css') </div>
@css('assets/bootstrap/3.3.5/css/bootstrap.min.css')
{{-- Global styles END --}}
{{-- Theme styles START --}} </div>
@css('pages/css/components.css') </div>
@css('pages/css/slider.css')
@css('corporate/css/style.css')
@css('corporate/css/style-responsive.css')
@css('corporate/css/themes/red.css')
@css('corporate/css/custom.css')
{{-- Theme styles END --}}
{{-- Styles --}} @include('layouts.partials.footer')
{!! Asset::styles() !!}
</head>
<!-- Head END -->
<!-- Body BEGIN --> @section('scripts')
<body class="corporate"> @include('layouts.partials.scripts')
@yield('body') @show
{{-- BEGIN CORE PLUGINS (REQUIRED FOR ALL PAGES) --}} </body>
<!--[if lt IE 9]> <!-- BODY END -->
<script src="@js('assets/respondjs/js/respond.min.js')"></script>
<![endif]-->
@js('assets/jquery/1.11.2/js/jquery.min.js','jquery')
@js('assets/jquery/plugins/migrate/1.2.1/js/jquery-migrate.min.js','jq-migrate','jquery')
@js('assets/bootstrap/3.3.5/js/bootstrap.min.js','bootstrap-js','jquery')
@js('corporate/scripts/back-to-top.js','back-to-top','jquery')
{{-- END CORE PLUGINS --}}
{{-- Scripts --}}
{!! Asset::scripts() !!}
{{-- @TODO Consider removing this, so that scripts are rendered with @js() --}}
@yield('scripts')
</body>
<!-- END BODY -->
</html> </html>

View File

@ -1,203 +0,0 @@
@extends('layouts.app')
{{-- Page level plugin styles START --}}
@css('assets/animate/css/animate.css')
@css('assets/jquery/plugins/fancybox/source/jquery.fancybox.css')
@css('assets/jquery/plugins/owl.carousel/2.0.0/css/owl.carousel.css')
@css('assets/jquery/plugins/uniform/2.1.0/css/uniform.default.css')
{{-- Page level plugin styles END --}}
@section('body')
<!-- BEGIN TOP BAR -->
<div class="pre-header">
<div class="container">
<div class="row">
<!-- BEGIN TOP BAR LEFT PART -->
<div class="col-md-6 col-sm-6 additional-shop-info">
<ul class="list-unstyled list-inline">
<li><i class="fa fa-phone"></i><span>{{ $so->site->phone }}</span></li>
<li><i class="fa fa-envelope-o"></i><span>{{ $so->site->email }}</span></li>
</ul>
</div>
<!-- END TOP BAR LEFT PART -->
<!-- BEGIN TOP BAR MENU -->
<div class="col-md-6 col-sm-6 additional-nav">
<ul class="list-unstyled list-inline pull-right">
<li><a href="{{ url('login') }}">Log In</a></li>
<li><a href="{{ url('register') }}">Registration</a></li>
</ul>
</div>
<!-- END TOP BAR MENU -->
</div>
</div>
</div>
<!-- END TOP BAR -->
<!-- BEGIN HEADER -->
<div class="header">
<div class="container">
<a class="site-logo" href="index.html"><img src="{{ $so->site->logo_url() }}" alt="{{ $so->site->name }}" height="32"></a>
<a href="javascript:void(0);" class="mobi-toggler"><i class="fa fa-bars"></i></a>
<!-- BEGIN NAVIGATION -->
<div class="header-navigation pull-right font-transform-inherit">
<ul>
{{-- @todo Replace this with a function that can traverse children with multiple depths --}}
@foreach ($so->site->top_menu() as $item => $menu)
<li class="dropdown {{ Request::is($menu['url']) ? 'active' : '' }}">
@if (! array_get($menu,'children'))
<a {{ Request::is($menu['url']) ? 'class=active' : '' }} href="{{ url($menu['url']) }}">{{ $menu['name'] }}</a>
@else
<a class="dropdown-toggle" data-toggle="dropdown" data-target="#" href="javascript:;">{{ $item }}</a>
<ul class="dropdown-menu">
<li {{ (Request::is($menu['url']) ? 'class=active' : '') }}><a href="{{ url($menu['url']) }}">{{ $menu['name'] }}</a></li>
@foreach($menu['children'] as $name => $menuitem)
<li {{ (Request::is($menuitem['url']) ? 'class=active' : '') }}><a href="{{ url($menuitem['url']) }}">{{ $menuitem['name'] }}</a></li>
@endforeach
</ul>
@endif
</li>
@endforeach
<!-- BEGIN TOP SEARCH -->
<li class="menu-search">
<span class="sep"></span>
<i class="fa fa-search search-btn"></i>
<div class="search-box">
<form action="#">
<div class="input-group">
<input type="text" placeholder="Search" class="form-control">
<span class="input-group-btn">
<button class="btn btn-primary" type="submit">Search</button>
</span>
</div>
</form>
</div>
</li>
<!-- END TOP SEARCH -->
</ul>
</div>
<!-- END NAVIGATION -->
</div>
</div>
<!-- Header END -->
@yield('section')
<!-- BEGIN PRE-FOOTER -->
<div class="pre-footer">
<div class="container">
<div class="row">
<!-- BEGIN BOTTOM ABOUT BLOCK -->
<div class="col-md-4 col-sm-6 pre-footer-col">
<h2>About us</h2>
<p>{{ $so->site->aboutus() }}</p>
<!--
<div class="photo-stream">
<h2>Photos Stream</h2>
<ul class="list-unstyled">
<li><a href="javascript:;"><img alt="" src="{{!! Theme::url('pages/img/people/img5-small.jpg') !!}}"></a></li>
</ul>
</div>
-->
</div>
<!-- END BOTTOM ABOUT BLOCK -->
<!-- BEGIN BOTTOM CONTACTS -->
<div class="col-md-4 col-sm-6 pre-footer-col">
<h2>Our Contacts</h2>
<address class="margin-bottom-40">
<table>
<tr><th style="vertical-align:top; padding-right: 5px;">Address</th><td>{!! $so->site->address('html') !!}</td></tr>
<tr><th>Phone</th><td>{{ $so->site->phone }}</tr>
@if ($so->site->fax)<tr><th>Fax</th><td>{{ $so->site->fax }}</tr>@endif
<tr><th>Email</th><td> <a href="mailto:{{ $so->site->email }}">{{ $so->site->email }}</a></tr>
</table>
</address>
<!--
<div class="pre-footer-subscribe-box pre-footer-subscribe-box-vertical">
<h2>Newsletter</h2>
<p>Subscribe to our newsletter and stay up to date with the latest news and deals!</p>
<form action="#">
<div class="input-group">
<input type="text" placeholder="youremail@mail.com" class="form-control">
<span class="input-group-btn">
<button class="btn btn-primary" type="submit">Subscribe</button>
</span>
</div>
</form>
</div>
-->
</div>
<!-- END BOTTOM CONTACTS -->
<!-- BEGIN TWITTER BLOCK -->
<!--
<div class="col-md-4 col-sm-6 pre-footer-col">
<h2 class="margin-bottom-0">Latest Tweets</h2>
<a class="twitter-timeline" href="https://twitter.com/twitterapi" data-tweet-limit="2" data-theme="dark" data-link-color="#57C8EB" data-widget-id="" data-chrome="noheader nofooter noscrollbar noborders transparent">Loading tweets...</a>
</div>
-->
<!-- END TWITTER BLOCK -->
</div>
</div>
</div>
<!-- END PRE-FOOTER -->
<!-- BEGIN FOOTER -->
<div class="footer">
<div class="container">
<div class="row">
<!-- BEGIN COPYRIGHT -->
<div class="col-md-4 col-sm-4 padding-top-10">
2016 © Leenooks. ALL Rights Reserved. <!--<a href="javascript:;">Privacy Policy</a> | <a href="javascript:;">Terms of Service</a>-->
</div>
<!-- END COPYRIGHT -->
<!-- BEGIN SOCIAL -->
<div class="col-md-4 col-sm-4">
<ul class="social-footer list-unstyled list-inline pull-right">
@foreach ($so->site->social() as $social)
<li><a href="javascript:;"><i class="fa fa-{{ $social }}"></i></a></li>
@endforeach
</ul>
</div>
<!-- END SOCIAL -->
<!-- BEGIN POWERED -->
<div class="col-md-4 col-sm-4 text-right">
<p class="powered">Powered by: <a href="http://www.leenooks.net/">leenooks</a></p>
</div>
<!-- END POWERED -->
</div>
</div>
</div>
<!-- END FOOTER -->
<!-- BEGIN PAGE LEVEL JAVASCRIPTS (REQUIRED ONLY FOR CURRENT PAGE) -->
@js('assets/jquery/plugins/fancybox/source/jquery.fancybox.pack.js','jq-fancybox','jquery')<!-- pop up -->
@js('assets/jquery/plugins/owl.carousel/2.0.0/js/owl.carousel.min.js','jq-owl-carousel','jquery')<!-- slider for products -->
@js('assets/jquery/plugins/uniform/2.1.0/js/jquery.uniform.min.js','jq-uniform','jquery')
@js('corporate/scripts/layout.js','layout','jquery')
@js('pages/scripts/bs-carousel.js','bs-carousel','jq-owl-carousel')
@js('pages/scripts/contact-us.js','contact-us','jquery')
@endsection
@section('scripts')
<script type="text/javascript">
jQuery(document).ready(function() {
Layout.init();
Layout.initOWL();
<!-- Layout.initTwitter(); -->
Layout.initUniform();
Layout.initFixHeaderWithPreHeader();
Layout.initNavScrolling();
<!-- ContactUs.init(); -->
});
</script>
<!-- END PAGE LEVEL JAVASCRIPTS -->
@stop

View File

@ -0,0 +1,5 @@
<ul class="breadcrumb">
<li><a href="index.html">Home</a></li>
<li><a href="javascript:;">Pages</a></li>
<li class="active">Careers</li>
</ul>

View File

@ -0,0 +1,29 @@
<!-- FOOTER BEGIN -->
<div class="footer">
<div class="container">
<div class="row">
<!-- BEGIN COPYRIGHT -->
<div class="col-md-4 col-sm-4 padding-top-10">
{{ config('app.copyright') }}
</div>
<!-- END COPYRIGHT -->
<!-- BEGIN SOCIAL -->
<div class="col-md-4 col-sm-4">
<ul class="social-footer list-unstyled list-inline pull-right">
@foreach ($so->site->social() as $social)
<li><a href="javascript:;"><i class="fa fa-{{ $social }}"></i></a></li>
@endforeach
</ul>
</div>
<!-- END SOCIAL -->
<!-- BEGIN POWERED -->
<div class="col-md-4 col-sm-4 text-right">
<p class="powered">Powered by: <a href="http://www.leenooks.net/">leenooks</a></p>
</div>
<!-- END POWERED -->
</div>
</div>
</div>
<!-- FOOTER END -->

View File

@ -0,0 +1,39 @@
<!-- Head BEGIN -->
<head>
<meta charset="utf-8" />
<title>@yield('page_heading')</title>
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
<meta property="og:site_name" content="{{ config('app.name') }}" />
<meta property="og:title" content="{{ $so->site->name }}" />
<meta property="og:description" content="{{ $so->site->description }}" />
<meta property="og:type" content="website" />
<meta property="og:image" content="{{ $so->site->logo }}" />
<meta property="og:url" content="{{ url('') }}" />
<link rel="shortcut icon" href="@yield('site_favicon','favicon.ico')" />
{{-- Fonts START --}}
<link href="http://fonts.googleapis.com/css?family=Open+Sans:300,400,600,700|PT+Sans+Narrow|Source+Sans+Pro:200,300,400,600,700,900&amp;subset=all" rel="stylesheet" type="text/css">
{{-- Fonts END --}}
{{-- Global styles START --}}
@css('assets/font-awesome/css/font-awesome.min.css')
@css('assets/bootstrap/3.3.5/css/bootstrap.min.css')
{{-- Global styles END --}}
{{-- Theme styles START --}}
@css('pages/css/components.css')
@css('pages/css/slider.css')
@css('corporate/css/style.css')
@css('corporate/css/style-responsive.css')
@css('corporate/css/themes/red.css')
@css('corporate/css/custom.css')
{{-- Theme styles END --}}
{{-- Styles --}}
{!! Asset::styles() !!}
</head>
<!-- Head END -->

View File

@ -0,0 +1,78 @@
<!-- BEGIN TOP BAR -->
<div class="pre-header">
<div class="container">
<div class="row">
<!-- BEGIN TOP BAR LEFT PART -->
<div class="col-md-6 col-sm-6 additional-shop-info">
<ul class="list-unstyled list-inline">
<li><i class="fa fa-phone"></i><span>{{ $so->site->phone }}</span></li>
<li><i class="fa fa-envelope-o"></i><span>{{ $so->site->email }}</span></li>
</ul>
</div>
<!-- END TOP BAR LEFT PART -->
<!-- BEGIN TOP BAR MENU -->
<div class="col-md-6 col-sm-6 additional-nav">
<ul class="list-unstyled list-inline pull-right">
<li><a href="{{ url('login') }}">Log In</a></li>
<li><a href="{{ url('register') }}">Registration</a></li>
</ul>
</div>
<!-- END TOP BAR MENU -->
</div>
</div>
</div>
<!-- END TOP BAR -->
<!-- BEGIN HEADER -->
<div class="header">
<div class="container">
<a class="site-logo" href="index.html"><img src="{{ $so->site->logo_url() }}" alt="{{ $so->site->name }}" height="32"></a>
<a href="javascript:void(0);" class="mobi-toggler"><i class="fa fa-bars"></i></a>
<!-- BEGIN NAVIGATION -->
<div class="header-navigation pull-right font-transform-inherit">
<ul>
{{-- @todo Replace this with a function that can traverse children with multiple depths --}}
@foreach ($so->site->top_menu() as $item => $menu)
<li class="dropdown {{ Request::is($menu['url']) ? 'active' : '' }}">
@if (! array_get($menu,'children'))
<a {{ Request::is($menu['url']) ? 'class=active' : '' }} href="{{ url($menu['url']) }}">{{ $menu['name'] }}</a>
@else
<a class="dropdown-toggle" data-toggle="dropdown" data-target="#" href="javascript:;">{{ $item }}</a>
<ul class="dropdown-menu">
<li {{ (Request::is($menu['url']) ? 'class=active' : '') }}><a href="{{ url($menu['url']) }}">{{ $menu['name'] }}</a></li>
@foreach($menu['children'] as $name => $menuitem)
<li {{ (Request::is($menuitem['url']) ? 'class=active' : '') }}><a href="{{ url($menuitem['url']) }}">{{ $menuitem['name'] }}</a></li>
@endforeach
</ul>
@endif
</li>
@endforeach
<!-- BEGIN TOP SEARCH -->
<li class="menu-search">
<span class="sep"></span>
<i class="fa fa-search search-btn"></i>
<div class="search-box">
<form action="#">
<div class="input-group">
<input type="text" placeholder="Search" class="form-control">
<span class="input-group-btn">
<button class="btn btn-primary" type="submit">Search</button>
</span>
</div>
</form>
</div>
</li>
<!-- END TOP SEARCH -->
</ul>
</div>
<!-- END NAVIGATION -->
</div>
</div>
<!-- Header END -->

View File

@ -0,0 +1,37 @@
<div class="col-md-3 col-sm-3 sidebar2">
<h2 class="padding-top-30">Our Contacts</h2>
<address>
<strong>Loop, Inc.</strong><br>
795 Park Ave, Suite 120<br>
San Francisco, CA 94107<br>
<abbr title="Phone">P:</abbr> (234) 145-1810
</address>
<address>
<strong>Email</strong><br>
<a href="mailto:info@email.com">info@email.com</a><br>
<a href="mailto:support@example.com">support@example.com</a>
</address>
<h2 class="padding-top-20">Contact Form</h2>
<!-- BEGIN FORM-->
<form action="#" role="form">
<div class="form-group">
<label for="career-name">Name</label>
<input type="text" class="form-control" id="career-name">
</div>
<div class="form-group">
<label for="career-position">Position</label>
<select class="form-control" id="career-position">
<option>Senior Software Engineer</option>
<option>Systems Administrator/Operations Engineer</option>
<option>Technical Support Engineer</option>
</select>
</div>
<div class="form-group">
<label for="career-resume">Resume</label>
<input type="file" id="career-resume">
</div>
<button type="submit" class="btn btn-primary"><i class="icon-ok"></i> Send</button>
</form>
<!-- END FORM-->
</div>

View File

@ -0,0 +1,16 @@
{{-- BEGIN CORE PLUGINS (REQUIRED FOR ALL PAGES) --}}
<!--[if lt IE 9]>
<script src="@js('assets/respondjs/js/respond.min.js')"></script>
<![endif]-->
@js('assets/jquery/1.11.2/js/jquery.min.js','jquery')
@js('assets/jquery/plugins/migrate/1.2.1/js/jquery-migrate.min.js','jq-migrate','jquery')
@js('assets/bootstrap/3.3.5/js/bootstrap.min.js','bootstrap-js','jquery')
@js('corporate/scripts/back-to-top.js','back-to-top','jquery')
{{-- END CORE PLUGINS --}}
{{-- Scripts --}}
{!! Asset::scripts() !!}
@yield('page-scripts')

View File

@ -12,7 +12,3 @@ use Illuminate\Http\Request;
| is assigned the "api" middleware group. Enjoy building your API! | is assigned the "api" middleware group. Enjoy building your API!
| |
*/ */
Route::get('/user', function (Request $request) {
return $request->user();
})->middleware('auth:api');

View File

@ -16,32 +16,19 @@ Route::get('/', function () {
return view('welcome'); return view('welcome');
}); });
Route::get('logout','Auth\LoginController@logout');
// Generic Image Renderer - Render images that we dont have with a generic image // Generic Image Renderer - Render images that we dont have with a generic image
Route::get('image/generic/{width}/{height}/{color}','MediaController@image')->name('image'); Route::get('image/generic/{width}/{height}/{color}','MediaController@image')->name('image');
// Backend Routes
Route::group(['middleware'=>['auth','admin','setTheme:adminlte-be'],'prefix'=>'a'], function() {
Route::get('/home', function()
/* Route::get('/login', function()
{
return View::make('page-login');
})->name('login');
*/
Route::group(['middleware'=>['setTheme:metronic-fe']], function() {
/* Route::get('/', function()
{ {
return View::make('home'); return View::make('home');
})->name('home'); })->name('home');
*/
Route::get('/kangaroos', function()
{
return View::make('kangaroos');
})->name('kangaroos');
// Render site specific images
#Route::get('image/site/','MediaController@imagesite')->name('imagesite');
}); });
Route::group(['prefix'=>'public','namespace'=>'public','middleware'=>['setTheme:metronic-be']], function() { Route::group(['prefix'=>'public','namespace'=>'public','middleware'=>['setTheme:metronic-be']], function() {
@ -51,187 +38,19 @@ Route::group(['prefix'=>'public','namespace'=>'public','middleware'=>['setTheme:
return View::make('home'); return View::make('home');
})->name('public'); })->name('public');
Route::get('/page-about', function()
{
return View::make('page-about');
})->name('public.page-about');
Route::get('/page-services', function()
{
return View::make('page-services');
})->name('public.page-services');
Route::get('/page-prices', function()
{
return View::make('page-prices');
})->name('public.page-prices');
Route::get('/page-faq', function()
{
return View::make('page-faq');
})->name('public.page-faq');
Route::get('/page-gallery', function()
{
return View::make('page-gallery');
})->name('public.page-gallery');
Route::get('/page-search-result', function()
{
return View::make('page-search-result');
})->name('public.page-search-result');
Route::get('/page-forgotton-password', function()
{
return View::make('page-forgotton-password');
})->name('public.page-forgotton-password');
Route::get('/page-reg-page', function()
{
return View::make('page-reg-page');
})->name('register');
Route::get('/page-careers', function()
{
return View::make('page-careers');
})->name('public.page-careers');
Route::get('/page-site-map', function()
{
return View::make('page-site-map');
})->name('public.page-site-map');
Route::get('/page-contacts', function()
{
return View::make('page-contacts');
})->name('public.page-contacts');
Route::get('/portfolio-item', function()
{
return View::make('portfolio-item');
})->name('public.portfolio-item');
Route::get('/blog', function()
{
return View::make('blog');
})->name('public.blog');
Route::get('/blog-item', function()
{
return View::make('blog-item');
})->name('public.blog-item');
Route::get('/page-404', function()
{
return View::make('page-404');
})->name('public.page-404');
Route::get('/page-500', function()
{
return View::make('page-500');
})->name('public.page-500');
}); });
Route::group(['prefix'=>'demo','namespace'=>'sbadmin','middleware'=>['setTheme:sbadmin']], function() { Route::group(['prefix'=>'demo','namespace'=>'sbadmin','middleware'=>['setTheme:sbadmin']], function() {
Route::get('/a', function () {})->name('demo');
Route::get('/', function() Route::get('/b', function () {})->name('demo.login');
{ Route::get('/c', function () {})->name('demo.charts');
return View::make('home'); Route::get('/d', function () {})->name('demo.tables');
})->name('demo'); Route::get('/e', function () {})->name('demo.forms');
Route::get('/f', function () {})->name('demo.panels');
Route::get('/charts', function() Route::get('/g', function () {})->name('demo.buttons');
{ Route::get('/h', function () {})->name('demo.typography');
return View::make('mcharts'); Route::get('/i', function () {})->name('demo.icons');
})->name('demo.charts'); Route::get('/j', function () {})->name('demo.grid');
Route::get('/k', function () {})->name('demo.blank');
Route::get('/tables', function() Route::get('/l', function () {})->name('demo.documentation');
{
return View::make('table');
})->name('demo.tables');
Route::get('/forms', function()
{
return View::make('form');
})->name('demo.forms');
Route::get('/grid', function()
{
return View::make('grid');
})->name('demo.grid');
Route::get('/buttons', function()
{
return View::make('buttons');
})->name('demo.buttons');
Route::get('/icons', function()
{
return View::make('icons');
})->name('demo.icons');
Route::get('/panels', function()
{
return View::make('panel');
})->name('demo.panels');
Route::get('/typography', function()
{
return View::make('typography');
})->name('demo.typography');
Route::get('/notifications', function()
{
return View::make('notifications');
})->name('demo.notifications');
Route::get('/blank', function()
{
return View::make('blank');
})->name('demo.blank');
Route::get('/login', function()
{
return View::make('login');
})->name('demo.login');
Route::get('/documentation', function()
{
return View::make('documentation');
})->name('demo.documentation');
}); });
#Auth::routes();
#
#Route::get('/home', 'HomeController@index');
#Route::get('/test', 'TestController@index');
DB::enableQueryLog();
DB::listen(
function ($sql) {
foreach ($sql->bindings as $i => $binding) {
if ($binding instanceof \DateTime) {
$sql->bindings[$i] = $binding->format('\'Y-m-d H:i:s\'');
} else {
if (is_string($binding)) {
$sql->bindings[$i] = "'$binding'";
}
}
}
// Insert bindings into query
$query = str_replace(array('%', '?'), array('%%', '%s'), $sql->sql);
$query = vsprintf($query, $sql->bindings);
// Save the query to file
$logFile = fopen(
storage_path('logs' . DIRECTORY_SEPARATOR . date('Y-m-d') . '_query.log'),
'a+'
);
fwrite($logFile, date('Y-m-d H:i:s') . ': ' . $query . PHP_EOL);
fclose($logFile);
}
);