CRUD
CRUD by laravel š
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Pagination\Paginator;
use App\Company;
use Illuminate\Support\Str;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\File;
class CompanyController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
private $validationRules = ['name' => 'required'];
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
public function index()
{
return view('company.list');
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
public function create()
{
return view('company.create');
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
public function store(Request $request)
{
$this->validate($request, $this->validationRules);
$this->validationRules['logo'] = 'required|dimensions:min_width=100,min_height=100';
$company = new company();
$company->fill($request->all());
if($request->file('logo'))
{
// $company->logo = $this->saveLogo($request->file('logo'), 'images\logo', 'logo');
$logo = $request->file('logo');
$extension = $logo->getClientOriginalExtension();
Storage::disk('public')->put($logo->getFilename().'.'.$extension, File::get($logo));
$company->logo = $logo->getFilename().'.'.$extension;
}
if ($company->save()) {
return redirect()->route('company.index')->with('success', trans('messages.company.create.success'));
}
return redirect()->route('company.index')->with('error', trans('messages.company.create.error'));
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
//
}
/**
* Show the form for editing the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function edit(company $company)
{
return view('company.create',['company' => $company]);
}
/**
* Update the specified resource in storage.
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
public function update(Request $request, company $company)
{
$this->validate($request, $this->validationRules);
$company->fill($request->all());
// if($request->hasFile('logo'))
// {
// $company->logo = $this->saveLogo($request->file('logo'), 'images\logo', 'logo');
// }
if($request->file('logo'))
{
$logo = $request->file('logo');
$extension = $logo->getClientOriginalExtension();
Storage::disk('public')->put($logo->getFilename().'.'.$extension, File::get($logo));
$company->logo = $logo->getFilename().'.'.$extension;
}
if($company->save())
{
return redirect()->route('company.index')->with('success',trans('messages.company.update.success'));
}
return redirect()->route('company.index')->with('error',trans('messages.company.update.error'));
}
/**
* Remove the specified resource from storage.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function destroy(company $company)
{
if($company->delete())
{
return redirect(route('company.index'))->with('success', trans('messages.company.delete.success'));
}
return redirect(route('company.index'))->with('error', trans('messages.company.delete.error'));
}
/**
* Search companys.
*
* @param Request $request
*
* @return json
*/
public function search(Request $request)
{
if ($request->ajax()) {
$currentPage = ($request->start == 0) ? 1 : (($request->start / $request->length) + 1);
Paginator::currentPageResolver(function () use ($currentPage) {
return $currentPage;
});
$startNo = ($request->start == 0) ? 1 : (($request->length) * ($currentPage - 1)) + 1;
$query = company::selectRaw('companies.*')->orderBy('id','DESC');
$orderDir = $request->order[0]['dir'];
$orderColumnId = $request->order[0]['column'];
$orderColumn = str_replace('"', '', $request->columns[$orderColumnId]['name']);
$query->where(function ($query) use ($request) {
$query->orWhere('companies.name', 'like', '%' . $request->search['value'] . '%');
});
$company = $query->orderBy($orderColumn, $orderDir)
->paginate($request->length)->toArray();
$company['recordsFiltered'] = $company['recordsTotal'] = $company['total'];
foreach ($company['data'] as $key => $companys) {
$params = [
'company' => $companys['id'],
];
$company['data'][$key]['sr_no'] = $startNo + $key;
$editRoute = route('company.edit', $params);
$deleteRoute = route('company.destroy', $params);
$company['data'][$key]['action'] = '<a href="' . $editRoute .'"><button class="btn btn-primary">Edit</button></a>  ';
$company['data'][$key]['action'] .= '<a href="javascript:void(0);" data-url="' . $deleteRoute . '" class="btnDelete"><button class="btn btn-danger">Delete</button></a>  ';
$company['data'][$key]['logo'] .= '<img src="'.url('uploads/'.$companys['logo']).'" height="50px" width="50px">';
}
return response()->json($company);
}
}
/**
* Save logo.
*
* @param $logo,
* @param $path,
* @param $prefix,
*
* @return $logoName
*/
public function saveLogo($logo,$path,$prefix)
{
if(!empty($logo))
{
$destinationPath = public_path($path);
$fileName = $prefix.'_'.time().'_'.strtolower(Str::random(6) ).'.'.$logo->getClientOriginalExtension();
if($logo->move($destinationPath, $fileName)) {
chmod($destinationPath.'/'.$fileName,0777);
return $fileName;
}
}
return null;
}
}
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Company extends Model
{
/**
* Table name
*
* @var array
*/
protected $table = 'companies';
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'name', 'email', 'logo','website_url'
];
}
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@extends('layouts.index')
@section('title') Company List
@endsection
@section('content')
<div class="container-fluid text-center">
<div class="row">
<a href="{{ route('company.create') }}" ><button class="btn btn-primary">Create Company</button></a>
</div>
<div class="row content">
<div class="col-sm-12 text-left">
@include('common.flash')
<table id="participants" class="table table-striped table-bordered nowrap dataTable dt-responsive" style="width:100%">
<thead>
<tr>
<th width="100px">No</th>
<th>Name</th>
<th>Email</th>
<th>Logo</th>
<th>Url</th>
<th width="100px">Action</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
</div>
</div>
</div>
@include('common.forms')
@endsection
@section('js')
<script>
var table;
$(function() {
table = $('#participants').DataTable({
processing: true,
serverSide: true,
"ajax": {
"url":'{{ url(route("company.search")) }}',
"type": "POST",
"async": false,
},
columns: [
{ data: 'sr_no' ,name:'sr_no', orderable:false },
{ data: 'name', name: 'name'},
{ data: 'email', name: 'email'},
{ data: 'logo', name: 'logo'},
{ data: 'website_url', name: 'website_url'},
{ data: 'action', name: 'action', orderable: false },
],
"aaSorting": [[1,'desc']],
});
});
</script>
@endsection
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@extends('layouts.index')
@section('title') {{ empty($company) ? ' Company' : ' Company' }} @endsection
@section('content')
<div class="container-fluid text-center">
<div class="row">
<h2> Create company</h2>
</div>
<div class="row content">
<div class="col-sm-12 text-left">
@include('common.flash')
@if(empty($company))
<form class="form" name="companystore" id="companystore" method="post" enctype="multipart/form-data" action="{{ route('company.store') }}">
@else
<form class="form" name="companyupdate" id="companyupdate" method="post" enctype="multipart/form-data" action="{{ route('company.update', ['company' => $company->id]) }}">
@method('PUT')
@endif
{{ csrf_field() }}
<input type="hidden" name="id" id="id" value="{{ $company->id ?? '' }}" />
<div class="row">
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="name" class="block">Name *</label>
</div>
<div class="col-sm-12">
<input class="form-control" type="text" value="{{ $company->name ?? '' }}" name="name" id="name" placeholder="Please enter name" tabindex="2" >
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="email" class="col-2 col-form-label">Email<span class="text-danger"></span> </label>
</div>
<div class="col-sm-12">
<input class="form-control" type="email" value="{{ $company->email ?? '' }}" id="email" name="email" placeholder="Please enter email" tabindex="3" />
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="logo" class="col-2 col-form-label">Logo<span class="text-danger"></span> </label>
</div>
<div class="col-sm-12">
<input type="file" id="logo" name="logo" class="dropify" tabindex="3" data-show-remove="false" accept="image/x-png,image/jpg,image/jpeg" data-allowed-file-extensions="jpg png jpeg " data-default-file="{{ !empty($company->logo) ? url('images/logo/'.$company->logo) : ''}}"/>
@if(!empty($company->logo))
<br>
<img class="card-img-top" src="{{url('uploads/'.$company->logo)}}" alt="{{$company->logo}}" height="50px" width="50px">
@endif
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group row">
<div class="col-sm-12">
<label for="website_url" class="col-2 col-form-label">Site Url<span class="text-danger"></span> </label>
</div>
<div class="col-sm-12">
<input class="form-control" type="text" value="{{ $company->website_url ?? '' }}" id="website_url" name="website_url" placeholder="Please enter website url" tabindex="4" />
</div>
</div>
</div>
</div>
<button type="submit" class="btn btn-info"> {{ empty($company) ? 'Create' : 'Update' }}</button>
</form>
</div>
</div>
</div>
@endsection
@section('js')
@endsection
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
<script>
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(document).ready(function(){
setTimeout(function(){$('.alertdisapper').fadeOut();}, 4000);
});
var url = $('meta[name="baseUrl"]').attr('content');
$(document).on("click",'.btnDelete',function(event) {
var url = $(this).data('url');
event.preventDefault();
if (confirm('Are you sure?')) {
form = $('#deleteForm');
form.attr('action', url);
form.submit();
}
});
</script>
Comments
Post a Comment