Inicio » Cursos » App para Pizzería con delivery

Empezando el Proyecto

Panel de Administración

FrontEnd Diseño

Carrito de Compra

API Rest

Diseño de la App Android

Autenticación Android

Catálogo de Productos

Carrito de Compra Android

Extras

Curso App para Pizzería con delivery

Lección: 6 ➜ Implementación CRUD Precios

Implementación del Modelo para precios según el tamaño de las Pizzas, controlador, vistas y rutas para la gestión desde la administración

Lección 6: Implementación CRUD Precios

Implementación del Modelo para precios según el tamaño de las Pizzas, controlador, vistas y rutas para la gestión desde la administración

Ruta web.php


Route::group(['prefix' => 'admin', 	'middleware' => ['auth','role:admin']], function() {
    // rutas para el administrador
    Route::resource('categoria', App\Http\Controllers\Admin\CategoriaController::class,["as"=>"admin"]);
    Route::resource('producto', App\Http\Controllers\Admin\ProductoController::class,["as"=>"admin"]);
    Route::resource('precio', App\Http\Controllers\Admin\PrecioController::class,["as"=>"admin"]);
   
});

 

Modelo Precio.php

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Precio extends Model
{
    use HasFactory;
    public $timestamps = false;
    protected $fillable = [
       
        'nombre',       
        'precio',       
        'producto_id'
    ];
    public function producto(){
        return $this->belongsTo(Producto::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('precios', function (Blueprint $table) {
            $table->id();
            $table->string('nombre',50)->nullable();
            $table->decimal('precio',7,2)->nullable();            
            $table->foreignId('producto_id')->references('id')->on('productos');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::dropIfExists('precios');
    }
};

 

Controlador

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Producto;
use App\Models\Precio;
use Illuminate\Support\Str;
use Session;

class PrecioController extends Controller
{
    public function index(){
        if(Session::get("producto_id")!=null){
            $precios = Precio::whereProducto_id(Session::get("producto_id"))->get();
            $producto = Producto::find(Session::get("producto_id"));
            return view("admin.precio.index",compact("precios","producto"));
        }
    }
    public function create(){
        return view('admin.precio.create');
    }
    public function store(Request $request){
        $precio          =   new Precio($request->all());
        $precio->producto_id = Session::get("producto_id");
        $precio->save();
        return redirect('admin/precio');
    }

    public function edit($id){
        $precio   =   Precio::find($id);        
        return view('admin.precio.edit',compact("precio"));
    }
    public function update(Request $request, $id){
        $precio             =   Precio::findOrFail($id);
        $urlfotoanterior    =   $precio->urlfoto;
        $precio->fill($request->all());         
        $precio->save();
        return redirect('admin/precio');
    }

    public function destroy($id){
        $precio=Precio::findOrFail($id);        
        $precio->delete();
        return redirect('admin/precio');
    }

}

 

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">
            <a href="/admin/categoria">{{$producto->categoria->nombre}}</a> <a href="/admin/producto">{{$producto->nombre}}</a> <br>
            <a href="{{route("admin.precio.create")}}" class="btn btn-success">CREAR PRECIO</a>
            <table class="table table-bordered mt-3">
                <tr><th>ID</th><th>NOMBRE</th><th>PRECIO</th><th>ACCIÓN</th></tr>
                @forelse ($precios as $c)
                <tr>
                    <td>{{$c->id}}</td>
                    <td>{{$c->nombre}}</td>
                    <td>{{$c->precio}}</td>
                    <td>
                        <a href="{{route("admin.precio.edit",$c->id)}}" class="btn btn-success">EDITAR PRECIO</a>
                        {!! Form::open(['method' => 'DELETE','route' => ['admin.precio.destroy', $c->id],'style'=>'display:inline']) !!}
                            {!! Form::submit('ELIMINAR PRECIO', ['class' => 'btn btn-success','onclick'=>'return confirm("¿Eliminar Precio?")']) !!}
                        {!! Form::close() !!}
                    </td>
                </tr>
                @empty
                    <tr><td></td></tr>
                @endforelse
            </table>
            <a href="javascript: history.go(-1)" class="btn btn-outline-primary">Regresar</a>
        </div>
    </div>
</div>
@endsection

 

vista create.blade.php

@extends('layouts.admin')
@section('content')
<div class="container">
    <div class="row justify-content-center">
    @include("admin.menu")
        <div class="col-sm-8">
            {!! Form::open(['route'=>'admin.precio.store','method'=>'POST']) !!}
            <div class="form-group row">                
                <div class="col-sm-4">
                    {!! Form::label('nombre','Nombre') !!}
                    {!! Form::text('nombre',null,['class'=>'form-control','required']) !!}
                </div>              
                <div class="col-sm-4">
                    {!! Form::label('precio','Precio') !!}
                    {!! Form::text('precio',null,['class'=>'form-control','required']) !!}
                </div>
            </div>            
            <div class="form-group mt-3">
                <a href="javascript: history.go(-1)" class="btn btn-outline-primary">Regresar</a>
                {{ Form::submit('CREAR PRECIO',['class'=>'btn btn-success']) }}
            </div>
            {!! Form::close() !!}
        </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">
            {!! Form::open(['route'=>['admin.precio.update',$precio],'method'=>'PUT']) !!}
            <div class="form-group row">                
                <div class="col-sm-6">
                {!! Form::label('nombre','Nombre') !!}
                {!! Form::text('nombre',$precio->nombre,['class'=>'form-control','required']) !!}
                </div>                
                <div class="col-sm-6">
                    {!! Form::label('precio','Precio') !!}
                    {!! Form::text('precio',$precio->precio,['class'=>'form-control','required']) !!}
                </div>
            </div>
            <div class="form-group mt-3">
                <a href="javascript: history.go(-1)" class="btn btn-outline-primary">Regresar</a>
                {{ Form::submit('GUARDAR PRECIO',['class'=>'btn btn-success']) }}
            </div>
            {!! Form::close() !!}
        </div>
    </div>
</div>
@endsection

 

 

 


319 visitas

Descarga el código del proyecto

Descarga el código fuente del proyecto adquiriendo el curso completo

Descargar ahora

Más cursos que pueden interesarte

Más cursos

Codea Codea App

México, Colombia, España, Venezuela, Argentina, Bolivia, Perú

© Todos los derechos reservados Codea App | ...de frente al código!!! | 2020 - 2023