Skip to content
This repository has been archived by the owner on Aug 28, 2024. It is now read-only.

Commit

Permalink
Presents Management
Browse files Browse the repository at this point in the history
* Select Present
* Edit Present
* Details View
  • Loading branch information
lightszentip committed Jan 6, 2022
1 parent 53449b3 commit 82f69c1
Show file tree
Hide file tree
Showing 24 changed files with 676 additions and 64 deletions.
2 changes: 2 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ LOG_CHANNEL=stack
LOG_DEPRECATIONS_CHANNEL=null
LOG_LEVEL=debug

PRESENTLIST_CODE=CODE #CODE or Text => Code=generate auto code - text use a input data from customer

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
Expand Down
134 changes: 120 additions & 14 deletions app/Http/Controllers/PresentsController.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,38 +6,98 @@
use App\Models\PresentLinks;
use App\Models\Presents;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;

class PresentsController extends Controller
{
public function show(Request $request)
{
$view = $request->input('view','grid');
$view = $request->input('view', 'grid');

$presents = Presents::all();
$presents = Presents::where('status', 1)->orWhere('status', 2)->get();

return view('presents', compact('presents','view'));
return view('presents', compact('presents', 'view'));
}

public function createPresent(Request $request) {
public function createPresent(Request $request)
{
$user = auth()->user();
if (empty($user) || !$user->hasPermissionTo('createPresent')) {
abort(403, 'no permission');
}
return view('presents-create', ['present' => new Presents()]);
}

public function editPresent(Request $request,Presents $present)
{
$user = auth()->user();
if(empty($user) || !$user->hasPermissionTo('createPresent')) {
abort(403,'no permission');
if (empty($user) || !$user->hasPermissionTo('createPresent')) {
abort(403, 'no permission');
}
return view('presents-create',['present' => new Presents()]);
return view('presents-edit', ['present' => $present]);
}

public function selectPresent(Request $request,Presents $present)
{
if($present->status == 2) {
return redirect()->route('presents.show')
->with('error', __('presents.share_error', ['title' => $present->title, 'id' => $present->id]));
}
if(config('app.presentlist_code') == 'CODE') {
$present->usePresent();
} else {
$codeText = $request->input('codeText');
$present->usePresent($codeText,false);
}
$present->save();
return redirect()->route('presents.show')
->with('success', __('presents.share_success', ['title' => $present->title, 'id' => $present->id,'code' => $present->code]));
}

public function storePresent(FormCreatePresentRequest $request) {
public function detailsPresent(Presents $present)
{
return view('presents-details', ['present' => $present]);
}

public function savePresent(FormCreatePresentRequest $request, Presents $present)
{
$links = $request->input('links');

$present = Presents::withoutEvents(function () use ($request,$links) {
$present = Presents::withoutEvents(function () use ($request,$present, $links) {
$present->imagepath = $request->input('imagepath');
$present->title = $request->input('title');
$present->description = $request->input('description');
$present->save();
$present->links()->delete();
if (!empty($links)) {
$newLinks = array();
foreach ($links as $link) {
if (!is_null($link)) {
$saveLink = new PresentLinks(['link' => $link, 'presents_id' => $present->id]);
$saveLink->save();
}
}

}
$present->save();
return $present;
});
return redirect()->route('presents.management')
->with('success', __('presents.create_success', ['title' => $present->title, 'id' => $present->id]));
}

public function storePresent(FormCreatePresentRequest $request)
{
$links = $request->input('links');

$present = Presents::withoutEvents(function () use ($request, $links) {
$present = new Presents($request->all());
$present->save();
if(!empty($links)) {
if (!empty($links)) {
$newLinks = array();
foreach ($links as $link) {
if(!is_null($link)) {
$saveLink = new PresentLinks(['link'=>$link,'presents_id'=>$present->id]);
if (!is_null($link)) {
$saveLink = new PresentLinks(['link' => $link, 'presents_id' => $present->id]);
$saveLink->save();
}
}
Expand All @@ -46,7 +106,53 @@ public function storePresent(FormCreatePresentRequest $request) {
$present->save();
return $present;
});
return redirect()->route('presents.show')
->with('success',__('presents.create_success',['title'=>$present->title, 'id'=> $present->id]));
return redirect()->route('presents.management')
->with('success', __('presents.create_success', ['title' => $present->title, 'id' => $present->id]));
}

public function deletePresent(Presents $present) {
$user = auth()->user();
if (empty($user) || !$user->hasPermissionTo('deletePresent')) {
abort(403, 'no permission');
}
$title = $present->title;
$id = $present->id;
$present->delete();
return redirect()->route('presents.management')
->with('success', __('presents.delete_success', ['title' => $title, 'id' => $id]));
}

public function presentManagement(Request $request)
{
if (Auth::user() == null || !Auth::user()->hasPermissionTo('releasePresent')) {
abort(403,'NO PERMISSION');
}
$presents = Presents::all();

return view('presents-management', compact('presents'));
}

public function releasePresent(Presents $present)
{
if (Auth::user() == null || !Auth::user()->hasPermissionTo('releasePresent')) {
abort(403,'NO PERMISSION');
}
$present->releasePresent();
$present->save();

return redirect()->route('presents.management')
->with('success', __('presents.release_success', ['title' => $present->title, 'id' => $present->id]));
}

public function draftPresent(Presents $present)
{
if (Auth::user() == null || !Auth::user()->hasPermissionTo('releasePresent')) {
abort(403,'NO PERMISSION');
}
$present->draftPresent();
$present->save();

return redirect()->route('presents.management')
->with('success', __('presents.draft_success', ['title' => $present->title, 'id' => $present->id]));
}
}
28 changes: 22 additions & 6 deletions app/Models/Presents.php
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,19 @@ public function links()
'id', 'created_at', 'updated_at',
];

public function usePresent(bool $isCodeActive = false)
public function usePresent(string $userText = '',bool $isCodeActive = true)
{
$this->status = 1;
if($isCodeActive) {
$this->status = 2;
if($isCodeActive || empty($userText)) {
$code = "";
$count = 0;
$count = 1;
while($count > 0) {
$code = $this->getCodeValue();
$count = Presents::whereCode($code)->count();
}
$this->code = $code;
} else {
$this->code = $userText;
}
}

Expand All @@ -62,14 +64,28 @@ public function releasePresent()
$this->status = 1;
}

public function draftPresent()
{
$this->status = 0;
}

private function getCodeValue() {
$signs = array_merge(range('A', 'Z'), range(0, 9), array('$', '%', '/', '(', '_', '-', ';'));
$signs = array_merge(range('A', 'Z'), range(0, 9), array('$', '/', '_', '-', ';'));
$int_array = count($signs);
$dates = array(date("Hmsdi"), date("Hdims"), date("msHdi"));
$code = hash("crc32b", $dates[rand(0, count($dates) - 1)] . rand(0, 99));
for ($i = 0; $i < 35; $i++) {
for ($i = 0; $i < 20; $i++) {
$code .= $signs[rand(0, $int_array - 1)];
}
return $code;
}

public function statusAsText() {
switch ($this->status) {
case 0: return __('presents.status_draft');
case 1: return __('presents.status_release');
case 2: return __('presents.status_select');
default : return __('presents.status_unkown');
}
}
}
2 changes: 2 additions & 0 deletions config/app.php
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@

'name' => env('APP_NAME', 'Laravel'),

'presentlist_code' => env('PRESENTLIST_CODE','CODE'),

/*
|--------------------------------------------------------------------------
| Application Environment
Expand Down
Binary file not shown.
Binary file not shown.
66 changes: 66 additions & 0 deletions public/js/extras.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions public/mix-manifest.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
{
"/js/app.js": "/js/app.js",
"/js/extras.js": "/js/extras.js",
"/css/app.css": "/css/app.css"
}
9 changes: 5 additions & 4 deletions resources/js/app.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
import * as bootstrap from 'bootstrap';
import {Tooltip} from 'bootstrap';


import Popper from '@popperjs/core/dist/umd/popper.js';

try {
Expand All @@ -12,8 +11,12 @@ try {
} catch (e) {
}




window.bootstrap = bootstrap;


// Now use Tooltip plugin
document.querySelectorAll('.btn-clipboard').forEach((button) => {
// Notice no 'bootstrap.' prefix; plugin was imported as just Tooltip
Expand All @@ -23,9 +26,7 @@ document.querySelectorAll('.btn-clipboard').forEach((button) => {
tooltip.hide();
});
});

require('light-switch-bootstrap/switch');
require('dropzone');
//window.lightswitchbootstrap();


//https://stackoverflow.com/questions/46643667/javascript-function-is-not-defined-with-laravel-mix
Loading

0 comments on commit 82f69c1

Please sign in to comment.