HEX
Server: Apache
System: Linux srv-plesk28.ps.kz 5.14.0-284.18.1.el9_2.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jun 29 17:06:27 EDT 2023 x86_64
User: greencl1 (10085)
PHP: 8.1.33
Disabled: apache_setenv,dl,eval,exec,openlog,passthru,pcntl_exec,pcntl_fork,popen,posix_getpwuid,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,socket_create,socket_create_listen,socket_create_pair,syslog,system,socket_listen,stream_socket_server
Upload Files
File: /var/www/vhosts/greenclinic.kz/clinic_back/app/Http/Controllers/Api/v1/PurchaseController.php
<?php

namespace App\Http\Controllers\Api\v1;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Validator;
use App\Models\Purchase;
use App\Models\Application;
use App\Models\Categories;
use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Mail;

class PurchaseController extends Controller
{


    public function me(Request $request) {
        $user = User::where('id', '=', Auth::id())
        ->first();
       return $user;
    }
    public function createCategory(Request $request) {

        $validator = Validator::make($request->all(), [
            'name' => 'required'
        ]);
        $category = new Categories();
        $category->name = $request->name;
        $category->save();
        return response()->json(['message' => "Успешно сохранен"], 200);

    }
	public function createPurchase(Request $request) 
	{
        $validator = Validator::make($request->all(), [
            'title' => 'required',
            'description' => 'required'
        ]);
        $purchase = new Purchase();

        $purchase->title = $request->title;
        $purchase->category_id = $request->category_id;
        $purchase->description = $request->description;

        $extension = $request->document->getClientOriginalExtension();
        $path = 'storage/purchases/' . date('d') . '.' . date('m') . '.' . date('Y') . '/';
        $file = 'application' . time() . '.' . $extension;
        $request->document->move($path, $file);
        $purchase->link_document = '/' . $path . $file;
        
        $purchase->save();
        return response()->json(['message' => "Успешно сохранен"], 200);
	}
    public function updatePurchase(Request $request) 
	{

        $validator = Validator::make($request->all(), [
            'id' => 'required'
        ]);

        if ($validator->fails()) {
            return response()->json(['error' => $validator->messages()], 422);
        }

        $purchase =  Purchase::query()->where("id",$request->id)->first();

        if(!$purchase) {
            return response()->json(['error' => "Не найден"], 422);
        }
        $purchase->title = $request->title;
        $purchase->category_id = $request->category_id;
        $purchase->description = $request->description;
        $purchase->number_purchase = $request->number_purchase;


        if(file_exists($purchase->link_document)) {
            unlink(public_path() . '/' . $purchase->link_document);
        }

        $extension = $request->document->getClientOriginalExtension();
        $path = 'storage/purchases/' . date('d') . '.' . date('m') . '.' . date('Y') . '/';
        $file = 'application' . time() . '.' . $extension;
        $request->document->move($path, $file);
        $purchase->link_document = '/' . $path . $file;
    
        $purchase->save();
        return response()->json(['message' => "Успешно отредактирован"], 200);
	}
    public function getCategories(Request $request) {
        $categories =  Categories::query()->with("purchases")->get();
        return $categories;
    }
    public function updateCategory(Request $request) 
	{
        $validator = Validator::make($request->all(), [
            'id' => 'required'
        ]);
        $category =  Categories::query()->where("id",$request->id)->first();
        $category->name = $request->name;
        $category->save();
        return response()->json(['message' => "Успешно сохранен"], 200);
	}
    public function deleteCategory(Request $request) 
	{
        $validator = Validator::make($request->all(), [
            'id' => 'required'
        ]);
        $category =  Categories::query()->where("id",$request->id)->delete();
        $purchases =  Purchase::query()->where("category_id",$request->id)->delete();
        return response()->json(['message' => "Успешно удален"], 200);
	}
    public function deleteApplication(Request $request) {
        $validator = Validator::make($request->all(), [
            'id' => 'required'
        ]);
        $application =  Application::query()->where("id",$request->id)->delete();
        return response()->json(['message' => "Успешно удален"], 200);
    }

    public function getPurchasesByCategory(Request $request) 
	{
        $purchases =  Purchase::query()->where("category_id",$request->id)->get();
        return $purchases;
	}
    public function getPurchases(Request $request) 
	{
        $purchases =  Purchase::query()->with("applications")->orderBy("id","DESC")->get();
        return $purchases;
	}
    public function getPurchase(Request $request) 
	{
        $validator = Validator::make($request->all(), [
            'id' => 'required'
        ]);
        $purchase =  Purchase::query()->where("id",$request->id)->first();
        return $purchase;
	}
    public function acceptApplication(Request $request) {
        $validator = Validator::make($request->all(), [
            'id' => 'required'
        ]);
        $application =  Application::query()->where("id",$request->id)->first();

        $application->status = 1;
        $application->save();

        $purchases =  Purchase::query()->where("id",$request->purchase_id)->first();
        $purchases->status = 1;
        $purchases->save();
        

        $templateData = [
            'msg' => $request->message,
        ];
        Mail::send('message',$templateData, function ($message) use ($application) {
            $message->from('green-clinic@admin.kz');
            $message->to($application->email)->subject('green-clinic.kz');
        });
        
    }

    public function getApplications(Request $request) 
	{
        $validator = Validator::make($request->all(), [
            'id' => 'required'
        ]);
        $applications =  Application::query()->get();
        return $applications;
	}
    
 
    
    
    public function deletePurchase(Request $request) 
	{   
        $purchase =  Purchase::query()->where("id",$request->id)->first();
        $application =  Application::query()->where("purcase_id",$purchase->id)->first();
        if(file_exists($purchase->link_document)) {
            unlink(public_path() . '/' . $purchase->link_document);
            if(file_exists($application->link_file)) {
                unlink(public_path() . '/' . $application->link_file);
            }
        }
        $application =  Application::query()->where("purcase_id",$purchase->id)->delete();
        $purchase =  Purchase::query()->where("id",$request->id)->delete();
        
        return response()->json(['message' => "Успешно удален"], 200);
	}
    public function sendRequest(Request $request) {
        $validator = Validator::make($request->all(), [
            'phone' => 'required',
            'name' => 'required',
        ]);
        $templateData = [
            'msg' => "Поступило новая заявка от ".$request->name.' '.$request->phone
        ];
        Mail::send('message',$templateData, function ($message) use ($request) {
            $message->from('green-clinic@admin.kz');
            $message->to('info@greenclinic.kz')->subject('green-clinic.kz');
        });
        return response()->json(['message' => "Успешно сохранен"], 200);
    }
    public function createApplication(Request $request) 
	{
        $validator = Validator::make($request->all(), [
            'purchase_id' => 'required',
            'name' => 'required',
            'bin' => 'required',
            'address'=>'required',
            'phone'=>'required',
            'email'=>'required|email'
        ]);

        $purchase =  Purchase::query()->where("id",$request->purchase_id)->first();
        $purchase->count_purchase = $purchase->count_purchase+1;
        $purchase->save();

        $application = new Application();

        $application->purcase_id = $request->purchase_id;
        $application->name = $request->name;
        $application->bin = $request->bin;
        $application->address = $request->address;
        $application->phone = $request->phone;
        $application->email = $request->email;
        

        if($request->document) {
            $extension = $request->document->getClientOriginalExtension();
            $path = 'storage/applications/' . date('d') . '.' . date('m') . '.' . date('Y') . '/';
            $file = 'application' . time() . '.' . $extension;
            $request->document->move($path, $file);
            $application->link_file = '/' . $path . $file;
        }
        $application->save();

        $templateData = [
            'msg' => "Поступило новая заявка от ".$request->name.' на закуп '.$purchase->title,
        ];
        Mail::send('message',$templateData, function ($message) use ($application) {
            $message->from('green-clinic@admin.kz');
            $message->to('info@greenclinic.kz')->subject('green-clinic.kz');
        });
        return response()->json(['message' => "Успешно сохранен"], 200);
	}

 
}