Curso App para Pizzería con delivery
Implementación de la 7
Implementación de la Sección administrativa para Pedidos, Modelo Pedido y Detalle, Controlador, Vistas y rutas
Implementación de la Sección administrativa para Pedidos, Modelo Pedido y Detalle, Controlador, Vistas y rutas
Model Pedido.php
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Pedido extends Model
{
use HasFactory;
protected $fillable = [
'subtotal',
'impuesto',
'total',
'fechapedido',
'procedencia',
'estado',
'user_id'
];
public function detalles(){
return $this->hasMany(Detalle::class);
}
public function user()
{
return $this->belongsTo(User::class);
}
}
Migración
<?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('pedidos', function (Blueprint $table) {
$table->id();
$table->decimal('subtotal',7,2);
$table->decimal('impuesto',7,2);
$table->decimal('total',7,2);
$table->datetime('fechapedido');
$table->enum('procedencia',["web","app"])->default("app");
$table->enum('estado',["nuevo","proceso","entregado"])->default("nuevo");
$table->foreignId('user_id')->references('id')->on('users');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('pedidos');
}
};
Controlador
<?php
namespace App\Http\Controllers\Admin;
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Pedido;
class PedidoController extends Controller
{
public function index(){
$pedidos = Pedido::orderByDesc("updated_at")->get();
return view('admin.pedido.index', compact("pedidos") );
}
public function edit($id){
$pedido = Pedido::find($id);
return view('admin.pedido.edit', compact("pedido") );
}
public function update(Request $request, $id){
$pedido =Pedido::findOrFail($id);
$pedido->fill($request->all());
$pedido->save();
return redirect('admin/pedido');
}
}
Vista index.blade.php
@extends('layouts.admin')
@section('content')
<div class="container">
<div class="row justify-content-center">
@include("admin.menu")
<div class="col-sm-8">
<h1 class="mt-3 mb-3 fs-4">SECCIÓN PEDIDOS</h1>
@if ($pedidos->count())
<table class="table table-bordered">
<tr>
<th>ID</th>
<th>CLIENTE</th>
<th>FECHA PEDIDO</th>
<th>PROCEDENCIA</th>
<th>TOTAL USD</th>
<th>ESTADO</th>
<th>ACCIÓN</th>
</tr>
@forelse ($pedidos as $c)
<tr>
<td>{{$c->id}}</td>
<td>{{$c->user->name}}</td>
<td>{{$c->fechapedido}}</td>
<td>{{$c->procedencia}}</td>
<td>{{$c->total}}</td>
<td>{{$c->estado}}</td>
<td>
<a href="{{route("admin.pedido.edit",$c->id)}}" class="btn btn-success">Ver detalle</a>
</td>
</tr>
@empty
<tr><td></td></tr>
@endforelse
</table>
@endif
</div>
</div>
</div>
@endsection
Vista edit.blade.php
@extends('layouts.admin')
@section('content')
<div class="container">
<div class="row justify-content-center">
@include("admin.menu")
<div class="col-sm-8">
<div class="card">
<div class="card-header">
<div class="row">
<div class="col-sm-6">
<h1 class="fs-4" >PEDIDO N: {{$pedido->id}} {{strtoupper($pedido->estado)}}</h1>
</div>
<div class="col-sm-6">
{!! Form::open(['route'=>['admin.pedido.update',$pedido],'method'=>'PUT']) !!}
<div class="row">
<div class="col-6">
{!! Form::select('estado',["nuevo"=>"Nuevo","proceso"=>"Proceso","entregado"=>"Entregado"],$pedido->estado,['class'=>'form-control','required']) !!}
</div>
<div class="col-6">
{{ Form::submit('ACTUALIZAR',['class'=>'btn btn-success w-100']) }}
</div>
</div>
{!! Form::close() !!}
</div>
</div>
</div>
<div class="card-body">
<ul class="list-group">
<li class="list-group-item">Cliente: {{$pedido->user->name}}</li>
<li class="list-group-item">Celular: {{$pedido->user->celular}}</li>
<li class="list-group-item">Email: {{$pedido->user->email}}</li>
<li class="list-group-item">Dirección: {{$pedido->user->direccion}}</li>
<li class="list-group-item">Fecha Pedido: {{$pedido->fechapedido}}</li>
</ul>
</div>
<table class="table table-striped">
<thead>
<th>Producto</th>
<th>Cantidad</th>
<th>Precio</th>
<th>Importe</th>
</thead>
<tbody>
@forelse ($pedido->detalles as $item)
<tr>
<td>{{$item->producto->nombre}}</td>
<td>{{$item->cantidad}}</td>
<td>{{$item->precio}}</td>
<td>{{$item->importe}}</td>
</tr>
@empty
@endforelse
<tr><td colspan="4" class="text-end">SubTotal: {{$pedido->subtotal}}</td></tr>
<tr><td colspan="4" class="text-end">Impuesto 18%: {{$pedido->impuesto}}</td></tr>
<tr><td colspan="4" class="text-end">Total: {{$pedido->total}}</td></tr>
</tbody>
</table>
</div>
</div>
<a href="javascript: history.go(-1)" class="btn btn-outline-primary">Regresar</a>
</div>
</div>
@endsection
626 visitas
« Capítulo 6 – Implementación CRUD Precios
Capítulo 8 – Implementación CRUD Clientes »
Descarga el código fuente del proyecto adquiriendo el curso completo
Comprar© Copyright Codea App | LATAM | 2020 - 2024