Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
Raditya FIrman Syaputra
Go-Toko
Commits
9a5d936c
Commit
9a5d936c
authored
1 year ago
by
Ahmad Hasan Ali
Browse files
Options
Download
Email Patches
Plain Diff
Subscription order history
parent
bb2b3a46
main
3SU-Subscription
OR-Expenses
OR-Product
OR-Sales
cashier-branch
No related merge requests found
Changes
16
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
app/Exports/SubscriptionOrderExport.php
+59
-0
app/Exports/SubscriptionOrderExport.php
app/Http/Controllers/General/MyProfileController.php
+2
-1
app/Http/Controllers/General/MyProfileController.php
app/Http/Controllers/SubscriptionController.php
+12
-0
app/Http/Controllers/SubscriptionController.php
app/Http/Controllers/Superadmin/Settings/MenuController.php
+8
-8
app/Http/Controllers/Superadmin/Settings/MenuController.php
app/Http/Controllers/Superadmin/Subscription/SubscriptionOrderController.php
+44
-0
...s/Superadmin/Subscription/SubscriptionOrderController.php
app/Models/SubscriptionOrderModel.php
+20
-0
app/Models/SubscriptionOrderModel.php
composer.lock
+1
-1
composer.lock
database/migrations/2023_03_31_103110_create_user_subscription_table.php
+4
-0
...ions/2023_03_31_103110_create_user_subscription_table.php
database/migrations/2023_07_09_222231_create_subscription_order_table.php
+40
-0
...ons/2023_07_09_222231_create_subscription_order_table.php
resources/views/page/superadmin/people/user/show.blade.php
+0
-22
resources/views/page/superadmin/people/user/show.blade.php
resources/views/page/superadmin/settings/menu/index.blade.php
+0
-5
...urces/views/page/superadmin/settings/menu/index.blade.php
resources/views/page/superadmin/settings/menu/modal-menu.blade.php
+3
-2
.../views/page/superadmin/settings/menu/modal-menu.blade.php
resources/views/page/superadmin/subscription/management/index.blade.php
+1
-1
...s/page/superadmin/subscription/management/index.blade.php
resources/views/page/superadmin/subscription/order/index.blade.php
+83
-0
.../views/page/superadmin/subscription/order/index.blade.php
resources/views/page/superadmin/subscription/order/report.blade.php
+97
-0
...views/page/superadmin/subscription/order/report.blade.php
routes/superadmin.php
+7
-0
routes/superadmin.php
with
381 additions
and
40 deletions
+381
-40
app/Exports/SubscriptionOrderExport.php
0 → 100644
View file @
9a5d936c
<?php
namespace
App\Exports
;
use
App\Models\userSubscription
;
use
App\Models\UserSubscriptionModel
;
use
Carbon\Carbon
;
use
Maatwebsite\Excel\Concerns\FromCollection
;
use
Maatwebsite\Excel\Concerns\FromQuery
;
use
Maatwebsite\Excel\Concerns\WithHeadings
;
use
Maatwebsite\Excel\Concerns\WithMapping
;
class
SubscriptionOrderExport
implements
FromQuery
,
WithHeadings
,
WithMapping
{
/**
* @return Builder
*/
public
function
query
()
{
return
UserSubscriptionModel
::
query
()
->
with
(
'user'
);
}
/**
* @return array
*/
public
function
headings
():
array
{
return
[
'#'
,
'Nama User'
,
'Nama Langganan'
,
'Harga'
,
'Jangka Waktu'
,
'Waktu Berakhir'
,
'dibuat pada'
,
'diperbarui pada'
];
}
/**
* @param mixed $userSubscription
* @return array
*/
public
function
map
(
$userSubscription
):
array
{
static
$row_number
=
0
;
return
[
++
$row_number
,
$userSubscription
->
user
->
userProfile
->
first_name
.
' '
.
$userSubscription
->
user
->
userProfile
->
last_name
,
$userSubscription
->
subscription_name
,
$userSubscription
->
subscription_price
,
$userSubscription
->
subscription_time
,
Carbon
::
parse
(
$userSubscription
->
expire
)
->
format
(
'd M Y'
),
$userSubscription
->
created_at
,
$userSubscription
->
updated_at
,
];
}
}
\ No newline at end of file
This diff is collapsed.
Click to expand it.
app/Http/Controllers/General/MyProfileController.php
View file @
9a5d936c
...
...
@@ -88,7 +88,8 @@ public function update(Request $request, $id)
// Profile Picture handler
if
(
$request
->
hasFile
(
'picture'
))
{
if
(
Storage
::
disk
(
's3'
)
->
exists
(
$data
->
picturePath
))
{
if
(
$data
->
picturePath
&&
Storage
::
disk
(
's3'
)
->
exists
(
$data
->
picturePath
))
{
Storage
::
disk
(
's3'
)
->
delete
(
$data
->
picturePath
);
}
...
...
This diff is collapsed.
Click to expand it.
app/Http/Controllers/SubscriptionController.php
View file @
9a5d936c
...
...
@@ -42,7 +42,11 @@ public function add(Request $request)
UserSubscriptionModel
::
create
([
'subscription_types_id'
=>
$subs_type
->
id
,
'subscription_name'
=>
$subs_type
->
name
,
'subscription_price'
=>
$subs_type
->
price
,
'subscription_time'
=>
$subs_type
->
time
,
'user_id'
=>
$user_id
,
'status'
=>
'paid'
,
'expire'
=>
$expire
,
]);
...
...
@@ -64,7 +68,11 @@ public function add(Request $request)
UserSubscriptionModel
::
create
([
'subscription_types_id'
=>
$subs_type
->
id
,
'subscription_name'
=>
$subs_type
->
name
,
'subscription_price'
=>
$subs_type
->
price
,
'subscription_time'
=>
$subs_type
->
time
,
'user_id'
=>
$user_id
,
'status'
=>
'paid'
,
'expire'
=>
$expire
,
]);
...
...
@@ -83,7 +91,11 @@ public function add(Request $request)
UserSubscriptionModel
::
create
([
'subscription_types_id'
=>
$subs_type
->
id
,
'subscription_name'
=>
$subs_type
->
name
,
'subscription_price'
=>
$subs_type
->
price
,
'subscription_time'
=>
$subs_type
->
time
,
'user_id'
=>
$user_id
,
'status'
=>
'paid'
,
'expire'
=>
$expire
,
]);
...
...
This diff is collapsed.
Click to expand it.
app/Http/Controllers/Superadmin/Settings/MenuController.php
View file @
9a5d936c
...
...
@@ -2,17 +2,17 @@
namespace
App\Http\Controllers\Superadmin\Settings
;
use
Dompdf\Dompdf
;
use
App\Http\Controllers\Controller
;
use
App\Models\MenuModel
;
use
App\Models\RoleMenuModel
;
use
App\Models\RolesModel
;
use
Illuminate\Support\Str
;
use
Dompdf\Dompdf
;
use
Illuminate\Http\Request
;
use
App\Mo
de
l
s\
RoleMenuModel
;
use
Illuminate\Support\Faca
des\
Auth
;
use
Illuminate\Support\Facades\DB
;
use
Illuminate\Support\Facades\Log
;
use
App\Http\Controllers\Controller
;
use
Illuminate\Support\Facades\Auth
;
use
Illuminate\Support\Facades\Validator
;
use
Illuminate\Support\Str
;
class
MenuController
extends
Controller
{
...
...
@@ -64,7 +64,7 @@ public function store(Request $request)
]);
}
$data
=
array_merge
(
$request
->
all
(),
[
'status'
=>
1
,
'url'
=>
$role
->
name
.
'/'
.
Str
::
slug
(
$request
->
name
,
'-'
)]);
$data
=
array_merge
(
$request
->
all
(),
[
'status'
=>
1
,
'url'
=>
$role
->
name
.
'/'
.
Str
::
slug
(
$request
->
name
,
'-'
)]);
try
{
DB
::
beginTransaction
();
...
...
@@ -131,14 +131,14 @@ public function update(Request $request, $id)
]);
}
$data
=
array_merge
(
$request
->
all
(),
[
'status'
=>
1
,
'url'
=>
$role
->
name
.
'/'
.
Str
::
slug
(
$request
->
name
,
'-'
)]);
$data
=
array_merge
(
$request
->
all
(),
[
'status'
=>
1
,
'url'
=>
$role
->
name
.
'/'
.
Str
::
slug
(
$request
->
name
,
'-'
)]);
try
{
DB
::
beginTransaction
();
MenuModel
::
where
(
'id'
,
$id
)
->
update
([
'name'
=>
$request
->
name
,
'url'
=>
$
request
->
url
,
'url'
=>
$
data
[
'
url
'
]
,
'icon'
=>
$request
->
icon
,
]);
...
...
This diff is collapsed.
Click to expand it.
app/Http/Controllers/Superadmin/Subscription/SubscriptionOrderController.php
0 → 100644
View file @
9a5d936c
<?php
namespace
App\Http\Controllers\Superadmin\Subscription
;
use
App\Exports\SubscriptionOrderExport
;
use
App\Http\Controllers\Controller
;
use
App\Models\UserSubscriptionModel
;
use
Carbon\Carbon
;
use
Dompdf\Dompdf
;
use
Maatwebsite\Excel\Facades\Excel
;
class
SubscriptionOrderController
extends
Controller
{
public
function
index
()
{
$data
=
UserSubscriptionModel
::
with
(
'user'
)
->
get
();
return
view
(
'page.superadmin.subscription.order.index'
,
compact
(
'data'
));
}
public
function
reportPdf
()
{
// Mendapatkan data subscription type dari database
$datas
=
UserSubscriptionModel
::
with
(
'user'
)
->
get
();
// Menghasilkan HTML dari view laporan_list_user.blade.php dengan menggunakan data user
$html
=
view
(
'page.superadmin.subscription.order.report'
,
compact
(
'datas'
));
// Membuat instance Dompdf dan mengkonfigurasinya
$dompdf
=
new
Dompdf
();
$dompdf
->
loadHtml
(
$html
);
$dompdf
->
setPaper
(
'A4'
,
'portrait'
);
// Render file PDF
$dompdf
->
render
();
// Memberikan respons HTTP dengan file PDF sebagai respon
return
$dompdf
->
stream
(
Carbon
::
now
()
->
format
(
'm-d-Y'
)
.
'_laporan_pembelian_langganan.pdf'
);
}
public
function
reportExcel
()
{
return
Excel
::
download
(
new
SubscriptionOrderExport
,
Carbon
::
now
()
->
format
(
'm-d-Y'
)
.
'_laporan_pembelian_langganan.xlsx'
);
}
}
This diff is collapsed.
Click to expand it.
app/Models/SubscriptionOrderModel.php
0 → 100644
View file @
9a5d936c
<?php
namespace
App\Models
;
use
Illuminate\Database\Eloquent\Factories\HasFactory
;
use
Illuminate\Database\Eloquent\Model
;
class
SubscriptionOrderModel
extends
Model
{
use
HasFactory
;
protected
$table
=
'subscription_order'
;
protected
$guarded
=
[
'id'
];
public
function
user
()
{
return
$this
->
belongsTo
(
User
::
class
);
}
}
This diff is collapsed.
Click to expand it.
composer.lock
View file @
9a5d936c
...
...
@@ -10393,5 +10393,5 @@
"php": "^8.0.2"
},
"platform-dev": [],
"plugin-api-version": "2.
1
.0"
"plugin-api-version": "2.
3
.0"
}
This diff is collapsed.
Click to expand it.
database/migrations/2023_03_31_103110_create_user_subscription_table.php
View file @
9a5d936c
...
...
@@ -17,6 +17,10 @@ public function up()
$table
->
id
();
$table
->
unsignedBigInteger
(
'subscription_types_id'
);
$table
->
unsignedBigInteger
(
'user_id'
);
$table
->
string
(
'subscription_name'
);
$table
->
integer
(
'subscription_price'
);
$table
->
integer
(
'subscription_time'
);
$table
->
string
(
'payment_via'
)
->
nullable
();
$table
->
timestamp
(
'expire'
);
$table
->
enum
(
'status'
,
[
'pending'
,
'paid'
])
->
nullable
();
$table
->
timestamps
();
...
...
This diff is collapsed.
Click to expand it.
database/migrations/2023_07_09_222231_create_subscription_order_table.php
0 → 100644
View file @
9a5d936c
<?php
use
Illuminate\Database\Migrations\Migration
;
use
Illuminate\Database\Schema\Blueprint
;
use
Illuminate\Support\Facades\Schema
;
return
new
class
extends
Migration
{
/**
* Run the migrations.
*
* @return void
*/
public
function
up
()
{
Schema
::
create
(
'subscription_order'
,
function
(
Blueprint
$table
)
{
$table
->
id
();
$table
->
unsignedBigInteger
(
'user_id'
);
$table
->
string
(
'name'
);
$table
->
integer
(
'price'
);
$table
->
integer
(
'time'
);
$table
->
string
(
'payment_via'
);
$table
->
enum
(
'status'
,
[
'paid'
,
'unpaid'
]);
$table
->
timestamps
();
$table
->
foreign
(
'user_id'
)
->
references
(
'id'
)
->
on
(
'users'
)
->
cascadeOnDelete
()
->
cascadeOnUpdate
();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public
function
down
()
{
Schema
::
dropIfExists
(
'subscription_order'
);
}
};
This diff is collapsed.
Click to expand it.
resources/views/page/superadmin/people/user/show.blade.php
View file @
9a5d936c
...
...
@@ -201,17 +201,6 @@ class="datetimepicker"
</
div
>
</
div
>
</
div
>
<
div
class
=
"col-lg-3 col-sm-6 col-12 d-flex"
>
<
div
class
=
"dash-count das2"
>
<
div
class
=
"dash-counts"
>
<
h4
id
=
"subscription-users"
>-</
h4
>
<
h5
>
User
Subscription
</
h5
>
</
div
>
<
div
class
=
"dash-imgs"
>
<
i
data
-
feather
=
"dollar-sign"
></
i
>
</
div
>
</
div
>
</
div
>
</
div
>
<
div
class
=
"row"
>
<
h4
class
=
"card-title"
>
Products
</
h4
>
...
...
@@ -345,17 +334,6 @@ class="datetimepicker"
</div>
</div>
</div>
<div class="col-lg-3 col-sm-6 col-12 d-flex">
<div class="dash-count das2">
<div class="dash-counts">
<h4 id="subscription-users">-</h4>
<h5>User Subscription</h5>
</div>
<div class="dash-imgs">
<i data-feather="dollar-sign"></i>
</div>
</div>
</div>
</div>
<div class="row">
<h4 class="card-title">Products</h4>
...
...
This diff is collapsed.
Click to expand it.
resources/views/page/superadmin/settings/menu/index.blade.php
View file @
9a5d936c
...
...
@@ -30,11 +30,6 @@
href=
"{{ route('superadmin.settings.menu.report-pdf') }}"
><img
src=
"{{ URL::asset('/assets/img/icons/pdf.svg') }}"
alt=
"img"
></a>
</li>
<li>
<a
data-bs-toggle=
"tooltip"
data-bs-placement=
"top"
title=
"excel"
href=
"{{ route('superadmin.people.user.report-excel') }}"
><img
src=
"{{ URL::asset('/assets/img/icons/excel.svg') }}"
alt=
"img"
></a>
</li>
</ul>
</div>
</div>
...
...
This diff is collapsed.
Click to expand it.
resources/views/page/superadmin/settings/menu/modal-menu.blade.php
View file @
9a5d936c
...
...
@@ -75,10 +75,11 @@
function
setDefaultMenuValue
(
data
)
{
var
$form
=
$
(
'#menu_form'
);
if
(
!
data
.
menu
)
{
$
(
'#role_id'
,
$form
)
.
val
(
data
.
id
)
$
(
'#role_id'
,
$form
)
.
val
(
data
.
id
)
;
$
(
'#ModalLabelMenu'
)
.
append
(
'Add New Menu'
);
}
else
{
$
(
'#id'
,
$form
)
.
val
(
data
.
id
);
$
(
'#role_id'
,
$form
)
.
val
(
data
.
role_id
);
$
(
'#name'
,
$form
)
.
val
(
data
.
menu
.
name
);
$
(
'#icon'
,
$form
)
.
val
(
data
.
menu
.
icon
);
$
(
'#ModalLabelMenu'
)
.
append
(
'Edit Menu'
);
...
...
@@ -114,7 +115,7 @@ function resetFormMenu() {
var
menu_role
=
$
(
this
)
.
data
(
'menu'
)
var
data_action
=
$
(
this
)
.
data
(
'action'
)
var
data_method
=
$
(
this
)
.
data
(
'method'
)
console
.
log
(
menu_role
);
setDefaultMenuValue
(
menu_role
);
$
(
'#menu_form'
)
.
attr
({
...
...
This diff is collapsed.
Click to expand it.
resources/views/page/superadmin/subscription/management/index.blade.php
View file @
9a5d936c
...
...
@@ -111,4 +111,4 @@
</div>
@include('page.superadmin.subscription.management.modal')
@endsection
@endsection
\ No newline at end of file
This diff is collapsed.
Click to expand it.
resources/views/page/superadmin/subscription/order/index.blade.php
0 → 100644
View file @
9a5d936c
<?php
$page
=
'blankpage'
;
?>
@extends('layout.mainlayout')
@section('title', 'Subscription Order')
@section('forhead')
{{-- Toastr Style --}}
<link
rel=
"stylesheet"
href=
"{{ url('assets/plugins/toastr/toatr.css') }}"
>
@endsection
@section('content')
<div
class=
"page-wrapper pagehead"
>
<div
class=
"content"
>
<div
class=
"page-header"
>
<div
class=
"row"
>
<div
class=
"col-sm-12"
>
<h3
class=
"page-title"
>
Subscription Order
</h3>
<ul
class=
"breadcrumb"
>
<li
class=
"breadcrumb-item"
><a
href=
"{{ route('superadmin.dashboard') }}"
>
Dashboard
</a></li>
<li
class=
"breadcrumb-item active"
>
Subscription Order
</li>
</ul>
</div>
</div>
</div>
<div
class=
"row"
>
<div
class=
"col-sm-12"
>
<!-- /product list -->
<div
class=
"card"
>
<div
class=
"card-body"
>
<div
class=
"table-top"
>
<div
class=
"search-set"
></div>
<div
class=
"wordset"
>
<ul>
<li>
<a
data-bs-toggle=
"tooltip"
data-bs-placement=
"top"
title=
"pdf"
href=
"{{ route('superadmin.subscription.subscription-order.report-pdf') }}"
><img
src=
"{{ URL::asset('/assets/img/icons/pdf.svg') }}"
alt=
"img"
></a>
</li>
<li>
<a
data-bs-toggle=
"tooltip"
data-bs-placement=
"top"
title=
"excel"
href=
"{{ route('superadmin.subscription.subscription-order.report-excel') }}"
><img
src=
"{{ URL::asset('/assets/img/icons/excel.svg') }}"
alt=
"img"
></a>
</li>
</ul>
</div>
</div>
<div
class=
"table-responsive"
>
<table
class=
"table datanew"
>
<thead>
<tr>
<th>
No.
</th>
<th>
Nama User
</th>
<th>
Nama Langganan
</th>
<th>
Harga
</th>
<th>
Jangka Waktu
</th>
<th>
Waktu Berakhir
</th>
</tr>
</thead>
<tbody>
@foreach ($data as $item)
<tr>
<td>
{{ $loop->iteration }}
</td>
<td>
{{ $item->user->userProfile->first_name . ' ' . $item->user->userProfile->last_name }}
</td>
<td>
{{ $item->subscription_name }}
</td>
<td>
Rp. {{ $item->subscription_price }}
</td>
<td>
{{ $item->subscription_time }} bulan
</td>
<td>
{{ Carbon\Carbon::parse($item->expire)->format('d M Y') }}
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</div>
<!-- /product list -->
</div>
</div>
</div>
</div>
@endsection
This diff is collapsed.
Click to expand it.
resources/views/page/superadmin/subscription/order/report.blade.php
0 → 100644
View file @
9a5d936c
<!DOCTYPE html>
<html>
<head>
<meta
charset=
"UTF-8"
>
<title>
Laporan List User
</title>
<style>
/* Style untuk kop laporan */
.laporan-kop
{
text-align
:
center
;
font-size
:
24px
;
font-weight
:
bold
;
margin-bottom
:
20px
;
}
/* Style untuk logo aplikasi */
.laporan-logo
{
float
:
left
;
width
:
100px
;
height
:
100px
;
margin-right
:
20px
;
}
/* Style untuk informasi laporan */
.laporan-info
{
margin-bottom
:
20px
;
clear
:
both
;
}
/* Style untuk tabel list user */
table
{
border-collapse
:
collapse
;
width
:
100%
;
margin-bottom
:
20px
;
}
table
th
,
table
td
{
border
:
1px
solid
black
;
padding
:
5px
;
}
table
th
{
background-color
:
#eee
;
font-weight
:
bold
;
text-align
:
left
;
}
table
td
{
font-size
:
14px
;
text-align
:
center
;
}
</style>
</head>
<body>
<!-- Kop laporan -->
<div
class=
"laporan-kop"
>
<img
class=
"laporan-logo"
src=
"{{ URL::asset('/assets/img/Pos-gotoko-black.png') }}"
alt=
"Logo Aplikasi"
>
Laporan Pembelian Langganan
</div>
<!-- Informasi laporan -->
<div
class=
"laporan-info"
>
Aplikasi: Go-Toko
<br>
Laporan: Pembelian Langganan
<br>
Dicetak oleh: {{ Auth::user()->userProfile->first_name . ' ' . Auth::user()->userProfile->last_name }}
<br>
Tanggal Cetak: {{ Carbon\Carbon::now()->format('d M Y') }}
</div>
<table>
<thead>
<tr>
<th>
No.
</th>
<th>
Nama User
</th>
<th>
Nama Langganan
</th>
<th>
Harga
</th>
<th>
Jangka Waktu
</th>
<th>
Waktu Berakhir
</th>
</tr>
</thead>
<tbody>
@foreach ($datas as $item)
<tr>
<td>
{{ $loop->iteration }}
</td>
<td>
{{ $item->user->userProfile->first_name . ' ' . $item->user->userProfile->last_name }}
</td>
<td>
{{ $item->subscription_name }}
</td>
<td>
Rp. {{ $item->subscription_price }}
</td>
<td>
{{ $item->subscription_time }} bulan
</td>
<td>
{{ Carbon\Carbon::parse($item->expire)->format('d M Y') }}
</td>
</tr>
@endforeach
</tbody>
</table>
</body>
</html>
This diff is collapsed.
Click to expand it.
routes/superadmin.php
View file @
9a5d936c
...
...
@@ -7,6 +7,7 @@
use
App\Http\Controllers\Superadmin\Settings\MenuController
;
use
App\Http\Controllers\Superadmin\Settings\SubmenuController
;
use
App\Http\Controllers\Superadmin\Subscription\SubscriptionManagementController
;
use
App\Http\Controllers\Superadmin\Subscription\SubscriptionOrderController
;
use
Illuminate\Support\Facades\Route
;
Route
::
group
([
'prefix'
=>
'superadmin'
,
'as'
=>
'superadmin.'
,
'middleware'
=>
[
'auth'
,
'role:superadmin'
]],
function
()
{
...
...
@@ -83,5 +84,11 @@
Route
::
get
(
'report-pdf'
,
[
SubscriptionManagementController
::
class
,
'reportPdf'
])
->
name
(
'report-pdf'
);
Route
::
get
(
'report-excel'
,
[
SubscriptionManagementController
::
class
,
'reportExcel'
])
->
name
(
'report-excel'
);
});
Route
::
group
([
'prefix'
=>
'subscription-order'
,
'as'
=>
'subscription-order.'
],
function
(){
Route
::
get
(
''
,
[
SubscriptionOrderController
::
class
,
'index'
])
->
name
(
'index'
);
Route
::
get
(
'report-pdf'
,
[
SubscriptionOrderController
::
class
,
'reportPdf'
])
->
name
(
'report-pdf'
);
Route
::
get
(
'report-excel'
,
[
SubscriptionOrderController
::
class
,
'reportExcel'
])
->
name
(
'report-excel'
);
});
});
});
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment
Menu
Projects
Groups
Snippets
Help