CompanyAreaController.php 4.13 KB
<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use App\Models\Contact;
use App\Models\Partners;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Session;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;

class CompanyAreaController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        //
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //
    }

    /**
     * Display the specified resource.
     *
     * @param  \App\Models\Contact  $contact
     * @return \Illuminate\Http\Response
     */
    public function show(Contact $contact)
    {
        $firm_data = Contact::find(1);
        $partners = Partners::query()->get();
        return view('admin.company.view', compact('firm_data', 'partners'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  \App\Models\Contact  $contact
     * @return \Illuminate\Http\Response
     */
    public function edit(Contact $contact)
    {
        $firm_data = Contact::find(1);
        return view('admin.company.edit', compact('firm_data'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \App\Models\Contact  $contact
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, Contact $contact)
    {
        $rules = [
            'email' => 'required|min:3|max:255',
            'telephone' => 'required|min:3|max:255',
        ];
        $messages = [
            'required' => 'Укажите обязательное поле',
        ];

        $validator = Validator::make($request->all(), $rules, $messages);

        if ($validator->fails()) {
            return redirect()->route('admin.company.edit', ['company' => 1])
                ->withErrors($validator);
        } else {
            $params = $request->all();
            $company = Contact::find(1);
            $company->update($params);
            return redirect()->route('admin.company.show', ['company' => 1]);
        }
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  \App\Models\Contact  $contact
     * @return \Illuminate\Http\Response
     */
    public function destroy(Contact $contact)
    {
        //
    }

    /**
     * Добавление партнера
     */
    public function add_partner() {
        return view('admin.company.add_partner');
    }

    /**
     * Сохранение нового партнера
     */
    public function add_partner_post(Request $request) {
        $rules = [
            'name' => 'required|min:3|max:255',
            'foto' => 'required|min:3|max:10000',
        ];
        $messages = [
            'required' => 'Укажите обязательное поле',
        ];

        $validator = Validator::make($request->all(), $rules, $messages);

        if ($validator->fails()) {
            return redirect()->route('admin.add.partner')
                ->withErrors($validator);
        } else {
            //$params = $request->all();
            $partner = new Partners();
            $partner->name = $request->name;
            $partner->foto =  $request->file('foto')->store('partners', 'public');
            $partner->save();

            return redirect()->route('admin.company.show', ['company' => 1]);
        }
    }

    /**
     * Удаление партнера
     */
    public function delete_partner(Partners $partner) {
        Storage::delete($partner->foto);
        $partner->delete();
        Session::flash('message','Партнер был успешно удален!');

        return redirect()->route('admin.company.show', ['company' => 1]);
    }
}