Материал: Автоматизация учета аренды площадей клиентами компании ООО "Грандтитул"

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам
107
->when($onlyMy,function($query)use($onlyMy){
return$query->where('agent_id',Auth::user()->id);
})
->limit(15)
->paginate(15);
}
}
<?php
namespaceApp\Http\Controllers;
useApp\Http\Requests\OrderRequest;
useApp\Order;
useApp\OrderStatus;
useIlluminate\Http\Request;
useApp\Operation;
useIlluminate\Support\Facades\Auth;
classOrderControllerextendsController
{
/**
* Display a listing of the resource.
*
* @return \Illuminate\Http\Response
*/
publicfunctionindex()
{
returnview('order.index',['backToFront'=>[
'operations'=>Operation::all(),
'statuses'=>OrderStatus::all()
]]);
}
/**
* Show the form for creating a new resource.
*
* @return \Illuminate\Http\Response
*/
publicfunctioncreate()
{
//
}
/**
* Store a newly created resource in storage.
*
* @param \Illuminate\Http\Request $request
* @return \Illuminate\Http\Response
*/
publicfunctionstore(OrderRequest$request)
{
$toFill=$request->all();
$toFill['agent_id']=$request->user()->id;
$order=Order::create($toFill);
returnjson_encode(['success'=>true,'added'=>$order]);
}
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
publicfunctionshow($id)
{
108
//
}
/**
* Обновлениеспецифичноймодели
*
* @param \Illuminate\Http\Request $request
* @param int $id
* @return \Illuminate\Http\Response
*/
publicfunctionupdate(OrderRequest$request,$id)
{
$order=Order::findOrFail($id);
$toFill=$request->all();
$toFill['agent_id']=$request->user()->id;
$order->fill($toFill);
$order->save();
returnjson_encode(['success'=>true,'updated'=>$order]);
}
/**
* Удаление специфичной модели
*
* @param int $id
* @return \Illuminate\Http\Response
*/
publicfunctiondestroy($id)
{
$client=Order::findOrFail($id);
$client->delete();
returnjson_encode(['success'=>true,'deleted'=>$id]);
}
publicfunctionsearch(Request$request){
$searchField=$request->client_field;
$createdAtField=$request->created_at_field;
$operationField=$request->operation_field;
$statusField=$request->status_field;
$agentField=$request->agent_field;
$onlyMy=$request->only_my;
returnOrder::with('status','operation','agent','client')
->when($operationField,function($query)use($operationField){
return$query->where('operation_id',$operationField);
})
->when($statusField,function($query)use($statusField){
return$query->where('order_status_id',$statusField);
})
->when($createdAtField,function($query)use($createdAtField){
$explodedCreated=explode(',',$createdAtField);
switch(count($explodedCreated)){
case2:
return$query->whereBetween('created_at',[$explodedCreated[0],$explodedCreated[1]]);
case1:
109
return$query->where('created_at','>=',$explodedCreated[0]);
default:
returnfalse;
}
})
->when($searchField,function($query)use($searchField){
return$query
->where(function($query)use($searchField){
$query->where('f_name','like','%'.$searchField.'%')
->orWhere('m_name','like','%'.$searchField.'%')
->orWhere('l_name','like','%'.$searchField.'%')
->orWhere('id','like','%'.$searchField.'%');
});
})
->when($agentField,function($query)use($agentField){
$queryTwo="clients.id like '%".$agentField."%' OR "
."clients.f_name like '%".$agentField."%' OR "
."clients.l_name like '%".$agentField."%' OR"
."clients.m_name like '%".$agentField."%'"
."";
return$query->whereExists(function($query)use($queryTwo){
$query->select(DB::raw('id, f_name, l_name, m_name'))
->from('clients')
->whereRaw($queryTwo);
});
})
->when($onlyMy,function($query)use($onlyMy){
return$query->where('agent_id',Auth::user()->id);
})
->limit(15)
->paginate(15);
}
}
<?php
namespaceApp;
useIlluminate\Database\Eloquent\Model;
classBuildingextendsModel
{
protected$guarded=[];
//relations
publicfunctiontype(){
return$this->belongsTo('App\BuildingType','building_type_id');
}
publicfunctionoperation(){
return$this->belongsTo('App\Operation');
}
publicfunctionclient(){
return$this->belongsTo('App\Client');
}
}
<?php
namespaceApp;
useIlluminate\Database\Eloquent\Model;
110
classClientextendsModel
{
protected$guarded=[];
//relation
publicfunctionmembers(){
return$this->hasMany('App\Members');
}
publicfunctionbuildings(){
return$this->hasMany('App\Building');
}
}
<?php
namespaceApp;
useIlluminate\Database\Eloquent\Model;
classContractextendsModel
{
protected$guarded=[];
//relations
publicfunctiontype(){
return$this->belongsTo('App\ContractType');
}
publicfunctionorder(){
return$this->belongsTo('App\Order');
}
publicfunctionbuilding(){
return$this->belongsTo('App\Building');
}
publicfunctionmembers(){
return$this->hasMany('App\Members');
}
}
<?php
namespaceApp;
useIlluminate\Database\Eloquent\Model;
classOperationextendsModel
{
protected$guarded=[];
publicfunctionbuildings(){
return$this->hasMany('App\Building');
}
}
<?php
namespaceApp;
useIlluminate\Database\Eloquent\Model;
classOrderextendsModel
{
protected$guarded=[];
publicfunctionclient(){
111
return$this->belongsTo('App\Client');
}
publicfunctionoperation(){
return$this->belongsTo('App\Operation');
}
publicfunctionstatus(){
return$this->belongsTo('App\OrderStatus','order_status_id');
}
publicfunctionagent(){
return$this->belongsTo('App\Agent');
}
}
<?php
useIlluminate\Support\Facades\Schema;
useIlluminate\Database\Schema\Blueprint;
useIlluminate\Database\Migrations\Migration;
classCreateTableBuildingTypesextendsMigration
{
/**
* Run the migrations.
*
* @return void
*/
publicfunctionup()
{
Schema::create('building_types',function(Blueprint$table){
$table->increments('id');
$table->string('title',100);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
publicfunctiondown()
{
Schema::dropIfExists('building_types');
}
}
<?php
useIlluminate\Support\Facades\Schema;
useIlluminate\Database\Schema\Blueprint;
useIlluminate\Database\Migrations\Migration;
classCreateTableOperationsextendsMigration
{
/**
* Run the migrations.
*
* @return void
*/
publicfunctionup()
Источник: https://baza.diplomsite.ru/previewfile/2357