Compare commits
10 commits
228b1b63bc
...
fdfba78d21
Author | SHA1 | Date | |
---|---|---|---|
fdfba78d21 | |||
544f54e95d | |||
6fe4295577 | |||
cdbd1504b6 | |||
e4e4fe2fff | |||
6200ee234a | |||
bf97f60e32 | |||
408629a78d | |||
105767dab7 | |||
54fe1ff601 |
6 changed files with 182 additions and 60 deletions
|
@ -7,6 +7,7 @@ use App\Helpers\CanastaHelper;
|
||||||
use App\Helpers\CsvHelper;
|
use App\Helpers\CsvHelper;
|
||||||
use App\Helpers\PedidosExportHelper;
|
use App\Helpers\PedidosExportHelper;
|
||||||
use App\Helpers\TransporteHelper;
|
use App\Helpers\TransporteHelper;
|
||||||
|
use App\Http\Resources\GrupoDeCompraComisionesResource;
|
||||||
use App\Http\Resources\GrupoDeCompraResource;
|
use App\Http\Resources\GrupoDeCompraResource;
|
||||||
use App\Producto;
|
use App\Producto;
|
||||||
use App\User;
|
use App\User;
|
||||||
|
@ -20,6 +21,7 @@ use League\Csv\Exception;
|
||||||
use League\Csv\InvalidArgument;
|
use League\Csv\InvalidArgument;
|
||||||
use Mpdf\MpdfException;
|
use Mpdf\MpdfException;
|
||||||
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
use Symfony\Component\HttpFoundation\BinaryFileResponse;
|
||||||
|
use Symfony\Component\HttpKernel\Exception\HttpException;
|
||||||
|
|
||||||
class ComisionesController
|
class ComisionesController
|
||||||
{
|
{
|
||||||
|
@ -188,59 +190,103 @@ class ComisionesController
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function modificarGrupoDeCompra(Request $request, $grupo_de_compra_id) {
|
public static function modificarGrupoDeCompra(Request $request, $grupo_de_compra_id) {
|
||||||
$request->validate([
|
$valid = $request->validate([
|
||||||
'nombre' => ['nullable','string','regex:/^([a-z]| )+$/i'],
|
'nombre' => ['nullable','string','regex:/^([a-z]| )+$/i'],
|
||||||
'region' => ['nullable','string','regex:/^([a-z]| |\d)+$/i'],
|
'region' => ['nullable','string','regex:/^([a-z]| |\d)+$/i'],
|
||||||
'passBarrio' => 'nullable|string|alpha_num',
|
'passBarrio' => ['nullable','string','alpha_num','min:3'],
|
||||||
'passAdmin' => 'nullable|string|alpha_num',
|
'passAdmin' => ['nullable','string','alpha_num','min:3'],
|
||||||
'passOllas' => 'nullable|string|alpha_num',
|
'passOllas' => ['nullable','string','alpha_num','min:3'],
|
||||||
]);
|
]);
|
||||||
$grupoDeCompra = GrupoDeCompra::find($grupo_de_compra_id);
|
$grupoDeCompra = GrupoDeCompra::find($grupo_de_compra_id);
|
||||||
|
|
||||||
if ($request["nombre"]) {
|
foreach (array_keys($valid) as $key) {
|
||||||
|
switch ($key) {
|
||||||
|
case 'nombre':
|
||||||
$users = User::where([
|
$users = User::where([
|
||||||
'grupo_de_compra_id' => $grupoDeCompra->id,
|
'grupo_de_compra_id' => $grupoDeCompra->id,
|
||||||
])->get();
|
])->first();
|
||||||
foreach ($users as $user) {
|
foreach ($users as $user) {
|
||||||
$user->name = str_replace($grupoDeCompra->nombre, $request['nombre'], $user->name);
|
$user->name = str_replace($grupoDeCompra->nombre, $valid['nombre'], $user->name);
|
||||||
$user->save();
|
$user->save();
|
||||||
}
|
}
|
||||||
$grupoDeCompra->nombre = $request['nombre'];
|
$grupoDeCompra->nombre = $valid['nombre'];
|
||||||
$grupoDeCompra->save();
|
$grupoDeCompra->save();
|
||||||
}
|
break;
|
||||||
|
case 'region':
|
||||||
if ($request["region"]) {
|
$grupoDeCompra->region = $valid['region'];
|
||||||
$grupoDeCompra->region = $request['region'];
|
|
||||||
$grupoDeCompra->save();
|
$grupoDeCompra->save();
|
||||||
}
|
break;
|
||||||
|
case 'passBarrio':
|
||||||
if ($request["passBario"]) {
|
|
||||||
$user = User::where([
|
$user = User::where([
|
||||||
'grupo_de_compra_id' => $grupoDeCompra->id,
|
'grupo_de_compra_id' => $grupoDeCompra->id,
|
||||||
'role_id' => UserRole::where(['nombre' => 'barrio'])->first()->id,
|
'role_id' => UserRole::where(['nombre' => 'barrio'])->first()->id,
|
||||||
]);
|
])->first();
|
||||||
$user->password = Hash::make($request['passBario']);
|
$user->password = Hash::make($valid['passBarrio']);
|
||||||
$user->save();
|
$user->save();
|
||||||
}
|
break;
|
||||||
|
case 'passAdmin':
|
||||||
if ($request["passAdmin"]) {
|
|
||||||
$user = User::where([
|
$user = User::where([
|
||||||
'grupo_de_compra_id' => $grupoDeCompra->id,
|
'grupo_de_compra_id' => $grupoDeCompra->id,
|
||||||
'role_id' => UserRole::where(['nombre' => 'admin_barrio'])->first()->id,
|
'role_id' => UserRole::where(['nombre' => 'admin_barrio'])->first()->id,
|
||||||
]);
|
])->first();
|
||||||
$user->password = Hash::make($request['passAdmin']);
|
$user->password = Hash::make($valid['passAdmin']);
|
||||||
$user->save();
|
$user->save();
|
||||||
}
|
break;
|
||||||
|
case 'passOllas':
|
||||||
if ($request["passOllas"]) {
|
|
||||||
$user = User::where([
|
$user = User::where([
|
||||||
'grupo_de_compra_id' => $grupoDeCompra->id,
|
'grupo_de_compra_id' => $grupoDeCompra->id,
|
||||||
'role_id' => UserRole::where(['nombre' => 'ollas'])->first()->id,
|
'role_id' => UserRole::where(['nombre' => 'ollas'])->first()->id,
|
||||||
]);
|
])->first();
|
||||||
$user->password = Hash::make($request['passOllas']);
|
$user->password = Hash::make($valid['passOllas']);
|
||||||
$user->save();
|
$user->save();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return response()->noContent();
|
return response()->noContent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function crearGrupoDeCompra(Request $request) {
|
||||||
|
$valid = $request->validate([
|
||||||
|
'nombre' => ['required','string','regex:/^([a-z]| )+$/i'],
|
||||||
|
'region' => ['required','string','regex:/^([a-z]| |\d)+$/i'],
|
||||||
|
'passBarrio' => ['required','string','alpha_num','min:3'],
|
||||||
|
'passAdmin' => ['required','string','alpha_num','min:3'],
|
||||||
|
'passOllas' => ['required','string','alpha_num','min:3'],
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (GrupoDeCompra::where(["nombre" => $valid["nombre"]])->get()->count())
|
||||||
|
throw new HttpException(400, "Ya existe un barrio con este nombre.");
|
||||||
|
|
||||||
|
$gdc = GrupoDeCompra::create([
|
||||||
|
'nombre' => $valid['nombre'],
|
||||||
|
'region' => $valid['region'],
|
||||||
|
'saldo' => 0,
|
||||||
|
]);
|
||||||
|
|
||||||
|
User::create([
|
||||||
|
'grupo_de_compra_id' => $gdc->id,
|
||||||
|
'name' => $valid['nombre'],
|
||||||
|
'password' => Hash::make($valid['passBarrio']),
|
||||||
|
'role_id' => UserRole::where('nombre','barrio')->first()->id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
User::create([
|
||||||
|
'grupo_de_compra_id' => $gdc->id,
|
||||||
|
'name' => $valid['nombre'] . '_admin',
|
||||||
|
'password' => Hash::make($valid['passAdmin']),
|
||||||
|
'role_id' => UserRole::where('nombre','admin_barrio')->first()->id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
User::create([
|
||||||
|
'grupo_de_compra_id' => $gdc->id,
|
||||||
|
'name' => $valid['nombre'] . '_ollas',
|
||||||
|
'password' => Hash::make($valid['passOllas']),
|
||||||
|
'role_id' => UserRole::where('nombre','ollas')->first()->id,
|
||||||
|
]);
|
||||||
|
|
||||||
|
return new GrupoDeCompraComisionesResource($gdc);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ class User extends Authenticatable
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $fillable = [
|
protected $fillable = [
|
||||||
'name', 'email', 'password', 'role_id',
|
'grupo_de_compra_id', 'name', 'email', 'password', 'role_id',
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -2,21 +2,59 @@
|
||||||
import TablaBarrios from "./TablaBarrios.vue";
|
import TablaBarrios from "./TablaBarrios.vue";
|
||||||
import DropdownDescargar from "../DropdownDescargar.vue";
|
import DropdownDescargar from "../DropdownDescargar.vue";
|
||||||
import ModalBarrio from "./ModalBarrio.vue";
|
import ModalBarrio from "./ModalBarrio.vue";
|
||||||
import { mapState } from "vuex";
|
import { mapActions, mapMutations, mapState } from "vuex";
|
||||||
|
import Dropdown from "../../comunes/Dropdown.vue";
|
||||||
|
import comisiones from "../../../store/modules/comisiones";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "BarriosSeccion",
|
name: "BarriosSeccion",
|
||||||
components: { DropdownDescargar, TablaBarrios, ModalBarrio },
|
components: { Dropdown, DropdownDescargar, TablaBarrios, ModalBarrio },
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
opcionesDescarga: [
|
||||||
|
{
|
||||||
|
nombre: "Pedidos por barrio en csv",
|
||||||
|
href: "/comisiones/pedidos"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
nombre: "Notas por barrio en csv",
|
||||||
|
href: "/comisiones/pedidos/notas"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
nombre: "Pedidos por barrio en pdf",
|
||||||
|
href: "/comisiones/pedidos/pdf"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
nombre: "Pedidos de ollas en csv",
|
||||||
|
href: "/comisiones/pedidos/ollas"
|
||||||
|
},
|
||||||
|
],
|
||||||
|
};
|
||||||
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState("comisiones", ["grupo_de_compra_actual"])
|
...mapState("comisiones", ["grupo_de_compra_actual", "grupo_de_compra_nuevo"])
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapMutations("ui", ["toggleModalBarrio"]),
|
||||||
|
...mapMutations("comisiones", ["grupoDeCompraNuevo"]),
|
||||||
|
modalNuevoBarrio() {
|
||||||
|
this.grupoDeCompraNuevo();
|
||||||
|
this.toggleModalBarrio();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<template>
|
<template>
|
||||||
<div>
|
<div>
|
||||||
<modal-barrio v-if="grupo_de_compra_actual"/>
|
<modal-barrio v-if="grupo_de_compra_actual || grupo_de_compra_nuevo"/>
|
||||||
<dropdown-descargar/>
|
<div class="is-flex is-justify-content-space-between mb-3">
|
||||||
|
<button class="button" @click="modalNuevoBarrio">
|
||||||
|
<span class="icon"><i class="fa fa-plus-circle"/></span>
|
||||||
|
<span>Agregar barrio</span>
|
||||||
|
</button>
|
||||||
|
<dropdown :opciones="opcionesDescarga" placeholder="Descargar planillas" :is-right="false"/>
|
||||||
|
</div>
|
||||||
<tabla-barrios/>
|
<tabla-barrios/>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<div class="modal-background"></div>
|
<div class="modal-background"></div>
|
||||||
<div class="modal-card">
|
<div class="modal-card">
|
||||||
<header class="modal-card-head">
|
<header class="modal-card-head">
|
||||||
<p class="modal-card-title">Modificar barrio</p>
|
<p class="modal-card-title">{{ titulo }}</p>
|
||||||
<button class="delete" aria-label="close" @click.capture="cerrar"></button>
|
<button class="delete" aria-label="close" @click.capture="cerrar"></button>
|
||||||
</header>
|
</header>
|
||||||
<section class="modal-card-body">
|
<section class="modal-card-body">
|
||||||
|
@ -40,7 +40,7 @@
|
||||||
</section>
|
</section>
|
||||||
<footer class="modal-card-foot is-justify-content-right">
|
<footer class="modal-card-foot is-justify-content-right">
|
||||||
<button class="button" @click="cerrar">Cancelar</button>
|
<button class="button" @click="cerrar">Cancelar</button>
|
||||||
<button class="button is-success" @click="modificar">Aceptar</button>
|
<button class="button is-success" @click="confirmar">Aceptar</button>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -62,13 +62,32 @@ export default {
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
...mapState('ui', ["show_modal_barrio"]),
|
...mapState('ui', ["show_modal_barrio"]),
|
||||||
...mapState('comisiones', ["grupo_de_compra_actual"]),
|
...mapState('comisiones', ["grupo_de_compra_actual", "grupo_de_compra_nuevo"]),
|
||||||
|
titulo() {
|
||||||
|
return this.grupo_de_compra_nuevo ? "Agregar barrio" : "Modificar barrio";
|
||||||
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
...mapMutations("comisiones", ["seleccionarGrupoDeCompra"]),
|
...mapMutations("comisiones", ["seleccionarGrupoDeCompra"]),
|
||||||
...mapMutations('ui', ["toggleModalBarrio"]),
|
...mapMutations('ui', ["toggleModalBarrio"]),
|
||||||
...mapActions("comisiones", ["modificarBarrio"]),
|
...mapActions("comisiones", ["modificarBarrio", "crearBarrio"]),
|
||||||
...mapActions('ui', ["toast"]),
|
...mapActions('ui', ["toast", "error"]),
|
||||||
|
async confirmar() {
|
||||||
|
if (this.grupo_de_compra_nuevo)
|
||||||
|
await this.crear();
|
||||||
|
else
|
||||||
|
await this.modificar();
|
||||||
|
this.cerrar();
|
||||||
|
},
|
||||||
|
async crear() {
|
||||||
|
await this.crearBarrio({
|
||||||
|
nombre: this.nombreControl,
|
||||||
|
region: this.regionControl,
|
||||||
|
passBarrio: this.passBarrio,
|
||||||
|
passAdmin: this.passAdmin,
|
||||||
|
passOllas: this.passOllas
|
||||||
|
});
|
||||||
|
},
|
||||||
async modificar() {
|
async modificar() {
|
||||||
const nombre = this.nombreControl !== this.grupo_de_compra_actual.nombre ? this.nombreControl : undefined;
|
const nombre = this.nombreControl !== this.grupo_de_compra_actual.nombre ? this.nombreControl : undefined;
|
||||||
const region = this.regionControl !== this.grupo_de_compra_actual.region ? this.regionControl : undefined;
|
const region = this.regionControl !== this.grupo_de_compra_actual.region ? this.regionControl : undefined;
|
||||||
|
@ -80,11 +99,10 @@ export default {
|
||||||
passAdmin: this.passAdmin,
|
passAdmin: this.passAdmin,
|
||||||
passOllas: this.passOllas,
|
passOllas: this.passOllas,
|
||||||
})
|
})
|
||||||
this.cerrar();
|
|
||||||
},
|
},
|
||||||
cerrar() {
|
cerrar() {
|
||||||
this.toggleModalBarrio();
|
this.toggleModalBarrio();
|
||||||
this.seleccionarGrupoDeCompra(false);
|
this.seleccionarGrupoDeCompra({ grupoDeCompra: false });
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted() {
|
mounted() {
|
||||||
|
|
21
resources/js/store/modules/comisiones.js
vendored
21
resources/js/store/modules/comisiones.js
vendored
|
@ -5,6 +5,7 @@ const state = {
|
||||||
grupos_de_compra: [],
|
grupos_de_compra: [],
|
||||||
parametros: [],
|
parametros: [],
|
||||||
grupo_de_compra_actual: undefined,
|
grupo_de_compra_actual: undefined,
|
||||||
|
grupo_de_compra_nuevo: false,
|
||||||
};
|
};
|
||||||
|
|
||||||
const mutations = {
|
const mutations = {
|
||||||
|
@ -36,7 +37,15 @@ const mutations = {
|
||||||
state.grupos_de_compra[i].nombre = nombre;
|
state.grupos_de_compra[i].nombre = nombre;
|
||||||
if (region)
|
if (region)
|
||||||
state.grupos_de_compra[i].region = region;
|
state.grupos_de_compra[i].region = region;
|
||||||
}
|
},
|
||||||
|
grupoDeCompraNuevo(state) {
|
||||||
|
state.grupo_de_compra_actual = {};
|
||||||
|
state.grupo_de_compra_nuevo = true;
|
||||||
|
},
|
||||||
|
agregarGrupoDeCompra(state, grupo_de_compra) {
|
||||||
|
state.grupos_de_compra.push(grupo_de_compra);
|
||||||
|
state.grupo_de_compra_nuevo = false;
|
||||||
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
const actions = {
|
const actions = {
|
||||||
|
@ -102,6 +111,16 @@ const actions = {
|
||||||
console.log(error);
|
console.log(error);
|
||||||
dispatch("ui/error", { error: error }, { root: true });
|
dispatch("ui/error", { error: error }, { root: true });
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
async crearBarrio({ commit, dispatch }, data) {
|
||||||
|
try {
|
||||||
|
const response = await axios.post(`/comisiones/grupos-de-compra/`, data);
|
||||||
|
commit('agregarGrupoDeCompra', response.data.data);
|
||||||
|
dispatch("ui/toast", { mensaje: 'Barrio agregado con éxito'}, { root: true });
|
||||||
|
} catch (error) {
|
||||||
|
console.log(error);
|
||||||
|
dispatch("ui/error", { error: error }, { root: true });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,7 @@ Route::middleware(['auth', 'role:comision'])->group( function() {
|
||||||
Route::get('/comisiones/saldos/ejemplo', 'ComisionesController@descargarSaldosEjemplo')->name('comisiones.saldos.ejemplo');
|
Route::get('/comisiones/saldos/ejemplo', 'ComisionesController@descargarSaldosEjemplo')->name('comisiones.saldos.ejemplo');
|
||||||
Route::post('/comisiones/saldos', 'ComisionesController@cargarSaldos')->name('comisiones.saldos');
|
Route::post('/comisiones/saldos', 'ComisionesController@cargarSaldos')->name('comisiones.saldos');
|
||||||
Route::put('/comisiones/parametros/{parametro_id}', 'ComisionesController@modificarParametros')->name('comisiones.parametros.modificar');
|
Route::put('/comisiones/parametros/{parametro_id}', 'ComisionesController@modificarParametros')->name('comisiones.parametros.modificar');
|
||||||
|
Route::post('/comisiones/grupos-de-compra/', 'ComisionesController@crearGrupoDeCompra')->name('comisiones.gruposDeComrpa.crear');
|
||||||
Route::put('/comisiones/grupos-de-compra/{grupo_de_compra_id}', 'ComisionesController@modificarGrupoDeCompra')->name('comisiones.gruposDeComrpa.modificar');
|
Route::put('/comisiones/grupos-de-compra/{grupo_de_compra_id}', 'ComisionesController@modificarGrupoDeCompra')->name('comisiones.gruposDeComrpa.modificar');
|
||||||
Route::get('/comisiones/pedidos/{gdc}', 'AdminController@exportarPedidoACSV')->name('comisiones.pedidos.descargar.grupoDeCompra');
|
Route::get('/comisiones/pedidos/{gdc}', 'AdminController@exportarPedidoACSV')->name('comisiones.pedidos.descargar.grupoDeCompra');
|
||||||
Route::get('/comisiones/pedidos/{gdc}/ollas', 'AdminController@exportarPedidoOllasACSV')->name('comisiones.pedidos.ollas.grupoDeCompra');
|
Route::get('/comisiones/pedidos/{gdc}/ollas', 'AdminController@exportarPedidoOllasACSV')->name('comisiones.pedidos.ollas.grupoDeCompra');
|
||||||
|
|
Loading…
Add table
Reference in a new issue