Tomcee's avatar

How to generate custom id(number) for new member records

Hi I want assistance on how to generate custom id such as "VCI/GT/0001", I have created a member-no in my table because i still want to maintain the general Id column. I came across this article : https://laravelarticle.com/laravel-custom-id-generator (I tried using the model approach) via google research however I was wondering how I can make it auto generate show in my create-members form view and then upload to the database when record is savedand finally how can it show in the users view blade or edit blade as a non editable figure. below are my models and controllers; Members Controller .

<?php

namespace App\Http\Controllers;

use Aloha\Twilio\Twilio;
use App\Helpers\GeneralHelper;

use App\Models\Branch;
use App\Models\CustomField;
use App\Models\CustomFieldMeta;
use App\Models\Email;
use App\Models\Family;
use App\Models\FamilyMember;
use App\Models\Member;
use App\Models\MemberTag;
use App\Models\Setting;
use App\Models\Tag;
use App\Models\User;
use Cartalyst\Sentinel\Laravel\Facades\Sentinel;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\DB;
use PDF;
use Illuminate\Http\Request;
use App\Http\Requests;
use Illuminate\Support\Facades\Input;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Validator;
use Illuminate\Support\Facades\View;
use Laracasts\Flash\Flash;
use Yajra\DataTables\Facades\DataTables;

class MemberController extends Controller
{
    public function __construct()
    {
        $this->middleware('sentinel');

    }


    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        if (!Sentinel::hasAccess('members')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }

        return view('member.data');
    }

    public function get_members(Request $request)
    {
        if (!Sentinel::hasAccess('members')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $query =Member::leftJoin('branches', 'branches.id', 'members.branch_id')
        ->selectRaw('members.*,branches.name branch');
        return DataTables::of($query)->editColumn('name', function ($data) {
            return '<a href="' . url('member/' . $data->id . '/show') . '" class="">' . $data->first_name . ' ' . $data->middle_name . ' ' . $data->last_name . '</a>';
        })->editColumn('age', function ($data) {
            return Carbon::now()->diffInYears(Carbon::parse($data->dob));
        })->editColumn('action', function ($data) {
            $action = '<div class="btn-group"><button type="button" class="btn btn-info btn-flat dropdown-toggle" data-toggle="dropdown" aria-expanded="false"><i class="fa fa-list"></i></button><ul class="dropdown-menu dropdown-menu-right" role="menu">';
            if (Sentinel::hasAccess('members.view')) {
                $action .= '<li><a href="' . url('member/' . $data->id . '/show') . '" class="">' . trans_choice('general.detail', 2) . '</a></li>';
            }
            if (Sentinel::hasAccess('members.update')) {
                $action .= '<li><a href="' . url('member/' . $data->id . '/edit') . '" class="">' . trans_choice('general.edit', 2) . '</a></li>';
            }
            if (Sentinel::hasAccess('members.delete')) {
                $action .= '<li><a href="' . url('member/' . $data->id . '/delete') . '" class="delete">' . trans_choice('general.delete', 2) . '</a></li>';
            }
            $action .= "</ul></div>";
            return $action;
        })->editColumn('gender', function ($data) {
            if ($data->gender == "male") {
                return trans_choice('general.male', 1);
            }
            if ($data->gender == "female") {
                return trans_choice('general.female', 1);
            }
            if ($data->gender == "unknown") {
                return trans_choice('general.unknown', 1);
            }

        })->editColumn('photo', function ($data) {
            if (!empty($data->photo))
                return '<a href="' . asset('uploads/' . $data->photo) . '" class="fancybox"><img src="' . asset('uploads/' . $data->photo) . '" width="100"></a>';

        })->editColumn('id', function ($data) {
            return '<a href="' . url('member/' . $data->id . '/show') . '" class="">' . $data->id . '</a>';

        })->rawColumns(['id', 'name', 'action', 'photo'])->make(true);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        if (!Sentinel::hasAccess('members.create')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $branches = array();
        foreach (Branch::get() as $key) {
            $branches[$key->id] = $key->name;
        }
        $menus = array(
            'items' => array(),
            'parents' => array()
        );
        // Builds the array lists with data from the SQL result
        foreach (Tag::all() as $items) {
            // Create current menus item id into array
            $menus['items'][$items['id']] = $items;
            // Creates list of all items with children
            $menus['parents'][$items['parent_id']][] = $items['id'];
        }
        //get custom fields
        $custom_fields = CustomField::where('category', 'members')->get();
        return view('member.create', compact('menus', 'custom_fields', 'branches'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        if (!Sentinel::hasAccess('members.create')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $member = new Member();
        $member->member_no = $request->member_no;
        $member->branch_id = $request->branch_id;
        $member->first_name = $request->first_name;
        $member->middle_name = $request->middle_name;
        $member->last_name = $request->last_name;
        $member->user_id = Sentinel::getUser()->id;
        $member->gender = $request->gender;
        $member->marital_status = $request->marital_status;
        $member->status = $request->status;
        $member->home_phone = $request->home_phone;
        $member->mobile_phone = $request->mobile_phone;
        $member->work_phone = $request->work_phone;
        if (!empty($request->dob)) {
            $member->dob = $request->dob;
        }

        $member->address = $request->address;
        $member->notes = $request->notes;
        $member->email = $request->email;
        if ($request->hasFile('photo')) {
            $file = array('photo' =>  $request->file('photo'));
            $rules = array('photo' => 'required|mimes:jpeg,jpg,bmp,png');
            $validator = Validator::make($file, $rules);
            if ($validator->fails()) {
                Flash::warning(trans('general.validation_error'));
                return redirect()->back()->withInput()->withErrors($validator);
            } else {
                $member->photo = $request->file('photo')->getClientOriginalName();
                $request->file('photo')->move(public_path() . '/uploads',
                    $request->file('photo')->getClientOriginalName());
            }

        }
        $files = array();
        if ($request->hasFile('files')) {
            $count = 0;
            foreach ($request->file('files') as $key) {
                $file = array('files' => $key);
                $rules = array('files' => 'required|mimes:jpeg,jpg,bmp,png,pdf,docx,xlsx');
                $validator = Validator::make($file, $rules);
                if ($validator->fails()) {
                    Flash::warning(trans('general.validation_error'));
                    return redirect()->back()->withInput()->withErrors($validator);
                } else {
                    $files[$count] = $key->getClientOriginalName();
                    $key->move(public_path() . '/uploads',
                        $key->getClientOriginalName());
                }
                $count++;
            }
        }
        $member->files = serialize($files);
        $member->save();
        //check for tags
        if (!empty($request->tags)) {
            $tags = explode(',', $request->tags);
            foreach ($tags as $k) {
                $tag = new MemberTag();
                $tag->member_id = $member->id;
                $tag->tag_id = $k;
                $tag->user_id = Sentinel::getUser()->id;
                $tag->save();

            }
        }
        $custom_fields = CustomField::where('category', 'members')->get();
        foreach ($custom_fields as $key) {
            $custom_field = new CustomFieldMeta();
            $id = $key->id;
            if ($key->field_type == "checkbox") {
                if (!empty($request->$id)) {
                    $custom_field->name = serialize($request->$id);
                } else {
                    $custom_field->name = serialize([]);
                }
            } else {
                $custom_field->name = $request->$id;
            }
            $custom_field->parent_id = $member->id;
            $custom_field->custom_field_id = $key->id;
            $custom_field->category = "members";
            $custom_field->save();
        }
        GeneralHelper::audit_trail("Added member  with id:" . $member->id);
        Flash::success(trans('general.successfully_saved'));
        return redirect('member/data');
    }


    public function show($member)
    {
        if (!Sentinel::hasAccess('members.view')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $members = array();
        foreach (Member::all() as $key) {
            $members[$key->id] = $key->first_name . ' ' . $key->middle_name . ' ' . $key->last_name . '(#' . $key->id . ')';
        }
        //get custom fields
        $custom_fields = CustomFieldMeta::where('category', 'members')->where('parent_id', $member->id)->get();
        return view('member.show', compact('member', 'custom_fields', 'members'));
    }


    public function edit($member)
    {
        if (!Sentinel::hasAccess('members.update')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $menus = array(
            'items' => array(),
            'parents' => array()
        );
        $branches = array();
        foreach (Branch::get() as $key) {
            $branches[$key->id] =  $key->name;
        }
        // Builds the array lists with data from the SQL result
        foreach (Tag::all() as $items) {
            // Create current menus item id into array
            $menus['items'][$items['id']] = $items;
            // Creates list of all items with children
            $menus['parents'][$items['parent_id']][] = $items['id'];
        }
        $selected_tags = array();
        foreach (MemberTag::where('member_id', $member->id)->get() as $key) {
            array_push($selected_tags, $key->tag_id);
        }
        //get custom fields
        $custom_fields = CustomField::where('category', 'members')->get();
        return view('member.edit', compact('member', 'selected_tags', 'custom_fields', 'menus', 'branches'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param \Illuminate\Http\Request $request
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        if (!Sentinel::hasAccess('members.update')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }

        $member = Member::find($id);
        $member->branch_id = $request->branch_id;
        $member->first_name = $request->first_name;
        $member->middle_name = $request->middle_name;
        $member->last_name = $request->last_name;
        $member->gender = $request->gender;
        $member->marital_status = $request->marital_status;
        $member->status = $request->status;
        $member->home_phone = $request->home_phone;
        $member->mobile_phone = $request->mobile_phone;
        $member->work_phone = $request->work_phone;
        if (!empty($request->dob)) {
            $member->dob = $request->dob;
        }

        $member->address = $request->address;
        $member->notes = $request->notes;
        $member->email = $request->email;
        if ($request->hasFile('photo')) {
            $file = array('photo' =>  $request->file('photo'));
            $rules = array('photo' => 'required|mimes:jpeg,jpg,bmp,png');
            $validator = Validator::make($file, $rules);
            if ($validator->fails()) {
                Flash::warning(trans('general.validation_error'));
                return redirect()->back()->withInput()->withErrors($validator);
            } else {
                $member->photo = $request->file('photo')->getClientOriginalName();
                $request->file('photo')->move(public_path() . '/uploads',
                    $request->file('photo')->getClientOriginalName());
            }

        }
        $files = unserialize($member->files);
        $count = count($files);
        if ($request->hasFile('files')) {
            foreach ($request->file('files') as $key) {
                $count++;
                $file = array('files' => $key);
                $rules = array('files' => 'required|mimes:jpeg,jpg,bmp,png,pdf,docx,xlsx');
                $validator = Validator::make($file, $rules);
                if ($validator->fails()) {
                    Flash::warning(trans('general.validation_error'));
                    return redirect()->back()->withInput()->withErrors($validator);
                } else {
                    $files[$count] = $key->getClientOriginalName();
                    $key->move(public_path() . '/uploads',
                        $key->getClientOriginalName());
                }

            }
        }
        $member->files = serialize($files);
        $member->save();
        //check for tags
        MemberTag::where('member_id', $member->id)->delete();
        if (!empty($request->tags)) {
            $tags = explode(',', $request->tags);
            foreach ($tags as $k) {
                $tag = new MemberTag();
                $tag->member_id = $member->id;
                $tag->tag_id = $k;
                $tag->user_id = Sentinel::getUser()->id;
                $tag->save();

            }
        }
        $custom_fields = CustomField::where('category', 'members')->get();
        foreach ($custom_fields as $key) {
            if (!empty(CustomFieldMeta::where('custom_field_id', $key->id)->where('parent_id', $id)->where('category',
                'members')->first())
            ) {
                $custom_field = CustomFieldMeta::where('custom_field_id', $key->id)->where('parent_id',
                    $id)->where('category', 'members')->first();
            } else {
                $custom_field = new CustomFieldMeta();
            }
            $kid = $key->id;
            if ($key->field_type == "checkbox") {
                if (!empty($request->$kid)) {
                    $custom_field->name = serialize($request->$kid);
                } else {
                    $custom_field->name = serialize([]);
                }
            } else {
                $custom_field->name = $request->$kid;
            }
            $custom_field->parent_id = $id;
            $custom_field->custom_field_id = $key->id;
            $custom_field->category = "members";
            $custom_field->save();
        }
        GeneralHelper::audit_trail("Updated member  with id:" . $member->id);
        Flash::success(trans('general.successfully_saved'));
        return redirect('member/data');
    }


    /**
     * Remove the specified resource from storage.
     *
     * @param int $id
     * @return \Illuminate\Http\Response
     */
    public function delete($id)
    {
        if (!Sentinel::hasAccess('members.delete')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        Member::destroy($id);
        MemberTag::where('member_id', $id)->delete();
        GeneralHelper::audit_trail("Deleted member  with id:" . $id);
        Flash::success(trans('general.successfully_deleted'));
        return redirect('member/data');
    }

    public function deleteFile(Request $request, $id)
    {
        if (!Sentinel::hasAccess('members.delete')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $member = Member::find($id);
        $files = unserialize($member->files);
        @unlink(public_path() . '/uploads/' . $files[$request->id]);
        $files = array_except($files, [$request->id]);
        $member->files = serialize($files);
        $member->save();


    }

    public function approve(Request $request, $id)
    {
        if (!Sentinel::hasAccess('members.approve')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $member = Member::find($id);
        $member->active = 1;
        $member->save();
        GeneralHelper::audit_trail("Approved borrower  with id:" . $member->id);
        Flash::success(trans('general.successfully_saved'));
        return redirect()->back();
    }

    public function decline(Request $request, $id)
    {
        if (!Sentinel::hasAccess('members.approve')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $member = Member::find($id);
        $member->active = 0;
        $member->save();
        GeneralHelper::audit_trail("Declined borrower  with id:" . $member->id);
        Flash::success(trans('general.successfully_saved'));
        return redirect()->back();
    }

    public function blacklist(Request $request, $id)
    {
        if (!Sentinel::hasAccess('members.blacklist')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $member = Member::find($id);
        $member->blacklisted = 1;
        $member->save();
        GeneralHelper::audit_trail("Blacklisted borrower  with id:" . $id);
        Flash::success(trans('general.successfully_saved'));
        return redirect()->back();
    }

    public function unBlacklist(Request $request, $id)
    {
        if (!Sentinel::hasAccess('members.blacklist')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        $member = Member::find($id);
        $member->blacklisted = 0;
        $member->save();
        GeneralHelper::audit_trail("Undo Blacklist for borrower  with id:" . $id);
        Flash::success(trans('general.successfully_saved'));
        return redirect()->back();
    }

    public function createFamily($member)
    {
        if (!Sentinel::hasAccess('members.create')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        if (!empty($member->family)) {
            Flash::warning("Family already exist");
            return redirect()->back();
        }
        $family = new Family();
        $family->user_id = Sentinel::getUser()->id;
        $family->member_id = $member->id;
        $family->name = $member->last_name;
        $family->save();
        //add family member with role of head
        $family_member = new FamilyMember();
        $family_member->user_id = Sentinel::getUser()->id;
        $family_member->member_id = $member->id;
        $family_member->family_id = $family->id;
        $family_member->family_role = "head";
        $family_member->save();
        GeneralHelper::audit_trail("Created family for member  with id:" . $member->id);
        Flash::success(trans('general.successfully_saved'));
        return redirect()->back();
    }

    public function deleteFamilyMember($id)
    {
        if (!Sentinel::hasAccess('members.update')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        FamilyMember::destroy($id);
        GeneralHelper::audit_trail("Deleted family Member  with id:" . $id);
        Flash::success(trans('general.successfully_saved'));
        return redirect()->back();
    }

    public function storeFamilyMember(Request $request, $id)
    {
        if (!Sentinel::hasAccess('members.create')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }
        if (FamilyMember::where('family_id', $id)->where('member_id', $request->member_id)->count() > 0) {
            Flash::warning("Member already in family");
            return redirect()->back();
        }

        //add family member with role of head
        $family_member = new FamilyMember();
        $family_member->user_id = Sentinel::getUser()->id;
        $family_member->member_id = $request->member_id;
        $family_member->family_id = $id;
        $family_member->family_role = $request->family_role;
        $family_member->save();
        GeneralHelper::audit_trail("Added family for member  with id:" . $request->member_id);
        Flash::success(trans('general.successfully_saved'));
        return redirect()->back();
    }

    public function updateFamilyMember(Request $request, $id)
    {
        if (!Sentinel::hasAccess('members.update')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }

        //add family member with role of head
        $family_member = FamilyMember::find($id);
        $family_member->family_role = $request->family_role;
        $family_member->save();
        GeneralHelper::audit_trail("Added family for member  with id:" . $family_member->member_id);
        Flash::success(trans('general.successfully_saved'));
        return redirect()->back();
    }

    public function editFamilyMember($family_member)
    {
        if (!Sentinel::hasAccess('members.update')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }

        return View::make('member.edit_family_member', compact('family_member'))->render();
    }

    public function pdfStatement($member)
    {
        if (!Sentinel::hasAccess('members.view')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }

        PDF::AddPage();
        PDF::writeHTML(View::make('member.pdf_member_statement', compact('member'))->render());
        PDF::SetAuthor('Tererai Mugova');
        PDF::Output($member->first_name . ' ' . $member->last_name . " - Statement.pdf",
            'D');
    }

    public function printStatement($member)
    {
        if (!Sentinel::hasAccess('members.view')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }

        return View::make('member.print_member_statement', compact('member'))->render();
    }

    public function emailStatement($member)
    {
        if (!Sentinel::hasAccess('members.view')) {
            Flash::warning("Permission Denied");
            return redirect()->back();
        }

        if (!empty($member->email)) {
            $body = Setting::where('setting_key',
                'member_statement_email_template')->first()->setting_value;
            $body = str_replace('{firstName}', $member->first_name, $body);
            $body = str_replace('{middleName}', $member->middle_name, $body);
            $body = str_replace('{lastName}', $member->last_name, $body);
            $body = str_replace('{address}', $member->address, $body);
            $body = str_replace('{homePhone}', $member->home_phone, $body);
            $body = str_replace('{mobilePhone}', $member->mobile_phone_phone, $body);
            $body = str_replace('{email}', $member->email, $body);
            $body = str_replace('{totalContributions}', GeneralHelper::member_total_contributions($member->id), $body);
            $body = str_replace('{totalPledges}',
                round(GeneralHelper::member_total_pledges($member->id), 2), $body);
            $body = str_replace('{total}',
                round((GeneralHelper::member_total_contributions($member->id) + GeneralHelper::member_total_pledges($member->id)),
                    2), $body);
            PDF::AddPage();
            PDF::writeHTML(View::make('member.pdf_member_statement', compact('member'))->render());
            PDF::SetAuthor('Tererai Mugova');
            PDF::Output(public_path() . '/uploads/temporary/member_statement' . $member->id . ".pdf", 'F');
            $file_name = $member->first_name . ' ' . $member->last_name . " - Member Statement.pdf";
            Mail::send([],[], function ($message) use ($member, $file_name,$body) {
                $message->from(Setting::where('setting_key', 'company_email')->first()->setting_value,
                    Setting::where('setting_key', 'company_name')->first()->setting_value);
                $message->to($member->email);
                $message->setBody($body);
                $message->attach(public_path() . '/uploads/temporary/member_statement' . $member->id . ".pdf",
                    ["as" => $file_name]);
                $message->setContentType('text/html');
                $message->setSubject(Setting::where('setting_key',
                    'member_statement_email_subject')->first()->setting_value);

            });
            unlink(public_path() . '/uploads/temporary/member_statement' . $member->id . ".pdf");
            $mail = new Email();
            $mail->user_id = Sentinel::getUser()->id;
            $mail->message = $body;
            $mail->subject = Setting::where('setting_key',
                'member_statement_email_subject')->first()->setting_value;
            $mail->recipients = 1;
            $mail->send_to = $member->first_name . ' ' . $member->last_name . '(' . $member->id . ')';
            $mail->save();
            Flash::success("Statment successfully sent");
            return redirect('member/' . $member->id . '/show');
        } else {
            Flash::warning("Member has no email set");
            return redirect('member/' . $member->id . '/show');
        }
    }
}

Members Model:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;

class Member extends Model
{
    protected $table = "members";

    public static function boot()
    {
        parent::boot();
        self::creating(function ($model) {
            $model->uuid = IdGenerator::generate(['table' => 'members', 'field' => 'member_no', 'length' => 11, 'prefix' =>'VCI/GT/']);
        });
    }

    public function loans()
    {
        return $this->hasMany(Loan::class, 'borrower_id', 'id');
    }

    public function user()
    {
        return $this->hasOne(User::class, 'id', 'user_id');
    }

    public function pledges()
    {
        return $this->hasMany(Pledge::class, 'member_id', 'id');
    }

    public function contributions()
    {
        return $this->hasMany(Contribution::class, 'member_id', 'id');
    }

    public function tags()
    {
        return $this->hasMany(MemberTag::class, 'member_id', 'id');
    }

    public function attendance()
    {
        return $this->hasMany(EventAttendance::class, 'member_id', 'id');
    }
    public function families()
    {
        return $this->hasMany(FamilyMember::class, 'member_id', 'id');
    }
    public function family()
    {
        return $this->hasOne(Family::class, 'member_id', 'id');
    }
}

Create-Member-View

@extends('layouts.master')
@section('title')
    {{trans_choice('general.add',1)}} {{trans_choice('general.member',1)}}
@endsection
@section('content')
    <div class="box box-primary">
        <div class="box-header with-border">
            <h3 class="box-title">{{trans_choice('general.add',1)}} {{trans_choice('general.member',1)}}</h3>

            <div class="box-tools pull-right">

            </div>
        </div>
        {!! Form::open(array('url' => url('member/store'), 'method' => 'post', 'id' => 'add_member_form',"enctype"=>"multipart/form-data")) !!}
        <div class="box-body">
        <div class="row">
            <div class="col-md-6">
            <!-- <div class="form-group">
                {!! Form::label('branch_id',trans_choice('general.branch',1),array('class'=>' control-label')) !!}
                {!! Form::select('branch_id',$branches,null, array('class' => 'form-control select2','placeholder'=>'','required'=>'required','id'=>'contribution_batch_id')) !!}
            </div> -->
            <div class="form-group">
                {!! Form::label('first_name',trans_choice('general.first_name',1),array('class'=>'')) !!}
                {!! Form::text('first_name',null, array('class' => 'form-control', 'placeholder'=>trans_choice('general.first_name',1),'required'=>'required')) !!}
            </div>
            <!-- <div class="form-group">
                {!! Form::label('middle_name',trans_choice('general.middle_name',1),array('class'=>'')) !!}
                {!! Form::text('middle_name',null, array('class' => 'form-control', 'placeholder'=>'')) !!}
            </div>
            <div class="form-group">
                {!! Form::label('last_name',trans_choice('general.last_name',1),array('class'=>'')) !!}
                {!! Form::text('last_name',null, array('class' => 'form-control', 'placeholder'=>'','required'=>'required')) !!}
            </div> -->
            <div class="form-group">
                {!! Form::label('gender',trans_choice('general.gender',1),array('class'=>'')) !!}
                {!! Form::select('gender',array('male'=>trans_choice('general.male',1),'female'=>trans_choice('general.female',1),'unknown'=>trans_choice('general.unknown',1)),'unknown', array('class' => 'form-control',''=>'')) !!}
            </div>
            <!-- <div class="form-group">
                {!! Form::label('marital_status',trans_choice('general.marital_status',1),array('class'=>'')) !!}
                {!! Form::select('marital_status',array('single'=>trans_choice('general.single',1),'engaged'=>trans_choice('general.engaged',1),'married'=>trans_choice('general.married',1),'divorced'=>trans_choice('general.divorced',1),'widowed'=>trans_choice('general.widowed',1),'separated'=>trans_choice('general.separated',1),'unknown'=>trans_choice('general.unknown',1)),'unknown', array('class' => 'form-control',''=>'')) !!}
            </div> -->
            <div class="form-group">
                {!! Form::label('status',trans_choice('general.status',1),array('class'=>'')) !!}
                {!! Form::select('status',array('attender'=>trans_choice('general.attender',1),'visitor'=>trans_choice('general.visitor',1),'inactive'=>trans_choice('general.inactive',1),'unknown'=>trans_choice('general.unknown',1)),'unknown', array('class' => 'form-control',''=>'')) !!}
            </div>
            <div class="form-group">
                {!! Form::label('home_phone',trans_choice('general.home_phone',1),array('class'=>'')) !!}
                {!! Form::text('home_phone',null, array('class' => 'form-control')) !!}
            </div>
            <!-- <div class="form-group">
                {!! Form::label('mobile_phone',trans_choice('general.mobile_phone',1),array('class'=>'')) !!}
                {!! Form::text('mobile_phone',null, array('class' => 'form-control', 'placeholder'=>trans_choice('general.numbers_only',1))) !!}
            </div> -->
            <!-- <div class="form-group">
                {!! Form::label('work_phone',trans_choice('general.work_phone',1),array('class'=>'')) !!}
                {!! Form::text('work_phone',null, array('class' => 'form-control')) !!}
            </div> -->
            <div class="form-group">
                {!! Form::label('email',trans_choice('general.email',1),array('class'=>'')) !!}
                {!! Form::text('email',null, array('class' => 'form-control', 'placeholder'=>trans_choice('general.email',1))) !!}
            </div>
            <!-- <div class="form-group">
                {!! Form::label('dob',trans_choice('general.dob',1),array('class'=>'')) !!}
                {!! Form::text('dob',null, array('class' => 'form-control date-picker', 'placeholder'=>"yyyy-mm-dd")) !!}
            </div> -->
            <div class="form-group">
                {!! Form::label('address',trans_choice('general.address',1),array('class'=>'')) !!}
                {!! Form::textarea('address',null, array('class' => 'form-control', 'rows'=>"3")) !!}
            </div>
            <div class="form-group">
                {!! Form::label('photo',trans_choice('general.photo',1),array('class'=>'')) !!}
                {!! Form::file('photo', array('class' => 'form-control', 'placeholder'=>"")) !!}
            </div>
          </div>


          <div class="col-md-6">
          <div class="form-group">
                {!! Form::label('middle_name',trans_choice('general.middle_name',1),array('class'=>'')) !!}
                {!! Form::text('middle_name',null, array('class' => 'form-control', 'placeholder'=>'')) !!}
            </div>
            <div class="form-group">
                {!! Form::label('dob',trans_choice('general.dob',1),array('class'=>'')) !!}
                {!! Form::text('dob',null, array('class' => 'form-control date-picker', 'placeholder'=>"yyyy-mm-dd")) !!}
            </div>
            <div class="form-group">
                {!! Form::label('work_phone',trans_choice('general.work_phone',1),array('class'=>'')) !!}
                {!! Form::text('work_phone',null, array('class' => 'form-control')) !!}
            </div>
            <div class="form-group">
                {!! Form::label('last_name',trans_choice('general.last_name',1),array('class'=>'')) !!}
                {!! Form::text('last_name',null, array('class' => 'form-control', 'placeholder'=>'','required'=>'required')) !!}
            </div>
            <div class="form-group">
                {!! Form::label('marital_status',trans_choice('general.marital_status',1),array('class'=>'')) !!}
                {!! Form::select('marital_status',array('single'=>trans_choice('general.single',1),'engaged'=>trans_choice('general.engaged',1),'married'=>trans_choice('general.married',1),'divorced'=>trans_choice('general.divorced',1),'widowed'=>trans_choice('general.widowed',1),'separated'=>trans_choice('general.separated',1),'unknown'=>trans_choice('general.unknown',1)),'unknown', array('class' => 'form-control',''=>'')) !!}
            </div>
            <div class="form-group">
                {!! Form::label('mobile_phone',trans_choice('general.mobile_phone',1),array('class'=>'')) !!}
                {!! Form::text('mobile_phone',null, array('class' => 'form-control', 'placeholder'=>trans_choice('general.numbers_only',1))) !!}
            </div>
        </div>
        </div>


            <div class="form-group">
                {!! Form::label('notes',trans_choice('general.description',1),array('class'=>'')) !!}
                {!! Form::textarea('notes',null, array('class' => 'form-control', 'placeholder'=>"")) !!}
            </div>
            <div class="form-group">
                {!! Form::label('files',trans_choice('general.file',2). ' '.trans_choice('general.borrower_file_types',2),array('class'=>'')) !!}
                {!! Form::file('files[]', array('class' => 'form-control', 'multiple'=>"")) !!}

                {{trans_choice('general.select_thirty_files',2)}}

            </div>
            <div class="form-group">
                {!! Form::label('tags',trans_choice('general.assign',2). ' '.trans_choice('general.tag',2),array('class'=>'')) !!}

                <div id="jstree_div">
                    <ul>

                        <li data-jstree='{ "opened" : true }'
                            id="0">{{trans_choice('general.all',2)}} {{trans_choice('general.tag',2)}}
                            ({{\App\Models\MemberTag::count()}} {{trans_choice('general.people',2)}})
                            {!! \App\Helpers\GeneralHelper::createTreeView(0,$menus) !!}
                        </li>
                    </ul>
                </div>
                <input type="hidden" name="tags" id="tags" value=""/>
            </div>

            <p class="bg-navy disabled color-palette">{{trans_choice('general.custom_field',2)}}</p>

            @foreach($custom_fields as $key)

                <div class="form-group">
                    {!! Form::label($key->id,$key->name,array('class'=>'')) !!}
                    @if($key->field_type=="number")
                        <input type="number" class="form-control" name="{{$key->id}}"
                               @if($key->required==1) required @endif>
                    @endif
                    @if($key->field_type=="textfield")
                        <input type="text" class="form-control" name="{{$key->id}}"
                               @if($key->required==1) required @endif>
                    @endif
                    @if($key->field_type=="date")
                        <input type="text" class="form-control date-picker" name="{{$key->id}}"
                               @if($key->required==1) required @endif>
                    @endif
                    @if($key->field_type=="textarea")
                        <textarea class="form-control" name="{{$key->id}}"
                                  @if($key->required==1) required @endif></textarea>
                    @endif
                    @if($key->field_type=="decimal")
                        <input type="text" class="form-control touchspin" name="{{$key->id}}"
                               @if($key->required==1) required @endif>
                    @endif
                    @if($key->field_type=="select")
                        <select class="form-control touchspin" name="{{$key->id}}"
                                @if($key->required==1) required @endif>
                            @if($key->required!=1)
                                <option value=""></option>
                            @else
                                <option value="" disabled selected>Select...</option>
                            @endif
                            @foreach(explode(',',$key->select_values) as $v)
                                <option>{{$v}}</option>
                            @endforeach
                        </select>
                    @endif
                    @if($key->field_type=="radiobox")
                        @foreach(explode(',',$key->radio_box_values) as $v)
                            <div class="radio">
                                <label>
                                    <input type="radio" name="{{$key->id}}" id="{{$key->id}}" value="{{$v}}"
                                           @if($key->required==1) required @endif>
                                    <b>{{$v}}</b>
                                </label>
                            </div>
                        @endforeach
                    @endif
                    @if($key->field_type=="checkbox")
                        @foreach(explode(',',$key->checkbox_values) as $v)
                            <div class="checkbox">
                                <label>
                                    <input type="checkbox" name="{{$key->id}}[{{$v}}]" id="{{$key->id}}" value="{{$v}}"
                                           @if($key->required==1) required @endif>
                                    <b>{{$v}}</b>
                                </label>
                            </div>
                        @endforeach
                    @endif
                </div>
            @endforeach
            <p style="text-align:center; font-weight:bold;">
                <small><a href="{{url('custom_field/create')}}" target="_blank">Click here to add custom fields on
                        this page</a></small>
            </p>

        </div>
        <!-- /.box-body -->
        <div class="box-footer">
            <button type="submit" class="btn btn-primary pull-right" id="add_member">{{trans_choice('general.save',1)}}</button>
        </div>
        {!! Form::close() !!}
    </div>
    <!-- /.box -->
@endsection
@section('footer-scripts')
    <script>
        $('#jstree_div').jstree({
            "core": {
                "themes": {
                    "responsive": true
                },
                // so that create works
                "check_callback": true,
            },
            "plugins": ["checkbox", 'wholerow'],
        });
        $('#add_member').click(function (e) {
            e.preventDefault();
            $('#tags').val($('#jstree_div').jstree("get_selected"))
            $('#add_member_form').submit();
        })
    </script>
@endsection

Any assistance is highly appreciated

0 likes
3 replies
Snapey's avatar
Snapey
Best Answer
Level 122

Do you have to show the number BEFORE creating it? You are making life so much harder if you do, and can only be done with something like UUID since it is virtually impossible to conflict with an existing ID.

I would not save anything at all in the database. I would just format the already created autoincrement ID with an accessor on the model since these leading characters are clearly just cosmetic and don't indicate anything business logic related.

public function getMemberNo()
{
	return 'VCI/GT/' . str_pad($this->id,5,'00000');
}

As you are using Sentinel I'm assuming you are on a very old Laravel version

1 like
Tomcee's avatar

@tisuchi Thank you so much, I will read the docs to improve myself, thanks a lot

1 like

Please or to participate in this conversation.