Sindbad~EG File Manager

Current Path : /var/www/html/carsanies.sumar.com.py/app/Http/Livewire/
Upload File :
Current File : /var/www/html/carsanies.sumar.com.py/app/Http/Livewire/Listadomonedas.php

<?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