Crear nuevo subpedido

This commit is contained in:
nat 2022-01-11 17:24:46 -03:00
parent 7343c5fd0d
commit 7e85a0e2ff
10 changed files with 57 additions and 17 deletions

View File

@ -15,7 +15,7 @@ class Subpedido
*/
public function handle($request, Closure $next)
{
if (!session('subpedido')) {
if (!session('subpedido_nombre') || !session('subpedido_id')) {
return redirect()->route('subpedidos.create');
}
return $next($request);

View File

@ -36,4 +36,10 @@ class User extends Authenticatable
protected $casts = [
'email_verified_at' => 'datetime',
];
public function grupoDeCompra()
{
return $this->belongsTo('App\GrupoDeCompra');
}
}

View File

@ -18,6 +18,7 @@ class CreateUsersTable extends Migration
$table->string('name')->unique();
$table->string('email')->unique()->nullable();
$table->timestamp('email_verified_at')->nullable();
$table->foreignId('grupo_de_compra_id')->nullable();
$table->string('password');
$table->rememberToken();
$table->timestamps();

View File

@ -20,7 +20,7 @@ class GrupoDeCompraSeeder extends Seeder
$gdcToInsert = [];
$usersToInsert = [];
foreach($registros as $registro){
foreach($registros as $key => $registro){
$gdcToInsert[] = [
'nombre' => $registro['barrio'],
'region' => $registro['region'],
@ -31,7 +31,8 @@ class GrupoDeCompraSeeder extends Seeder
$usersToInsert[] = [
'name' => $registro['barrio'],
'password' => Hash::make($registro['barrio'])
'password' => Hash::make($registro['barrio']),
'grupo_de_compra_id' => $key
];
}

2
public/js/app.js vendored
View File

@ -7,7 +7,7 @@ Vue.component('nav-bar', {
<a class="navbar-item" href="https://bulma.io">
<img src="/assets/logoMPS.png" height="28">
</a>
<p style="margin:0 auto" class="navbar-item">Pedido de <slot name="subpedido"></slot></p>
<a role="button" class="navbar-burger" :class="{'is-active':isActive}" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample" @click="toggleState">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>

View File

@ -5,15 +5,30 @@ Vue.component('subpedido-select', {
subpedidosExistentes: []
}
},
props: ["gdcid"],
mounted() {
console.log("ready");
},
methods: {
onType() {
axios.get("/api/subpedidos?nombre=" + this.subpedido).then(response => {
console.log(this.subpedido);
this.subpedidosExistentes = response.data
console.log(this.subpedidosExistentes);
});
},
submit() {
axios.post("/api/subpedidos", {
nombre: this.subpedido,
grupo_de_compra_id: this.gdcid
}).then(response => {
axios.post("/subpedidos/guardar_sesion", {
subpedido: response.data
}).then(response => {
if (response.status == 200) {
window.location.href = 'productos';
} else {
console.log(response);
}
});
});
}
}

View File

@ -20,6 +20,7 @@
<body>
<div id="app">
<nav-bar>
<template slot="subpedido">{{ session('subpedido_nombre',"") }}</template>
<template slot="gdc">{{ Auth::user()->name }}</template>
<template slot="logout-form">
<form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">

View File

@ -9,7 +9,7 @@
<p class="subtitle">
Bienvenidx a la aplicación de compras del <strong>Mercado Popular de Subsistencia</strong>
</p>
<subpedido-select inline-template>
<subpedido-select inline-template gdcid="{{Auth::user()->grupoDeCompra->id}}">
<div class="block">
<div class="field">
<label class="label">Escribí el nombre de tu familia o grupo de convivencia</label>
@ -17,13 +17,15 @@
<input class="input" @input="onType" v-model="subpedido"></input>
</div>
<p class="help">Intentá que sea claro como para que tus compas del barrio te identifiquen.</p>
<p class="help">Si ya empezaste a hacer tu pedido, empezá a tipear y luego seleccioná tu nombre en la lista una vez que aparezca:</p>
</div>
<div class="buttons">
<button class="button is-primary" @click="submit">Crear nuevo pedido</button>
</div>
<div class="table-container">
<table class="table is-hoverable">
<tbody>
<tr v-for="subpedidosExistente in subpedidosExistentes" >
<td><a v-text="subpedidosExistente" :href="subpedidosExistente"></a></td>
<tr v-for="subpedidoExistente in subpedidosExistentes" >
<td><a v-text="subpedidoExistente.nombre" :href="subpedidoExistente.nombre"></a></td>
</tr>
</tbody>
</table>

View File

@ -28,17 +28,16 @@ Route::middleware('api')->group(function () {
});
});
//@TO DO -> esta ruta debe estar en middleware de autenticacion
//@TO DO -> esta ruta debe estar en middleware de subpedido
Route::get('/categorias', function() {
return Producto::all()->pluck('categoria')->unique()->flatten();
});
//@TO DO -> esta ruta debe estar en middleware de autenticacion
//@TO DO -> esta ruta debe estar en middleware de subpedido
Route::prefix('productos')->group(function () {
Route::get('/','Api\ProductoController@index');
});
//@TO DO -> esta ruta debe estar en middleware de autenticacion
Route::prefix('subpedidos')->group(function () {
Route::get('/','Api\SubpedidoController@index');
Route::post('/','Api\SubpedidoController@store');

View File

@ -1,7 +1,7 @@
<?php
use Illuminate\Support\Facades\Route;
use Symfony\Component\HttpKernel\Exception\HttpException;
/*
|--------------------------------------------------------------------------
| Web Routes
@ -19,6 +19,21 @@ Auth::routes(['register' => false]);
Route::get('/productos', 'ProductoController@index')->name('productos.index');
Route::get('/subpedidos', function() {
Route::middleware('auth')->group( function() {
Route::name('subpedidos.')->prefix("subpedidos")->group( function() {
Route::get('/', function() {
return view('subpedidos_create');
})->name('subpedidos.create')->middleware('auth');
})->name('create');
Route::post('guardar_sesion', function() {
$r = request();
if (!isset($r["subpedido"])) {
throw new HttpException(400, "La request necesita un subpedido para guardar en sesión");
}
session(["subpedido_nombre" => $r["subpedido"]["nombre"]]);
session(["subpedido_id" => $r["subpedido"]["id"]]);
return "Subpedido guardado en sesión";
})->name('guardarSesion');
});
});