• File: MerchantController.php
  • Full Path: /var/www/amparoapi/app/Http/Controllers/MerchantController.php
  • Date Modified: 10/28/2021 9:28 PM
  • File size: 7.76 KB
  • MIME-type: text/x-php
  • Charset: utf-8
<?php

namespace App\Http\Controllers;

use App\Models\Merchant;
use App\Models\Operator;
use App\Models\Store;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Hash;
use Ramsey\Uuid\Uuid;

class MerchantController extends Controller
{
    public function saveMerchant(Request $request)
    {

        $this->validate($request, [
            'merchant_name' => 'required',
            'merchant_phone' => 'required',
            'merchant_email' => 'required',
            'merchant_company_name' => 'required',
            'merchant_company_mobile' => 'required',
//            'merchant_company_email' => 'required',
            'merchant_address' => 'required',
            'merchant_nuit' => 'required',
            'merchant_nib' => 'required'
        ]);

        Merchant::create([
            'merchant_name' => $request->merchant_name,
            'merchant_email' => $request->merchant_email,
            'merchant_phone' => $request->merchant_phone,
            'merchant_address' => $request->merchant_address,
            'merchant_nuit' => $request->merchant_nuit,
            'merchant_nib' => $request->merchant_nib,
            'merchant_company_name' => $request->merchant_company_name,
            'merchant_company_logo' => $request->merchant_company_logo,
            'merchant_company_nuit' => $request->merchant_company_nuit,
            'merchant_company_phone' => $request->merchant_company_phone,
            'merchant_company_mobile' => $request->merchant_company_mobile,
//            'merchant_company_email' => $request->merchant_company_email,
            'user_id' => $request->user()->id
        ]);
        return response()->json(['message' => 'Cadastrado com Sucesso'], 200);
    }

    public function updateMerchant(Request $request){
        $this->validate($request, [
         'id' => 'required'
        ]);
        $merchant = Merchant::query()->where('id', $request->id)->first();

        $merchant->update([
            'merchant_name' => $request->merchant_name,
            'merchant_email' => $request->merchant_email,
            'merchant_phone' => $request->merchant_phone,
            'merchant_address' => $request->merchant_address,
            'merchant_nuit' => $request->merchant_nuit,
            'merchant_nib' => $request->merchant_nib,
            'merchant_company_name' => $request->merchant_company_name,
//            'merchant_company_email' => $request->merchant_company_email,
            'merchant_company_logo' => $request->merchant_company_logo,
            'merchant_company_nuit' => $request->merchant_company_nuit,
            'merchant_company_phone' => $request->merchant_company_phone,
            'merchant_company_mobile' => $request->merchant_company_mobile,
        ]);

        return response()->json(['message' => 'Actualizado com Sucesso'], 200);
    }

    public function addStore(Request $request)
    {
        $this->validate($request, [
            'store_name' => 'required',
            'store_address' => 'required',
            'manager' => 'required',
            'manager_phone_number' => 'required',
            'store_mobile_phone' => 'required',
            'email' => 'required',
            'merchant_id' => 'required'
        ]);

        Store::create([
            'store_name' => $request->store_name,
            'store_address' => $request->store_address,
            'manager' => $request->manager,
            'manager_phone_number' => $request->manager_phone_number,
            'store_mobile_phone' => $request->store_mobile_phone,
            'email' => $request->email,
            'store_public_id' => Uuid::uuid4(),
            'password' => Hash::make('12345678'),
            'merchant_id' => $request->merchant_id,
            'user_id' => $request->user()->id
        ]);
        return response()->json(['message' => 'Cadastrado com Sucesso'], 200);
    }
    public function updateStore(Request $request) {
        $this->validate($request, [
           'id' => 'required'
        ]);
        $store = Store::query()->where('id', $request->id)->first();

        $store->update([
            'store_name' => $request->store_name,
            'store_address' => $request->store_address,
            'manager' => $request->manager,
            'manager_phone_number' => $request->manager_phone_number,
            'store_mobile_phone' => $request->store_mobile_phone,
            'email' => $request->email,
            'password' => Hash::make('12345678'),
            'merchant_id' => $request->merchant_id
        ]);

        return response()->json(['message' => 'Actualizado com Sucesso'], 200);
    }

    public function addOperator(Request $request)
    {
        $this->validate($request, [
            'name' => 'required',
            'last_name' => 'required',
            'email' => 'required',
            'phone' => 'required',
            'store_id' => 'required'
        ]);

        Operator::create([
            'name' => $request->name,
            'last_name' => $request->last_name,
            'email' => $request->email,
            'phone' => $request->phone,
            'password' => Hash::make('12345678'),
            'pin' => Hash::make('1234'),
            'store_id' => $request->store_id,
            'user_id' => $request->user()->id
        ]);

        return response()->json(['message' => 'Operador(a) ' . $request->name . ' Adicionado com Sucesso.'], 200);
    }

    public function updateOperator(Request $request)
    {
        $this->validate($request, [
            'id' => 'required',
        ]);
        $store = Operator::query()->where('id', $request->id)->first();

        $store->update([
            'name' => $request->name,
            'last_name' => $request->last_name,
            'email' => $request->email,
            'phone' => $request->phone,
            'password' => Hash::make('12345678'),
            'pin' => Hash::make('1234'),
            'store_id' => $request->store_id
        ]);
        return response()->json(['message' => 'Actualizado com Sucesso'], 200);

    }

    public function disableOrActiveOperator($id)
    {
        $user = Operator::find($id);
        if ($user) {
            if ($user->status == 'activo') {
                $user->update(['status' => 'inactivo']);
                return response()->json(['message' => 'Operador bloqueado com Sucesso']);
            } else {
                $user->update(['status' => 'activo']);
                return response()->json(['message' => 'Operador activado com Sucesso']);
            }
        } else {
            return response()->json(['message' => 'Operador não encontrado'], 400);
        }
    }

    public function deleteOperator($id)
    {
        $user = Operator::find($id);
        if ($user) {
            $user->delete();
            return response()->json(['message' => 'Operador Removido com Sucesso']);
        } else {
            return response()->json(['message' => 'Operador não encontrado'], 400);
        }
    }

    public function deleteStore($id)
    {
        $user = Store::find($id);
        if ($user) {
            $user->delete();
            return response()->json(['message' => 'Store Removido com Sucesso']);
        } else {
            return response()->json(['message' => 'Store não encontrado'], 400);
        }
    }

    public function getStores()
    {

        $data = Store::query()
            ->orderBy('store_name', 'asc')
            ->get();

        return response()->json(['data' => $data], 200);
    }

    public function getOperators()
    {

        $data = Operator::query()
            ->orderBy('name', 'asc')
            ->get();

        return response()->json(['data' => $data], 200);
    }

    public function getMerchants()
    {

        $data = Merchant::query()
            ->orderBy('merchant_name', 'asc')
            ->get();
        return response()->json(['data' => $data], 200);
    }
}