ÿØÿà JFIF    ÿÛ „  ( %!1"%)+...383-7(-.+  -%%--------+------------/----------------------------ÿÀ  ¶" ÿÄ     ÿÄ @    !1AQaq‘¡"±ÁÑð2’BRráS‚ñ3b¢CT²Ò #cÿÄ    ÿÄ '   1!AQ2a"‘±#ÿÚ   ? ò(/p‘—–¢·,M|¯G»R£üešT. ôŸEoCFñ‡ 4ÔkåóxR|µÁ¨ÓDà!Ç´µ˜‡p ÍQ‹§!þž^õWsŒy  åÁ§$á«%ºq˜™JyyË0y«^Ϗ -3ÃÏËÈ£Æ\P’ä„s&•‹Üs üô'àWt¹pñCp$bÚF`·7.^)¾!)ÒÙ˜–ÅÏš^h¾ø³·ìe±ŒaeÖ—Í,e=B}Jéߦ$$½—šÙÜCC¯¶è8β–Åkèwx LÉngT±æ¹£Ócœ¿Í/©Éÿ ‰ÚCÒ­mq;Tt¶–}0"zÖPcd1š­¤tˆ„ÐÓâqú[™öUCŠ2޿د­É(¸ßúçšmW,Ò ºf‹Ån™ÄLêÁ8üÁkÁ€L¥ÍuJ1œôrÂSŒÓöt!7EUíïb)AËi¬â-ÙHk8òÁiXYwÅ)O^"ÇØriÛô{»wRUKÙÏÚlÓ¬€‚’שT ] ªb—ÊîKC^×M“xùäñz¬zJ× {4[¹M'IÆeH1LCWÕ]œûº WDæà°OÅ‚¹c²ÞuA–rL`HšpCez‡V’— Ž‚Ë„–ñ­'µR0ÕÖ=À:±G»C\nÆÉ5*¢ †3šhQ4ýÒi$Õ1"Ü]¢p-q3zcQ$ªö¨¥æf›‘»´ÝÚHá„e²JÇ–iÊ:·à¬Øc5Åk»Laª*wi [0Ówk ¦a¦0Õ²ÅÅ‚T¸’³q:Æ<¹ú Ò˜Æ}2VE•Ѐp¡Ô3Úº …h³^LJºçì¥Ánó|˜ÖˆÎˆ+« ¦dø‘Mº–d\ªDðÛ„Ì×LÝ——Ð9Ç|•FèçVm™¨€™3õS–9Äå¢<̉Ìm¢±`·º˜&Z²ž Ë®D«¶»6™‰©­HÈ Àá«h­i³04æ’hxœi3ï¨(ÓL·†‹¶ËpŒ ƒÜÒ? :õdsÀ –3æÓ·Üjâ¬9—]8n¼&]I F£¼…ì–—Œ0v°LǐÅfÛ2TÖ’aµ˜N@ÖBSÏ^à´4-±°b×nÈÈœÆD=KdŒø…ÄÈK,›ÖR§fjü$^ÔÎ!„6^ s:Üun\ôkCÞò÷<—Lúl Í›G¹ÀPá¼Nc¡šÒ…ÙWͳœ±vÊáЄ×9‹P‰cEØ‘™›µŸP<×g1 º©Ø¬wiÁ^l5× I/';Ë+´Z‡ÓÄFÕp[Èð’ HÄ ó 9¬Dl4“é±Ï”V=^Hð;žLädÉa‚°Ë,#/Ž~²BÔÛ QãñQtIeórVB,ÏÂf‹4#Μc‹É3ZIÖ Œ¢¥·üxa‡Ãçè„jŠ[5 Ä!U?,3žÎ×…ðdÓ÷háŠA‰ìÄ4÷ÃÜZÃE{‰®+W\ZÍE[‰»µk»MÝ­`¢©†˜ÃV‹-f¢¡†¢a«eŠ%«Y¨©q%jâd,Ôq`) ¤¦…šˆ ¦E>0Ùb²t–Ÿ  ÷jsςҒKÈcø(é›;k(’#ôŒQ ™C> õ³M9óºÆµ¤çâ;uÀ)5>RÔ¸fÓ~Ȧ—’-$fe«"FâUˆÊwµPÏu w+"åÉó¨6s™Û9(À¨ù©hE°½†n`m~“@©›p!Vkhµ Á1šbEqqÊ@ºèl›2 –Yã%‘‚hÛ{a¶‡ÅÞM²¬çL34®Çl]®‹ŽØŒm'RÜe35æöˆ­Á­ cP9šeÁköo´L³Ì=p8]”‡B¶,šº|ɏdzXˆØk*ÇÚ{#ñ‰pã(€¶‡9ý'šÜ³½¯kƒ†Â’ëSOƒ•Å®H6+a¢µˆ‹Y¨b˜b+XˆÖ!°u!¢"µˆˆn2ˆ Å0Ä`Å Ô®c(ÓÜGº•Ä»Œ âWî%q.áÐÄ÷î%umÍ£+ÜQ,Vn¦-GphU¸¢X­&,Gt ·K¢ÅÅ·¥RÄÊÉbKn N­R2g$VµÕó Qr#–ÓZUÏð0ÎtÙÀœz ëöo“Îk¯n„T°"SÞ+³/…€½"ižãO%Í%&Δâ‘ËØ´IˆÓ°Ë‰ÞM3.™yçÁzit›`4C`k¢¼á!álÄï sÂ[×!¤l¾æo"ƒIÔ'@ªu)3›ô®“@Z à¾] üœ'‡4¸PÞkÁ-qÄH‰ÓÍBd´ÿ —¹°ÄA&ÊUC„öz‚‚RæŠtf¬>˜ÑidšEçÑL÷áý¡V±h§­c¿¥¨ƒ@g¼…Ýö^ÞËc.ž„æ“I[ ª+·zÐÒÚ,½Ð»¶€C›7jk$๖€Ž¾ÅÙpp¶ÍþéΤ ½ØÎŒq ñpæžÅ¥#Øâ49ÃÂK^MYV“,¶Éz_òæ:…;Õ«¦I3âJ£¤û5$7Èxün\â]Êe¯(Ÿ&Ž‹¶2<6Ćf× æ¢ƱqWı[(ÙÂŽç‚T7¨@ÈÉÍß‚ïÙ"&3TYlGށ†)†#5ŠA©^T2ÆÁ†)©†©†¤yGXÁ†©"†)©¼ÅV WS†#©]R–r‹q5ÕbâWþBh¯u+ªÅÄ×ü„nÑ^êkªÁj‰jeœWˆÕÕ`µDµ2Ì+Ä µDµµ5Ô{¤Þ0RF’H÷AÛ<ÊÁ§ ƈæ0Ñ£ê4 öÚµ[¬/1²€â<-¬šö²r×0o×w ´xÐÒË„ g01¬„åEM蛇Ã\6µE›‘fÙO k÷CºnÓ1`iîÒ² áÂ!ÑLÄÿ ³¬\õ*:M=Ç»c‹2[‰ØsÕLò\ŒK L^™üÄN\¶#» Ç\……ßïIœÉ$¸ÎñÍ®ÔHÇ Ûí/´>Li”„†g^$ 7NÍÑÑ2M2ªNg=k½Ð}Ÿl6‡ —JWˆ”ÞéT·+µ¦üÂFè¢Vs6ýÆ4»2+2IÝ9ô9®ÇGÙÇ1+Ä8;*Õ§ž½D*îÑWÚçá3Ma¤·ˆ¥t}š²Ü…Q+Æüµ8HíS”üxGéÁˆ¦Ël„éÈ 5 µÄƒ6äÜ(kIš¯S†fÖ&¸®×v|Äyˆ*禌Éù@7-®Ä[]ÎÖ¿ê`º…=:…žJVnݳvðÖKE¼‚ »mà ÷f®:Ë ™–4rð¡4` ܹçž~‹C=œ…¾Ïj|VDtK.ƒ"9 Ï ­–éXá³6WÒïIL-Ї Ç lang/en/pagination.php000064400000001026152266365050010742 0ustar00 '« Previous', 'next' => 'Next »', ]; lang/en/validation.php000064400000020530152266365050010744 0ustar00 'The :attribute must be accepted.', 'accepted_if' => 'The :attribute must be accepted when :other is :value.', 'active_url' => 'The :attribute is not a valid URL.', 'after' => 'The :attribute must be a date after :date.', 'after_or_equal' => 'The :attribute must be a date after or equal to :date.', 'alpha' => 'The :attribute must only contain letters.', 'alpha_dash' => 'The :attribute must only contain letters, numbers, dashes and underscores.', 'alpha_num' => 'The :attribute must only contain letters and numbers.', 'array' => 'The :attribute must be an array.', 'before' => 'The :attribute must be a date before :date.', 'before_or_equal' => 'The :attribute must be a date before or equal to :date.', 'between' => [ 'numeric' => 'The :attribute must be between :min and :max.', 'file' => 'The :attribute must be between :min and :max kilobytes.', 'string' => 'The :attribute must be between :min and :max characters.', 'array' => 'The :attribute must have between :min and :max items.', ], 'boolean' => 'The :attribute field must be true or false.', 'confirmed' => 'The :attribute confirmation does not match.', 'current_password' => 'The password is incorrect.', 'date' => 'The :attribute is not a valid date.', 'date_equals' => 'The :attribute must be a date equal to :date.', 'date_format' => 'The :attribute does not match the format :format.', 'declined' => 'The :attribute must be declined.', 'declined_if' => 'The :attribute must be declined when :other is :value.', 'different' => 'The :attribute and :other must be different.', 'digits' => 'The :attribute must be :digits digits.', 'digits_between' => 'The :attribute must be between :min and :max digits.', 'dimensions' => 'The :attribute has invalid image dimensions.', 'distinct' => 'The :attribute field has a duplicate value.', 'email' => 'The :attribute must be a valid email address.', 'ends_with' => 'The :attribute must end with one of the following: :values.', 'enum' => 'The selected :attribute is invalid.', 'exists' => 'The selected :attribute is invalid.', 'file' => 'The :attribute must be a file.', 'filled' => 'The :attribute field must have a value.', 'gt' => [ 'numeric' => 'The :attribute must be greater than :value.', 'file' => 'The :attribute must be greater than :value kilobytes.', 'string' => 'The :attribute must be greater than :value characters.', 'array' => 'The :attribute must have more than :value items.', ], 'gte' => [ 'numeric' => 'The :attribute must be greater than or equal to :value.', 'file' => 'The :attribute must be greater than or equal to :value kilobytes.', 'string' => 'The :attribute must be greater than or equal to :value characters.', 'array' => 'The :attribute must have :value items or more.', ], 'image' => 'The :attribute must be an image.', 'in' => 'The selected :attribute is invalid.', 'in_array' => 'The :attribute field does not exist in :other.', 'integer' => 'The :attribute must be an integer.', 'ip' => 'The :attribute must be a valid IP address.', 'ipv4' => 'The :attribute must be a valid IPv4 address.', 'ipv6' => 'The :attribute must be a valid IPv6 address.', 'json' => 'The :attribute must be a valid JSON string.', 'lt' => [ 'numeric' => 'The :attribute must be less than :value.', 'file' => 'The :attribute must be less than :value kilobytes.', 'string' => 'The :attribute must be less than :value characters.', 'array' => 'The :attribute must have less than :value items.', ], 'lte' => [ 'numeric' => 'The :attribute must be less than or equal to :value.', 'file' => 'The :attribute must be less than or equal to :value kilobytes.', 'string' => 'The :attribute must be less than or equal to :value characters.', 'array' => 'The :attribute must not have more than :value items.', ], 'mac_address' => 'The :attribute must be a valid MAC address.', 'max' => [ 'numeric' => 'The :attribute must not be greater than :max.', 'file' => 'The :attribute must not be greater than :max kilobytes.', 'string' => 'The :attribute must not be greater than :max characters.', 'array' => 'The :attribute must not have more than :max items.', ], 'mimes' => 'The :attribute must be a file of type: :values.', 'mimetypes' => 'The :attribute must be a file of type: :values.', 'min' => [ 'numeric' => 'The :attribute must be at least :min.', 'file' => 'The :attribute must be at least :min kilobytes.', 'string' => 'The :attribute must be at least :min characters.', 'array' => 'The :attribute must have at least :min items.', ], 'multiple_of' => 'The :attribute must be a multiple of :value.', 'not_in' => 'The selected :attribute is invalid.', 'not_regex' => 'The :attribute format is invalid.', 'numeric' => 'The :attribute must be a number.', 'password' => 'The password is incorrect.', 'present' => 'The :attribute field must be present.', 'prohibited' => 'The :attribute field is prohibited.', 'prohibited_if' => 'The :attribute field is prohibited when :other is :value.', 'prohibited_unless' => 'The :attribute field is prohibited unless :other is in :values.', 'prohibits' => 'The :attribute field prohibits :other from being present.', 'regex' => 'The :attribute format is invalid.', 'required' => 'The :attribute field is required.', 'required_array_keys' => 'The :attribute field must contain entries for: :values.', 'required_if' => 'The :attribute field is required when :other is :value.', 'required_unless' => 'The :attribute field is required unless :other is in :values.', 'required_with' => 'The :attribute field is required when :values is present.', 'required_with_all' => 'The :attribute field is required when :values are present.', 'required_without' => 'The :attribute field is required when :values is not present.', 'required_without_all' => 'The :attribute field is required when none of :values are present.', 'same' => 'The :attribute and :other must match.', 'size' => [ 'numeric' => 'The :attribute must be :size.', 'file' => 'The :attribute must be :size kilobytes.', 'string' => 'The :attribute must be :size characters.', 'array' => 'The :attribute must contain :size items.', ], 'starts_with' => 'The :attribute must start with one of the following: :values.', 'string' => 'The :attribute must be a string.', 'timezone' => 'The :attribute must be a valid timezone.', 'unique' => 'The :attribute has already been taken.', 'uploaded' => 'The :attribute failed to upload.', 'url' => 'The :attribute must be a valid URL.', 'uuid' => 'The :attribute must be a valid UUID.', /* |-------------------------------------------------------------------------- | Custom Validation Language Lines |-------------------------------------------------------------------------- | | Here you may specify custom validation messages for attributes using the | convention "attribute.rule" to name the lines. This makes it quick to | specify a specific custom language line for a given attribute rule. | */ 'custom' => [ 'attribute-name' => [ 'rule-name' => 'custom-message', ], ], /* |-------------------------------------------------------------------------- | Custom Validation Attributes |-------------------------------------------------------------------------- | | The following language lines are used to swap our attribute placeholder | with something more reader friendly such as "E-Mail Address" instead | of "email". This simply helps us make our message more expressive. | */ 'attributes' => [], ]; lang/en/passwords.php000064400000001350152266365050010636 0ustar00 'Your password has been reset!', 'sent' => 'We have emailed your password reset link!', 'throttled' => 'Please wait before retrying.', 'token' => 'This password reset token is invalid.', 'user' => "We can't find a user with that email address.", ]; lang/en/system.php000064400000001363152266365050010141 0ustar00 'Dashboard', 'autoreply' => 'Auto Reply', 'contact' => 'Contacts', 'contactlist' => 'Lists Contact', 'taglist' => 'Lists Tag', 'blast' => 'Blast Message', 'test' => 'Message Test', 'restapi' => 'Rest Api', 'setting' => 'Settings', ]; lang/en/auth.php000064400000001242152266365050007552 0ustar00 'These credentials do not match our records.', 'password' => 'The provided password is incorrect.', 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', ]; lang/id/system.php000064400000001330152266365050010125 0ustar00 'Dashboard', 'autoreply' => 'Auto Respon', 'contact' => 'Kontak', 'contactlist' => 'Daftar Kontak', 'taglist' => 'Daftar Label', 'blast' => 'Pesan Masal', 'test' => 'Tes Pesan', 'restapi' => 'Rest Api', 'setting' => 'Pengaturan', ]; views/welcome.blade.php000064400000044021152266365050011126 0ustar00 Laravel
@if (Route::has('login')) @endif
Laravel has wonderful, thorough documentation covering every aspect of the framework. Whether you are new to the framework or have previous experience with Laravel, we recommend reading all of the documentation from beginning to end.
Laracasts offers thousands of video tutorials on Laravel, PHP, and JavaScript development. Check them out, see for yourself, and massively level up your development skills in the process.
Laravel News is a community driven portal and newsletter aggregating all of the latest and most important news in the Laravel ecosystem, including new package releases and tutorials.
Vibrant Ecosystem
Laravel's robust library of first-party tools and libraries, such as Forge, Vapor, Nova, and Envoyer help you take your projects to the next level. Pair them with powerful open source libraries like Cashier, Dusk, Echo, Horizon, Sanctum, Telescope, and more.
Laravel v{{ Illuminate\Foundation\Application::VERSION }} (PHP v{{ PHP_VERSION }})
views/components/select-device.blade.php000064400000005776152266365050014412 0ustar00
  • views/components/layout-dashboard.blade.php000064400000011562152266365050015126 0ustar00 {{-- Copyright By Ilman Sunanuddin, M pedia Email : Ilmansunannudin2@gmail.com website : https://m-pedia.co.id Whatsap : 6282298859671 ------------------------------------------------------------------ You are not allowed to share or sell this source code without permission. --}} {{-- csrf --}} {{ $title }} | MPWA Multi device version {{-- --}}
    {{ $slot }}
    {{-- --}} {{-- --}} {{-- --}} views/components/sidebar.blade.php000064400000013622152266365050013274 0ustar00
    views/components/no-data.blade.php000064400000000431152266365050013200 0ustar00
    No Data
    {{$text}}
    views/components/header.blade.php000064400000006377152266365050013124 0ustar00
    views/components/aside.blade.php000064400000013731152266365050012751 0ustar00 views/components/select-file.blade.php000064400000000762152266365050014060 0ustar00 views/components/alert.blade.php000064400000001271152266365050012767 0ustar00
    @if ($type == 'success') @elseif ($type == 'danger') @elseif ($type == 'warning') @endif
    {{ $msg }}
    views/components/layout-auth.blade.php000064400000002762152266365050014142 0ustar00 {{ $title }} | MPWA MD version
    {{ $slot }}
    views/install.blade.php000064400000050354152266365050011147 0ustar00 {{ __('Installation') }} {{-- VueJS --}}
    @if ($errors->any()) @foreach ($errors->all() as $error)
    {{ $error }}
    @endforeach @endif
    @csrf
    {{--
    {{ __('Requirements') }}
    --}}
    {{ __('Script requirements') }}
    {{--
    {{ __('General') }}
    --}}
    {{ __('License Validation') }}
    {{--
    {{ __('Database') }}
    --}}
    {{ __('Database settings') }}
    {{--
    {{ __('Admin access') }}
    --}}
    {{ __('Admin account') }}
    {{ __('PHP version') }} >= {{ $requirements['php']['version'] }} {{ $requirements['php']['current'] }}
    {{ __('MySQL version') }} >= {{ $requirements['mysql']['version'] }} {{ $requirements['mysql']['current']['distrib'] . ' v' . $requirements['mysql']['current']['version'] }}
    @foreach ($requirements['php_extensions'] as $name => $enabled) @endforeach
    {{ __('PHP Extension') }} {{ __('Enabled') }}
    {{ ucfirst($name) }} {!! $enabled ? '' : '' !!}

    Just skip :: >

    views/vendor/laravel-filemanager/demo.blade.php000064400000017120152266365050015612 0ustar00 Laravel Filemanager

    Integration Demo Page

    CKEditor

    TinyMCE

    Summernote

    Standalone Image Button

    Standalone File Button

    Embed file manager

    views/vendor/laravel-filemanager/crop.blade.php000064400000007444152266365050015641 0ustar00



    views/vendor/laravel-filemanager/index.blade.php000064400000026622152266365050016004 0ustar00 {{ trans('laravel-filemanager::lfm.title-page') }} {{-- Use the line below instead of the above if you need to cache the css. --}} {{-- --}}
    {{ trans('laravel-filemanager::lfm.message-empty') }}
    {{-- Use the line below instead of the above if you need to cache the script. --}} {{-- --}} views/vendor/laravel-filemanager/move.blade.php000064400000002645152266365050015642 0ustar00 views/vendor/laravel-filemanager/tree.blade.php000064400000002210152266365050015617 0ustar00

    WAMP MANAGER

    Current usage :

    0 GB (Max : 1 TB)

    views/vendor/laravel-filemanager/use.blade.php000064400000001050152266365050015455 0ustar00 views/vendor/laravel-filemanager/resize.blade.php000064400000011277152266365050016176 0ustar00
    @if ($scaled) @endif
    {{ trans('laravel-filemanager::lfm.resize-ratio') }} {{ number_format($ratio, 2) }}
    {{ trans('laravel-filemanager::lfm.resize-scaled') }} {{ trans('laravel-filemanager::lfm.resize-true') }}
    {{ trans('laravel-filemanager::lfm.resize-old-height') }} {{ $original_height }}px
    {{ trans('laravel-filemanager::lfm.resize-old-width') }} {{ $original_width }}px
    {{ trans('laravel-filemanager::lfm.resize-new-height') }} px
    {{ trans('laravel-filemanager::lfm.resize-new-width') }} px
    views/scan.blade.php000064400000021035152266365050010417 0ustar00

    Whatsapp Account {{ $number->body }}

    {{-- icon info --}}
    Dont leave your phone before connencted
    @if (Auth::user()->is_expired_subscription) {{-- text --}} @else @endif
    @if (Auth::user()->is_expired_subscription) @else @endif
    Whatsapp InfoUpdated 5 min ago
    views/home.blade.php000064400000031311152266365050010421 0ustar00
    @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif @if ($errors->any())
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif

    Total Devices

    {{$user->devices_count}}

    Your limit device : {{$user->limit_device}}

    Blast/Bulk

    {{$user->blasts_pending}} Wait

    {{$user->blasts_success}} Sent

    {{$user->blasts_failed}} Fail

    From {{$user->campaigns_count}} Campaigns

    Subscription Status

    {{$user->subscription_status}}

    Expired : {{$user->expired_subscription_status}}

    All Messages Sent

    {{$user->message_histories_count}}

    From messages histories

    Whatsapp Account
    @if ($numbers->total() == 0) @endif @foreach ($numbers as $number) @endforeach
    Number Webhook URL Messages Sent status Action
    {{ $number['body'] }}
    @csrf
    {{ $number['message_sent'] }} {{ $number['status'] }}
    @method('delete') @csrf
    views/pages/user/settings.blade.php000064400000013524152266365050013414 0ustar00
    @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif
    Settings
    @csrf
    API Key
    @csrf
    @if ($errors->has('current'))
    {{ $errors->first('current') }}
    @endif
    @if ($errors->has('password'))
    {{ $errors->first('password') }}
    @endif
    views/pages/file-manager.blade.php000064400000002557152266365050013131 0ustar00
    @if (session()->has('alert')) @slot('type',session('alert')['type']) @slot('msg',session('alert')['msg']) @endif @if ($errors->any())
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif
    views/pages/api-docs/send-media.blade.php000064400000005367152266365050014311 0ustar00

    Send Media API

    Method : POST | GET

    Endpoint: {{ env('APP_URL') }}/send-media

    Request Body : (JSON If POST)
    Parameter Type Required Description
    api_key string Yes API Key
    sender string Yes Number of your device
    number string Yes recipient number ex 72888xxxx|62888xxxx
    media_type string Yes allow : image,video,audio,pdf,xls,xlsx,doc,docx,zip
    caption string No Will show if type image or video
    url string Yes URL of media, must direct link
    ppt boolean No required if type is audio. true = Voice note | false = Audio

    Note: Make sure the url is direct link, not a link from google drive or other cloud storage


    Example JSON Request

            
              {
                "api_key": "1234567890",
                "sender": "62888xxxx",
                "number": "62888xxxx",
                "media_type": "image",
                "caption": "Hello World",
                "url": "https://example.com/image.jpg"
              }
            
    
            
          

    Example URL Request

              
      {{ env('APP_URL') }}/send-media?api_key=1234567890&sender=62888xxxx&number=62888xxxx&media_type=image&caption=Hello World&url=https://example.com/image.jpg
              
            
    views/pages/api-docs/send-list.blade.php000064400000006442152266365050014200 0ustar00

    Send List message API

    Method : POST | GET

    Endpoint: {{ env('APP_URL') }}/send-LIST

    Request Body : (JSON If POST)

    {{-- { "sender" : "6281284838163", "api_key" : "ndUJR38JkvyCfLZ", "number" : "082298859671", "name" : "pesan list", "footer" : "optional", "title" : "title list", "buttontext" : "ey", "message" : "Halo,ini pesan TEMPLATE button", "list" : ["sdf"] } --}}
    Parameter Type Required Description
    api_key string Yes API Key
    sender string Yes Number of your device
    number string Yes recipient number ex 72888xxxx|62888xxxx
    name string Yes name of your list
    footer string No footer of your message
    title string Yes title of your list
    buttontext string Yes text of your button list
    message string Yes Text of your message
    list array Yes list of your message min 1 max 10

    Example JSON Request

                                
    {
        "sender" : "6282298859671",
        "api_key" : "ndUJR38JkvyCfLZ",
        "number" : "082298859671",
        "name" : "pesan list",
        "footer" : "optional",
        "title" : "title list",
        "buttontext" : "ey",
        "message" : "Halo,ini pesan list button",
        "list" : ["sdf","list2","list3"]
    
    }
    
                                
                            

    Example URL request

                                 
    {{ env('APP_URL') }}/send-list?sender=6282298859671&api_key=ndUJR38JkvyCfLZ&number=082298859671&name=pesan list&footer=optional&title=title list&buttontext=ey&message=Halo,ini pesan list&list=sdf,list2,list3
                                
                            

    views/pages/api-docs/index.blade.php000064400000016055152266365050013406 0ustar00 {{-- --}} {{-- --}} {{-- API DOCUMENTATION --}}
    {{-- send message --}} @include('pages.api-docs.send-message') {{-- end send message --}} {{-- send media --}} @include('pages.api-docs.send-media') @include('pages.api-docs.send-poll') {{-- end send media --}} {{-- send button --}} @include('pages.api-docs.send-button') {{-- end send button --}} {{-- send template --}} @include('pages.api-docs.send-template') {{-- end send template --}} {{-- send list --}} @include('pages.api-docs.send-list') {{-- end send list --}} {{-- response --}} @include('pages.api-docs.responses') {{-- end response --}} {{-- generate qr code --}} @include('pages.api-docs.generateqr') {{-- end generate qr code --}} {{-- example webhook --}} @include('pages.api-docs.examplewebhook') {{-- end example webhook --}}
    views/pages/api-docs/send-poll.blade.php000064400000004477152266365050014201 0ustar00

    Send Poll API

    Method : POST | GET

    Endpoint: {{ env('APP_URL') }}/send-poll

    Request Body : (JSON If POST)
    Parameter Type Required Description
    api_key string Yes API Key
    sender string Yes Number of your device
    number string Yes recipient number ex 72888xxxx|62888xxxx
    name string Yes name or question polling
    option array Yes values of poll message
    countable string 1 or 0 Yes is polling only one number / poll or allow multiple

    Example json

                               
    {
        "sender" : "6281284838163",
        "api_key" : "yourapikey",
        "number" : "082298859671",
        "countable" : "1",
        "name" : "what color do you like?",
        "option" : ["red","blue","yellow"]
    
    }
                               
                           

    Example URL

                               
       {{ env('APP_URL') }}/send-button?sender=6281284838163&api_key=yourapikey&number=082298859671&name=what color do you like&button=red ,blue,yellow
       
                           
    views/pages/api-docs/send-button.blade.php000064400000005100152266365050014526 0ustar00

    Send Button API

    Method : POST | GET

    Endpoint: {{ env('APP_URL') }}/send-button

    Request Body : (JSON If POST)
    Parameter Type Required Description
    api_key string Yes API Key
    sender string Yes Number of your device
    number string Yes recipient number ex 72888xxxx|62888xxxx
    message string Yes Text of message
    button array Yes Button array ,min 1 max 5
    footer string No The footer text of message
    url string No Image or video url

    Example json

                                
     {
         "sender" : "6281284838163",
         "api_key" : "yourapikey",
         "number" : "082298859671",
         "url" : null,
         "footer" : "optional",
         "message" : "Halo,ini pesan button",
         "button" : ["button 1","button 2","button 3"]
    
     }
                                
                            

    Example URL

                                
        {{ env('APP_URL') }}/send-button?sender=6281284838163&api_key=yourapikey&number=082298859671&url=&footer=optional&message=Halo,ini pesan button&button=button 1,button 2,button 3 
        
                            
    views/pages/api-docs/examplewebhook.blade.php000064400000001573152266365050015310 0ustar00

    Webhook Example

    Webhook is a feature that allows you to receive a callback from our server when a message is incoming to your device. You can use this feature for made a dinamic chatbot or whatever you want.

    We will send a POST request to your webhook url with a JSON body. Here is an example of the JSON body we will send:

            
    {
      "message" : "message",
      "from" : "the number of the whatsapp sender",
      "bufferImage" : "base64 image, null if message not contain image",
    }
    
            
          

    For example webhook you can see in Here

    views/pages/api-docs/send-message.blade.php000064400000003413152266365050014644 0ustar00

    Send Message API

    Method : POST | GET

    Endpoint: {{ env('APP_URL') }}/send-message

    Request Body : (JSON If POST)
    Parameter Type Required Description
    api_key string Yes API Key
    sender string Yes Number of your device
    number string Yes recipient number ex 72888xxxx|62888xxxx
    message string Yes Messsage to be sent

    Examplo JSON Request

          
            {
              "api_key": "1234567890",
              "sender": "62888xxxx",
              "number": "62888xxxx",
              "message": "Hello World"
            }
          
          

    Example URL Request

            
    {{ env('APP_URL') }}/send-message?api_key=1234567890&sender=62888xxxx&number=62888xxxx&message=Hello World
            
          
    views/pages/api-docs/generateqr.blade.php000064400000017644152266365050014441 0ustar00

    Generate QR API

    Method : POST

    Endpoint: {{ env('APP_URL') }}/generate-qe

    Request Body : (JSON If POST) {{-- { "device" : "6282298859671", "api_key" : "ndUJR38JkvyCfLZ" } --}}
    Parameter Type Required Description
    device string Yes Number of your device
    api_key string Yes API Key

    Normal Response

          
    {
        "status": "processing",
        "message": "Processing"
    }
    
    // if processing like above,you need to hit the endpoint again to get the result
    // and result will be like this
    {
        "status": false,
        "qrcode": "data:image/png;base64,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",
        "message": "Please scann qrcode"
    }
    
    // the qrcode is base64 encoded.
    // after scanned the qrcode, you need to hit the endpoint again to get last response.
    
    // if already scanned, the response will be like this:
    {
        "status": false,
        "msg": "Device already connected!"
    }
    
          
          

    Failed response

            
    {
        "status": false,
        "msg": "Invalid data!",
        "errors": {} // list of errors
    }
            
          
    views/pages/api-docs/responses.blade.php000064400000001705152266365050014314 0ustar00

    The Responses of API for (SEND MESSAGE) | JSON

    Response Success

            
    {
        "status": true,
        "msg": "Message sent successfully!"
    }
            
          

    Response Failed

            
    {
        "status": false,
        "msg": "Message failed to send!"
    }
            
          

    Response INVALID Data

              
    {
        "status": false,
        "msg": "Invalid data!",
        "errors": { } // list of errors
    }
              
            

    Response failed access whatsapp server

                
    {
        "status": false,
        "msg": "Failed to send message!",
        "errors": "Failed to access whatsapp server"
    }
    
    
    views/pages/api-docs/send-template.blade.php000064400000005507152266365050015041 0ustar00

    Send Template API

    Method : POST | GET

    Endpoint: {{ env('APP_URL') }}/send-template

    Request Body : (JSON If POST)

    Parameter Type Required Description
    api_key string Yes API Key
    sender string Yes Number of your device
    number string Yes recipient number ex 72888xxxx|62888xxxx
    url string No url of your image
    footer string No footer of your message
    message string Yes Text of your message
    template array Yes array of button template Min 1 Max 3

    Note : the template format must like : call|Call me|6282298859671 or url|Visit Google|google.com , the first is only call or url!

    Example JSON Request

                                
     {
        "sender" : "6281284838163",
        "api_key" : "ndUJR38JkvyCfLZ",
        "number" : "082298859671",
        "url" : null,
        "footer" : "optional",
        "message" : "Halo,ini pesan TEMPLATE button",
        "template" : ["call|template 1|082298859671","url|tempate 2|google.com"]
    
    }
                                
                            

    Example URL request

                                
    {{ env('APP_URL') }}/send-template?sender=6282298859671&api_key=ndUJR38JkvyCfLZ&number=082298859671&url=&footer=optional&message=Halo,ini pesan TEMPLATE button&template=call|template 1|082298859671,url|tempate 2|google.com
                                
                            
    views/pages/histories/message.blade.php000064400000014121152266365050014225 0ustar00 @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif {{-- end breadcrumb --}} {{-- table --}}
    @if ($messages->total() == 0) @endif @foreach ($messages as $msg) @endforeach
    ID Sender Number Message Status Via Last Updated Action
    {{$msg->id}} {{$msg->device->body }} {{$msg->number}} {{$msg->type}} : {{substr($msg->message, 0, 20)}} {{strlen($msg->message) > 20 ? '...' : ''}} @if ($msg->status == 'success') Sent @else Failed @endif @if ($msg->send_by == 'web') Web @else API @endif {{$msg->updated_at->diffForHumans()}} Resend
    {{-- end table --}}
    views/pages/messagetest.blade.php000064400000013620152266365050013117 0ustar00 @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif @if ($errors->any())

    The given data was invalid.

      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif {{-- form --}}
    Test Message
    @if (!session()->has('selectedDevice') || !session()->has('selectedDevice'))
    • Please select a device and a message to test
    @else
    @csrf
    {{-- --}}
    {{-- button --}}
    @endif
    {{-- end form --}} views/pages/campaign/create.blade.php000064400000047673152266365050013634 0ustar00 @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif @if ($errors->any())
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif {{-- wizard --}}
    Create Your Campaign

    @if (!session()->has('selectedDevice'))
    Please select a device first
    @else
    {{-- prev and next button --}}
    @endif
    {{-- end wizard --}} views/pages/campaign/datablasts.blade.php000064400000010062152266365050014471 0ustar00 @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif {{-- end breadcrumb --}} {{-- table --}}
    @foreach ($blasts as $blast) @endforeach
    Receiver Status Last Updated
    {{ $blast->receiver }} @if ($blast->status == 'success') Sent @elseif ($blast->status == 'pending') Pending @else {{ $blast->status }} @endif {{ $blast->updated_at }}
    {{-- end table --}}
    views/pages/campaign/index.blade.php000064400000034036152266365050013465 0ustar00 @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif {{-- end breadcrumb --}} {{-- table --}}
    @if ($campaigns->total() == 0) @endif @foreach ($campaigns as $campaign) @endforeach
    Device Name Message Schedule Summary Status Action
    {{ $campaign->device->body }} {{ $campaign->name }} {{ $campaign->type }} {{ $campaign->schedule }} {{ $campaign->blasts_count }} total
    {{ $campaign->blasts_success }} Success
    {{ $campaign->blasts_failed }} Failed
    {{ $campaign->blasts_pending }} Waiting {{-- button view blasts list --}}
    @if ($campaign->status == 'completed') Completed @elseif ($campaign->status == 'paused') Paused @elseif ($campaign->status == 'waiting') Waiting @elseif ($campaign->status == 'processing') Processing @else {{ $campaign->status }} @endif
    @if ($campaign->status == 'processing' || $campaign->status == 'waiting') @endif @if ($campaign->status == 'paused') @endif
    Filter by
    {{-- end table --}} {{-- Modal preview message --}} {{-- End Modal Preview Message --}}
    views/pages/campaign/phonebook-list.blade.php000064400000000243152266365050015304 0ustar00@foreach ($phonebooks as $phonebook) @endforeachviews/pages/rest-api.blade.php000064400000132216152266365050012322 0ustar00

    Rest API

    Method POST & GET ( All support )
    Type JSON
    RESPONSE { status : boolean , msg : 'text' } (JSON)

    Rest Api

    <?php
    
                                                        $data = [
                                                            'api_key' => '{{Auth::user()->api_key}}',
                                                            'sender' => 'Sender',
                                                            'number' => 'receiver',
                                                            'message' => 'Your message'
                                                        ];
                                                        $curl = curl_init();
                                                        
                                                        curl_setopt_array($curl, array(
                                                          CURLOPT_URL => {{url('/')}}/send-message,
                                                          CURLOPT_RETURNTRANSFER => true,
                                                          CURLOPT_ENCODING => '',
                                                          CURLOPT_MAXREDIRS => 10,
                                                          CURLOPT_TIMEOUT => 0,
                                                          CURLOPT_FOLLOWLOCATION => true,
                                                          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                                          CURLOPT_CUSTOMREQUEST => 'POST',
                                                          CURLOPT_POSTFIELDS => json_encode($data),
                                                          CURLOPT_HTTPHEADER => array(
                                                            'Content-Type: application/json'
                                                          ),
                                                        ));
                                                        
                                                        $response = curl_exec($curl);
                                                        
                                                        curl_close($curl);
                                                        echo $response;
                                                        
                                                        ?>
    <?php
    
                                                        $data = [
                                                            'api_key' => '{{Auth::user()->api_key}}',
                                                            'sender' => 'Sender',
                                                            'number' => 'receiver',
                                                            'message' => 'Your caption',
                                                            'url' => 'Url Media'
                                                            'type' => 'audio / video / image / pdf / xls /xlsx /doc /docx /zip'//Choose One
                                                        ];
                                                        $curl = curl_init();
                                                        
                                                        curl_setopt_array($curl, array(
                                                          CURLOPT_URL => {{url('/')}}/send-media,
                                                          CURLOPT_RETURNTRANSFER => true,
                                                          CURLOPT_ENCODING => '',
                                                          CURLOPT_MAXREDIRS => 10,
                                                          CURLOPT_TIMEOUT => 0,
                                                          CURLOPT_FOLLOWLOCATION => true,
                                                          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                                          CURLOPT_CUSTOMREQUEST => 'POST',
                                                          CURLOPT_POSTFIELDS => json_encode($data),
                                                          CURLOPT_HTTPHEADER => array(
                                                            'Content-Type: application/json'
                                                          ),
                                                        ));
                                                        
                                                        $response = curl_exec($curl);
                                                        
                                                        curl_close($curl);
                                                        echo $response;
                                                        
                                                        ?>
    <?php
    
                                                        $data = [
                                                            'api_key' => '{{Auth::user()->api_key}}',
                                                            'sender' => 'Sender',
                                                            'number' => 'receiver',
                                                            'message' => 'Your message',
                                                            'footer' => 'Your footer message',
                                                            'image' => 'URL image ', //OPTIONAL
                                                            'button1' => 'Button 1 ', //REQUIRED ( Button minimal 1 )
                                                            'button2' => 'Button 2', //OPTIONAL
                                                            'button3' => 'Button 3',//OPTIONAL
                                                        ];
                                                        $curl = curl_init();
                                                        
                                                        curl_setopt_array($curl, array(
                                                          CURLOPT_URL => {{url('/')}}/send-button,
                                                          CURLOPT_RETURNTRANSFER => true,
                                                          CURLOPT_ENCODING => '',
                                                          CURLOPT_MAXREDIRS => 10,
                                                          CURLOPT_TIMEOUT => 0,
                                                          CURLOPT_FOLLOWLOCATION => true,
                                                          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
                                                          CURLOPT_CUSTOMREQUEST => 'POST',
                                                          CURLOPT_POSTFIELDS => json_encode($data),
                                                          CURLOPT_HTTPHEADER => array(
                                                            'Content-Type: application/json'
                                                          ),
                                                        ));
                                                        
                                                        $response = curl_exec($curl);
                                                        
                                                        curl_close($curl);
                                                        echo $response;
                                                        
                                                        ?>
    <?php
    
        $data = [
            'api_key' => '{{Auth::user()->api_key}}',
            'sender' => 'Sender',
            'number' => 'receiver',
            'message' => 'Your message',
            'footer' => 'Your footer message',
            'image' => 'URL image ', //OPTIONAL
            'template1' => 'template 1 ', //REQUIRED ( template minimal 1 )
            'template2' => 'template 2', //OPTIONAL
            'template3' => 'template 3',//OPTIONAL
        ];
        $curl = curl_init();
        
        curl_setopt_array($curl, array(
          CURLOPT_URL => {{url('/')}}/send-template,
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => '',
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 0,
          CURLOPT_FOLLOWLOCATION => true,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => 'POST',
          CURLOPT_POSTFIELDS => json_encode($data),
          CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json'
          ),
        ));
        
        $response = curl_exec($curl);
        
        curl_close($curl);
        echo $response;
        
        ?>
    {{-- List Message --}}
    <?php
    
        $data = [
            'api_key' => '{{Auth::user()->api_key}}',
            'sender' => 'Sender',
            'number' => 'receiver',
            'message' => 'Your message',
            'footer' => 'Your footer message',
            'name' => 'Name List ',
            'title' => 'Title List ',
            'list1' => 'list 1 ', //REQUIRED ( list minimal 1 )
            'list2' => 'list 2', //OPTIONAL
            'list3' => 'list 3',//OPTIONAL
            'list4' => 'list 4',//OPTIONAL
            'list5' => 'list 5',//OPTIONAL
        ];
        $curl = curl_init();
        
        curl_setopt_array($curl, array(
          CURLOPT_URL => {{url('/')}}/send-list,
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => '',
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 0,
          CURLOPT_FOLLOWLOCATION => true,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => 'POST',
          CURLOPT_POSTFIELDS => json_encode($data),
          CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json'
          ),
        ));
        
        $response = curl_exec($curl);
        
        curl_close($curl);
        echo $response;
        
        ?>
    {{-- Generate qr --}} {{-- List Message --}}
    <?php
    
        //Type respon (json)
        // { "status" : "processing", "message" : "processing"  }
        // { "status" : true, "message" : "Already Connected"  }
        // { "status" : false, "qrcode" : "qr url",  "message" : "Please Scan qrcode"  }
    
        $data = [
            'api_key' => '{{Auth::user()->api_key}}',
            'number' => 'Number',//the number you want to connect, will be added to the database if it is not registered.
           
            ];
        $curl = curl_init();
        
        curl_setopt_array($curl, array(
          CURLOPT_URL => {{url('/')}}/generate-qr,
          CURLOPT_RETURNTRANSFER => true,
          CURLOPT_ENCODING => '',
          CURLOPT_MAXREDIRS => 10,
          CURLOPT_TIMEOUT => 0,
          CURLOPT_FOLLOWLOCATION => true,
          CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
          CURLOPT_CUSTOMREQUEST => 'POST',
          CURLOPT_POSTFIELDS => json_encode($data),
          CURLOPT_HTTPHEADER => array(
            'Content-Type: application/json'
          ),
        ));
        
        $response = curl_exec($curl);
        
        curl_close($curl);
        echo $response;
        
        ?>
    {{-- end generate qr --}}
                                                  
    <?php 
     
     
     header('content-type: application/json');
     $data = json_decode(file_get_contents('php://input'), true);
     file_put_contents('whatsapp.txt', '[' . date('Y-m-d H:i:s') . "]\n" . json_encode($data) . "\n\n", FILE_APPEND);                                               
     $message = strtolower($data['message']);
     $from = strtolower($data['from']);
     $respon = false;
     
     // auto respond text   
     function sayHello(){    
     return ["text" => 'Halloooo!'];
                 }
     
     // auto respond gambaar            
    function gambar(){
     return [
         'image' => ['url' => 'https://seeklogo.com/images/W/whatsapp-logo-A5A7F17DC1-seeklogo.com.png'],
         'caption' => 'Logo whatsapp!'
     ];   
    }
     
    //auto respond button
     function button(){
         $buttons = [
             ['buttonId' => 'id1', 'buttonText' => ['displayText' => 'BUTTON 1'], 'type' => 1], // button 1 // 
             ['buttonId' => 'id2', 'buttonText' => ['displayText' => 'BUTTON 2'], 'type' => 1], // button 2
             ['buttonId' => 'id3', 'buttonText' => ['displayText' => 'BUTTON 3'], 'type' => 1], // button 3
         ];
         $buttonMessage = [
             'text' => 'HOLA, INI ADALAH PESAN BUTTON', 
             'footer' => 'ini pesan footer', 
             'buttons' => $buttons,
             'headerType' => 1 
         ];
         return $buttonMessage;
     }
     
     // auto respon lists
    function lists(){
     $sections = [
            [ 
            	"title" => "This is List menu",
            	"rows" => [
    	        ["title" => "List 1", "description" => "this is list one"],
    	        ["title" => "List 2", "description" => "this is list two"],
        	] 
        ]
    ];
     
     $listMessage = [
      "text" => "This is a list",
      "title" => "Title Chat",
      "buttonText" => "Select what will you do?",
      "sections" => $sections
     ];
     
     return $listMessage;  
     }
     
     
     if($message === 'hai'){
         $respon = sayHello();
     } else if($message === 'gambar'){
         $respon = gambar();
     } else if($message === 'tes button'){
         $respon = button();
     } else if($message === 'lists msg'){
         $respon = lists();
     }
     echo json_encode($respon);
    ?>
    views/pages/admin/manageusers.blade.php000064400000026173152266365050014204 0ustar00 @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif @if ($errors->any())
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif
    Users
    {{-- --}} @foreach ($users as $user) @endforeach
    Username Email Total Device Limit Device Subscription Expired subscription ActionAction
    {{ $user->username }} {{ $user->email }} {{ $user->total_device }} {{ $user->limit_device }} @php if ($user->is_expired_subscription) { $badge = 'danger'; } else { $badge = 'success'; } @endphp {{ $user->active_subscription }} @php if ($user->is_expired_subscription) { echo '-'; } else { if ($user->active_subscription == 'active') { echo $user->subscription_expired; } else { echo '-'; } } @endphp
    @csrf @method('DELETE')
    views/pages/admin/settings.blade.php000064400000013701152266365050013523 0ustar00 @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif @if ($errors->any())
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif
    @csrf
    URL
    views/pages/autoreply.blade.php000064400000032330152266365050012616 0ustar00 {{-- --}} {{-- --}}
    {{-- alert --}} @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif @if ($errors->any())
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif {{-- --}}
    Lists auto respond {{ Session::has('selectedDevice') ? 'for ' . Session::get('selectedDevice')['device_body'] : '' }}
    @if (Session::has('selectedDevice')) @if ($autoreplies->total() == 0) @endif @foreach ($autoreplies as $autoreply) @endforeach @else @endif
    Keyword Details Status Quoted Type Action

    Will respond if Keyword {{ $autoreply['type_keyword'] }}

    & when the sender is {{ $autoreply['reply_when'] }}

    status == 'active' ? 'checked' : '' }}>
    is_quoted ? 'checked' : '' }}>
    {{ $autoreply['type'] }}
    @method('delete') @csrf
    Please select device
    {{-- --}} {{-- --}} {{-- --}}
    views/pages/messagetest_bc.blade.php000064400000056474152266365050013601 0ustar00
    @if (session()->has('alert')) @slot('type',session('alert')['type']) @slot('msg',session('alert')['msg']) @endif
    {{-- please select deviec --}}
    @if(!Session::has('selectedDevice'))
    @else
    Text Message
    @csrf
    Media Message
    @csrf

    make sure the URL goes directly to the media.
    {{-- radio select flex,, --}}
    {{-- dif flex gap 4 --}}
    {{-- pdf,xls,xlsx,doc,docx,zip,mp3 --}}
    Button Message
    @csrf {{-- input --}}

    Template Message
    @csrf {{-- input --}}

    {{-- --}} example Button link : url|Visit me|https://m-pedia.id
    example Call button : call|Call me|6282298859671
    The type only have two options, call and url!

    @endif
    List Message
    @csrf {{-- input --}}
    views/pages/scheduled-lists.blade.php000064400000010146152266365050013667 0ustar00
    @if (session()->has('alert')) @slot('type',session('alert')['type']) @slot('msg',session('alert')['msg']) @endif @if ($errors->any())
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif
    Schedule Blasts
    {{--
    @method('delete') @csrf
    --}}
    {{-- --}} @foreach ($schedule as $schedule) {{-- --}} @endforeach
    Total Receiver Type Sender Message Execute at StatusAction
    {{count(json_decode($schedule->numbers))}} {{$schedule->type}} {{$schedule->sender}} {{$schedule->datetime}} {{$schedule->is_executed === 1 ? 'Executed' : 'Waiting' }}
    @method('delete') @csrf
    views/pages/phonebook/index.blade.php000064400000021736152266365050013675 0ustar00 @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif @if ($errors->any())
      @foreach ($errors->all() as $error)
    • {{ $error }}
    • @endforeach
    @endif
    @csrf
    {{-- modal add phonebook --}}
    views/pages/phonebook/datacontact.blade.php000064400000002153152266365050015043 0ustar00 @if ($contacts->total() == 0)
    @endif @foreach ($contacts as $contact)
    @endforeach views/pages/phonebook/dataphonebook.blade.php000064400000002116152266365050015373 0ustar00@foreach ($phonebooks as $phonebook)
    @method('delete') @csrf
    @endforeach views/auth/register.blade.php000064400000011550152266365050012261 0ustar00
    @slot('title', 'Register') @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif
    Register

    Hi, welcome to MPWA MD version.

    @csrf

    @error('username') {{ $message }} @enderror

    {{-- email icon --}}

    @error('email') {{ $message }} @enderror

    Already have account? Sign in here

    views/auth/login.blade.php000064400000007307152266365050011552 0ustar00 @slot('title', 'Login')
    @if (session()->has('alert')) @slot('type', session('alert')['type']) @slot('msg', session('alert')['msg']) @endif
    Sign In

    Hi, welcome to MPWA MD version.

    @csrf

    @error('username') {{ $message }} @enderror

    Don't have an account yet? Sign up here

    views/ajax/tag/view.blade.php000064400000001271152266365050012143 0ustar00 {{-- --}} @foreach ($contacts as $contact) {{-- --}} @endforeach
    Name NumberAksi
    {{$contact->name}} {{$contact->number}}
    views/ajax/blast/formBlastImage.blade.php000064400000016154152266365050014425 0ustar00
    @csrf {{--
    --}} {{--
    --}}
    {{--
    --}}
    {{--
    --}}
    views/ajax/blast/formBlastButton.blade.php000064400000016360152266365050014655 0ustar00
    @csrf {{--
    --}} {{--
    --}}
    {{--
    --}}
    {{--
    --}} {{--
    --}}
    views/ajax/blast/formBlastText.blade.php000064400000013662152266365050014330 0ustar00
    @csrf {{--
    --}} {{--
    --}} {{--
    --}} {{--
    --}} {{--
    --}}
    {{--
    --}} {{--
    --}} {{--
    --}}
    views/ajax/blast/formBlastTemplate.blade.php000064400000015570152266365050015157 0ustar00
    @csrf {{--
    --}} {{--
    --}}
    example Button link : url|Visit me|https://m-pedia.id
    example Call button : call|Call me|6282298859671
    The type only have two options, call and url!

    views/ajax/messages/formmedia.blade.php000064400000010507152266365050014172 0ustar00 {{-- optional --}}
    {{-- dif flex gap 4 --}}
    {{-- pdf,xls,xlsx,doc,docx,zip,mp3 --}}
    {{-- end optional --}}
    views/ajax/messages/formlist.blade.php000064400000003714152266365050014070 0ustar00 {{-- create input section and each section have list menu --}}
    views/ajax/messages/textshow.blade.php000064400000010316152266365050014112 0ustar00
    Avatar
    M Pedia online
    {{$keyword}}
    {{$text}}
    views/ajax/messages/imageshow.blade.php000064400000010446152266365050014214 0ustar00
    Avatar
    M Pedia online
    {{$keyword}}

    {{$caption}}
    views/ajax/messages/formpoll.blade.php000064400000004276152266365050014067 0ustar00
    views/ajax/messages/emptyshow.blade.php000064400000000062152266365050014261 0ustar00

    Error or no preview for this type message

    views/ajax/messages/formtext.blade.php000064400000000271152266365050014074 0ustar00 views/ajax/messages/templateshow.blade.php000064400000016340152266365050014744 0ustar00
    Avatar
    M Pedia online
    {{$keyword}}
    @if($image != null)
    @endif {{$message}}
    {{$footer}}
    @foreach($templates as $template) 'bi bi-box-arrow-up-right', 'type' => 'url', 'text' => $template->urlButton->displayText ] ; } else { $button = [ 'icon' => 'bi bi-telephone', 'type' => 'call', 'text' => $template->callButton->displayText ] ; } ?>
    @endforeach
    views/ajax/messages/formtemplate.blade.php000064400000006545152266365050014735 0ustar00
    Template = Button Link or button call message,
    if you want to send Call button you can fill like this : call|YourText|Yournumber
    if you want to send Link button, you can fill like this : url|YourText|YourLink
    type only have two value, url and call !
    views/ajax/messages/formimage.blade.php000064400000001364152266365050014176 0ustar00 views/ajax/messages/formbutton.blade.php000064400000005261152266365050014427 0ustar00
    views/ajax/messages/buttonshow.blade.php000064400000011304152266365050014437 0ustar00
    Avatar
    M Pedia online
    {{$keyword}}
    @if($image != null)
    @endif {{$message}}
    @foreach ($buttons as $btn) @endforeach
    {{$footer}}
    views/html/message.blade.php000064400000000757152270234170012064 0ustar00@component('mail::layout') {{-- Header --}} @slot('header') @component('mail::header', ['url' => config('app.url')]) {{ config('app.name') }} @endcomponent @endslot {{-- Body --}} {{ $slot }} {{-- Subcopy --}} @isset($subcopy) @slot('subcopy') @component('mail::subcopy') {{ $subcopy }} @endcomponent @endslot @endisset {{-- Footer --}} @slot('footer') @component('mail::footer') © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.') @endcomponent @endslot @endcomponent views/html/themes/default.css000064400000011013152270234170012267 0ustar00/* Base */ body, body *:not(html):not(style):not(br):not(tr):not(code) { box-sizing: border-box; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; position: relative; } body { -webkit-text-size-adjust: none; background-color: #ffffff; color: #718096; height: 100%; line-height: 1.4; margin: 0; padding: 0; width: 100% !important; } p, ul, ol, blockquote { line-height: 1.4; text-align: left; } a { color: #3869d4; } a img { border: none; } /* Typography */ h1 { color: #3d4852; font-size: 18px; font-weight: bold; margin-top: 0; text-align: left; } h2 { font-size: 16px; font-weight: bold; margin-top: 0; text-align: left; } h3 { font-size: 14px; font-weight: bold; margin-top: 0; text-align: left; } p { font-size: 16px; line-height: 1.5em; margin-top: 0; text-align: left; } p.sub { font-size: 12px; } img { max-width: 100%; } /* Layout */ .wrapper { -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%; background-color: #edf2f7; margin: 0; padding: 0; width: 100%; } .content { -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%; margin: 0; padding: 0; width: 100%; } /* Header */ .header { padding: 25px 0; text-align: center; } .header a { color: #3d4852; font-size: 19px; font-weight: bold; text-decoration: none; } /* Logo */ .logo { height: 75px; max-height: 75px; width: 75px; } /* Body */ .body { -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%; background-color: #edf2f7; border-bottom: 1px solid #edf2f7; border-top: 1px solid #edf2f7; margin: 0; padding: 0; width: 100%; } .inner-body { -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 570px; background-color: #ffffff; border-color: #e8e5ef; border-radius: 2px; border-width: 1px; box-shadow: 0 2px 0 rgba(0, 0, 150, 0.025), 2px 4px 0 rgba(0, 0, 150, 0.015); margin: 0 auto; padding: 0; width: 570px; } /* Subcopy */ .subcopy { border-top: 1px solid #e8e5ef; margin-top: 25px; padding-top: 25px; } .subcopy p { font-size: 14px; } /* Footer */ .footer { -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 570px; margin: 0 auto; padding: 0; text-align: center; width: 570px; } .footer p { color: #b0adc5; font-size: 12px; text-align: center; } .footer a { color: #b0adc5; text-decoration: underline; } /* Tables */ .table table { -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%; margin: 30px auto; width: 100%; } .table th { border-bottom: 1px solid #edeff2; margin: 0; padding-bottom: 8px; } .table td { color: #74787e; font-size: 15px; line-height: 18px; margin: 0; padding: 10px 0; } .content-cell { max-width: 100vw; padding: 32px; } /* Buttons */ .action { -premailer-cellpadding: 0; -premailer-cellspacing: 0; -premailer-width: 100%; margin: 30px auto; padding: 0; text-align: center; width: 100%; } .button { -webkit-text-size-adjust: none; border-radius: 4px; color: #fff; display: inline-block; overflow: hidden; text-decoration: none; } .button-blue, .button-primary { background-color: #2d3748; border-bottom: 8px solid #2d3748; border-left: 18px solid #2d3748; border-right: 18px solid #2d3748; border-top: 8px solid #2d3748; } .button-green, .button-success { background-color: #48bb78; border-bottom: 8px solid #48bb78; border-left: 18px solid #48bb78; border-right: 18px solid #48bb78; border-top: 8px solid #48bb78; } .button-red, .button-error { background-color: #e53e3e; border-bottom: 8px solid #e53e3e; border-left: 18px solid #e53e3e; border-right: 18px solid #e53e3e; border-top: 8px solid #e53e3e; } /* Panels */ .panel { border-left: #2d3748 solid 4px; margin: 21px 0; } .panel-content { background-color: #edf2f7; color: #718096; padding: 16px; } .panel-content p { color: #718096; } .panel-item { padding: 0; } .panel-item p:last-of-type { margin-bottom: 0; padding-bottom: 0; } /* Utilities */ .break-all { word-break: break-all; } views/html/footer.blade.php000064400000000354152270234170011727 0ustar00 views/html/panel.blade.php000064400000000465152270234170011533 0ustar00 views/html/header.blade.php000064400000000362152270234170011660 0ustar00 @if (trim($slot) === 'Laravel') @else {{ $slot }} @endif views/html/layout.blade.php000064400000002412152270234170011743 0ustar00 views/html/table.blade.php000064400000000110152270234170011506 0ustar00
    {{ Illuminate\Mail\Markdown::parse($slot) }}
    views/html/subcopy.blade.php000064400000000245152270234170012114 0ustar00 views/html/button.blade.php000064400000000761152270234170011746 0ustar00 views/text/message.blade.php000064400000001213152270234170012070 0ustar00@component('mail::layout') {{-- Header --}} @slot('header') @component('mail::header', ['url' => config('app.url')]) {{ config('app.name') }} @endcomponent @endslot {{-- Body --}} {{ $slot }} {{-- Subcopy --}} @isset($subcopy) @slot('subcopy') @component('mail::subcopy') {{ $subcopy }} @endcomponent @endslot @endisset {{-- Footer --}} @slot('footer') @component('mail::footer') © {{ date('Y') }} {{ config('app.name') }}. @lang('All rights reserved.') @endcomponent @endslot @endcomponent views/text/footer.blade.php000064400000000014152270234170011740 0ustar00{{ $slot }} views/text/panel.blade.php000064400000000014152270234170011541 0ustar00{{ $slot }} views/text/header.blade.php000064400000000032152270234170011672 0ustar00[{{ $slot }}]({{ $url }}) views/text/layout.blade.php000064400000000215152270234170011762 0ustar00{!! strip_tags($header) !!} {!! strip_tags($slot) !!} @isset($subcopy) {!! strip_tags($subcopy) !!} @endisset {!! strip_tags($footer) !!} views/text/table.blade.php000064400000000014152270234170011531 0ustar00{{ $slot }} views/text/subcopy.blade.php000064400000000014152270234170012126 0ustar00{{ $slot }} views/text/button.blade.php000064400000000030152270234170011753 0ustar00{{ $slot }}: {{ $url }}