@extends('admin.layouts.master')

@section('page_title')
    Profile
@endsection

@push('styles')
    <!--suppress HtmlFormInputWithoutLabel -->
{{--    <link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jsgrid/1.5.3/jsgrid.min.css" />--}}
{{--    <link type="text/css" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jsgrid/1.5.3/jsgrid-theme.min.css" />--}}
    <link rel="stylesheet" href="{{asset('assets/examples/css/pages/profile.min3f0d.css?v2.2.0')}}">
@endpush

@section('page_content')
    <div class="page-content container-fluid">
        <div class="row">
            <div class="col-md-12">
                <div class="panel">
                    <div class="panel-body nav-tabs-animate nav-tabs-horizontal">
                        <form method="post" enctype="multipart/form-data" class="registration lato">
                            @if(session('success'))
                                <div class="alert alert-success">
                                    <ul>
                                        <li>{{ session('success') }}</li>
                                    </ul>
                                </div>
                            @endif

                            @csrf
                            <div class="row">
                                <div class="col-md-12 text-center">
                                    <h3><em>Company / Individual Registration</em></h3>
                                    <hr>
                                </div>
                                <div class="col-md-12 text-center">
                                    <a id="terms" class="btn btn-sm" style="background-color: #CC0000; color: white"><i class="fa"></i> TERMS & CONDITIONS</a>
                                </div>

                            </div>

                            <hr>

                            <div class="form-group col-md-12 text-center {{ $errors->has('register_as') ? ' has-error' : '' }}">
                                <label for="inputEmail4"><strong>Register As</strong> <em
                                        class="text-danger">*</em></label>
                                <div class="row">
                                    <div class="col-md-4 col-md-offset-4">
                                        @php $var = old('register_as') @endphp
                                        <select class="form-control " required name="register_as">
                                            <option></option>
                                            <option value="user" {{$var == 'user' ? 'selected' : 'selected'}}>Client
                                            </option>
                                            <option value="reseller" {{$var == 'reseller' ? 'selected' : ''}}>Reseller
                                            </option>
                                        </select>
                                        @if ($errors->has('register_as'))
                                            <span class="text-danger help-block">
                                        		<strong>{{ $errors->first('register_as') }} </strong>
                                    		</span>
                                        @endif
                                    </div>
                                </div>
                            </div>

                            <div class="row">

                                <div class="form-group col-md-6 {{ $errors->has('name') ? 'has-error' : '' }}">
                                    <label for="inputEmail4">Name Of Company / Individual <em class="text-danger">*</em></label>
                                    <input type="text" class="form-control" value="{{old('name')}}" name="name"
                                           placeholder="" required>
                                    @if ($errors->has('name'))
                                        <strong class="text-danger">{{ $errors->first('name') }} </strong>
                                    @endif
                                </div>

                                <div class="form-group {{ $errors->has('nature_of_business') ? 'has-error' : '' }} col-md-6">
                                    <label for="inputAddress">Nature Of Business <em class="text-danger"></em></label>
                                    <select class="form-control" name="nature_of_business">
                                        <option></option>
                                        <option value="Arts, entertainment and recreation ">Arts, entertainment and recreation </option>
                                        <option value="Banking & finance">Banking & finance </option>
                                        <option value="Beauty industry">Beauty industry  </option>
                                        <option value="Educational services">Educational services</option>
                                        <option value="Health care and social assistance">Health care and social assistance </option>
                                        <option value="Information Technology">Information Technology</option>
                                        <option value="Information and cultural industries">Information and cultural industries</option>
                                        <option value="Insurance">Insurance</option>
                                        <option value="Manufacturing">Manufacturing</option>
                                        <option value="Mining, quarrying, and oil and gas ">Mining, quarrying, and oil and gas </option>
                                        <option value="Non-Governmental Organisations">Non-Governmental Organisations </option>
                                        <option value="Other services ">Other services </option>
                                        <option value="Public administration">Public administration</option>
                                        <option value="Real estate, rental and leasing">Real estate, rental and leasing </option>
                                        <option value="Religious Organisations">Religious Organisations </option>
                                        <option value="Retail trade ">Retail trade  </option>
                                        <option value="Transportation and warehousing">Transportation and warehousing  </option>
                                        <option value="Utilities">Utilities</option>
                                        <option value="Waste management">Waste management</option>
                                        <option value="Wholesale trade">Wholesale trade</option>
                                    </select>

                                    @if ($errors->has('nature_of_business'))
                                        <strong class="text-danger">{{ $errors->first('nature_of_business') }} </strong>
                                    @endif
                                </div>

                                <div class="form-group {{ $errors->has('physical_address') ? 'has-error' : '' }} col-md-6">
                                    <label for="inputCity">Business Location <em class="text-danger"></em></label>
                                    <input type="text" class="form-control" value="{{old('physical_address')}}"
                                           name="physical_address" placeholder="Location, Region" required>
                                    @if ($errors->has('physical_address'))
                                        <strong class="text-danger">{{ $errors->first('physical_address') }} </strong>
                                    @endif
                                </div>

                                <div class="form-group {{ $errors->has('company_phone_number') ? 'has-error' : '' }} col-md-6">
                                    <label for="inputState">Company / Individual Phone number <em class="text-danger"></em></label>
                                    <input type="text" class="form-control company-phone" name="company_phone_number" value="{{old('company_phone_number')}}" placeholder="Registered MTN, AIRTELTIGO, VODAFONE, GLO">
                                    <span class="text-danger" id="cp-phone"><em></em></span>
                                    <span class="badge badge-danger company-alert"></span>
                                    @if ($errors->has('company_phone_number'))
                                        <strong class="text-danger">{{ $errors->first('company_phone_number') }} </strong>
                                    @endif
                                </div>

                                <div class="form-group {{ $errors->has('mobile_money_number') ? 'has-error' : '' }} col-md-6">
                                    <label for="mobile_money_number">Mobile Money Number <em class="text-danger"></em></label>
                                    <input id="mobile_money_number" type="text" class="form-control " name="mobile_money_number" value="{{old('mobile_money_number')}}" placeholder="Mobile Money Number">
                                    <span class="text-danger" id="mm-phone"><small>(Credit purchase can be done on this number or changed upon credit purchasing)</small></span>
                                    <span class="badge badge-danger momo-alert"></span>
                                    @if ($errors->has('mobile_money_number'))
                                        <strong class="text-danger">{{ $errors->first('mobile_money_number') }} </strong>
                                    @endif
                                </div>

                                <hr>

                                <div class="form-group {{ $errors->has('business_logo') ? 'has-error' : '' }} col-md-6">
                                    <label for="mobile_money_number">Business Registration Logo <em class="text-danger"></em></label>
                                    <input type="file"  accept="image/*"  class="form-control " name="business_logo" value="{{old('business_logo')}}">

                                    @if ($errors->has('business_logo'))
                                        <strong class="text-danger">{{ $errors->first('business_logo') }} </strong>
                                    @endif
                                </div>

                            </div>

                            <div class="row">
                                <div class="form-group {{ $errors->has('username') ? 'has-error' : '' }} col-md-6">
                                    <label for="username">Preferred Username <em class="text-danger">*</em></label>
                                    <input type="text" class="form-control" id="username" name="username" value="{{old('username')}}">
                                    @if ($errors->has('username'))
                                        <strong class="text-danger">{{ $errors->first('username') }} </strong>
                                    @else
                                        <h4 class="" id="user"></h4>
                                    @endif
                                </div>
                            </div>

                            <hr>

                            <h4>Contact Person Information <em class="text-danger">*</em></h4>
                            <hr>

                            <div class="row">
                                <div class="form-group {{ $errors->has('contact_person') ? 'has-error' : '' }} col-md-6">
                                    <label for="inputState">Name <em class="text-danger">*</em></label>
                                    <input type="text" class="form-control" value="{{old('contact_person')}}"
                                           name="contact_person" placeholder="Contact Person's name" required>

                                    @if ($errors->has('contact_person'))
                                        <strong class="text-danger">{{ $errors->first('contact_person') }} </strong>
                                    @endif
                                </div>

                                <div class="form-group {{ $errors->has('contact_person_email') ? 'has-error' : '' }} col-md-6">
                                    <label for="inputState">Email <em class="text-danger">*</em></label>
                                    <input type="text" class="form-control email"
                                           value="{{old('contact_person_email')}}" name="contact_person_email"
                                           placeholder="Contact Person's email" required>
                                    <span class="badge badge-danger email-alert"></span>

                                    @if ($errors->has('contact_person_email'))
                                        <strong class="text-danger">{{ $errors->first('contact_person_email') }} </strong>
                                    @endif
                                </div>
                            </div>
                            <div class="row">

                                <div class="form-group {{ $errors->has('contact_person_phone') ? 'has-error' : '' }} col-md-6">
                                    <label for="inputState">Phone Number <em class="text-danger">*</em></label>
                                    <input type="text" class="form-control" id="contact_person_phone" value="{{old('contact_person_phone')}}" name="contact_person_phone"  placeholder="Contact Person's phone" required>
                                    <span class="text-danger"><em>(All OTPs for verification will be sent to this number)</em></span>

                                    @if ($errors->has('contact_person_phone'))
                                        <br/> <strong class="text-danger">{{ $errors->first('contact_person_phone') }} </strong>
                                    @endif
                                </div>


                                <div class="form-group {{ $errors->has('contact_person_id') ? 'has-error' : '' }} col-md-6">
                                    <label for="inputState">ID <em class="text-danger"></em></label>
                                    <input type="file" class="form-control" value="{{old('contact_person_id')}}" name="contact_person_id" placeholder="Contact Person  Id">

                                    @if ($errors->has('contact_person_id'))
                                        <strong class="text-danger">{{ $errors->first('contact_person_id') }} </strong>
                                    @endif
                                </div>
                            </div>

                            <hr>
                            <div class="form-row text-center">
                                <div class="col-md-12">
                                    <button type="submit" class="btn then-submit" style="background-color: #4285F4; color: white"><i class="fa fa-plus-circle"></i> Register</button>
                                    <a type="submit" class="btn otp-btn" style="background-color: #CC0000; color: white"><i class="fa fa-shield"></i> GET OTP</a>
                                </div>
                            </div>
                        </form>
                        </div>
                        </div>
                    </div>
                </div>
            </div>


    @include('layouts.conditions')
@endsection

@push('scripts')

    <script src="{{ elixir('js/all.js') }}"></script>
    {{--<script type="text/javascript" src="https://cdn.jsdelivr.net/jquery/latest/jquery.min.js"></script>--}}
    <script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>

    <script type="text/javascript" src="https://cdn.jsdelivr.net/momentjs/latest/moment.min.js"></script>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/daterangepicker/daterangepicker.min.js"></script>
    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jsgrid/1.5.3/jsgrid.min.js"></script>
    <script type="text/javascript" src="{{asset('JS_OTP/dist/jsOTP.min.js')}}"></script>

{{--    <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jsgrid/1.5.3/jsgrid.min.js"></script>--}}
{{--<script src="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js" integrity="sha384-aJ21OjlMXNL5UyIl/XNwTMqvzeRMZH2w8c5cRVpzpU8Y5bApTppSuUkhZXN0VxHd" crossorigin="anonymous"></script>--}}
    <script>

        $(document).ready(function () {
            // Secure OTP system - no more exposed secrets
            let currentSessionToken = null;
            let currentPhoneNumber = null;

            const submit   = $('.then-submit'),
                otpBtn   = $('.otp-btn'),
                username = $('#username'),
                userWarn = $('#user'),
                mobile   = $('#contact_person_phone');
            submit.hide();

            submit.on('click', function (t) {
                t.preventDefault();
                $('#conditions').modal('toggle');
                $('.agree').on('click', function () {
                    let value = $(this).val();
                    if (value === 'yes') {
                        $('#conditions').modal('hide');
                        $('.registration').submit();
                    }
                })
            });

            otpBtn.on('click', function (t) {
                t.preventDefault();

                if (mobile.val() === '') {
                    alert('Contact person phone number must not be null');
                    return;
                }

                currentPhoneNumber = mobile.val();

                // Step 1: Generate session token
                $.ajax({
                    url: '{{ route("register.company.session.generate") }}',
                    method: 'POST',
                    data: {
                        phone: currentPhoneNumber,
                        _token: '{{ csrf_token() }}'
                    },
                    success: function(response) {
                        if (response.session_token) {
                            currentSessionToken = response.session_token;

                            // Step 2: Send OTP
                            $.ajax({
                                url: '{{ route("register.company.otp.send") }}',
                                method: 'POST',
                                data: {
                                    session_token: currentSessionToken,
                                    phone: currentPhoneNumber,
                                    _token: '{{ csrf_token() }}'
                                },
                                success: function(otpResponse) {
                                    console.log('otpResponse ', otpResponse);
                                    if (otpResponse.code === 0) {
                                        let userOtp = prompt('An OTP has been sent to ' + currentPhoneNumber + ' \nEnter OTP received Via SMS');
                                        if (userOtp) {
                                            verifySecureOTP(userOtp);
                                        }
                                    } else {
                                        alert('Failed to send OTP: ' + otpResponse.message);
                                    }
                                },
                                error: function(xhr) {
                                    let errorMsg = 'Failed to send OTP';
                                    if (xhr.responseJSON && xhr.responseJSON.message) {
                                        errorMsg = xhr.responseJSON.message;
                                    }
                                    alert(errorMsg);
                                }
                            });
                        } else {
                            alert('Failed to generate session: ' + response.message);
                        }
                    },
                    error: function(xhr) {
                        let errorMsg = 'Failed to generate session';
                        if (xhr.responseJSON && xhr.responseJSON.message) {
                            errorMsg = xhr.responseJSON.message;
                        }
                        alert(errorMsg);
                    }
                });
            });

            function verifySecureOTP(userOtp) {
                if (!userOtp || userOtp === '') {
                    return;
                }

                $.ajax({
                    url: '{{ route("register.company.otp.verify") }}',
                    method: 'POST',
                    data: {
                        session_token: currentSessionToken,
                        otp: userOtp,
                        phone: currentPhoneNumber,
                        _token: '{{ csrf_token() }}'
                    },
                    success: function(response) {
                        if (response.code === 0) {
                            submit.show();
                            otpBtn.hide();
                            mobile.attr('readonly', true);

                            // Cleanup session
                            $.ajax({
                                url: '{{ route("register.company.session.cleanup") }}',
                                method: 'POST',
                                data: {
                                    session_token: currentSessionToken,
                                    _token: '{{ csrf_token() }}'
                                }
                            });
                        } else {
                            verifySecureOTP(prompt('Wrong OTP! Try again. \nEnter OTP received Via SMS'));
                        }
                    },
                    error: function(xhr) {
                        let errorMsg = 'Failed to verify OTP';
                        if (xhr.responseJSON && xhr.responseJSON.message) {
                            errorMsg = xhr.responseJSON.message;
                        }
                        verifySecureOTP(prompt(errorMsg + '\nEnter OTP received Via SMS'));
                    }
                });
            }

            username.on('focusout',function () {
                const uname = $(this).val(),
                    route = '{{route('register.company.username','name')}}'.replace('name',uname);
                console.log(uname.length);
                let exec = uname.length < 6 ?
                    userWarn.addClass('text-danger lato') &&
                    userWarn.html('<i class="fa fa-times"> username must have a minimum of 6 characters')
                    : verifyUsername(route, userWarn);
            });

            function verifyUsername(route,userWarn) {
                $.get(route,function (data) {
                    let string =  data.code === 401 ?  userWarn.addClass('text-danger lato') && '<i class="fa fa-times"> username has already been taken'
                        : userWarn.removeClass('text-danger lato').addClass('text-success lato') && '<i class="fa fa-check"> username available';
                    userWarn.html(string);
                })
            }
        });


        $('.registration').on('submit', function () {
            const grid = $("#directors").jsGrid("option", "data"),
                grid2 = $("#sender-ids").jsGrid("option", "data");
            $('#items').val(JSON.stringify(grid));
            $('#sender_ids').val(JSON.stringify(grid2));
        });


        $('#terms').on('click',function () {
            $('#conditions2').modal('toggle');
        });

        $(".email").keyup(function () {

            let value = $(this).val();
            let contents = value.indexOf('@');

            if (contents === -1) {
                $('.email-alert').html('Please enter a valid email');
                // $('#register-btn').prop('disabled',true);
            } else {
                $('.email-alert').html("");
                // $('#register-btn').prop('disabled',false);
            }


        });

        $('.company-phone').keyup(function () {
            let value = $(this).val();
            let count = value.length;
            let contents = $.isNumeric(value);

            if (contents && count > 9) {
                $('.company-alert').html('');
                // $('#register-btn').prop('disabled',false);
            } else {
                $('.company-alert').html('Please enter a valid phone number');
                // $('#register-btn').prop('disabled',true);
            }


        });

        $('#contact_person_phone').keyup(function () {
            let value = $(this).val();
            let count = value.length;
            let contents = $.isNumeric(value);
            console.log(count);

            if (contents && count > 9) {
                $('.contact-phone').html('');
                // $('#register-btn').prop('disabled',false);

            } else {
                $('.contact-phone').html('Please enter a valid phone number');
                // $('#register-btn').prop('disabled', true);
            }

        });

        $('#mobile_money_number').keyup(function () {
            let value = $(this).val();
            let count = value.length;
            let contents = $.isNumeric(value);
            console.log(count);

            if (contents && count > 9) {
                $('.momo-alert').html('');
            } else {
                $('.momo-alert').html('Please enter a valid phone number');
            }

        });
    </script>
    @endpush


