Sindbad~EG File Manager
<?php
namespace App\Http\Livewire;
use Livewire\Component;
use App\Models\Monedaparticipante;
use App\Models\User;
use App\Models\Historial;
use App\Models\Desafioindividual;
use Livewire\WithPagination;
use DB;
class Listadomonedas extends Component{
use WithPagination;
protected $queryString = ['buscar' => ['except' => '']];
protected $paginationTheme = 'bootstrap';
public $buscar='';
public $monedas_id,$monedas,$estado,$desafio_id,$usuario_id,$comentario_id,$comentario;
public $updateMode = false;
public function render(){
$usuarios=User::where('estado',1)->get();
$desafios=Desafioindividual::where('estado',1)->get();
$monedass=DB::table('monedaparticipantes as m')
->join('desafioindividuals as d','m.desafio_id','d.id')
->join('users as u','m.usuario_id','u.id')
->select('m.*','d.titulo','u.name')
->where('u.name','LIKE',"%{$this->buscar}%")->paginate(12);
return view('livewire.listadomonedas.index',["monedass"=>$monedass,"usuarios"=>$usuarios,"desafios"=>$desafios]);
}
private function resetInputFields(){
$this->monedas='';
$this->desafio_id='';
$this->usuario_id='';
$this->comentario = '';
}
public function store()
{
$validatedDate = $this->validate([
'monedas'=>'required',
'desafio_id'=>'required',
'usuario_id'=>'required',
]);
Monedaparticipante::create([
'monedas'=>$this->monedas,
'desafio_id'=>$this->desafio_id,
'usuario_id'=>$this->usuario_id,
]);
$desafio = Desafioindividual::findOrFail($this->desafio_id);
$integrante = User::find($this->usuario_id);
if ($integrante) {
$integrante->monedas += $this->monedas;
$integrante->save(); // Guardar los cambios en la base de datos
Historial::create([
'origen_id' => null,
'receptor_id' => $integrante->id,
'cantidad' => $this->monedas,
'tipo' => 'Asignacion',
'comentario' => 'El Administrador ha Asignado ' . $this->monedas . ' monedas a ' . $integrante->name . ' por la misión Individual: ' . $desafio->titulo,
]);
}
$this->emit('alert', ['type' => 'success', 'message' => 'Monedas agregadas correctamente.']);
$this->resetInputFields();
}
public function edit($id)
{
$this->updateMode = true;
$punto = Monedaparticipante::find($id);
$this->monedas=$punto->monedas;
$this->desafio_id=$punto->desafio_id;
$this->monedas_id=$punto->id;
$this->usuario_id=$punto->usuario_id;
}
public function cancel()
{
$this->updateMode = false;
$this->resetInputFields();
}
public function update()
{
// Validación de datos
$validatedDate = $this->validate([
'monedas' => 'required|numeric', // Asegurar que sea numérico
'desafio_id' => 'required|integer', // Asegurar que sea un entero
'usuario_id' => 'required|integer', // Asegurar que sea un entero
]);
try {
// Verificar si existe el ID de monedas
if ($this->monedas_id) {
// Buscar el registro de monedas a actualizar
$punto = Monedaparticipante::find($this->monedas_id);
// Verificar si el registro de monedas existe
if (!$punto) {
$this->emit('alert', ['type' => 'error', 'message' => '¡Registro de monedas no encontrado!']);
return;
}
// Buscar el desafío individual
$desafio = Desafioindividual::find($punto->desafio_id);
// Verificar si el desafío existe
if (!$desafio) {
$this->emit('alert', ['type' => 'error', 'message' => '¡Desafío individual no encontrado!']);
return;
}
// Buscar el usuario (integrante)
$integrante = User::find($punto->usuario_id);
// Verificar si el usuario existe
if (!$integrante) {
$this->emit('alert', ['type' => 'error', 'message' => '¡Usuario no encontrado!']);
return;
}
// Restar las monedas antiguas y sumar las nuevas
$integrante->monedas -= $punto->monedas; // Restar monedas antiguas
$integrante->monedas += $this->monedas; // Sumar monedas nuevas
$integrante->save(); // Guardar los cambios en la base de datos
// Registrar en el historial
Historial::create([
'origen_id' => null,
'receptor_id' => $integrante->id,
'cantidad' => $this->monedas,
'tipo' => 'Asignacion',
'comentario' => 'El Administrador ha Asignado ' . $this->monedas . ' monedas a ' . $integrante->name . ' por la misión Individual: ' . $desafio->titulo,
]);
// Actualizar el registro de monedas
$punto->update([
'monedas' => $this->monedas,
'desafio_id' => $this->desafio_id,
'usuario_id' => $this->usuario_id,
]);
// Cerrar el modo de edición y emitir alerta
$this->updateMode = false;
$this->emit('alert', ['type' => 'info', 'message' => 'Monedas actualizadas correctamente.']);
$this->resetInputFields();
} else {
// Si no hay un ID de monedas, emitir un error
$this->emit('alert', ['type' => 'error', 'message' => '¡ID de monedas no proporcionado!']);
}
} catch (\Exception $e) {
// Manejar cualquier excepción que ocurra
$this->emit('alert', ['type' => 'error', 'message' => 'Ocurrió un error: ' . $e->getMessage()]);
}
}
public function delete($id)
{
if($id){
$punto=Monedaparticipante::find($id);
$desafio = Desafioindividual::findOrFail($punto->desafio_id);
$integrante = User::find($punto->usuario_id);
if ($integrante) {
$integrante->monedas -= $punto->monedas;
$integrante->save(); // Guardar los cambios en la base de datos
Historial::create([
'origen_id' => null,
'receptor_id' => $integrante->id,
'cantidad' => $punto->monedas,
'tipo' => 'Inhabilitado',
'comentario' => 'El Administrador ha eliminado/inhabilitado ' . $punto->monedas . ' moneda(s) de ' . $integrante->name . ' por la misión individual: ' . $desafio->titulo,
]);
}
$punto->delete();
$this->emit('alert', ['type' => 'error', 'message' => '¡Monedas eliminadas correctamente.!']);
}
}
public function editcomentario($id)
{
$punto = Monedaparticipante::find($id);
$this->comentario = $punto->comentario;
$this->comentario_id = $punto->id;
}
public function updatecomentario(){
$validatedDate = $this->validate([
'comentario' => 'required',
]);
$punto = Monedaparticipante::find($this->comentario_id);
$punto->comentario = $this->comentario;
$punto->update();
$this->emit('alert', ['type' => 'info', 'message' => 'Comentario guardado correctamente.']);
$this->resetInputFields();
}
}
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists