Repository: Attendize/Attendize (language: php)

Issue:
[BUG] Messaging from Orders Page is broken
**Describe the bug**
When trying to message persons who created the order from the order management index, it gets the variables mixed up because of he routing of $event_id, thus $order_id, in the function
```php
public function showMessageOrder(Request $request, $order_id)
```
is set to the value of $event_id.
To retrieve the proper $order_id, one has to $request->query('order_id').

**To Reproduce**
Steps to reproduce the behavior:
1. Go Orders.
2. Click on an email.
3. See the issue

**Expected behavior**
Messages should be sent to the correct order(ee)

**Screenshots**
If applicable, add screenshots to help explain your problem.

**Environment the bug happens in (Desktop, Mobile, CLI) (please complete the following information):**
 - OS: [e.g. Mac, iOS, Windows]
 - Browser [e.g. chrome, safari]
 - Version [e.g. 22]

**Version of Attendize you are using**
- Master branch 2.3.1

**Where you are running Attendize**
- in Docker

**What version or Operating System are you using on the above server**


**What version of PHP you are using on the above server**
- PHP 7.4
**What web server are you using Attendize with**
- Nginx

**Additional context**
Add any other context about the problem here.

[BUG] I found a possible security issue
Hi ! I found a possible security issue. Where I can send it ? Thank you...
[BUG] No place to submit payment details
**Describe the bug**
The payment process/ payment method fields are never shown during checkout

**Expected behavior**
Some sort of modal form with fields to fill with payment details to show

**Screenshots**
![](https://i.iodine.gg/ai56h.png)

**Environment the bug happens in (Desktop, Mobile, CLI) (please complete the following information):**
 - OS: Windows, Android
 - Browser: Chrome, Microsoft Edge, Samsung internet

**Version of Attendize you are using**
- 2.2.0

**Where you are running Attendize**
- Shared Webhost, via softaculous installer

**What version of PHP you are using on the above server**
- PHP 7.2.34

**Log**
[laravel-2021-04-22.log](https://github.com/Attendize/Attendize/files/6358001/laravel-2021-04-22.log)


Discussion / hints:

Fix patch:
diff --git a/.env.example b/.env.example
index 69a01307a..89578fc12 100644
--- a/.env.example
+++ b/.env.example
@@ -5,7 +5,7 @@ APP_NAME=Attendize
 APP_ENV=local
 APP_KEY=
 APP_DEBUG=true
-APP_URL=https://localhost
+APP_URL=https://localhost:8081
 
 LOG_CHANNEL=stack
 
@@ -31,7 +31,7 @@ MAIL_HOST=maildev
 MAIL_PORT=25
 MAIL_USERNAME=null
 MAIL_PASSWORD=null
-MAIL_ENCRYPTION=tls
+MAIL_ENCRYPTION=null
 
 AWS_ACCESS_KEY_ID=
 AWS_SECRET_ACCESS_KEY=
@@ -66,6 +66,7 @@ GOOGLE_MAPS_GEOCODING_KEY=
 CAPTCHA_IS_ON=false
 # can be recaptcha or hcaptcha
 CAPTCHA_TYPE=
+CAPTCHA_KEY=
 CAPTCHA_SECRET=
 
 TWITTER_WIDGET_ID=
diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml
index c2c2a1fd6..0a8942ef4 100644
--- a/.github/workflows/laravel.yml
+++ b/.github/workflows/laravel.yml
@@ -14,14 +14,18 @@ jobs:
     runs-on: ubuntu-latest
     steps:
     - uses: actions/checkout@v1
-    - name: Copy .env
-      run: php -r "file_exists('.env') || copy('.env.example', '.env');"
     - name: Install Dependencies
-      run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist
-    - name: Debug dependency versions
-      run: php -v && composer -V
-    - name: Generate key
-      run: php artisan key:generate
+      uses: php-actions/composer@v4
+      with:
+        command: install
+        args: --no-ansi --prefer-dist
+        php_version: 7.4
+        composer_version: 1
+        interaction: no
+        suggest: no
+        dev: yes
+        progress: no
+        quiet: no
     - name: Create Database
       run: |
         mkdir -p database
@@ -30,4 +34,13 @@ jobs:
       env:
         DB_CONNECTION: sqlite
         DB_DATABASE: database/database.sqlite
-      run: vendor/bin/phpunit -c phpunit.xml
+      uses: php-actions/composer@v4
+      with:
+        command: exec phpunit
+        php_version: 7.4
+        composer_version: 1
+        interaction: no
+        suggest: no
+        dev: yes
+        progress: no
+        quiet: no
diff --git a/Dockerfile b/Dockerfile
index 960f4fa72..5175238ea 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,7 +1,8 @@
 # Multi stage docker file for the Attendize application layer images
 
 # Base image with nginx, php-fpm and composer built on debian
-FROM wyveo/nginx-php-fpm:latest as base
+FROM wyveo/nginx-php-fpm:php74 as base
+RUN apt-get update && apt-get install -y wait-for-it libxrender1
 
 # Set up code
 WORKDIR /usr/share/nginx/html
diff --git a/Dockerfile-apache b/Dockerfile-apache
index e86197953..9763869e0 100644
--- a/Dockerfile-apache
+++ b/Dockerfile-apache
@@ -19,7 +19,8 @@ RUN apt-get update && apt-get install -y \
        php-gd \
        php-zip \
        zip \
-       unzip git nano
+       unzip git nano \
+       wait-for-it
 
 # Set up code
 WORKDIR /var/www
diff --git a/Makefile b/Makefile
index adca038cf..f895c150b 100644
--- a/Makefile
+++ b/Makefile
@@ -19,13 +19,17 @@ build-apache:
 setup: build
 	cp .env.example .env
 	docker-compose up -d
-	docker-compose exec web ./scripts/setup
+	docker-compose exec web sh -c 'wait-for-it db:3306 -t 180 && php artisan key:generate && php artisan migrate'
+	docker-compose up -d
+	docker-compose exec web sh -c 'wait-for-it web:443 -t 120'
 	open https://localhost:8081/install
 	docker-compose exec web tail -f /var/log/nginx/access.log /var/log/nginx/error.log /var/log/php-fpm.log storage/logs/*
 
 # run the whole stack and open up the app in the browser
 run:
 	docker-compose up -d
+	docker-compose exec web sh -c 'wait-for-it db:3306 -t 180'
+	docker-compose exec web sh -c 'wait-for-it web:443 -t 120'
 	open https://localhost:8081/
 
 # open a bash prompt on a running web container
diff --git a/VERSION b/VERSION
index 7ec1d6db4..2bf1c1ccf 100644
--- a/VERSION
+++ b/VERSION
@@ -1,1 +1,1 @@
-2.1.0
+2.3.1
diff --git a/app/Events/Event.php b/app/Events/Event.php
deleted file mode 100644
index ba2f88838..000000000
--- a/app/Events/Event.php
+++ /dev/null
@@ -1,8 +0,0 @@
-<?php
-
-namespace App\Events;
-
-abstract class Event
-{
-    //
-}
diff --git a/app/Events/OrderCompletedEvent.php b/app/Events/OrderCompletedEvent.php
deleted file mode 100644
index 066f4f1aa..000000000
--- a/app/Events/OrderCompletedEvent.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace App\Events;
-
-use App\Models\Order;
-use Illuminate\Queue\SerializesModels;
-
-class OrderCompletedEvent extends Event
-{
-    use SerializesModels;
-
-    public $order;
-
-    /**
-     * OrderCompletedEvent constructor.
-     * @param Order $order
-     */
-    public function __construct(Order $order)
-    {
-        $this->order = $order;
-    }
-
-    /**
-     * Get the channels the event should be broadcast on.
-     *
-     * @return array
-     */
-    public function broadcastOn()
-    {
-        return [];
-    }
-}
diff --git a/app/Handlers/QueueHandler.php b/app/Handlers/QueueHandler.php
deleted file mode 100644
index b01d55dfb..000000000
--- a/app/Handlers/QueueHandler.php
+++ /dev/null
@@ -1,91 +0,0 @@
-<?php
-
-namespace App\Handlers;
-
-use App\Mailers\OrderMailer;
-use Attendee;
-use Order;
-
-//use PDF;
-
-class QueueHandler
-{
-    protected $orderMailer;
-
-    public function __construct(OrderMailer $orderMailer)
-    {
-        $this->orderMailer = $orderMailer;
-    }
-
-    public function handleOrder($job, $data)
-    {
-        echo "Starting Job {$job->getJobId()}\n";
-
-        $order = Order::findOrfail($data['order_id']);
-
-        /*
-         * Steps :
-         *   1 Notify event organiser
-         *   2 Order Confirmation email to buyer
-         *   3 Generate /  Send Tickets
-         */
-
-        $data = [
-            'order'     => $order,
-            'event'     => $order->event,
-            'tickets'   => $order->event->tickets,
-            'attendees' => $order->attendees,
-        ];
-
-        $pdf_file = storage_path() . '/' . $order->order_reference;
-        exit($pdf_file);
-
-        PDF::setOutputMode('F'); // force to file
-        PDF::html('Public.ViewEvent.Partials.PDFTicket', $data, $pdf_file);
-
-        //1
-        $this->orderMailer->sendOrderNotification($order);
-        //2
-        $this->orderMailer->sendOrderConfirmation($order);
-        //3
-
-        $this->orderMailer->sendTickets($order);
-
-        $job->delete();
-    }
-
-    public function messageAttendees($job, $data)
-    {
-        echo "Starting Job {$job->getJobId()}\n";
-
-        $message_object = Message::find($data['message_id']);
-        $event = $message_object->event;
-
-        $attendees = ($message_object->recipients == 0) ? $event->attendees : Attendee::where('ticket_id', '=',
-            $message_object->recipients)->where('account_id', '=', $message_object->account_id)->get();
-
-        $toFields = [];
-        foreach ($attendees as $attendee) {
-            $toFields[$attendee->email] = $attendee->full_name;
-        }
-
-        $data = [
-            'event'           => $event,
-            'message_content' => $message_object->message,
-            'subject'         => $message_object->subject,
-        ];
-
-        Mail::send('Emails.messageReceived', $data, function ($message) use ($toFields, $event, $message_object) {
-            $message->to($toFields)
-                ->from(config('attendize.outgoing_email_noreply'), $event->organiser->name)
-                ->replyTo($event->organiser->email, $event->organiser->name)
-                ->subject($message_object->subject);
-        });
-
-        $message_object->is_sent = 1;
-        $message_object->save();
-        //$message->sent
-
-        $job->delete();
-    }
-}
diff --git a/app/Helpers/strings.php b/app/Helpers/strings.php
index bb257f96b..0dd8f4e06 100644
--- a/app/Helpers/strings.php
+++ b/app/Helpers/strings.php
@@ -1,21 +1,15 @@
 <?php
-if ( ! function_exists('sanitise')) {
+if ( ! function_exists('clean_whitespace')) {
     /**
-     * @param string $input
-     * @return string
+     * ToDo remove this and sanitise on output
      */
-    function sanitise($input)
-    {
-        $clear = clean($input); // Package to remove code "mews/purifier"
-        $clear = strip_tags($clear);
-        $clear = html_entity_decode($clear);
-        $clear = urldecode($clear);
-        $clear = preg_replace('~[\r\n\t]+~', ' ', trim($clear));
-        $clear = preg_replace('/ +/', ' ', $clear);
-        return $clear;
+    function sanitise($str) {
+        return clean($str . '', 'strip_all');
     }
 
     /**
+     * Remove Whitespace
+     *
      * @param string $input
      * @return string
      */
@@ -25,4 +19,40 @@ function clean_whitespace($input)
         $clear = preg_replace('/ +/', ' ', $clear);
         return $clear;
     }
+
+    /**
+     * Remove any HTML or PHP content for cleanliness
+     * not for security/XSS use md_to_html() instead
+     *
+     * @param string $markdown
+     * @return string untrusted markdown
+     */
+    function prepare_markdown($markdown)
+    {
+        // return strip_tags($markdown);
+        return urldecode(html_entity_decode(clean($markdown . '', 'strip_all')));
+    }
+
+    /**
+     * Convert markdown to HTML and sanitise HTML through a whitelist (htmlpurifier)
+     *
+     * @param string $markdown
+     * @return string sanitised html
+     */
+    function md_to_html($markdown)
+    {
+        return clean(Markdown::convertToHtml($markdown . ''));
+    }
+
+    /**
+     * Convert markdown to Plain Text. Removes Markdown/HTML/PHP tags
+     *
+     * @param string $markdown
+     * @return string
+     */
+    function md_to_str($markdown)
+    {
+        return clean_whitespace(clean(Markdown::convertToHtml($markdown . ''), 'strip_all'));
+    }
+
 }
diff --git a/app/Http/Controllers/EventAccessCodesController.php b/app/Http/Controllers/EventAccessCodesController.php
index bb817e009..9b311f872 100644
--- a/app/Http/Controllers/EventAccessCodesController.php
+++ b/app/Http/Controllers/EventAccessCodesController.php
@@ -58,7 +58,7 @@ public function postCreate(Request $request, $event_id)
         }
 
         // Checks for no duplicates
-        $newAccessCode = strtoupper(strip_tags($request->get('code')));
+        $newAccessCode = strtoupper($request->get('code'));
         if (EventAccessCodes::findFromCode($newAccessCode, $event_id)->count() > 0) {
             return response()->json([
                 'status' => 'error',
diff --git a/app/Http/Controllers/EventAttendeesController.php b/app/Http/Controllers/EventAttendeesController.php
index 9f913becd..1825eecc7 100644
--- a/app/Http/Controllers/EventAttendeesController.php
+++ b/app/Http/Controllers/EventAttendeesController.php
@@ -3,10 +3,10 @@
 use App\Cancellation\OrderCancellation;
 use App\Exports\AttendeesExport;
 use App\Imports\AttendeesImport;
-use App\Jobs\GenerateTicket;
-use App\Jobs\SendAttendeeInvite;
-use App\Jobs\SendAttendeeTicket;
-use App\Jobs\SendMessageToAttendees;
+use App\Jobs\GenerateTicketJob;
+use App\Jobs\SendAttendeeInviteJob;
+use App\Jobs\SendOrderAttendeeTicketJob;
+use App\Jobs\SendMessageToAttendeesJob;
 use App\Models\Attendee;
 use App\Models\Event;
 use App\Models\EventStats;
@@ -25,6 +25,7 @@
 use Mail;
 use PDF;
 use Validator;
+use Illuminate\Support\Facades\Lang;
 
 class EventAttendeesController extends MyBaseController
 {
@@ -135,8 +136,8 @@ public function postInviteAttendee(Request $request, $event_id)
         $ticket_id = $request->get('ticket_id');
         $event = Event::findOrFail($event_id);
         $ticket_price = 0;
-        $attendee_first_name = strip_tags($request->get('first_name'));
-        $attendee_last_name = strip_tags($request->get('last_name'));
+        $attendee_first_name = $request->get('first_name');
+        $attendee_last_name = $request->get('last_name');
         $attendee_email = $request->get('email');
         $email_attendee = $request->get('email_ticket');
 
@@ -207,7 +208,7 @@ public function postInviteAttendee(Request $request, $event_id)
 
 
             if ($email_attendee == '1') {
-                $this->dispatch(new SendAttendeeInvite($attendee));
+                SendAttendeeInviteJob::dispatch($attendee);
             }
 
             session()->flash('message', trans("Controllers.attendee_successfully_invited"));
@@ -366,12 +367,11 @@ public function postMessageAttendee(Request $request, $attendee_id)
             'attendee'        => $attendee,
             'message_content' => $request->get('message'),
             'subject'         => $request->get('subject'),
-            'event'           => $attendee->event,
-            'email_logo'      => $attendee->event->organiser->full_logo_path,
+            'event'           => $attendee->event
         ];
 
         //@todo move this to the SendAttendeeMessage Job
-        Mail::send('Emails.messageReceived', $data, function ($message) use ($attendee, $data) {
+        Mail::send(Lang::locale().'.Emails.messageReceived', $data, function ($message) use ($attendee, $data) {
             $message->to($attendee->email, $attendee->full_name)
                 ->from(config('attendize.outgoing_email_noreply'), $attendee->event->organiser->name)
                 ->replyTo($attendee->event->organiser->email, $attendee->event->organiser->name)
@@ -380,7 +380,7 @@ public function postMessageAttendee(Request $request, $attendee_id)
 
         /* Could bcc in the above? */
         if ($request->get('send_copy') == '1') {
-            Mail::send('Emails.messageReceived', $data, function ($message) use ($attendee, $data) {
+            Mail::send(Lang::locale().'.Emails.messageReceived', $data, function ($message) use ($attendee, $data) {
                 $message->to($attendee->event->organiser->email, $attendee->event->organiser->name)
                     ->from(config('attendize.outgoing_email_noreply'), $attendee->event->organiser->name)
                     ->replyTo($attendee->event->organiser->email, $attendee->event->organiser->name)
@@ -444,7 +444,7 @@ public function postMessageAttendees(Request $request, $event_id)
         /*
          * Queue the emails
          */
-        $this->dispatch(new SendMessageToAttendees($message));
+        SendMessageToAttendeesJob::dispatch($message);
 
         return response()->json([
             'status'  => 'success',
@@ -460,19 +460,18 @@ public function postMessageAttendees(Request $request, $event_id)
     public function showExportTicket($event_id, $attendee_id)
     {
         $attendee = Attendee::scope()->findOrFail($attendee_id);
+        $attendee_reference = $attendee->getReferenceAttribute();
 
-        Config::set('queue.default', 'sync');
-        Log::info("*********");
-        Log::info($attendee_id);
-        Log::info($attendee);
-
-
-        $this->dispatch(new GenerateTicket($attendee->order->order_reference . "-" . $attendee->reference_index));
+        Log::debug("Exporting ticket PDF", [
+            'attendee_id' => $attendee_id,
+            'order_reference' => $attendee->order->order_reference,
+            'attendee_reference' => $attendee_reference,
+            'event_id' => $event_id
+        ]);
 
-        $pdf_file_name = $attendee->order->order_reference . '-' . $attendee->reference_index;
-        $pdf_file_path = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $pdf_file_name;
-        $pdf_file = $pdf_file_path . '.pdf';
+        $pdf_file = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $attendee_reference . '.pdf';
 
+        $this->dispatchNow(new GenerateTicketJob($attendee));
 
         return response()->download($pdf_file);
     }
@@ -613,7 +612,7 @@ public function postCancelAttendee(Request $request, $event_id, $attendee_id)
 
         if ($request->get('notify_attendee') == '1') {
             try {
-                Mail::send('Emails.notifyCancelledAttendee', $data, function ($message) use ($attendee) {
+                Mail::send(Lang::locale().'.Emails.notifyCancelledAttendee', $data, function ($message) use ($attendee) {
                     $message->to($attendee->email, $attendee->full_name)
                         ->from(config('attendize.outgoing_email_noreply'), $attendee->event->organiser->name)
                         ->replyTo($attendee->event->organiser->email, $attendee->event->organiser->name)
@@ -627,7 +626,7 @@ public function postCancelAttendee(Request $request, $event_id, $attendee_id)
 
         try {
             // Let the user know that they have received a refund.
-            Mail::send('Emails.notifyRefundedAttendee', $data, function ($message) use ($attendee) {
+            Mail::send(Lang::locale().'.Emails.notifyRefundedAttendee', $data, function ($message) use ($attendee) {
                 $message->to($attendee->email, $attendee->full_name)
                     ->from(config('attendize.outgoing_email_noreply'), $attendee->event->organiser->name)
                     ->replyTo($attendee->event->organiser->email, $attendee->event->organiser->name)
@@ -677,7 +676,7 @@ public function postResendTicketToAttendee(Request $request, $attendee_id)
     {
         $attendee = Attendee::scope()->findOrFail($attendee_id);
 
-        $this->dispatch(new SendAttendeeTicket($attendee));
+        $this->dispatch(new SendOrderAttendeeTicketJob($attendee));
 
         return response()->json([
             'status'  => 'success',
diff --git a/app/Http/Controllers/EventCheckoutController.php b/app/Http/Controllers/EventCheckoutController.php
index 8189041d1..434181fdc 100644
--- a/app/Http/Controllers/EventCheckoutController.php
+++ b/app/Http/Controllers/EventCheckoutController.php
@@ -3,7 +3,9 @@
 namespace App\Http\Controllers;
 
 use App\Attendize\PaymentUtils;
-use App\Events\OrderCompletedEvent;
+use App\Jobs\SendOrderNotificationJob;
+use App\Jobs\SendOrderConfirmationJob;
+use App\Jobs\SendOrderAttendeeTicketJob;
 use App\Models\Account;
 use App\Models\AccountPaymentGateway;
 use App\Models\Affiliate;
@@ -19,10 +21,12 @@
 use App\Services\Order as OrderService;
 use Services\PaymentGateway\Factory as PaymentGatewayFactory;
 use Carbon\Carbon;
+use Config;
 use Cookie;
 use DB;
 use Illuminate\Http\Request;
 use Log;
+use Mail;
 use Omnipay;
 use PDF;
 use PhpSpec\Exception\Exception;
@@ -102,8 +106,7 @@ public function postValidateTickets(Request $request, $event_id)
 
             $total_ticket_quantity = $total_ticket_quantity + $current_ticket_quantity;
             $ticket = Ticket::find($ticket_id);
-            $ticket_quantity_remaining = $ticket->quantity_remaining;
-            $max_per_person = min($ticket_quantity_remaining, $ticket->max_per_person);
+            $max_per_person = min($ticket->quantity_remaining, $ticket->max_per_person);
 
             $quantity_available_validation_rules['ticket_' . $ticket_id] = [
                 'numeric',
@@ -112,7 +115,7 @@ public function postValidateTickets(Request $request, $event_id)
             ];
 
             $quantity_available_validation_messages = [
-                'ticket_' . $ticket_id . '.max' => 'The maximum number of tickets you can register is ' . $ticket_quantity_remaining,
+                'ticket_' . $ticket_id . '.max' => 'The maximum number of tickets you can register is ' . $max_per_person,
                 'ticket_' . $ticket_id . '.min' => 'You must select at least ' . $ticket->min_per_person . ' tickets.',
             ];
 
@@ -649,9 +652,9 @@ public function completeOrder($event_id, $return_json = true)
                 for ($i = 0; $i < $attendee_details['qty']; $i++) {
 
                     $attendee = new Attendee();
-                    $attendee->first_name = strip_tags($request_data["ticket_holder_first_name"][$i][$attendee_details['ticket']['id']]);
-                    $attendee->last_name = strip_tags($request_data["ticket_holder_last_name"][$i][$attendee_details['ticket']['id']]);
-                    $attendee->email = $request_data["ticket_holder_email"][$i][$attendee_details['ticket']['id']];
+                    $attendee->first_name = sanitise($request_data["ticket_holder_first_name"][$i][$attendee_details['ticket']['id']]);
+                    $attendee->last_name = sanitise($request_data["ticket_holder_last_name"][$i][$attendee_details['ticket']['id']]);
+                    $attendee->email = sanitise($request_data["ticket_holder_email"][$i][$attendee_details['ticket']['id']]);
                     $attendee->event_id = $event_id;
                     $attendee->order_id = $order->id;
                     $attendee->ticket_id = $attendee_details['ticket']['id'];
@@ -716,9 +719,18 @@ public function completeOrder($event_id, $return_json = true)
         ReservedTickets::where('session_id', '=', session()->getId())->delete();
 
         // Queue up some tasks - Emails to be sent, PDFs etc.
-        Log::info('Firing the event');
-        event(new OrderCompletedEvent($order));
-
+        // Send order notification to organizer
+        Log::debug('Queueing Order Notification Job');
+        SendOrderNotificationJob::dispatch($order, $orderService);
+        // Send order confirmation to ticket buyer
+        Log::debug('Queueing Order Tickets Job');
+        SendOrderConfirmationJob::dispatch($order, $orderService);
+        // Send tickets to attendees
+        Log::debug('Queueing Attendee Ticket Jobs');
+        foreach ($order->attendees as $attendee) {
+            SendOrderAttendeeTicketJob::dispatch($attendee);
+            Log::debug('Queueing Attendee Ticket Job Done');
+        }
 
         if ($return_json) {
             return response()->json([
diff --git a/app/Http/Controllers/EventController.php b/app/Http/Controllers/EventController.php
index 6bc640da6..7bdeda0b5 100644
--- a/app/Http/Controllers/EventController.php
+++ b/app/Http/Controllers/EventController.php
@@ -49,7 +49,7 @@ public function postCreateEvent(Request $request)
         }
 
         $event->title = $request->get('title');
-        $event->description = strip_tags($request->get('description'));
+        $event->description = prepare_markdown($request->get('description'));
         $event->start_date = $request->get('start_date');
 
         /*
@@ -114,7 +114,7 @@ public function postCreateEvent(Request $request)
             }
 
             $organiser->name = $request->get('organiser_name');
-            $organiser->about = $request->get('organiser_about');
+            $organiser->about = prepare_markdown($request->get('organiser_about'));
             $organiser->email = $request->get('organiser_email');
             $organiser->facebook = $request->get('organiser_facebook');
             $organiser->twitter = $request->get('organiser_twitter');
@@ -139,7 +139,7 @@ public function postCreateEvent(Request $request)
             $event->organiser_fee_percentage = $defaults->organiser_fee_percentage;
             $event->pre_order_display_message = $defaults->pre_order_display_message;
             $event->post_order_display_message = $defaults->post_order_display_message;
-            $event->offline_payment_instructions = $defaults->offline_payment_instructions;
+            $event->offline_payment_instructions = prepare_markdown($defaults->offline_payment_instructions);
             $event->enable_offline_payments = $defaults->enable_offline_payments;
             $event->social_show_facebook = $defaults->social_show_facebook;
             $event->social_show_linkedin = $defaults->social_show_linkedin;
@@ -223,7 +223,7 @@ public function postEditEvent(Request $request, $event_id)
         $event->is_live = $request->get('is_live');
         $event->currency_id = $request->get('currency_id');
         $event->title = $request->get('title');
-        $event->description = strip_tags($request->get('description'));
+        $event->description = prepare_markdown($request->get('description'));
         $event->start_date = $request->get('start_date');
         $event->google_tag_manager_code = $request->get('google_tag_manager_code');
 
diff --git a/app/Http/Controllers/EventCustomizeController.php b/app/Http/Controllers/EventCustomizeController.php
index e579c0ad6..dec99418f 100644
--- a/app/Http/Controllers/EventCustomizeController.php
+++ b/app/Http/Controllers/EventCustomizeController.php
@@ -124,13 +124,13 @@ public function postEditEventSocial(Request $request, $event_id)
             ]);
         }
 
-        $event->social_share_text = $request->get('social_share_text');
-        $event->social_show_facebook = $request->get('social_show_facebook');
-        $event->social_show_linkedin = $request->get('social_show_linkedin');
-        $event->social_show_twitter = $request->get('social_show_twitter');
-        $event->social_show_email = $request->get('social_show_email');
-        $event->social_show_googleplus = $request->get('social_show_googleplus');
-        $event->social_show_whatsapp = $request->get('social_show_whatsapp');
+        $event->social_share_text = $request->get('social_share_text', false);
+        $event->social_show_facebook = $request->get('social_show_facebook', false);
+        $event->social_show_linkedin = $request->get('social_show_linkedin', false);
+        $event->social_show_twitter = $request->get('social_show_twitter', false);
+        $event->social_show_email = $request->get('social_show_email', false);
+        $event->social_show_googleplus = $request->get('social_show_googleplus', false);
+        $event->social_show_whatsapp = $request->get('social_show_whatsapp', false);
         $event->save();
 
         return response()->json([
@@ -251,7 +251,7 @@ public function postEditEventOrderPage(Request $request, $event_id)
 
         $event->pre_order_display_message = trim($request->get('pre_order_display_message'));
         $event->post_order_display_message = trim($request->get('post_order_display_message'));
-        $event->offline_payment_instructions = trim($request->get('offline_payment_instructions'));
+        $event->offline_payment_instructions = prepare_markdown(trim($request->get('offline_payment_instructions')));
         $event->enable_offline_payments = (int)$request->get('enable_offline_payments');
         $event->save();
 
diff --git a/app/Http/Controllers/EventOrdersController.php b/app/Http/Controllers/EventOrdersController.php
index e07123945..6a58c3801 100644
--- a/app/Http/Controllers/EventOrdersController.php
+++ b/app/Http/Controllers/EventOrdersController.php
@@ -3,7 +3,7 @@
 use App\Cancellation\OrderCancellation;
 use App\Cancellation\OrderRefundException;
 use App\Exports\OrdersExport;
-use App\Jobs\SendOrderTickets;
+use App\Jobs\SendOrderConfirmationJob;
 use App\Models\Attendee;
 use App\Models\Event;
 use App\Models\Order;
@@ -16,6 +16,7 @@
 use Mail;
 use Session;
 use Validator;
+use Illuminate\Support\Facades\Lang;
 
 class EventOrdersController extends MyBaseController
 {
@@ -143,8 +144,9 @@ public function showCancelOrder(Request $request, $order_id)
     public function resendOrder($order_id)
     {
         $order = Order::scope()->find($order_id);
+        $orderService = new OrderService($order->amount, $order->booking_fee, $order->event);
 
-        $this->dispatch(new SendOrderTickets($order));
+        $this->dispatch(new SendOrderConfirmationJob($order, $orderService));
 
         return response()->json([
             'status'      => 'success',
@@ -260,7 +262,7 @@ public function showExportOrders($event_id, $export_as = 'xls')
      * @param $order_id
      * @return mixed
      */
-    public function showMessageOrder(Request $request, $order_id)
+    public function showMessageOrder(Request $request, $event_id, $order_id)
     {
         $order = Order::scope()->findOrFail($order_id);
 
@@ -279,7 +281,7 @@ public function showMessageOrder(Request $request, $order_id)
      * @param $order_id
      * @return mixed
      */
-    public function postMessageOrder(Request $request, $order_id)
+    public function postMessageOrder(Request $request, $event_id, $order_id)
     {
         $rules = [
             'subject' => 'required|max:250',
@@ -301,11 +303,10 @@ public function postMessageOrder(Request $request, $order_id)
             'order'           => $order,
             'message_content' => $request->get('message'),
             'subject'         => $request->get('subject'),
-            'event'           => $order->event,
-            'email_logo'      => $order->event->organiser->full_logo_path,
+            'event'           => $order->event
         ];
 
-        Mail::send('Emails.messageReceived', $data, function ($message) use ($order, $data) {
+        Mail::send(Lang::locale().'.Emails.messageReceived', $data, function ($message) use ($order, $data) {
             $message->to($order->email, $order->full_name)
                 ->from(config('attendize.outgoing_email_noreply'), $order->event->organiser->name)
                 ->replyTo($order->event->organiser->email, $order->event->organiser->name)
@@ -314,7 +315,7 @@ public function postMessageOrder(Request $request, $order_id)
 
         /* Send a copy to the Organiser with a different subject */
         if ($request->get('send_copy') == '1') {
-            Mail::send('Emails.messageReceived', $data, function ($message) use ($order, $data) {
+            Mail::send(Lang::locale().'.Emails.messageReceived', $data, function ($message) use ($order, $data) {
                 $message->to($order->event->organiser->email)
                     ->from(config('attendize.outgoing_email_noreply'), $order->event->organiser->name)
                     ->replyTo($order->event->organiser->email, $order->event->organiser->name)
diff --git a/app/Http/Controllers/EventSurveyController.php b/app/Http/Controllers/EventSurveyController.php
index 57af4ae0c..d17b3f9ae 100644
--- a/app/Http/Controllers/EventSurveyController.php
+++ b/app/Http/Controllers/EventSurveyController.php
@@ -74,7 +74,7 @@ public function postCreateEventQuestion(StoreEventQuestionRequest $request, $eve
         // Create question.
         $question = Question::createNew(false, false, true);
         $question->title = $request->get('title');
-        $question->is_required = ($request->get('is_required') == 'yes');
+        $question->is_required = (bool) $request->get('is_required', false);
         $question->question_type_id = $request->get('question_type_id');
         $question->save();
 
@@ -148,7 +148,7 @@ public function postEditEventQuestion(Request $request, $event_id, $question_id)
         // Create question.
         $question = Question::scope()->findOrFail($question_id);
         $question->title = $request->get('title');
-        $question->is_required = $request->get('is_required');
+        $question->is_required = (bool) $request->get('is_required', false);
         $question->question_type_id = $request->get('question_type_id');
         $question->save();
 
diff --git a/app/Http/Controllers/EventTicketsController.php b/app/Http/Controllers/EventTicketsController.php
index 662009d3b..d733d0d28 100644
--- a/app/Http/Controllers/EventTicketsController.php
+++ b/app/Http/Controllers/EventTicketsController.php
@@ -99,14 +99,14 @@ public function postCreateTicket(Request $request, $event_id)
         }
 
         $ticket->event_id = $event_id;
-        $ticket->title = strip_tags($request->get('title'));
+        $ticket->title = $request->get('title');
         $ticket->quantity_available = !$request->get('quantity_available') ? null : $request->get('quantity_available');
         $ticket->start_sale_date = $request->get('start_sale_date');
         $ticket->end_sale_date = $request->get('end_sale_date');
         $ticket->price = $request->get('price');
         $ticket->min_per_person = $request->get('min_per_person');
         $ticket->max_per_person = $request->get('max_per_person');
-        $ticket->description = strip_tags($request->get('description'));
+        $ticket->description = prepare_markdown($request->get('description'));
         $ticket->is_hidden = $request->get('is_hidden') ? 1 : 0;
 
         $ticket->save();
@@ -240,7 +240,7 @@ public function postEditTicket(Request $request, $event_id, $ticket_id)
         $ticket->price = $request->get('price');
         $ticket->start_sale_date = $request->get('start_sale_date');
         $ticket->end_sale_date = $request->get('end_sale_date');
-        $ticket->description = $request->get('description');
+        $ticket->description = prepare_markdown($request->get('description'));
         $ticket->min_per_person = $request->get('min_per_person');
         $ticket->max_per_person = $request->get('max_per_person');
         $ticket->is_hidden = $request->get('is_hidden') ? 1 : 0;
diff --git a/app/Http/Controllers/EventViewController.php b/app/Http/Controllers/EventViewController.php
index 4907314b8..d3bec48ab 100644
--- a/app/Http/Controllers/EventViewController.php
+++ b/app/Http/Controllers/EventViewController.php
@@ -14,6 +14,7 @@
 use Redirect;
 use Validator;
 use Services\Captcha\Factory;
+use Illuminate\Support\Facades\Lang;
 
 class EventViewController extends Controller
 {
@@ -129,11 +130,11 @@ public function postContactOrganiser(Request $request, $event_id)
         $data = [
             'sender_name'     => $request->get('name'),
             'sender_email'    => $request->get('email'),
-            'message_content' => strip_tags($request->get('message')),
+            'message_content' => clean($request->get('message')),
             'event'           => $event,
         ];
 
-        Mail::send('Emails.messageReceived', $data, function ($message) use ($event, $data) {
+        Mail::send(Lang::locale().'.Emails.messageReceived', $data, function ($message) use ($event, $data) {
             $message->to($event->organiser->email, $event->organiser->name)
                 ->from(config('attendize.outgoing_email_noreply'), $data['sender_name'])
                 ->replyTo($data['sender_email'], $data['sender_name'])
@@ -167,7 +168,7 @@ public function postShowHiddenTickets(Request $request, $event_id)
     {
         $event = Event::findOrFail($event_id);
 
-        $accessCode = strtoupper(strip_tags($request->get('access_code')));
+        $accessCode = strtoupper($request->get('access_code'));
         if (!$accessCode) {
             return response()->json([
                 'status' => 'error',
diff --git a/app/Http/Controllers/ManageAccountController.php b/app/Http/Controllers/ManageAccountController.php
index 6ad22bee0..90b93ec4c 100644
--- a/app/Http/Controllers/ManageAccountController.php
+++ b/app/Http/Controllers/ManageAccountController.php
@@ -24,6 +24,7 @@
 use Services\PaymentGateway\StripeSCA;
 use Spatie\Permission\Exceptions\RoleDoesNotExist;
 use Utils;
+use Illuminate\Support\Facades\Lang;
 
 class ManageAccountController extends MyBaseController
 {
@@ -191,17 +192,17 @@ public function postInviteUser(Request $request)
             ]);
         }
 
-        $temp_password = Str::random(8);
-
         $user = new User();
 
         $user->first_name = $request->input('first_name');
         $user->last_name = $request->input('last_name');
         $user->email = $request->input('email');
-        $user->password = Hash::make($temp_password);
         $user->account_id = Auth::user()->account_id;
         $user->organiser_id = $request->input('organiser');
 
+        $temp_password = Str::random(8);
+        $user->password = Hash::make($temp_password);
+
         $user->save();
 
         // Assigning role to user from selection. If for some reason the role errors out, we assign the default role.
@@ -214,19 +215,7 @@ public function postInviteUser(Request $request)
         $user->assignRole($assignedRole);
         $user->givePermissionTo($user->getAllPermissions());
 
-        $data = [
-            'user'          => $user,
-            'temp_password' => $temp_password,
-            'inviter'       => Auth::user(),
-        ];
-
-        Mail::send('Emails.inviteUser', $data, static function ($message) use ($data) {
-            $message->to($data['user']->email)
-                ->subject(trans('Email.invite_user', [
-                    'name' => $data['inviter']->first_name . ' ' . $data['inviter']->last_name,
-                    'app'  => config('attendize.app_name')
-                ]));
-        });
+        $this->sentInvitationEmailTo($user, $temp_password);
 
         return response()->json([
             'status'  => 'success',
@@ -316,4 +305,115 @@ public function postToggleUserCanManageEvents(Request $request)
             'message' => $message,
         ]);
     }
+
+    /**
+     * Delete user
+     *
+     * @param Request $request
+     * @param integer $userId
+     *
+     * @return JsonResponse
+     */
+    public function userDelete(Request $request, $userId)
+    {
+        /** @var \App\Models\User|null $user */
+        $user = User::withTrashed()->find($userId);
+        if (!$user) {
+            return response()->json([
+                'status'  => 'error',
+                'message' => trans('Controllers.error_user_was_not_found'),
+            ], 404);
+        }
+
+        if ($request->get('force', false)) {
+            $user->forceDelete();
+        } else {
+            $user->delete();
+        }
+
+        $message = trans('Controllers.success_user_was_deleted', ['name' => $user->email]);
+        return response()->json([
+            'status'  => 'success',
+            'message' => $message,
+        ]);
+    }
+
+    /**
+     * Restore deleted user
+     *
+     * @param Request $request
+     * @param integer $userId
+     *
+     * @return JsonResponse
+     */
+    public function userRestore(Request $request, $userId)
+    {
+        /** @var \App\Models\User|null $user */
+        $user = User::withTrashed()->find($userId);
+        if (!$user) {
+            return response()->json([
+                'status'  => 'error',
+                'message' => trans('Controllers.error_user_was_not_found'),
+            ], 404);
+        }
+
+        $user->restore();
+
+        $message = trans('Controllers.success_user_was_restored', ['name' => $user->email]);
+        return response()->json([
+            'status'  => 'success',
+            'message' => $message,
+        ]);
+    }
+
+    /**
+     * @param Request $request
+     * @param integer $userId
+     *
+     * @return JsonResponse
+     */
+    public function sendInvitationMessage(Request $request, $userId) {
+        /** @var \App\Models\User|null $user */
+        $user = User::find($userId);
+        if (!$user) {
+            return response()->json([
+                'status'  => 'error',
+                'message' => trans('Controllers.error_user_was_not_found'),
+            ], 404);
+        }
+
+        $temp_password = Str::random(8);
+        $user->password = Hash::make($temp_password);
+        $user->save();
+
+        $this->sentInvitationEmailTo($user, $temp_password);
+
+        return response()->json([
+            'status'  => 'success',
+            'message' => trans('Controllers.success_name_has_received_instruction', ['name' => $user->email]),
+        ]);
+    }
+
+    /**
+     * Send an invitation email
+     *
+     * @param User $user
+     * @param string $password
+     */
+    protected function sentInvitationEmailTo(User $user, string $password)
+    {
+        $data = [
+            'user'          => $user,
+            'temp_password' => $password,
+            'inviter'       => Auth::user(),
+        ];
+
+        Mail::send('Emails.inviteUser', $data, static function ($message) use ($data) {
+            $message->to($data['user']->email)
+                ->subject(trans('Email.invite_user', [
+                    'name' => $data['inviter']->first_name . ' ' . $data['inviter']->last_name,
+                    'app'  => config('attendize.app_name')
+                ]));
+        });
+    }
 }
diff --git a/app/Http/Controllers/OrganiserController.php b/app/Http/Controllers/OrganiserController.php
index aa9dcd377..059a27c2d 100644
--- a/app/Http/Controllers/OrganiserController.php
+++ b/app/Http/Controllers/OrganiserController.php
@@ -54,7 +54,7 @@ public function postCreateOrganiser(Request $request)
         }
 
         $organiser->name = $request->get('name');
-        $organiser->about = $request->get('about');
+        $organiser->about = prepare_markdown($request->get('about'));
         $organiser->email = $request->get('email');
         $organiser->facebook = $request->get('facebook');
         $organiser->twitter = $request->get('twitter');
diff --git a/app/Http/Controllers/OrganiserCustomizeController.php b/app/Http/Controllers/OrganiserCustomizeController.php
index 423c95922..4e8b82610 100644
--- a/app/Http/Controllers/OrganiserCustomizeController.php
+++ b/app/Http/Controllers/OrganiserCustomizeController.php
@@ -49,7 +49,7 @@ public function postEditOrganiser(Request $request, $organiser_id)
         }
 
         $organiser->name = $request->get('name');
-        $organiser->about = $request->get('about');
+        $organiser->about = prepare_markdown($request->get('about'));
         $organiser->google_analytics_code = $request->get('google_analytics_code');
         $organiser->google_tag_manager_code = $request->get('google_tag_manager_code');
         $organiser->email = $request->get('email');
@@ -58,7 +58,7 @@ public function postEditOrganiser(Request $request, $organiser_id)
         $organiser->twitter = $request->get('twitter');
 
         $organiser->tax_name = $request->get('tax_name');
-        $organiser->tax_value = $request->get('tax_value');
+        $organiser->tax_value = round($request->get('tax_value'), 2);
         $organiser->tax_id = $request->get('tax_id');
         $organiser->charge_tax = ($request->get('charge_tax') == 1) ? 1 : 0;
 
diff --git a/app/Http/Controllers/UserSignupController.php b/app/Http/Controllers/UserSignupController.php
index 1dcc26a7b..6ab0d2067 100644
--- a/app/Http/Controllers/UserSignupController.php
+++ b/app/Http/Controllers/UserSignupController.php
@@ -11,6 +11,7 @@
 use Illuminate\Http\Request;
 use Mail;
 use Services\Captcha\Factory;
+use Illuminate\Support\Facades\Lang;
 
 class UserSignupController extends Controller
 {
@@ -85,7 +86,7 @@ public function postSignup(Request $request)
 
         if ($is_attendize) {
             // TODO: Do this async?
-            Mail::send('Emails.ConfirmEmail',
+            Mail::send(Lang::locale().'.Emails.ConfirmEmail',
                 ['first_name' => $user->first_name, 'confirmation_code' => $user->confirmation_code],
                 function ($message) use ($request) {
                     $message->to($request->get('email'), $request->get('first_name'))
diff --git a/app/Imports/AttendeesImport.php b/app/Imports/AttendeesImport.php
index 74b56eb93..004871faa 100644
--- a/app/Imports/AttendeesImport.php
+++ b/app/Imports/AttendeesImport.php
@@ -12,7 +12,7 @@
 use Maatwebsite\Excel\Concerns\Importable;
 use Maatwebsite\Excel\Concerns\ToModel;
 use Maatwebsite\Excel\Concerns\WithHeadingRow;
-use App\Jobs\SendAttendeeInvite;
+use App\Jobs\SendAttendeeInviteJob;
 use Maatwebsite\Excel\Row;
 use Maatwebsite\Excel\Concerns\OnEachRow;
 
@@ -76,7 +76,7 @@ public function onRow(Row $row)
         ]);
 
         if ($this->emailAttendees) {
-            dispatch(new SendAttendeeInvite($attendee));
+            SendAttendeeInviteJob::dispatch($attendee);
         }
 
         return $attendee;
diff --git a/app/Jobs/GenerateTicketJob.php b/app/Jobs/GenerateTicketJob.php
new file mode 100644
index 000000000..cb4cf3b2d
--- /dev/null
+++ b/app/Jobs/GenerateTicketJob.php
@@ -0,0 +1,24 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Models\Attendee;
+
+/**
+ * Generate a single ticket for 1 attendee
+ */
+class GenerateTicketJob extends GenerateTicketsJobBase
+{
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(Attendee $attendee)
+    {
+        $this->attendees = [$attendee];
+        $this->event = $attendee->event;
+        $this->file_name = $attendee->getReferenceAttribute();
+        $this->order = $attendee->order;
+    }
+}
diff --git a/app/Jobs/GenerateTicketsJob.php b/app/Jobs/GenerateTicketsJob.php
new file mode 100644
index 000000000..a0d16a011
--- /dev/null
+++ b/app/Jobs/GenerateTicketsJob.php
@@ -0,0 +1,26 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Models\Order;
+
+/**
+ * Generate all the tickets in 1 order
+ */
+class GenerateTicketsJob extends GenerateTicketsJobBase
+{
+    public $order;
+
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(Order $order)
+    {
+        $this->attendees = $order->attendees;
+        $this->event = $order->event;
+        $this->file_name = $order->order_reference;
+        $this->order = $order;
+    }
+}
diff --git a/app/Jobs/GenerateTicket.php b/app/Jobs/GenerateTicketsJobBase.php
similarity index 51%
rename from app/Jobs/GenerateTicket.php
rename to app/Jobs/GenerateTicketsJobBase.php
index 2464275ff..02f5d687a 100644
--- a/app/Jobs/GenerateTicket.php
+++ b/app/Jobs/GenerateTicketsJobBase.php
@@ -2,35 +2,22 @@
 
 namespace App\Jobs;
 
-use App\Models\Order;
+use Illuminate\Bus\Queueable;
 use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
 use Illuminate\Queue\InteractsWithQueue;
 use Illuminate\Queue\SerializesModels;
 use Log;
 use PDF;
 
-class GenerateTicket extends Job implements ShouldQueue
+class GenerateTicketsJobBase implements ShouldQueue
 {
-    use InteractsWithQueue, SerializesModels;
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
 
-    protected $reference;
-    protected $order_reference;
-    protected $attendee_reference_index;
-
-    /**
-     * Create a new job instance.
-     *
-     * @return void
-     */
-    public function __construct($reference)
-    {
-        Log::info("Generating ticket: #" . $reference);
-        $this->reference = $reference;
-        $this->order_reference = explode("-", $reference)[0];
-        if (strpos($reference, "-")) {
-            $this->attendee_reference_index = explode("-", $reference)[1];
-        }
-    }
+    public $attendee;
+    public $event;
+    public $order;
+    public $file_name;
 
     /**
      * Execute the job.
@@ -39,37 +26,26 @@ public function __construct($reference)
      */
     public function handle()
     {
-
-        $file_name = $this->reference;
-        $file_path = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $file_name;
-        $file_with_ext = $file_path . ".pdf";
+        $file_path = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $this->file_name;
+        $file_with_ext = $file_path . '.pdf';
 
         if (file_exists($file_with_ext)) {
             Log::info("Use ticket from cache: " . $file_with_ext);
             return;
         }
 
-        $order = Order::where('order_reference', $this->order_reference)->first();
-        Log::info($order);
-        $event = $order->event;
-
-        $query = $order->attendees();
-        if ($this->isAttendeeTicket()) {
-            $query = $query->where('reference_index', '=', $this->attendee_reference_index);
-        }
-        $attendees = $query->get();
-
-        $image_path = $event->organiser->full_logo_path;
+        $organiser = $this->event->organiser;
+        $image_path = $organiser->full_logo_path;
         $images = [];
-        $imgs = $order->event->images;
+        $imgs = $this->event->images;
         foreach ($imgs as $img) {
             $images[] = base64_encode(file_get_contents(public_path($img->image_path)));
         }
 
         $data = [
-            'order'     => $order,
-            'event'     => $event,
-            'attendees' => $attendees,
+            'order'     => $this->order,
+            'event'     => $this->event,
+            'attendees' => $this->attendees,
             'css'       => file_get_contents(public_path('assets/stylesheet/ticket.css')),
             'image'     => base64_encode(file_get_contents(public_path($image_path))),
             'images'    => $images,
@@ -84,11 +60,5 @@ public function handle()
             Log::error("Error stack trace" . $e->getTraceAsString());
             $this->fail($e);
         }
-
-    }
-
-    private function isAttendeeTicket()
-    {
-        return ($this->attendee_reference_index != null);
     }
 }
diff --git a/app/Jobs/Job.php b/app/Jobs/Job.php
deleted file mode 100644
index a707c8e4c..000000000
--- a/app/Jobs/Job.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-namespace App\Jobs;
-
-use Illuminate\Bus\Queueable;
-
-abstract class Job
-{
-    /*
-     |--------------------------------------------------------------------------
-     | Queueable Jobs
-     |--------------------------------------------------------------------------
-     |
-     | This job base class provides a central location to place any logic that
-     | is shared across all of your jobs. The trait included with the class
-     | provides access to the "onQueue" and "delay" queue helper methods.
-     |
-     */
-    use Queueable;
-}
diff --git a/app/Jobs/ProcessGenerateAndSendTickets.php b/app/Jobs/ProcessGenerateAndSendTickets.php
deleted file mode 100644
index a702819e8..000000000
--- a/app/Jobs/ProcessGenerateAndSendTickets.php
+++ /dev/null
@@ -1,25 +0,0 @@
-<?php
-
-namespace App\Jobs;
-
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Queue\SerializesModels;
-use Illuminate\Foundation\Bus\Dispatchable;
-use Illuminate\Bus\Queueable;
-
-
-class ProcessGenerateAndSendTickets extends Job implements ShouldQueue
-{
-    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
-
-    /**
-     * Execute the job.
-     *
-     * @return void
-     */
-    public function handle()
-    {
-
-    }
-}
diff --git a/app/Jobs/SendAttendeeInvite.php b/app/Jobs/SendAttendeeInvite.php
deleted file mode 100644
index 5b353179e..000000000
--- a/app/Jobs/SendAttendeeInvite.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace App\Jobs;
-
-use App\Mailers\AttendeeMailer;
-use App\Models\Attendee;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Foundation\Bus\DispatchesJobs;
-use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Queue\SerializesModels;
-
-class SendAttendeeInvite extends Job implements ShouldQueue
-{
-    use InteractsWithQueue, SerializesModels, DispatchesJobs;
-
-    public $attendee;
-
-    /**
-     * Create a new job instance.
-     *
-     * @return void
-     */
-    public function __construct(Attendee $attendee)
-    {
-        $this->attendee = $attendee;
-    }
-
-    /**
-     * Execute the job.
-     *
-     * @return void
-     */
-    public function handle(AttendeeMailer $attendeeMailer)
-    {
-        $this->dispatchNow(new GenerateTicket($this->attendee->reference));
-        $attendeeMailer->sendAttendeeInvite($this->attendee);
-    }
-}
diff --git a/app/Jobs/SendAttendeeInviteJob.php b/app/Jobs/SendAttendeeInviteJob.php
new file mode 100644
index 000000000..e2888b1ec
--- /dev/null
+++ b/app/Jobs/SendAttendeeInviteJob.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Mail\SendAttendeeInviteMail;
+use App\Models\Attendee;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use Config;
+use Mail;
+
+
+class SendAttendeeInviteJob implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    public $attendee;
+
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(Attendee $attendee)
+    {
+        $this->attendee = $attendee;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        GenerateTicketJob::dispatchNow($this->attendee);
+        $mail = new SendAttendeeInviteMail($this->attendee);
+        Mail::to($this->attendee->email)
+            ->locale(Config::get('app.locale'))
+            ->send($mail);
+    }
+}
diff --git a/app/Jobs/SendAttendeeTicket.php b/app/Jobs/SendAttendeeTicket.php
deleted file mode 100644
index f10dcb999..000000000
--- a/app/Jobs/SendAttendeeTicket.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace App\Jobs;
-
-use App\Mailers\AttendeeMailer;
-use App\Models\Attendee;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Foundation\Bus\DispatchesJobs;
-use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Queue\SerializesModels;
-
-class SendAttendeeTicket extends Job implements ShouldQueue
-{
-    use InteractsWithQueue, SerializesModels, DispatchesJobs;
-
-    public $attendee;
-
-    /**
-     * Create a new job instance.
-     *
-     * @return void
-     */
-    public function __construct(Attendee $attendee)
-    {
-        $this->attendee = $attendee;
-    }
-
-    /**
-     * Execute the job.
-     *
-     * @return void
-     */
-    public function handle(AttendeeMailer $attendeeMailer)
-    {
-        $this->dispatchNow(new GenerateTicket($this->attendee->reference));
-        $attendeeMailer->sendAttendeeTicket($this->attendee);
-    }
-}
diff --git a/app/Jobs/SendMessageToAttendee.php b/app/Jobs/SendMessageToAttendee.php
deleted file mode 100644
index a3e82ea9e..000000000
--- a/app/Jobs/SendMessageToAttendee.php
+++ /dev/null
@@ -1,32 +0,0 @@
-<?php
-
-namespace App\Jobs;
-
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Queue\SerializesModels;
-
-class SendMessageToAttendee extends Job implements ShouldQueue
-{
-    use InteractsWithQueue, SerializesModels;
-
-    /**
-     * Create a new job instance.
-     *
-     * @return void
-     */
-    public function __construct()
-    {
-        //
-    }
-
-    /**
-     * Execute the job.
-     *
-     * @return void
-     */
-    public function handle()
-    {
-        //
-    }
-}
diff --git a/app/Jobs/SendMessageToAttendees.php b/app/Jobs/SendMessageToAttendees.php
deleted file mode 100644
index 069515853..000000000
--- a/app/Jobs/SendMessageToAttendees.php
+++ /dev/null
@@ -1,36 +0,0 @@
-<?php
-
-namespace App\Jobs;
-
-use App\Mailers\AttendeeMailer;
-use App\Models\Message;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Queue\SerializesModels;
-
-class SendMessageToAttendees extends Job implements ShouldQueue
-{
-    use InteractsWithQueue, SerializesModels;
-
-    public $attendeeMessage;
-
-    /**
-     * Create a new job instance.
-     *
-     * @return void
-     */
-    public function __construct(Message $attendeeMessage)
-    {
-        $this->attendeeMessage = $attendeeMessage;
-    }
-
-    /**
-     * Execute the job.
-     *
-     * @return void
-     */
-    public function handle(AttendeeMailer $attendeeMailer)
-    {
-        $attendeeMailer->sendMessageToAttendees($this->attendeeMessage);
-    }
-}
diff --git a/app/Jobs/SendMessageToAttendeesJob.php b/app/Jobs/SendMessageToAttendeesJob.php
new file mode 100644
index 000000000..86895c426
--- /dev/null
+++ b/app/Jobs/SendMessageToAttendeesJob.php
@@ -0,0 +1,64 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Mail\SendMessageToAttendeesMail;
+use App\Models\Attendee;
+use App\Models\Event;
+use App\Models\Message;
+use Carbon\Carbon;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use Config;
+use Mail;
+
+class SendMessageToAttendeesJob implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    public $message;
+
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(Message $message)
+    {
+        $this->message = $message;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        if ($this->message->recipients == 'all') {
+            $recipients = $this->message->event->attendees;
+        } else {
+            $recipients = Attendee::where('ticket_id', '=', $this->message->recipients)->where('account_id', '=', $this->message->account_id)->get();
+        }
+
+        $event = $this->message->event;
+
+        foreach ($recipients as $attendee) {
+            if ($attendee->is_cancelled) {
+               continue;
+            }
+
+            $mail = new SendMessageToAttendeesMail($this->message->subject, $this->message->message, $event, $attendee);
+            Mail::to($attendee->email, $attendee->full_name)
+                ->locale(Config::get('app.locale'))
+                ->send($mail);
+        }
+
+        $this->message->is_sent = 1;
+        $this->message->sent_at = Carbon::now();
+        $this->message->save();
+    }
+}
diff --git a/app/Jobs/SendOrderAttendeeTicketJob.php b/app/Jobs/SendOrderAttendeeTicketJob.php
new file mode 100644
index 000000000..a8e5c59bb
--- /dev/null
+++ b/app/Jobs/SendOrderAttendeeTicketJob.php
@@ -0,0 +1,44 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Mail\SendOrderAttendeeTicketMail;
+use App\Models\Attendee;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use Config;
+use Mail;
+
+class SendOrderAttendeeTicketJob implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    public $attendee;
+
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(Attendee $attendee)
+    {
+        $this->attendee = $attendee;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        GenerateTicketJob::dispatchNow($this->attendee);
+        $mail = new SendOrderAttendeeTicketMail($this->attendee);
+        Mail::to($this->attendee->email)
+            ->locale(Config::get('app.locale'))
+            ->send($mail);
+    }
+}
diff --git a/app/Jobs/SendOrderConfirmationJob.php b/app/Jobs/SendOrderConfirmationJob.php
new file mode 100644
index 000000000..165aec897
--- /dev/null
+++ b/app/Jobs/SendOrderConfirmationJob.php
@@ -0,0 +1,47 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Mail\SendOrderConfirmationMail;
+use App\Models\Order;
+use App\Services\Order as OrderService;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use Config;
+use Mail;
+
+class SendOrderConfirmationJob implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    public $order;
+    public $orderService;
+
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(Order $order, OrderService $orderService)
+    {
+        $this->order = $order;
+        $this->orderService = $orderService;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        GenerateTicketsJob::dispatchNow($this->order);
+        $mail = new SendOrderConfirmationMail($this->order, $this->orderService);
+        Mail::to($this->order->email)
+            ->locale(Config::get('app.locale'))
+            ->send($mail);
+    }
+}
diff --git a/app/Jobs/SendOrderNotification.php b/app/Jobs/SendOrderNotification.php
deleted file mode 100644
index 5a12704da..000000000
--- a/app/Jobs/SendOrderNotification.php
+++ /dev/null
@@ -1,46 +0,0 @@
-<?php
-
-namespace App\Jobs;
-
-use App\Mailers\OrderMailer;
-use App\Models\Order;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Queue\SerializesModels;
-use Log;
-
-class SendOrderNotification extends Job implements ShouldQueue
-{
-    use InteractsWithQueue, SerializesModels;
-
-    public $order;
-
-    /**
-     * Create a new job instance.
-     *
-     * @return void
-     */
-    public function __construct(Order $order)
-    {
-        $this->order = $order;
-    }
-
-    /**
-     * Execute the job.
-     *
-     * @return void
-     */
-    public function handle(OrderMailer $orderMailer)
-    {
-        try {
-            $orderMailer->sendOrderNotification($this->order);
-        } catch(\Exception $e) {
-            Log::error("Cannot send actual ticket to : " . $this->order->email . " as ticket file does not exist on disk");
-            Log::error("Error message. " . $e->getMessage());
-            Log::error("Error stack trace" . $e->getTraceAsString());
-            $this->fail($e);
-        }
-
-
-    }
-}
diff --git a/app/Jobs/SendOrderNotificationJob.php b/app/Jobs/SendOrderNotificationJob.php
new file mode 100644
index 000000000..834f0a260
--- /dev/null
+++ b/app/Jobs/SendOrderNotificationJob.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace App\Jobs;
+
+use App\Mail\SendOrderNotificationMail;
+use App\Models\Order;
+use App\Services\Order as OrderService;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Foundation\Bus\Dispatchable;
+use Illuminate\Queue\InteractsWithQueue;
+use Illuminate\Queue\SerializesModels;
+use Config;
+use Mail;
+
+class SendOrderNotificationJob implements ShouldQueue
+{
+    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
+
+    public $order;
+    public $orderService;
+
+    /**
+     * Create a new job instance.
+     *
+     * @return void
+     */
+    public function __construct(Order $order, OrderService $orderService)
+    {
+        $this->order = $order;
+        $this->orderService = $orderService;
+    }
+
+    /**
+     * Execute the job.
+     *
+     * @return void
+     */
+    public function handle()
+    {
+        $mail = new SendOrderNotificationMail($this->order, $this->orderService);
+        Mail::to($this->order->event->organiser->email)
+            ->locale(Config::get('app.locale'))
+            ->send($mail);
+    }
+}
diff --git a/app/Jobs/SendOrderTickets.php b/app/Jobs/SendOrderTickets.php
deleted file mode 100644
index 18c5d07d0..000000000
--- a/app/Jobs/SendOrderTickets.php
+++ /dev/null
@@ -1,38 +0,0 @@
-<?php
-
-namespace App\Jobs;
-
-use App\Mailers\OrderMailer;
-use App\Models\Order;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Foundation\Bus\DispatchesJobs;
-use Illuminate\Queue\InteractsWithQueue;
-use Illuminate\Queue\SerializesModels;
-
-class SendOrderTickets extends Job implements ShouldQueue
-{
-    use InteractsWithQueue, SerializesModels, DispatchesJobs;
-
-    public $order;
-
-    /**
-     * Create a new job instance.
-     *
-     * @return void
-     */
-    public function __construct(Order $order)
-    {
-        $this->order = $order;
-    }
-
-    /**
-     * Execute the job.
-     *
-     * @return void
-     */
-    public function handle(OrderMailer $orderMailer)
-    {
-        $this->dispatchNow(new GenerateTicket($this->order->order_reference));
-        $orderMailer->sendOrderTickets($this->order);
-    }
-}
diff --git a/app/Listeners/OrderCompletedListener.php b/app/Listeners/OrderCompletedListener.php
deleted file mode 100644
index 312c6726b..000000000
--- a/app/Listeners/OrderCompletedListener.php
+++ /dev/null
@@ -1,49 +0,0 @@
-<?php
-
-namespace App\Listeners;
-
-use App\Events\OrderCompletedEvent;
-use App\Jobs\GenerateTicket;
-use App\Jobs\SendOrderNotification;
-use App\Jobs\SendOrderTickets;
-use App\Jobs\ProcessGenerateAndSendTickets;
-use Illuminate\Foundation\Bus\DispatchesJobs;
-use Illuminate\Contracts\Queue\ShouldQueue;
-use Illuminate\Support\Facades\Log;
-
-class OrderCompletedListener implements ShouldQueue
-{
-
-    use DispatchesJobs;
-
-    /**
-     * Create the event listener.
-     *
-     * @return void
-     */
-    public function __construct()
-    {
-        //
-    }
-
-    /**
-     * Generate the ticket and send it to the attendee. If the ticket can't be generated don't attempt to send the ticket
-     * to the attendee as the ticket is attached as a PDF.
-     *
-     * @param  OrderCompletedEvent  $event
-     * @return void
-     */
-    public function handle(OrderCompletedEvent $event)
-    {
-        /**
-         * Generate the PDF tickets and send notification emails etc.
-         */
-        Log::info('Begin Processing Order: ' . $event->order->order_reference);
-        ProcessGenerateAndSendTickets::withChain([
-            new GenerateTicket($event->order->order_reference),
-            new SendOrderTickets($event->order)
-        ])->dispatch();
-
-        $this->dispatch(new SendOrderNotification($event->order));
-    }
-}
diff --git a/app/Mail/SendAttendeeInviteMail.php b/app/Mail/SendAttendeeInviteMail.php
new file mode 100644
index 000000000..94192327a
--- /dev/null
+++ b/app/Mail/SendAttendeeInviteMail.php
@@ -0,0 +1,45 @@
+<?php
+
+namespace App\Mail;
+
+use App\Models\Attendee;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Mail\Mailable;
+use Illuminate\Queue\SerializesModels;
+use Log;
+
+class SendAttendeeInviteMail extends Mailable
+{
+    use Queueable, SerializesModels;
+
+    public $attendee;
+
+    /**
+     * Create a new message instance.
+     *
+     * @return void
+     */
+    public function __construct(Attendee $attendee)
+    {
+        $this->attendee = $attendee;
+    }
+
+    /**
+     * Build the message.
+     *
+     * @return $this
+     */
+    public function build()
+    {
+        Log::debug("Sending invite to: " . $this->attendee->email);
+
+        $subject = trans("Email.your_ticket_for_event", ["event" => $this->attendee->order->event->title]);
+        $file_name = $this->attendee->getReferenceAttribute();
+        $file_path = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $file_name . '.pdf';
+
+        return $this->subject($subject)
+                    ->attach($file_path)
+                    ->view('Emails.AttendeeInvite');
+    }
+}
diff --git a/app/Mail/SendMessageToAttendeesMail.php b/app/Mail/SendMessageToAttendeesMail.php
new file mode 100644
index 000000000..b3a336e75
--- /dev/null
+++ b/app/Mail/SendMessageToAttendeesMail.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace App\Mail;
+
+use App\Models\Attendee;
+use App\Models\Event;
+use Illuminate\Bus\Queueable;
+use Illuminate\Contracts\Queue\ShouldQueue;
+use Illuminate\Mail\Mailable;
+use Illuminate\Queue\SerializesModels;
+
+class SendMessageToAttendeesMail extends Mailable
+{
+    use Queueable, SerializesModels;
+
+    public $subject;
+    public $content;
+    public $event;
+    public $attendee;
+
+    /**
+     * Create a new message instance.
+     *
+     * @return void
+     */
+    public function __construct($subject, $content, Event $event, Attendee $attendee)
+    {
+        $this->subject = $subject;
+        $this->content = $content;
+        $this->event = $event;
+        $this->attendee = $attendee;
+    }
+
+    /**
+     * Build the message.
+     *
+     * @return $this
+     */
+    public function build()
+    {
+        return $this->subject($this->subject)
+                    ->from(config('attendize.outgoing_email_noreply'), $this->event->organiser->name)
+                    ->replyTo($this->event->organiser->email, $this->event->organiser->name)
+                    ->view('Emails.MessageToAttendees');
+    }
+}
diff --git a/app/Mail/SendOrderAttendeeTicketMail.php b/app/Mail/SendOrderAttendeeTicketMail.php
new file mode 100644
index 000000000..b58c37483
--- /dev/null
+++ b/app/Mail/SendOrderAttendeeTicketMail.php
@@ -0,0 +1,50 @@
+<?php
+
+namespace App\Mail;
+
+use App\Models\Attendee;
+use Illuminate\Bus\Queueable;
+use Illuminate\Mail\Mailable;
+use Illuminate\Queue\SerializesModels;
+
+
+class SendOrderAttendeeTicketMail extends Mailable
+{
+    use Queueable, SerializesModels;
+
+    /**
+     * The Attendee instance.
+     *
+     * @var Attendee
+     */
+    public $attendee;
+
+    /**
+     * Create a new message instance.
+     *
+     * @return void
+     */
+    public function __construct(Attendee $attendee)
+    {
+        $this->attendee = $attendee;
+    }
+
+    /**
+     * Build the message.
+     *
+     * @return $this
+     */
+    public function build()
+    {
+        $file_name = $this->attendee->getReferenceAttribute();
+        $file_path = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $file_name . '.pdf';
+
+        $subject = trans(
+            "Controllers.tickets_for_event",
+            ["event" => $this->attendee->event->title]
+        );
+        return $this->subject($subject)
+                    ->attach($file_path)
+                    ->view('Emails.OrderAttendeeTicket');
+    }
+}
diff --git a/app/Mail/SendOrderConfirmationMail.php b/app/Mail/SendOrderConfirmationMail.php
new file mode 100644
index 000000000..d9a66f4e3
--- /dev/null
+++ b/app/Mail/SendOrderConfirmationMail.php
@@ -0,0 +1,59 @@
+<?php
+
+namespace App\Mail;
+
+use App\Models\Order;
+use App\Services\Order as OrderService;
+use Illuminate\Bus\Queueable;
+use Illuminate\Mail\Mailable;
+use Illuminate\Queue\SerializesModels;
+
+
+class SendOrderConfirmationMail extends Mailable
+{
+    use Queueable, SerializesModels;
+
+    /**
+     * The order instance.
+     *
+     * @var Order
+     */
+    public $order;
+
+    /**
+     * The order service instance.
+     *
+     * @var OrderService
+     */
+    public $orderService;
+
+    /**
+     * Create a new message instance.
+     *
+     * @return void
+     */
+    public function __construct(Order $order, OrderService $orderService)
+    {
+        $this->order = $order;
+        $this->orderService = $orderService;
+    }
+
+    /**
+     * Build the message.
+     *
+     * @return $this
+     */
+    public function build()
+    {
+        $file_name = $this->order->order_reference;
+        $file_path = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $file_name . '.pdf';
+
+        $subject = trans(
+            "Controllers.tickets_for_event",
+            ["event" => $this->order->event->title]
+        );
+        return $this->subject($subject)
+                    ->attach($file_path)
+                    ->view('Emails.OrderConfirmation');
+    }
+}
diff --git a/app/Mail/SendOrderNotificationMail.php b/app/Mail/SendOrderNotificationMail.php
new file mode 100644
index 000000000..fd44fce81
--- /dev/null
+++ b/app/Mail/SendOrderNotificationMail.php
@@ -0,0 +1,52 @@
+<?php
+
+namespace App\Mail;
+
+use App\Models\Order;
+use App\Services\Order as OrderService;
+use Illuminate\Bus\Queueable;
+use Illuminate\Mail\Mailable;
+use Illuminate\Queue\SerializesModels;
+
+
+class SendOrderNotificationMail extends Mailable
+{
+    use Queueable, SerializesModels;
+
+    /**
+     * The order instance.
+     *
+     * @var Order
+     */
+    public $order;
+
+    /**
+     * The order service instance.
+     *
+     * @var OrderService
+     */
+    public $orderService;
+
+    /**
+     * Create a new message instance.
+     *
+     * @return void
+     */
+    public function __construct(Order $order, OrderService $orderService)
+    {
+        $this->order = $order;
+        $this->orderService = $orderService;
+    }
+
+    /**
+     * Build the message.
+     *
+     * @return $this
+     */
+    public function build()
+    {
+        $subject = trans("Controllers.new_order_received", ["event" => $this->order->event->title, "order" => $this->order->order_reference]);
+        return $this->subject($subject)
+                    ->view('Emails.OrderNotification');
+    }
+}
diff --git a/app/Mailers/AttendeeMailer.php b/app/Mailers/AttendeeMailer.php
deleted file mode 100644
index 0b3e791ff..000000000
--- a/app/Mailers/AttendeeMailer.php
+++ /dev/null
@@ -1,99 +0,0 @@
-<?php
-
-namespace App\Mailers;
-
-use App\Models\Attendee;
-use App\Models\Message;
-use Carbon\Carbon;
-use Log;
-use Mail;
-
-
-class AttendeeMailer extends Mailer
-{
-
-    public function sendAttendeeTicket($attendee)
-    {
-
-        Log::info("Sending ticket to: " . $attendee->email);
-
-        $data = [
-            'attendee' => $attendee,
-        ];
-
-        Mail::send('Mailers.TicketMailer.SendAttendeeTicket', $data, function ($message) use ($attendee) {
-            $message->to($attendee->email);
-            $message->subject(trans("Email.your_ticket_for_event", ["event" => $attendee->order->event->title]));
-
-            $file_name = $attendee->reference;
-            $file_path = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $file_name . '.pdf';
-
-            $message->attach($file_path);
-        });
-
-    }
-
-    /**
-     * Sends the attendees a message
-     *
-     * @param Message $message_object
-     */
-    public function sendMessageToAttendees(Message $message_object)
-    {
-        $event = $message_object->event;
-
-        $attendees = ($message_object->recipients == 'all')
-            ? $event->attendees // all attendees
-            : Attendee::where('ticket_id', '=', $message_object->recipients)->where('account_id', '=',
-                $message_object->account_id)->get();
-
-        foreach ($attendees as $attendee) {
-            
-            if ($attendee->is_cancelled) {
-               continue;
-            }
-            
-            $data = [
-                'attendee'        => $attendee,
-                'event'           => $event,
-                'message_content' => $message_object->message,
-                'subject'         => $message_object->subject,
-                'email_logo'      => $attendee->event->organiser->full_logo_path,
-            ];
-
-            Mail::send('Emails.messageReceived', $data, function ($message) use ($attendee, $data) {
-                $message->to($attendee->email, $attendee->full_name)
-                    ->from(config('attendize.outgoing_email_noreply'), $attendee->event->organiser->name)
-                    ->replyTo($attendee->event->organiser->email, $attendee->event->organiser->name)
-                    ->subject($data['subject']);
-            });
-        }
-
-        $message_object->is_sent = 1;
-        $message_object->sent_at = Carbon::now();
-        $message_object->save();
-    }
-
-    public function SendAttendeeInvite($attendee)
-    {
-
-        Log::info("Sending invite to: " . $attendee->email);
-
-        $data = [
-            'attendee' => $attendee,
-        ];
-
-        Mail::send('Mailers.TicketMailer.SendAttendeeInvite', $data, function ($message) use ($attendee) {
-            $message->to($attendee->email);
-            $message->subject(trans("Email.your_ticket_for_event", ["event" => $attendee->order->event->title]));
-
-            $file_name = $attendee->getReferenceAttribute();
-            $file_path = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $file_name . '.pdf';
-
-            $message->attach($file_path);
-        });
-
-    }
-
-
-}
diff --git a/app/Mailers/Mailer.php b/app/Mailers/Mailer.php
deleted file mode 100644
index 35cb3abbe..000000000
--- a/app/Mailers/Mailer.php
+++ /dev/null
@@ -1,24 +0,0 @@
-<?php
-
-namespace App\Mailers;
-
-use Mail;
-
-class Mailer
-{
-    public function sendTo($toEmail, $fromEmail, $fromName, $subject, $view, $data = [], $attachment = false)
-    {
-        Mail::send($view, $data, function ($message) use ($toEmail, $fromEmail, $fromName, $subject, $attachment) {
-            $replyEmail = $fromEmail;
-            $fromEmail = config('attendize.outgoing_email');
-            if ($attachment) {
-                $message->attach($attachment);
-            }
-            $message
-                ->to($toEmail)
-                ->from($fromEmail, $fromName)
-                ->replyTo($replyEmail, $fromName)
-                ->subject($subject);
-        });
-    }
-}
\ No newline at end of file
diff --git a/app/Mailers/OrderMailer.php b/app/Mailers/OrderMailer.php
deleted file mode 100644
index d9c93d22d..000000000
--- a/app/Mailers/OrderMailer.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-
-namespace App\Mailers;
-
-use App\Models\Order;
-use App\Services\Order as OrderService;
-use Log;
-use Mail;
-
-class OrderMailer
-{
-    public function sendOrderNotification(Order $order)
-    {
-        $orderService = new OrderService($order->amount, $order->organiser_booking_fee, $order->event);
-        $orderService->calculateFinalCosts();
-        $data = [
-            'order' => $order,
-            'orderService' => $orderService
-        ];
-        Mail::send('Emails.OrderNotification', $data, function ($message) use ($order) {
-            $message->to($order->account->email);
-            $message->subject(trans("Controllers.new_order_received",
-                ["event" => $order->event->title, "order" => $order->order_reference]));
-        });
-    }
-
-    public function sendOrderTickets(Order $order)
-    {
-        $orderService = new OrderService($order->amount, $order->organiser_booking_fee, $order->event);
-        $orderService->calculateFinalCosts();
-        Log::info("Sending ticket to: " . $order->email);
-        $data = [
-            'order' => $order,
-            'orderService' => $orderService
-        ];
-        $file_name = $order->order_reference;
-        $file_path = public_path(config('attendize.event_pdf_tickets_path')) . '/' . $file_name . '.pdf';
-        if (!file_exists($file_path)) {
-            Log::error("Cannot send actual ticket to : " . $order->email . " as ticket file does not exist on disk");
-            return;
-        }
-        try {
-            Mail::send('Mailers.TicketMailer.SendOrderTickets', $data, function ($message) use ($order, $file_path) {
-                $message->to($order->email);
-                $message->subject(trans("Controllers.tickets_for_event", ["event" => $order->event->title]));
-                $message->attach($file_path);
-            });
-        } catch (\Exception $e) {
-            Log::error("Error Occurred sending tickets : " . $e->getMessage());
-        }
-    }
-}
diff --git a/app/Mailers/UserMailer.php b/app/Mailers/UserMailer.php
deleted file mode 100644
index a3d5306dd..000000000
--- a/app/Mailers/UserMailer.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-
-/*
-  Attendize.com   - Event Management & Ticketing
- */
-
-/**
- * Description of UserMailer.
- *
- * @author Dave
- */
-class UserMailer
-{
-    //put your code here
-}
diff --git a/app/Models/Attendee.php b/app/Models/Attendee.php
index 4465c0d54..76e9e765f 100644
--- a/app/Models/Attendee.php
+++ b/app/Models/Attendee.php
@@ -118,7 +118,13 @@ public function scopeWithoutCancelled($query)
     }
 
     /**
-     * Get the attendee reference
+     * Reference index is a number representing the position of
+     * an attendee on an order, for example if a given order has 3
+     * attendees, each attendee would be assigned an auto-incrementing
+     * integer to indicate if they were attendee 1, 2 or 3.
+     *
+     * The reference attribute is a string containing the order reference
+     * and the attendee's reference index.
      *
      * @return string
      */
diff --git a/app/Models/Event.php b/app/Models/Event.php
index ecb1c60d5..1fe8d5a3f 100644
--- a/app/Models/Event.php
+++ b/app/Models/Event.php
@@ -363,7 +363,7 @@ public function getIcsForEvent()
     {
         $siteUrl = URL::to('/');
         $eventUrl = $this->getEventUrlAttribute();
-
+        $description = md_to_str($this->description);
         $start_date = $this->start_date;
         $end_date = $this->end_date;
         $timestamp = new Carbon();
@@ -379,7 +379,7 @@ public function getIcsForEvent()
 DTEND:{$end_date->format('Ymd\THis\Z')}
 SUMMARY:$this->title
 LOCATION:{$this->venue_name}
-DESCRIPTION:{$this->description}
+DESCRIPTION:{$description}
 END:VEVENT
 END:VCALENDAR
 ICSTemplate;
diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php
index c55065e0c..723a290d5 100644
--- a/app/Providers/EventServiceProvider.php
+++ b/app/Providers/EventServiceProvider.php
@@ -2,8 +2,6 @@
 
 namespace App\Providers;
 
-use App\Events\OrderCompletedEvent;
-use App\Listeners\OrderCompletedListener;
 use Illuminate\Auth\Events\Registered;
 use Illuminate\Auth\Listeners\SendEmailVerificationNotification;
 use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider;
@@ -17,9 +15,6 @@ class EventServiceProvider extends ServiceProvider
      * @var array
      */
     protected $listen = [
-        OrderCompletedEvent::class => [
-            OrderCompletedListener::class,
-        ],
         Registered::class => [
             SendEmailVerificationNotification::class,
         ],
diff --git a/bower.json b/bower.json
index 1c5a6fb29..95ad80944 100644
--- a/bower.json
+++ b/bower.json
@@ -1,6 +1,6 @@
 {
   "name": "attendize-event-ticketing",
-  "version": "2.1.0",
+  "version": "2.3.1",
   "authors": [
     "daveearley <dave@attendize.com>"
   ],
diff --git a/composer.json b/composer.json
index 4b4c5715c..761c59d92 100644
--- a/composer.json
+++ b/composer.json
@@ -1,6 +1,6 @@
 {
     "name": "attendize/attendize",
-    "version": "2.1.0",
+    "version": "2.3.1",
     "description": "A free and open-source event management and ticket selling application.",
     "keywords": [
         "event management",
@@ -79,7 +79,9 @@
     },
     "scripts": {
         "post-install-cmd": [
-            "@php artisan clear-compiled"
+            "@php artisan clear-compiled",
+            "@php -r \"copy('.env.example', '.env');\"",
+            "@php artisan key:generate"
         ],
         "post-update-cmd": [
             "@php artisan clear-compiled",
diff --git a/config/app.php b/config/app.php
index 6929aa73c..0a7c56c42 100644
--- a/config/app.php
+++ b/config/app.php
@@ -82,6 +82,17 @@
 
     'locale' => 'en',
 
+     /*
+    |--------------------------------------------------------------------------
+    | Application Locale Direction Configuration
+    |--------------------------------------------------------------------------
+    |
+    | The application locale direction checks if dir is ltr or rtl.
+    |
+    */
+
+    'locale_dir' => 'ltr',
+
     /*
     |--------------------------------------------------------------------------
     | Application Fallback Locale
@@ -171,8 +182,6 @@
          */
         App\Providers\AppServiceProvider::class,
         App\Providers\AuthServiceProvider::class,
-        // App\Providers\BroadcastServiceProvider::class,
-        App\Providers\EventServiceProvider::class,
         App\Providers\RouteServiceProvider::class,
         Maatwebsite\Excel\ExcelServiceProvider::class,
 
diff --git a/config/laravellocalization.php b/config/laravellocalization.php
index f2ad6b06a..d928d39c5 100644
--- a/config/laravellocalization.php
+++ b/config/laravellocalization.php
@@ -221,7 +221,7 @@
         //'mk'          => ['name' => 'Macedonian',             'script' => 'Cyrl', 'native' => 'македонски', 'regional' => 'mk_MK'],
         //'mn'          => ['name' => 'Mongolian (Cyrillic)',   'script' => 'Cyrl', 'native' => 'монгол', 'regional' => 'mn_MN'],
         //'ce'          => ['name' => 'Chechen',                'script' => 'Cyrl', 'native' => 'нохчийн мотт', 'regional' => 'ce_RU'],
-        //'ru'          => ['name' => 'Russian',                'script' => 'Cyrl', 'native' => 'русский', 'regional' => 'ru_RU'],
+        'ru'          => ['name' => 'Russian',                'script' => 'Cyrl', 'native' => 'русский', 'regional' => 'ru_RU'],
         //'sah'         => ['name' => 'Yakut',                  'script' => 'Cyrl', 'native' => 'саха тыла', 'regional' => ''],
         //'tt'          => ['name' => 'Tatar',                  'script' => 'Cyrl', 'native' => 'татар теле', 'regional' => 'tt_RU'],
         //'tg'          => ['name' => 'Tajik (Cyrillic)',       'script' => 'Cyrl', 'native' => 'тоҷикӣ', 'regional' => 'tg_TJ'],
diff --git a/config/purifier.php b/config/purifier.php
index e15daf8e0..06964598f 100644
--- a/config/purifier.php
+++ b/config/purifier.php
@@ -23,14 +23,15 @@
     'cachePath' => storage_path('app/purifier'),
     'settings'  => [
         'default' => [
-            'HTML.Doctype'             => 'XHTML 1.0 Strict',
-            'HTML.Allowed'             => 'div,b,strong,i,em,a[href|title],ul,ol,li,p[style],br,span[style],img[width|height|alt|src]',
+            'HTML.Doctype'             => 'HTML 4.01 Transitional',
+            'HTML.Allowed'             => 'a[href|title],b,blockquote,br,code,dd,del,div,dl,dt,em,h1,h2,h3,h4,h5,h6,hr,i,img[width|height|alt|src],ins,kbd,li,ol,p,p[style],pre,q,s,samp,span[style],strike,strong,sub,sup,table[summary],tbody,td[abbr],tfoot,th[abbr],thead,tr,tt,ul,var',
             'CSS.AllowedProperties'    => 'font,font-size,font-weight,font-style,font-family,text-decoration,padding-left,color,background-color,text-align',
             'AutoFormat.AutoParagraph' => true,
             'AutoFormat.RemoveEmpty'   => true,
+            'AutoFormat.Linkify'       => true,
         ],
-        'test'    => [
-            'Attr.EnableID' => true,
+        'strip_all' => [
+            'HTML.Allowed'             => '',
         ],
         'youtube' => [
             'HTML.SafeIframe'      => 'true',
diff --git a/database/migrations/2021_08_27_080923_remove_events_googleplus.php b/database/migrations/2021_08_27_080923_remove_events_googleplus.php
new file mode 100644
index 000000000..fde59837f
--- /dev/null
+++ b/database/migrations/2021_08_27_080923_remove_events_googleplus.php
@@ -0,0 +1,32 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class RemoveEventsGoogleplus extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('events', function (Blueprint $table) {
+            $table->dropColumn('social_show_googleplus');
+          });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('events', function (Blueprint $table) {
+            $table->boolean('social_show_googleplus')->default(1);
+          });
+    }
+}
diff --git a/docker-compose.yml b/docker-compose.yml
index be1b6215c..886b94443 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -14,6 +14,8 @@ services:
       - maildev
       - redis
       - worker
+    env_file:
+      - ./.env
   worker:
     image: attendize_worker:latest
     depends_on:
@@ -39,7 +41,7 @@ services:
     volumes:
       - "mysql-data:/var/lib/mysql"
   maildev:
-    image: djfarrelly/maildev
+    image: maildev/maildev
     ports:
       - "1080:80"
   redis:
diff --git a/package.json b/package.json
index 380055f71..cd3a6ec79 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
     "name": "attendize",
-    "version": "2.1.0",
+    "version": "2.3.1",
     "description": "Attendize Ticketing Platform",
     "main": "public/index.php",
     "dependencies": {
diff --git a/public/assets/javascript/app.js b/public/assets/javascript/app.js
index 0b46915db..82b1a61f5 100644
--- a/public/assets/javascript/app.js
+++ b/public/assets/javascript/app.js
@@ -207,6 +207,212 @@ $(function () {
                     });
                 });
 
+                function findDropdownBtns(parent) {
+                    if (!parent) parent = document;
+                    return Array.from(
+                        parent.querySelectorAll("[data-id=dropdown]")
+                    );
+                }
+
+                function dropdownBtnsRemoveEventListeners(el) {
+                    el.removeEventListener(
+                        "click",
+                        (event) =>
+                            handleUserActionBtnClick(
+                                event,
+                                dropdownBtnsRemoveEventListeners.bind(
+                                    undefined,
+                                    el
+                                )
+                            ),
+                        false
+                    );
+                }
+
+                findDropdownBtns(document).forEach((el) => {
+                    el.addEventListener("click", toggleDropdown, false);
+                    findUserActionBtns(el.parentElement).forEach(function (el) {
+                        el.addEventListener(
+                            "click",
+                            (event) =>
+                                handleUserActionBtnClick(
+                                    event,
+                                    dropdownBtnsRemoveEventListeners.bind(
+                                        undefined,
+                                        el
+                                    )
+                                ),
+                            false
+                        );
+                    });
+                });
+
+                function toggleDropdown(event) {
+                    var target = event.target;
+                    var dropdownContent =
+                        target.parentElement.querySelector(".dropdown-content");
+                    var isVisible =
+                        dropdownContent.hasAttribute("hidden") || false;
+                    if (isVisible) {
+                        dropdownContent.removeAttribute("hidden");
+                    } else {
+                        dropdownContent.setAttribute("hidden", true);
+                    }
+                }
+
+                function findUserActionBtns(parent) {
+                    if (!parent) parent = document;
+                    return Array.from(
+                        parent.querySelectorAll("button[name=user_action]")
+                    );
+                }
+
+                function findUserActionBtnByAction(parent, action) {
+                    return parent.querySelector(
+                        "button[data-action=" + action + "]"
+                    );
+                }
+
+                function handleUserActionBtnClick(
+                    event,
+                    onRemoveCb = function () {}
+                ) {
+                    var target = event.target;
+                    console.log("click", event, target.nodeName);
+
+                    if (target.nodeName !== "BUTTON") return;
+
+                    var action = target.dataset.action;
+                    var href = target.dataset.href;
+
+                    var onSuccess = function () {};
+
+                    var request;
+                    switch (action) {
+                        case "send_invitation_message":
+                            request = new Request(href, {
+                                method: "GET",
+                            });
+                            break;
+
+                        case "delete":
+                            request = new Request(href, {
+                                method: "DELETE",
+                            });
+                            onSuccess = function () {
+                                target.setAttribute("hidden", true);
+                                var parent = target.parentElement;
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "send_invitation_message"
+                                ).setAttribute("hidden", true);
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "restore"
+                                ).removeAttribute("hidden");
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "force_delete"
+                                ).removeAttribute("hidden");
+                            };
+                            break;
+
+                        case "force_delete":
+                            request = new Request(href, {
+                                method: "DELETE",
+                            });
+                            onSuccess = function () {
+                                var buttonWrapper = target.parentElement;
+                                userActionBtnsRemoveEventListeners(
+                                    buttonWrapper
+                                );
+                                onRemoveCb();
+                                var dropdownContent =
+                                    buttonWrapper.parentElement;
+                                var dropdownWrapper =
+                                    dropdownContent.parentElement;
+                                var td = dropdownWrapper.parentElement;
+                                var tr = td.parentElement;
+                                tr.parentElement.removeChild(tr);
+                            };
+                            break;
+
+                        case "restore":
+                            request = new Request(href);
+                            onSuccess = function () {
+                                target.setAttribute("hidden", true);
+                                var parent = target.parentElement;
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "send_invitation_message"
+                                ).removeAttribute("hidden", true);
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "force_delete"
+                                ).setAttribute("hidden", true);
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "delete"
+                                ).removeAttribute("hidden");
+                            };
+                            break;
+                    }
+
+                    request.headers.set(
+                        "X-CSRF-TOKEN",
+                        document
+                            .querySelector('meta[name="_token"]')
+                            .getAttribute("content")
+                    );
+
+                    fetch(request)
+                        .then(function (response) {
+                            if (response.ok) return response;
+                            else {
+                                throw {
+                                    message: "response is not ok",
+                                    response,
+                                };
+                            }
+                        })
+                        .then(function (res) {
+                            return res.json();
+                        })
+                        .then(function (data) {
+                            if (typeof data.message !== "undefined") {
+                                showMessage(data.message);
+                            }
+
+                            onSuccess();
+                        })
+                        .catch(function (err) {
+                            console.error(err);
+
+                            err.response
+                                .json()
+                                .then(function (data) {
+                                    if (data.message) {
+                                        showMessage(data.message);
+                                    } else {
+                                        throw "missing message";
+                                    }
+                                })
+                                .catch(function () {
+                                    showMessage(Attendize.GenericErrorMessages);
+                                });
+                        });
+                }
+
+                function userActionBtnsRemoveEventListeners(parent) {
+                    findUserActionBtns(parent).forEach(function (el) {
+                        el.removeEventListener(
+                            "click",
+                            handleUserActionBtnClick,
+                            false
+                        );
+                    });
+                }
+
             }
         }).done().fail(function (data) {
             $('html').removeClass('working');
diff --git a/public/assets/javascript/backend.js b/public/assets/javascript/backend.js
index b381c7c02..2a9691e94 100644
--- a/public/assets/javascript/backend.js
+++ b/public/assets/javascript/backend.js
@@ -9609,6 +9609,205 @@ $.cf = {
                     });
                 });
 
+                function findDropdownBtns(parent) {
+                    if (!parent) parent = document;
+                    return Array.from(
+                        parent.querySelectorAll("[data-id=dropdown]")
+                    );
+                }
+
+                function dropdownBtnsRemoveEventListeners(el) {
+                    el.removeEventListener(
+                        "click",
+                        (event) =>
+                            handleUserActionBtnClick(
+                                event,
+                                dropdownBtnsRemoveEventListeners.bind(
+                                    undefined,
+                                    el
+                                )
+                            ),
+                        false
+                    );
+                }
+
+                findDropdownBtns(document).forEach((el) => {
+                    el.addEventListener("click", toggleDropdown, false);
+                    findUserActionBtns(el.parentElement).forEach(function (el) {
+                        el.addEventListener(
+                            "click",
+                            (event) =>
+                                handleUserActionBtnClick(
+                                    event,
+                                    dropdownBtnsRemoveEventListeners.bind(
+                                        undefined,
+                                        el
+                                    )
+                                ),
+                            false
+                        );
+                    });
+                });
+
+                function toggleDropdown(event) {
+                    var target = event.target;
+                    var dropdownContent =
+                        target.parentElement.querySelector(".dropdown-content");
+                    var isVisible =
+                        dropdownContent.hasAttribute("hidden") || false;
+                    if (isVisible) {
+                        dropdownContent.removeAttribute("hidden");
+                    } else {
+                        dropdownContent.setAttribute("hidden", true);
+                    }
+                }
+
+                function findUserActionBtns(parent) {
+                    if (!parent) parent = document;
+                    return Array.from(
+                        parent.querySelectorAll("button[name=user_action]")
+                    );
+                }
+
+                function findUserActionBtnByAction(parent, action) {
+                    return parent.querySelector(
+                        "button[data-action=" + action + "]"
+                    );
+                }
+
+                function handleUserActionBtnClick(event, onRemoveCb = function() {}) {
+                    var target = event.target;
+                    console.log("click", event, target.nodeName);
+
+                    if (target.nodeName !== "BUTTON") return;
+
+                    var action = target.dataset.action;
+                    var href = target.dataset.href;
+
+                    var onSuccess = function () {};
+
+                    var request;
+                    switch (action) {
+                        case "send_invitation_message":
+                            request = new Request(href, {
+                                method: "GET",
+                            });
+                            break;
+
+                        case "delete":
+                            request = new Request(href, {
+                                method: "DELETE",
+                            });
+                            onSuccess = function () {
+                                target.setAttribute("hidden", true);
+                                var parent = target.parentElement;
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "send_invitation_message"
+                                ).setAttribute("hidden", true);
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "restore"
+                                ).removeAttribute("hidden");
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "force_delete"
+                                ).removeAttribute("hidden");
+                            };
+                            break;
+
+                        case "force_delete":
+                            request = new Request(href, {
+                                method: "DELETE",
+                            });
+                            onSuccess = function () {
+                                var buttonWrapper = target.parentElement;
+                                userActionBtnsRemoveEventListeners(buttonWrapper);
+                                onRemoveCb();
+                                var dropdownContent = buttonWrapper.parentElement;
+                                var dropdownWrapper = dropdownContent.parentElement;
+                                var td = dropdownWrapper.parentElement;
+                                var tr = td.parentElement;
+                                tr.parentElement.removeChild(tr);
+                            };
+                            break;
+
+                        case "restore":
+                            request = new Request(href);
+                            onSuccess = function () {
+                                target.setAttribute("hidden", true);
+                                var parent = target.parentElement;
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "send_invitation_message"
+                                ).removeAttribute("hidden", true);
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "force_delete"
+                                ).setAttribute("hidden", true);
+                                findUserActionBtnByAction(
+                                    parent,
+                                    "delete"
+                                ).removeAttribute("hidden");
+                            };
+                            break;
+                    }
+
+                    request.headers.set(
+                        "X-CSRF-TOKEN",
+                        document
+                            .querySelector('meta[name="_token"]')
+                            .getAttribute("content")
+                    );
+
+                    fetch(request)
+                        .then(function (response) {
+                            if (response.ok) return response;
+                            else {
+                                throw {
+                                    message: "response is not ok",
+                                    response,
+                                };
+                            }
+                        })
+                        .then(function (res) {
+                            return res.json();
+                        })
+                        .then(function (data) {
+                            if (typeof data.message !== "undefined") {
+                                showMessage(data.message);
+                            }
+
+                            onSuccess();
+                        })
+                        .catch(function (err) {
+                            console.error(err);
+
+                            err.response
+                                .json()
+                                .then(function (data) {
+                                    if (data.message) {
+                                        showMessage(data.message);
+                                    } else {
+                                        throw "missing message";
+                                    }
+                                })
+                                .catch(function () {
+                                    showMessage(Attendize.GenericErrorMessages);
+                                });
+                        });
+                }
+
+                function userActionBtnsRemoveEventListeners(parent) {
+                    findUserActionBtns(parent).forEach(function (el) {
+                        el.removeEventListener(
+                            "click",
+                            handleUserActionBtnClick,
+                            false
+                        );
+                    });
+                }
+
             }
         }).done().fail(function (data) {
             $('html').removeClass('working');
diff --git a/public/assets/stylesheet/application-rtl.css b/public/assets/stylesheet/application-rtl.css
new file mode 100644
index 000000000..a60e31dab
--- /dev/null
+++ b/public/assets/stylesheet/application-rtl.css
@@ -0,0 +1,58 @@
+body{
+    direction: rtl;
+}
+
+.sidebar.sidebar-left.sidebar-menu{
+    right: 0;
+}
+
+.sidebar.sidebar-menu + #main {
+    padding-right: 220px;
+    padding-left: 0;
+}
+
+
+#header.navbar > .navbar-header {
+    float: right;
+}
+
+#header.navbar > .navbar-toolbar {
+    margin-right: 220px;
+    margin-left: unset;
+}
+
+.nav{
+    padding-right: 0;
+    padding-left: unset;
+}
+
+.nav-tabs > li{
+    float: right;
+}
+
+.event .event-meta{
+    margin-right: 60px ;
+}
+
+.dropdown-menu > li{
+    text-align: right;
+}
+
+.iframe_wrap iframe{
+    transform-origin: 100% 0% !important;
+}
+
+
+
+.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{
+    float: right;
+}
+
+.col-md-offset-7 {
+    margin-right: 58.33333333%;
+    margin-left: unset;
+}
+
+.btn-toolbar .btn-group, .btn-toolbar .input-group {
+    float: right;
+}
diff --git a/public/assets/stylesheet/application-rtl.less b/public/assets/stylesheet/application-rtl.less
new file mode 100644
index 000000000..a711ed712
--- /dev/null
+++ b/public/assets/stylesheet/application-rtl.less
@@ -0,0 +1,77 @@
+body{
+    direction: rtl;
+}
+
+
+.sidebar{
+    &.sidebar-left{
+        &.sidebar-menu{
+            right: 0;
+        }
+    }
+
+    &.sidebar-menu{
+        & + #main {
+            padding-right: 220px;
+            padding-left: 0;
+        }
+    }
+}
+
+
+#header{
+    &.navbar{
+        & > .navbar-header {
+            float: right;
+        }
+
+        & .navbar-toolbar {
+            margin-right: 220px;
+            margin-left: unset;
+        }
+    }
+}
+
+.nav{
+    padding-right: 0;
+    padding-left: unset;
+}
+
+.nav-tabs {
+    &> li{
+        float: right;
+    }
+}
+
+.event {
+    .event-meta{
+        margin-right: 60px ;
+    }
+}
+
+.dropdown-menu {
+    &> li{
+        text-align: right;
+    }
+}
+
+.iframe_wrap{
+    iframe{
+        transform-origin: 100% 0% !important;
+    }
+}
+
+
+
+.col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12{
+    float: right;
+}
+
+.col-md-offset-7 {
+    margin-right: 58.33333333%;
+    margin-left: unset;
+}
+
+.btn-toolbar .btn-group, .btn-toolbar .input-group {
+    float: right;
+}
diff --git a/resources/lang/de/AccessCodes.php b/resources/lang/de/AccessCodes.php
new file mode 100644
index 000000000..e5e4ab804
--- /dev/null
+++ b/resources/lang/de/AccessCodes.php
@@ -0,0 +1,19 @@
+<?php
+
+return [
+    'title' => 'Zugriffscodes',
+    'success_message' => 'Zugriffscode erfolgreich angelegt',
+    'delete_message' => 'Zugriffscode erfolgreich entfernt',
+    'cannot_delete_used_code' => 'Benutzer Code kann nicht gelöscht werden',
+    'access_codes_code' => 'Rabattcode',
+    'access_codes_created_at' => 'erzeugt am',
+    'no_access_codes_yet' => 'Noch keine Zugriffscodes!',
+    'create_access_code' => 'Zugriffscode erzeugen',
+    'access_code_title' => 'Zugriffscode',
+    'access_code_title_placeholder' => 'Bsp.: CONFERENCE2019',
+    'valid_code_required' => 'Es wird ein gültiger Zugriffscode benötigt',
+    'no_tickets_matched' => 'Keine Tickets zum Zugriffscode gefunden',
+    'select_access_code' => 'Zugriffscode auswählen',
+    'access_codes_usage_count' => 'Nutzungsanzahl',
+    'unique_error' => 'Code wurde bereits für diese Veranstaltung verwendet',
+];
diff --git a/resources/lang/de/Affiliates.php b/resources/lang/de/Affiliates.php
index 05cfd9e4c..eb11a7889 100644
--- a/resources/lang/de/Affiliates.php
+++ b/resources/lang/de/Affiliates.php
@@ -1,6 +1,6 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/19 17:14:11 
+ Generated via "php artisan localization:missing" at 2018/04/19 17:14:11
 *************************************************************************/
 
 return array (
@@ -13,4 +13,4 @@
   'sales_volume_generated' => 'Verkaufsvolumen generiert',
   'ticket_sales_generated' => 'Ticketverkäufe generiert',
   'visits_generated' => 'Besuche Generiert',
-);
\ No newline at end of file
+);
diff --git a/resources/lang/de/Attendee.php b/resources/lang/de/Attendee.php
index f70742495..63e887f0e 100644
--- a/resources/lang/de/Attendee.php
+++ b/resources/lang/de/Attendee.php
@@ -5,19 +5,19 @@
 
 return array (
   //============================== New strings to translate ==============================//
-  'scan_another_ticket' => 'Ein anderes Ticket scannen',
+  'scan_another_ticket' => 'Weiteres Ticket scannen',
   'scanning' => 'Scannen',
   //==================================== Translations ====================================//
   'attendees' => 'Teilnehmer',
   'check_in' => 'Check in: :event',
   'email' => 'Email',
-  'email_address' => 'Email Addresse',
-  'event_attendees' => 'Event Teilnehmer',
+  'email_address' => 'Email Adresse',
+  'event_attendees' => 'Veranstaltungsteilnehmer',
   'first_name' => 'Vorname',
   'last_name' => 'Nachname',
   'name' => 'Name',
   'ticket' => 'Ticket',
   'reference' => 'Referenz',
-  'search_attendees' => 'Teilnehmersuche...',
-  'send_invitation_n_ticket_to_attendee' => 'Einladung und Ticket an Teilnehmer senden.',
+  'search_attendees' => 'Teilnehmer suchen...',
+  'send_invitation_n_ticket_to_attendee' => 'Einladungen und Ticket an Teilnehmer senden.',
 );
diff --git a/resources/lang/de/Controllers.php b/resources/lang/de/Controllers.php
index 8f6593da4..75953a001 100644
--- a/resources/lang/de/Controllers.php
+++ b/resources/lang/de/Controllers.php
@@ -7,16 +7,15 @@
   //============================== New strings to translate ==============================//
   // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageOrganiser\\Events.blade.php
   'sort' =>
-  array (
-    'event_title' => 'Event Titel',
-    'start_date' => 'Start Datum',
-    'created_at' => 'Erstellungsdatum',
-    'quantity_sold' => 'Menge verkauft',
-    'sales_volume' => 'Verkaufsvolumen',
-    'sort_order' => 'Eigene Sortierungs Reihenfolge',
-    'title' => 'Ticket Titel',
-  ),
-  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageOrganiser\\Events.blade.php
+      array (
+          'event_title' => 'Name der Veranstaltung',
+          'start_date' => 'Startdatum',
+          'created_at' => 'Erstellungsdatum',
+          'quantity_sold' => 'Verkaufte Menge',
+          'sales_volume' => 'Verkaufsvolumen',
+          'sort_order' => 'Benutzerdefinierte Sortierreihenfolge',
+          'title' => 'Names des Ticket',
+      ),
   //==================================== Translations ====================================//
   'account_successfully_updated' => 'Account erfolgreich bearbeitet',
   'addInviteError' => 'Sie müssen ein Ticket erstellen, bevor Sie einen Teilnehmer einladen.',
@@ -34,8 +33,8 @@
   array (
     'email' =>
     array (
-      'email' => 'Bitte geben Sie eine valide Email Adresse ein.',
-      'required' => 'Email Adresse benötigt.',
+      'email' => 'Bitte geben Sie eine gültige Email Adresse ein.',
+      'required' => 'E-Mail Adresse benötigt.',
       'unique' => 'Diese Email Adresse ist bereits in Benutzung.',
     ),
     'first_name' =>
@@ -60,8 +59,8 @@
     ),
   ),
   'event_create_exception' => 'Whoops! Es gab einen Fehler bei der Erstellug Ihres Accounts. Bitte erneut versuchen.',
-  'event_page_successfully_updated' => 'Eventseite erfolgreich bearbeitet.',
-  'event_successfully_updated' => 'Event erfolgreich bearbeitet!',
+  'event_page_successfully_updated' => 'Veranstaltungsseite erfolgreich bearbeitet.',
+  'event_successfully_updated' => 'Veranstaltung erfolgreich bearbeitet!',
   'fill_email_and_password' => 'Bitte geben Sie Ihre Email und Passwort ein.',
   'image_upload_error' => 'Beim Hochladen Ihres Bildes gab es einen Fehler.',
   'invalid_ticket_error' => '"Falsches Ticket! Bitte erneut versuchen."',
diff --git a/resources/lang/de/Dashboard.php b/resources/lang/de/Dashboard.php
index 5ba5b366e..bb6d9d530 100644
--- a/resources/lang/de/Dashboard.php
+++ b/resources/lang/de/Dashboard.php
@@ -1,26 +1,26 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/19 18:57:21 
+ Generated via "php artisan localization:missing" at 2018/04/19 18:57:21
 *************************************************************************/
 
 return array (
     //============================== New strings to translate ==============================//
-    'this_event_has_started' => 'Das Event hat begonnen.',
+    'this_event_has_started' => 'Diese Veranstaltung hat begonnen.',
     //==================================== Translations ====================================//
     'create_tickets' => 'Tickets erstellen',
-    'edit_event_page_design' => 'Eventseitendesign bearbeiten',
+    'edit_event_page_design' => 'Design der Veranstaltungsseite  bearbeiten',
     'edit_organiser_fees' => 'Veranstaltergebühren bearbeiten',
     'event_page_visits' => 'Eventseitenbesucher',
-    'event_url' => 'Event URL',
-    'event_views' => 'Event Besucher',
+    'event_url' => 'URL zur Veranstaltung',
+    'event_views' => 'Views der Veranstaltung',
     'generate_affiliate_link' => 'Affiliate link erstellen',
     'orders' => 'Bestellungen',
     'quick_links' => 'Quick Links',
     'registrations_by_ticket' => 'Regestrierungen per Ticket',
-    'sales_volume' => 'Verkaufsvolumen',
-    'share_event' => 'Event teilen',
-    'this_event_is_on_now' => 'Dieses Event findet gerade Statt',
-    'ticket_sales_volume' => 'Ticket Verkaufs Volumen',
+    'sales_volume' => 'Anzahl Verkäufe',
+    'share_event' => 'Veranstaltung teilen',
+    'this_event_is_on_now' => 'Diese Veranstaltung findet gerade statt',
+    'ticket_sales_volume' => 'Anzahl Ticketverkäufe',
     'tickets_sold' => 'Tickets verkauft',
-    'website_embed_code' => 'Webseiten einbindungs Code',
-);
\ No newline at end of file
+    'website_embed_code' => 'Embed Code für Webseite',
+);
diff --git a/resources/lang/de/Design.php b/resources/lang/de/Design.php
index 23816a3d0..dd7fb92aa 100644
--- a/resources/lang/de/Design.php
+++ b/resources/lang/de/Design.php
@@ -1,14 +1,14 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/19 17:21:50 
+ Generated via "php artisan localization:missing" at 2018/04/19 17:21:50
 *************************************************************************/
 
 return array (
   //============================== New strings to translate ==============================//
-  'event_page_preview' => 'Eventseiten Vorscheu',
+  'event_page_preview' => 'Veranstaltungsseite Vorscheu',
   //==================================== Translations ====================================//
-  'background_options' => 'Hintergrund Optionen',
+  'background_options' => 'Hintergrundoptionen',
   'images_provided_by_pixabay' => 'Bilder bereitgestellt von <b>PixaBay.com</b>',
   'select_from_available_images' => 'Aus vefügbaren Bildern Auswählen',
   'use_a_colour_for_the_background' => 'Farbe für den Hintergrund benutzen',
-);
\ No newline at end of file
+);
diff --git a/resources/lang/de/Email.php b/resources/lang/de/Email.php
index d9c7986f2..04cbf9d64 100644
--- a/resources/lang/de/Email.php
+++ b/resources/lang/de/Email.php
@@ -1,19 +1,21 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/26 11:05:24 
+ Generated via "php artisan localization:missing" at 2018/04/26 11:05:24
 *************************************************************************/
 
 return array (
   //==================================== Translations ====================================//
-  'attendize_register' => 'Danke das sie sich bei Attendize regestriert haben',
+  'attendize_register' => 'Danke, dass Sie sich bei Attendize regestriert haben',
+  'contact_organiser' => 'Du kannst :organiser_name gleich hier <a href="mailto::organiser_email">:organiser_email</a> kontaktieren oder dieser E-Mail antworten.',
   'invite_user' => ':name hat Ihnen einen :app account erstellt.',
-  'message_regarding_event' => 'Nachricht betreffend: :event',
+  'message_received_from_organiser' => 'Du hast eine Nachricht von :organiser_name zu der Veranstaltung :event_title bekommen.',
+  'message_regarding_event' => 'Die Nachricht betrifft: :event',
   'organiser_copy' => '[Kopie für den Veranstalter]',
   'refund_from_name' => 'Sie haben eine Rückerstattung von :name erhalten',
   'your_ticket_cancelled' => 'Ihr Ticket wurde storniert',
   'your_ticket_for_event' => 'Ihr Ticket für die Veranstaltung :event',
     //================================== Obsolete strings ==================================//
-  'LLH:obsolete' => 
+  'LLH:obsolete' =>
   array (
 
   ),
diff --git a/resources/lang/de/Event.php b/resources/lang/de/Event.php
index 6af479711..a6f82caa8 100644
--- a/resources/lang/de/Event.php
+++ b/resources/lang/de/Event.php
@@ -1,6 +1,6 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/26 10:54:45 
+ Generated via "php artisan localization:missing" at 2018/04/26 10:54:45
 *************************************************************************/
 
 return array (
@@ -43,4 +43,4 @@
   'venue_name_placeholder' => 'Z.B.: Feierwerk',
   'vis_hide' => 'Veranstaltung vor der öffentlichkeit verstecken.',
   'vis_public' => 'Veranstaltung veröffentlichen.',
-);
\ No newline at end of file
+);
diff --git a/resources/lang/de/Fees.php b/resources/lang/de/Fees.php
index 3da910c51..18a2d0721 100644
--- a/resources/lang/de/Fees.php
+++ b/resources/lang/de/Fees.php
@@ -1,6 +1,6 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/19 17:24:53 
+ Generated via "php artisan localization:missing" at 2018/04/19 17:24:53
 *************************************************************************/
 
 return array (
diff --git a/resources/lang/de/Installer.php b/resources/lang/de/Installer.php
index f7efc773d..e821081ca 100644
--- a/resources/lang/de/Installer.php
+++ b/resources/lang/de/Installer.php
@@ -18,7 +18,7 @@
     'database_test_connect_failure_error_type' => 'Fehler Typ',
     'database_test_connect_failure_message' => 'Verbindung nicht möglich. Bitte überprüfen Sie Ihre Einstellungen.',
     'database_test_connect_success' => 'Erfolg! Datenbank einstellungen sind korrekt!',
-    'database_type' => 'Datenban Typ',
+    'database_type' => 'Datenbank Typ',
     'database_username' => 'Datenbank Benutzer',
     'email_settings' => 'Email Einstellugen',
     'files_n_folders_check' => 'Dateien und Ordner Check',
diff --git a/resources/lang/de/Javascript.php b/resources/lang/de/Javascript.php
index 06656e4df..a1585106b 100644
--- a/resources/lang/de/Javascript.php
+++ b/resources/lang/de/Javascript.php
@@ -14,4 +14,4 @@
     "cvc_error" => 'Die CVC Nummer ist falsch.',
     "card_validation_error" => 'Bitte überprüfen Sie die Kreditkartendaten und probieren es erneut.',
     "checkin_init_error" => 'Bei der initialisierung des Scanners trat ein Fehler auf. Bitte überprüfen Sie ihre SSL (HTTPS) verbindung und prüfen Sie ob Ihr Browser einen Scanner unterstützt.',
-];
\ No newline at end of file
+];
diff --git a/resources/lang/de/ManageAccount.php b/resources/lang/de/ManageAccount.php
index 493eec118..b7e3bcce0 100644
--- a/resources/lang/de/ManageAccount.php
+++ b/resources/lang/de/ManageAccount.php
@@ -1,6 +1,6 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/13 13:27:24 
+ Generated via "php artisan localization:missing" at 2018/04/13 13:27:24
 *************************************************************************/
 
 return array (
@@ -49,4 +49,4 @@
   'version_up_to_date' => 'Your Attendize version (<b>:installed</b>) is up to date!',
     'account_payment' => 'Account / Zahlungsdaten',
     'event_attendees' => 'Gäste',
-);
\ No newline at end of file
+);
diff --git a/resources/lang/de/ManageEvent.php b/resources/lang/de/ManageEvent.php
index 1ccae0a02..ee7a9673f 100644
--- a/resources/lang/de/ManageEvent.php
+++ b/resources/lang/de/ManageEvent.php
@@ -92,8 +92,8 @@
   'ticket_title_placeholder' => 'E.g: General Admission',
   'update_order' => 'Update Order',
   'widgets' => 'Widgets',
-  'LLH:obsolete' => 
+  'LLH:obsolete' =>
   array (
     'create_question' => 'Create Question',
   ),
-);
\ No newline at end of file
+);
diff --git a/resources/lang/de/Order.php b/resources/lang/de/Order.php
index 095d9ecdc..08ffecdb9 100644
--- a/resources/lang/de/Order.php
+++ b/resources/lang/de/Order.php
@@ -37,6 +37,7 @@
   'reference' => 'Reference',
   'refund/cancel' => 'Refund / Cancel',
   'registered' => 'registered',
+  'search_placeholder' => 'Search Orders..',
   'status' => 'Status',
   'sub_total' => 'Sub Total',
   'ticket' => 'Ticket',
@@ -45,4 +46,4 @@
   'transaction_id' => 'Transaction ID',
   'view_order' => 'View Order',
   'view_order_num' => 'View Order #:num',
-);
\ No newline at end of file
+);
diff --git a/resources/lang/de/Order_Emails.php b/resources/lang/de/Order_Emails.php
new file mode 100644
index 000000000..8fc570aff
--- /dev/null
+++ b/resources/lang/de/Order_Emails.php
@@ -0,0 +1,8 @@
+<?php
+return [
+    'received_new_order'             => 'Es ging eine neue Bestllung für die Veranstaltung',
+    'order_still_awaiting_payment'   => 'Achtung: Bezahlung ausstehend.',
+    'manage_order'                   => 'Du kannst die Bestellung hier verwalten',
+    'successful_order'               => 'Deine Bestellung für die Veranstaltung <strong>:name</strong> war erfolgreich.',
+    'tickets_attached'               => 'Deine Tickets sind dieser E-Mail beigefügt. Hier kannst Deine Bestellung ansehen und Deine Tickets herunterladen:',
+];
\ No newline at end of file
diff --git a/resources/lang/de/Organiser.php b/resources/lang/de/Organiser.php
index 002de79f5..787deca54 100644
--- a/resources/lang/de/Organiser.php
+++ b/resources/lang/de/Organiser.php
@@ -1,72 +1,72 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/26 10:16:27 
+ Generated via "php artisan localization:missing" at 2018/04/26 10:16:27
 *************************************************************************/
 
 return array (
   //============================== New strings to translate ==============================//
-  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageOrganiser\\Customize.blade.php
-  'save_organiser' => 'Save Organiser',
+  'save_organiser' => 'Veranstalter speichern',
   //==================================== Translations ====================================//
-  'additional_organiser_options' => 'Additional Organiser Options',
-  'background_color' => 'Background Color',
-  'continue_to' => 'Continue to',
-  'create_an_organiser' => 'Create An Organiser',
-  'create_new_organiser' => 'Create New Organiser',
-  'create_organiser' => 'Create Organiser',
-  'create_organiser_text' => 'Before you create events you\'ll need to create an organiser. An organiser is simply whoever is organising the event. It can be anyone, from a person to an organisation.',
-  'current_logo' => 'Current Logo',
-  'customize' => 'Customize',
+  'additional_organiser_options' => 'Zustätzliche Optionen zum Veranstalter',
+  'background_color' => 'Hintergrundfarbe',
+  'continue_to' => 'Weitermachen als',
+  'create_an_organiser' => 'Veranstalter anlegen',
+  'create_new_organiser' => 'Neuen Veranstalter anlegen',
+  'create_organiser' => 'Veranstalter anlegen',
+  'create_organiser_text' => 'Before you create events you\'ll need to create an organiser. An Veranstalter is simply whoever is organising the event. It can be anyone, from a person to an organisation.',
+  'current_logo' => 'Aktuelles Logo',
+  'customize' => 'Anpassen',
   'dashboard' => 'Dashboard',
-  'delete_logo?' => 'Delete Logo?',
-  'enable_public_organiser_page' => 'Enable Public Organiser Page',
-  'event' => 'Event',
-  'event_calendar' => 'Event Calendar',
-  'events' => 'Events',
+  'delete_logo?' => 'Logo löschen?',
+  'enable_public_organiser_page' => 'Öffentlich Veranstalter Seite aktivieren',
+  'event' => 'Veranstaltung',
+  'event_calendar' => 'Veranstaltungskalender',
+  'events' => 'Veranstaltungen',
   'google_analytics_code' => 'Google Analytics Code',
   'google_analytics_code_placeholder' => 'UA-XXXXX-X',
-  'header_background_color' => 'Header Background Color',
-  'hide_additional_organiser_options' => 'Hide Additional Organiser Options',
-  'make_organiser_hidden' => 'Hide organiser page from the public.',
-  'make_organiser_public' => 'Make organiser page visible to the public.',
-  'no_upcoming_events' => 'You have no events coming up.',
-  'no_upcoming_events_click' => 'You can click here to create an event.',
-  'or' => 'or',
-  'or_caps' => 'OR',
-  'organiser_description' => 'Organiser Description',
-  'organiser_description_placeholder' => '',
-  'organiser_design' => 'Organiser Design',
-  'organiser_details' => 'Organiser Details',
-  'organiser_email' => 'Organiser Email',
-  'organiser_email_placeholder' => '',
-  'organiser_events' => 'Organiser Events',
-  'organiser_facebook' => 'Organiser Facebook',
-  'organiser_facebook_placeholder' => 'E.g http://www.facebook.com/MyFaceBookPage',
-  'organiser_logo' => 'Organiser Logo',
-  'organiser_logo_help' => 'We recommend a square image, as this will look best on printed tickets and event pages.',
-  'organiser_menu' => 'Organiser Menu',
-  'organiser_name' => 'Organiser Name',
-  'organiser_name_dashboard' => ':name Dashboard',
-  'organiser_name_events' => ':name Events',
-  'organiser_name_placeholder' => 'Who\'s organising the event?',
-  'organiser_page' => 'Organiser Page',
-  'organiser_page_design' => 'Organiser Page Design',
-  'organiser_page_preview' => 'Organiser Page Preview',
-  'organiser_page_visibility_text' => 'Organiser pages contain a public list of past and upcoming events.',
-  'organiser_settings' => 'Organiser Settings',
-  'organiser_twitter' => 'Organiser Twitter',
-  'organiser_twitter_placeholder' => 'E.g http://www.twitter.com/MyTwitterPage',
-  'organiser_username_facebook_placeholder' => 'MyFacebookPage',
-  'organiser_username_twitter_placeholder' => 'MyTwitterPage',
-  'organiser_tax_prompt' => 'Do you want to charge tax as your events?',
-  'organiser_tax_id' => 'Tax ID',
-  'organiser_tax_name' => 'Tax Name',
-  'organiser_tax_value' => 'Tax Value',
-  'yes' => 'Yes',
-  'no' => 'No',
-  'sales_volume' => 'Sales Volume',
-  'select_an_organiser' => 'Select An Organiser',
-  'select_organiser' => 'Select Organiser',
-  'text_color' => 'Text Color',
-  'tickets_sold' => 'Tickets Sold',
+    'header_background_color' => 'Header Hintergrundfarbe',
+    'hide_additional_organiser_options' => 'Weitere Optionen zum Veranstalter verbergen',
+    'make_organiser_hidden' => 'Öffentliche Veranstalterseite verbergen',
+    'make_organiser_public' => 'Veranstalterseite veröffentlichen',
+    'no_upcoming_events' => 'Es stehen keine Veranstaltungen an.',
+    'no_upcoming_events_click' => 'Klicke hier um eine Veranstaltung zu erstellen.',
+    'or' => 'oder',
+    'or_caps' => 'ODER',
+    'organiser_description' => 'Veranstalter Beschreibung',
+    'organiser_description_placeholder' => '',
+    'organiser_design' => 'Veranstalter Design',
+    'organiser_details' => 'Veranstalter Details',
+    'organiser_email' => 'Veranstalter Email',
+    'organiser_email_placeholder' => '',
+    'organiser_events' => 'Veranstalter Veranstaltungen',
+    'organiser_facebook' => 'Veranstalter Facebook',
+    'organiser_facebook_placeholder' => 'z.B. http://www.facebook.com/MyFaceBookPage',
+    'organiser_logo' => 'Veranstalter Logo',
+    'organiser_logo_help' => 'Wir empfehlen ein rechteckiges Bild, da dieses am Besten auf den Tickets und Veranstaltungsseiten angezeigt wird.',
+    'organiser_menu' => 'Veranstalter Menü',
+    'organiser_name' => 'Veranstalter Name',
+    'organiser_name_dashboard' => ':name Dashboard',
+    'organiser_name_events' => ':name Events',
+    'organiser_name_placeholder' => 'Wer organisiert diese Veranstaltung?',
+    'organiser_page' => 'Veranstalter Seite',
+    'organiser_page_design' => 'Veranstalter Seitendesign',
+    'organiser_page_preview' => 'Veranstalter Seitenvorschau',
+    'organiser_page_visibility_text' => 'Veranstalterseiten enthalten eine öffentlich Auflistung der vergangenen und bevorstehenden Veranstaltungen.',
+    'organiser_settings' => 'Veranstalter Einstellungen',
+    'organiser_twitter' => 'Veranstalter Twitter',
+    'organiser_twitter_placeholder' => 'z.B, http://www.twitter.com/MyTwitterPage',
+    'organiser_username_facebook_placeholder' => 'MyFacebookPage',
+    'organiser_username_twitter_placeholder' => 'MyTwitterPage',
+    'organiser_tax_prompt' => 'Wollen sie Steuern für ihre Veranstaltungen anrechnen?',
+    'organiser_tax_id' => 'SteuerID',
+    'organiser_tax_name' => 'Steuername',
+    'organiser_tax_value' => 'Steuersatz',
+    'yes' => 'Ja',
+    'no' => 'Nein',
+    'sales_volume' => 'Verkaufsmenge',
+    'search_placeholder' => 'Veranstaltungen suchen..',
+    'select_an_organiser' => 'Wähle einen Veranstalter aus',
+    'select_organiser' => 'Wähle den Veranstalter',
+    'text_color' => 'Textfarbe',
+    'tickets_sold' => 'Tickets verkauft',
 );
diff --git a/resources/lang/de/Public_ViewEvent.php b/resources/lang/de/Public_ViewEvent.php
index 74eac5200..23c6b5f54 100644
--- a/resources/lang/de/Public_ViewEvent.php
+++ b/resources/lang/de/Public_ViewEvent.php
@@ -16,8 +16,12 @@
   'below_tickets' => 'Wählen Sie die Anzahl der Tickets und klicken sie auf "REGISTRIEREN". Auf der nächsten Seite können Sie diese bezahlen.',
   'booking_fee' => 'Buchungsgebühr',
   'booking_fees' => 'Buchungsgebühren',
+  // 'business_details' => '',
   'card_number' => 'Kartennummer',
+  'checkout_order' => 'Weiter zur Bezahlung',
   'checkout_submit' => 'ZAHLUNGSPFLICHTIG BESTELLEN',
+  'complete_order' => 'Bestellung abschließen',
+  'complete_payment' => 'Bestellung abschließen',
   'confirmation_email' => 'und bestätigen Sie die eMail, die an Sie gesandt wurde.',
   'copy_buyer' => 'Käuferdaten auf alle Tickets Kopieren',
   'currently_not_on_sale' => 'Derzeit nicht im Verkauf',
@@ -38,12 +42,16 @@
   'free' => 'KOSTENLOS',
   'inc_fees' => '(incl. :fees Gebühren)',
   'last_name' => 'Nachname',
-  'offline_payment_instructions' => 'Offline Zahlungsanweisungen',
+  'offline_payment_instructions' => 'Anmerkungen zur Offline-Bezahlung',
   'offline_payment_methods_available' => 'Offline Zahlungsmöglichkeiten verfügbar',
   'order_attendees' => 'Teilnehmer buchen',
   'order_awaiting_payment' => 'Diese Bestellung wartet noch auf Bezahlung. Bitte lesen Sie untenstehende Anweisungen um zu Bezahlen.',
+  'order_date' => 'Datum',
   'order_details' => 'Bestellungsdetails',
+  'order_email' => 'E-Mail Adresse',
   'order_items' => 'Warenkorb',
+  'order_name' => 'Name',
+  'order_reference' => 'Bestellnummer',
   'order_summary' => 'Zusammenfassung',
   'organiser_dashboard' => 'Veranstalter Dashboard',
   'pay_using_offline_methods' => 'Offline bezahlen',
@@ -75,4 +83,4 @@
   'your_message' => 'Ihre Nachricht',
   'your_name' => 'Ihr Name',
   'your' => 'Ihr'
-);
\ No newline at end of file
+);
diff --git a/resources/lang/de/Public_ViewOrganiser.php b/resources/lang/de/Public_ViewOrganiser.php
index 3b2331e93..06e9dce06 100644
--- a/resources/lang/de/Public_ViewOrganiser.php
+++ b/resources/lang/de/Public_ViewOrganiser.php
@@ -1,6 +1,6 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/16 08:41:39 
+ Generated via "php artisan localization:missing" at 2018/04/16 08:41:39
 *************************************************************************/
 
 return array (
@@ -10,8 +10,8 @@
   // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\Public\\ViewOrganiser\\Partials\\EventListingPanel.blade.php
   'tickets' => 'Tickets',
   //==================================== Translations ====================================//
-  'no_events' => 'There are no :panel_title to display.',
+  'no_events' => 'Keine Veranstaltungen',
   'organiser_dashboard' => 'Organiser Dashboard',
-  'past_events' => 'Past events',
-  'upcoming_events' => 'Upcoming events',
-);
\ No newline at end of file
+  'past_events' => 'Zurückliegende Veranstaltungen',
+  'upcoming_events' => 'Bevorstehende Veranstaltungen',
+);
diff --git a/resources/lang/de/Social.php b/resources/lang/de/Social.php
index 0c8885116..de3370bd8 100644
--- a/resources/lang/de/Social.php
+++ b/resources/lang/de/Social.php
@@ -10,7 +10,6 @@
   //==================================== Translations ====================================//
   'email' => 'Email',
   'facebook' => 'Facebook',
-  'g+' => 'Google+',
   'linkedin' => 'LinkedIn',
   'share_buttons_to_show' => 'Share Buttons To Show',
   'social_settings' => 'Social Settings',
diff --git a/resources/lang/de/Ticket.php b/resources/lang/de/Ticket.php
index f61ab9dcf..5901cb39b 100644
--- a/resources/lang/de/Ticket.php
+++ b/resources/lang/de/Ticket.php
@@ -49,4 +49,4 @@
   'ticket_text_color' => 'Ticket Text Color',
   'ticket_type' => 'Ticket Type',
   'venue' => 'Venue',
-);
\ No newline at end of file
+);
diff --git a/resources/lang/de/basic.php b/resources/lang/de/basic.php
index 26d9fe9c3..8a98bf8b7 100644
--- a/resources/lang/de/basic.php
+++ b/resources/lang/de/basic.php
@@ -1,10 +1,11 @@
 <?php
 /*************************************************************************
- Generated via "php artisan localization:missing" at 2018/04/26 11:05:24 
+ Generated via "php artisan localization:missing" at 2018/04/26 11:05:24
 *************************************************************************/
 
 return array (
   //==================================== Translations ====================================//
+  'apply' => 'Anwenden',
   'action' => 'Aktion',
   'affiliates' => 'Affiliates',
   'attendees' => 'Teilnehmer',
@@ -21,29 +22,31 @@
   'enable' => 'Einschalten',
   'enabled' => 'Eingeschaltet',
   'error_404' => 'Die Seite die Sie suchen existiert nicht oder wurde verschoben.',
-  'event_dashboard' => 'Event Dashboard',
-  'event_page_design' => 'Event Seiten Design',
+  'event_dashboard' => 'Veranstaltungsdashboard',
+  'event_page_design' => 'Design der Veranstaltungsseite',
   'export' => 'Exportieren',
-  'general' => 'Generell',
-  'hours' => 'Stunen',
+  'general' => 'Allgemein',
+  'hours' => 'Stunden',
+  'hello' => 'Hello',
   'main_menu' => 'Hauptmenü',
   'manage' => 'Verwalten',
-  'message' => 'Nachricht',
+  'message' => 'Nachrichten',
   'minutes' => 'Minuten',
-  'months_short' => '|Jan|Feb|Mrz|Apr|Mai|Jun|Jul|Aug|Sep|Oct|Nov|Dez|',
+  'months_short' => '|Jan|Feb|Mär|Apr|Mai|Jun|Jul|Aug|Sep|Okt|Nov|Dec|',
   'no' => 'Nein',
   'order_form' => 'Bestellformular',
   'orders' => 'Bestellungen',
-  'promote' => 'befördern',
-  'save_changes' => 'Bearbeitung Speichern',
-  'save_details' => 'Details Speichern',
+  'promote' => 'Werben',
+  'save_changes' => 'Änderungen speichern',
+  'save_details' => 'Details speichern',
   'service_fees' => 'Bearbeitungsgebühren',
   'social' => 'Social',
   'submit' => 'Absenden',
   'success' => 'Erfolg',
   'ticket_design' => 'Ticket Design',
   'tickets' => 'Tickets',
-    'TOP' => 'TOP',
+  'thank_you' => 'Danke',
+  'TOP' => 'TOP',
   'total' => 'Gesamt',
   'whoops' => 'Whoops!',
   'yes' => 'Ja',
@@ -53,10 +56,10 @@
      * If you run it, it will break file input fields.
     */
     'upload' => 'Hochladen',
-    'browse' => 'Suchen',
+    'browse' => 'Browse',
   //================================== Obsolete strings ==================================//
-  'LLH:obsolete' => 
+  'LLH:obsolete' =>
   array (
     'months_long' => 'Januar|Februar|März|April|Mai|Juni|Juli|August|September|Oktober|November|Dezember',
   ),
-);
\ No newline at end of file
+);
diff --git a/resources/lang/de/messages.php b/resources/lang/de/messages.php
deleted file mode 100644
index 2d78434d6..000000000
--- a/resources/lang/de/messages.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-return [
-
-    /*
-    |--------------------------------------------------------------------------
-    | Validation Language Lines
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines contain the default error messages used by
-    | the validator class. Some of these rules have multiple versions such
-    | as the size rules. Feel free to tweak each of these messages here.
-    |
-    */
-
-    'accepted'             => 'The :attribute must be accepted.',
-    'active_url'           => 'The :attribute is not a valid URL.',
-    'after'                => 'The :attribute must be a date after :date.',
-    'alpha'                => 'The :attribute may only contain letters.',
-    'alpha_dash'           => 'The :attribute may only contain letters, numbers, and dashes.',
-    'alpha_num'            => 'The :attribute may only contain letters and numbers.',
-    'array'                => 'The :attribute must be an array.',
-    'before'               => 'The :attribute must be a date before :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.',
-    'date'                 => 'The :attribute is not a valid date.',
-    'date_format'          => 'The :attribute does not match the format :format.',
-    '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.',
-    'email'                => 'The :attribute must be a valid email address.',
-    'filled'               => 'The :attribute field is required.',
-    'exists'               => 'The selected :attribute is invalid.',
-    'image'                => 'The :attribute must be an image.',
-    'in'                   => 'The selected :attribute is invalid.',
-    'integer'              => 'The :attribute must be an integer.',
-    'ip'                   => 'The :attribute must be a valid IP address.',
-    'max'                  => [
-        'numeric' => 'The :attribute may not be greater than :max.',
-        'file'    => 'The :attribute may not be greater than :max kilobytes.',
-        'string'  => 'The :attribute may not be greater than :max characters.',
-        'array'   => 'The :attribute may not have more than :max items.',
-    ],
-    'mimes'                => '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.',
-    ],
-    'not_in'               => 'The selected :attribute is invalid.',
-    'numeric'              => 'The :attribute must be a number.',
-    'regex'                => 'The :attribute format is invalid.',
-    'required'             => 'The :attribute field is required.',
-    'required_if'          => 'The :attribute field is required when :other is :value.',
-    'required_with'        => 'The :attribute field is required when :values is present.',
-    'required_with_all'    => 'The :attribute field is required when :values is 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.',
-    ],
-    'unique'               => 'The :attribute has already been taken.',
-    'url'                  => 'The :attribute format is invalid.',
-    'timezone'             => 'The :attribute must be a valid zone.',
-
-    /*
-    |--------------------------------------------------------------------------
-    | 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' => [
-        'terms_agreed' => [
-            'required' => 'Please agree to our Terms of Service.'
-        ]
-    ],
-
-    /*
-    |--------------------------------------------------------------------------
-    | Custom Validation Attributes
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines are used to swap attribute place-holders
-    | with something more reader friendly such as E-Mail Address instead
-    | of "email". This simply helps us make messages a little cleaner.
-    |
-    */
-
-    'attributes' => [],
-
-];
diff --git a/resources/lang/en/Controllers.php b/resources/lang/en/Controllers.php
index 5190cbcdd..76be459f3 100644
--- a/resources/lang/en/Controllers.php
+++ b/resources/lang/en/Controllers.php
@@ -123,4 +123,7 @@
   'tickets_for_event' => 'Your tickets for the event :event.',
   'whoops' => 'Whoops! Looks like something went wrong. Please try again.',
   'your_password_reset_link' => 'Your Password Reset Link',
+  'success_user_was_deleted' => 'User :name was successfully deleted!',
+  'success_user_was_restored' => 'User :name was successfully restored!',
+  'error_user_was_not_found' => 'User was not found!',
 );
diff --git a/resources/lang/en/Email.php b/resources/lang/en/Email.php
index 44d1c94bd..e593f7689 100644
--- a/resources/lang/en/Email.php
+++ b/resources/lang/en/Email.php
@@ -6,7 +6,9 @@
 return array (
   //==================================== Translations ====================================//
   'attendize_register' => 'Thank you for registering for Attendize',
+  'contact_organiser' => 'You can contact :organiser_name directly at <a href="mailto::organiser_email">:organiser_email</a>, or by replying to this email.',
   'invite_user' => ':name added you to an :app account.',
+  'message_received_from_organiser' => 'You have received a message from :organiser_name in relation to the event :event_title.',
   'message_regarding_event' => 'Message Regarding: :event',
   'organiser_copy' => '[Organiser Copy]',
   'refund_from_name' => 'You have received a refund from :name',
diff --git a/resources/lang/en/ManageAccount.php b/resources/lang/en/ManageAccount.php
index 0202beab6..b8936cf82 100644
--- a/resources/lang/en/ManageAccount.php
+++ b/resources/lang/en/ManageAccount.php
@@ -55,4 +55,5 @@
   'version_up_to_date' => 'Your Attendize version (<b>:installed</b>) is up to date!',
     'account_payment' => 'Account / Payment',
     'event_attendees' => 'Event attendees',
+    'send_invitation_message' => 'Send invitation message',
 );
diff --git a/resources/lang/en/Order.php b/resources/lang/en/Order.php
index db6eb54c8..d2bf18180 100644
--- a/resources/lang/en/Order.php
+++ b/resources/lang/en/Order.php
@@ -22,7 +22,7 @@
   'enable_offline_payments' => 'Enable Offline Payments',
   'free' => 'FREE',
   'no_recent_orders' => 'Looks like there are no recent orders.',
-  'offline_payment_instructions' => 'Enter instructions on how attendees can make payment offline.',
+  'offline_payment_instructions' => 'Enter instructions on how attendees can make payments offline.',
   'offline_payment_settings' => 'Offline Payment Settings',
   'order_attendees' => 'Order Attendees',
   'order_date' => 'Order Date',
diff --git a/resources/lang/en/Order_Emails.php b/resources/lang/en/Order_Emails.php
new file mode 100644
index 000000000..edc0ddf14
--- /dev/null
+++ b/resources/lang/en/Order_Emails.php
@@ -0,0 +1,8 @@
+<?php
+return [
+    'received_new_order'             => 'You have received a new order for the event',
+    'order_still_awaiting_payment'   => 'Please note: This order still requires payment.',
+    'manage_order'                   => 'You can manage this order at',
+    'successful_order'               => 'Your order for the event <strong>:name</strong> was successful.',
+    'tickets_attached'               => 'Your tickets are attached to this email. You can also view you order details and download your tickets at:',
+];
\ No newline at end of file
diff --git a/resources/lang/en/Public_ViewEvent.php b/resources/lang/en/Public_ViewEvent.php
index d3e3d693e..3644c1b4e 100644
--- a/resources/lang/en/Public_ViewEvent.php
+++ b/resources/lang/en/Public_ViewEvent.php
@@ -15,6 +15,7 @@
     'business_address_line1'            => 'Line 1',
     'business_address_line2'            => 'Line 2',
     'business_address_state_province'   => 'State/Province',
+    'business_details'                  => 'Business Details',
     'business_name'                     => 'Business Name',
     'business_tax_number'               => 'Business Tax Number',
     'card_number'                       => 'Card number',
@@ -24,6 +25,7 @@
     'Contact'                           => 'Contact',
     'copy_buyer'                        => 'Copy buyer details to all ticket holders',
     'complete_payment'                  => 'Complete Payment',
+    'complete_order'                    => 'Complete Order',
     'continue'                          => 'Continue',
     'currently_not_on_sale'             => 'Currently Not On Sale',
     'cvc_number'                        => 'CVC number',
@@ -54,8 +56,12 @@
     'offline_payment_methods_available' => 'Offline Payment Methods Available',
     'order_attendees'                   => 'Order attendees',
     'order_awaiting_payment'            => 'This order is awaiting payment. Please read the below instructions on how to make payment.',
+    'order_date'                        => 'Order Date',
     'order_details'                     => 'Order Details',
-    'order_items'                       => 'Order items',
+    'order_email'                       => 'Order Email',
+    'order_items'                       => 'Order Items',
+    'order_name'                        => 'Order Name',
+    'order_reference'                   => 'Order Reference',
     'order_summary'                     => 'Order Summary',
     'organiser_dashboard'               => 'Organiser Dashboard',
     'pay_using_offline_methods'         => 'Pay using offline methods',
diff --git a/resources/lang/en/Social.php b/resources/lang/en/Social.php
index 0c8885116..de3370bd8 100644
--- a/resources/lang/en/Social.php
+++ b/resources/lang/en/Social.php
@@ -10,7 +10,6 @@
   //==================================== Translations ====================================//
   'email' => 'Email',
   'facebook' => 'Facebook',
-  'g+' => 'Google+',
   'linkedin' => 'LinkedIn',
   'share_buttons_to_show' => 'Share Buttons To Show',
   'social_settings' => 'Social Settings',
diff --git a/resources/lang/en/basic.php b/resources/lang/en/basic.php
index 867650036..a3b3aa759 100644
--- a/resources/lang/en/basic.php
+++ b/resources/lang/en/basic.php
@@ -29,6 +29,7 @@
   'event_page_design' => 'Event Page Design',
   'export' => 'Export',
   'general' => 'General',
+  'hello' => 'Hello',
   'hours' => 'hours',
   'main_menu' => 'Main Menu',
   'manage' => 'Manage',
@@ -47,12 +48,16 @@
   'success' => 'Success',
   'ticket_design' => 'Ticket Design',
   'access_codes' => 'Access Codes',
+  'thank_you' => 'Thank you',
   'tickets' => 'Tickets',
   'TOP' => 'TOP',
   'total' => 'total',
   'whoops' => 'Whoops!',
   'yes' => 'Yes',
   'no' => 'No',
+  'delete' => 'Delete',
+  'force_delete' => 'Force Delete',
+  'restore' => 'Restore',
   /*
    * Lines below will turn obsolete in localization helper, it is declared in app/Helpers/macros.
    * If you run it, it will break file input fields.
diff --git a/resources/lang/en/messages.php b/resources/lang/en/messages.php
deleted file mode 100644
index 2d78434d6..000000000
--- a/resources/lang/en/messages.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-return [
-
-    /*
-    |--------------------------------------------------------------------------
-    | Validation Language Lines
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines contain the default error messages used by
-    | the validator class. Some of these rules have multiple versions such
-    | as the size rules. Feel free to tweak each of these messages here.
-    |
-    */
-
-    'accepted'             => 'The :attribute must be accepted.',
-    'active_url'           => 'The :attribute is not a valid URL.',
-    'after'                => 'The :attribute must be a date after :date.',
-    'alpha'                => 'The :attribute may only contain letters.',
-    'alpha_dash'           => 'The :attribute may only contain letters, numbers, and dashes.',
-    'alpha_num'            => 'The :attribute may only contain letters and numbers.',
-    'array'                => 'The :attribute must be an array.',
-    'before'               => 'The :attribute must be a date before :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.',
-    'date'                 => 'The :attribute is not a valid date.',
-    'date_format'          => 'The :attribute does not match the format :format.',
-    '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.',
-    'email'                => 'The :attribute must be a valid email address.',
-    'filled'               => 'The :attribute field is required.',
-    'exists'               => 'The selected :attribute is invalid.',
-    'image'                => 'The :attribute must be an image.',
-    'in'                   => 'The selected :attribute is invalid.',
-    'integer'              => 'The :attribute must be an integer.',
-    'ip'                   => 'The :attribute must be a valid IP address.',
-    'max'                  => [
-        'numeric' => 'The :attribute may not be greater than :max.',
-        'file'    => 'The :attribute may not be greater than :max kilobytes.',
-        'string'  => 'The :attribute may not be greater than :max characters.',
-        'array'   => 'The :attribute may not have more than :max items.',
-    ],
-    'mimes'                => '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.',
-    ],
-    'not_in'               => 'The selected :attribute is invalid.',
-    'numeric'              => 'The :attribute must be a number.',
-    'regex'                => 'The :attribute format is invalid.',
-    'required'             => 'The :attribute field is required.',
-    'required_if'          => 'The :attribute field is required when :other is :value.',
-    'required_with'        => 'The :attribute field is required when :values is present.',
-    'required_with_all'    => 'The :attribute field is required when :values is 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.',
-    ],
-    'unique'               => 'The :attribute has already been taken.',
-    'url'                  => 'The :attribute format is invalid.',
-    'timezone'             => 'The :attribute must be a valid zone.',
-
-    /*
-    |--------------------------------------------------------------------------
-    | 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' => [
-        'terms_agreed' => [
-            'required' => 'Please agree to our Terms of Service.'
-        ]
-    ],
-
-    /*
-    |--------------------------------------------------------------------------
-    | Custom Validation Attributes
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines are used to swap attribute place-holders
-    | with something more reader friendly such as E-Mail Address instead
-    | of "email". This simply helps us make messages a little cleaner.
-    |
-    */
-
-    'attributes' => [],
-
-];
diff --git a/resources/lang/es/Email.php b/resources/lang/es/Email.php
index fea3d7f22..b9191205d 100644
--- a/resources/lang/es/Email.php
+++ b/resources/lang/es/Email.php
@@ -2,7 +2,9 @@
 
 return array(
     'attendize_register'      => 'Gracias por registrarte en Attendize',
+    'contact_organiser' => 'Puede ponerse en contacto con :organiser_name directamente en <a href="mailto::organiser_email">:organiser_email</a>, o respondiendo a este correo electrónico.',
     'invite_user'             => ':name te ha añadido a la cuenta :app.',
+    'message_received_from_organiser' => 'Ha recibido un mensaje de :organiser_name en relación al evento :event_title.',
     'message_regarding_event' => 'Mensaje con respecto a: :event',
     'organiser_copy'          => '[Copia del organizador]',
     'refund_from_name'        => 'Has recibido un reembolso de :name',
diff --git a/resources/lang/es/Order_Emails.php b/resources/lang/es/Order_Emails.php
new file mode 100644
index 000000000..aba2b0959
--- /dev/null
+++ b/resources/lang/es/Order_Emails.php
@@ -0,0 +1,8 @@
+<?php
+return [
+    'received_new_order'             => 'Ha recibido un nuevo pedido para el evento',
+    'order_still_awaiting_payment'   => 'Nota: Este pedido todavía no ha sido pagado.',
+    'manage_order'                   => 'Puede gestionar este pedido en',
+    'successful_order'               => 'Se ha procesado el pedido para el evento <strong>:name</strong> correctamente.',
+    'tickets_attached'               => 'Sus entradas se adjuntan a este correo electrónico. También puede ver los detalles de su pedido y descargar sus entradas en:',
+];
\ No newline at end of file
diff --git a/resources/lang/es/Public_ViewEvent.php b/resources/lang/es/Public_ViewEvent.php
index c54dc3840..61ecfee0d 100644
--- a/resources/lang/es/Public_ViewEvent.php
+++ b/resources/lang/es/Public_ViewEvent.php
@@ -9,6 +9,7 @@
     'below_tickets'                     => 'Selecciona el número de entradas y haz clic en "comprar". En la siguiente pantalla podrás proceder al pago.',
     'booking_fee'                       => 'Gasto de gestión',
     'booking_fees'                      => 'Gastos de gestión',
+    'business_details'                  => '',
     'card_number'                       => 'Número de tarjeta',
     'checkout_submit'                   => 'Realizar Pedido',
     'confirmation_email'                => 'y se te ha enviado un correo electrónico de confirmación.',
@@ -39,8 +40,12 @@
     'offline_payment_methods_available' => 'Métodos de pago fuera de línea disponibles',
     'order_attendees'                   => 'Asistentes del pedido',
     'order_awaiting_payment'            => 'Este pedido está a la espera de pago. Por favor, lee las siguientes instrucciones sobre cómo realizar el pago.',
+    'order_date'                        => 'Fecha del pedido',
     'order_details'                     => 'Detalles del pedido',
+    'order_email'                       => 'Order Email',
     'order_items'                       => 'Elementos del pedido',
+    'order_name'                        => 'Nombre del pedido',
+    'order_reference'                   => 'Referencia de pedido',
     'order_summary'                     => 'Resumen del pedido',
     'organiser_dashboard'               => 'Panel de control del organizador',
     'pay_using_offline_methods'         => 'Paga usando métodos fuera de línea',
diff --git a/resources/lang/es/Social.php b/resources/lang/es/Social.php
index 391c4e8d9..99c187c38 100644
--- a/resources/lang/es/Social.php
+++ b/resources/lang/es/Social.php
@@ -3,7 +3,6 @@
 return array(
     'email'                  => 'Correo electrónico',
     'facebook'               => 'Facebook',
-    'g+'                     => 'Google+',
     'linkedin'               => 'LinkedIn',
     'pinterest'              => 'Pinterest',
     'share_buttons_to_show'  => 'Botones Compartir para mostrar',
diff --git a/resources/lang/es/basic.php b/resources/lang/es/basic.php
index 42534294e..c12d73d4a 100644
--- a/resources/lang/es/basic.php
+++ b/resources/lang/es/basic.php
@@ -21,6 +21,7 @@
     'event_page_design' => 'Diseño de la página del evento',
     'export'            => 'Exportar',
     'general'           => 'General',
+    'hello'             => 'Hola',
     'hours'             => 'horas',
     'main_menu'         => 'Menú Principal',
     'manage'            => 'Gestionar',
@@ -37,6 +38,7 @@
     'social'            => 'Social',
     'submit'            => 'Enviar',
     'success'           => 'Éxito',
+    'thank_you'         => 'Gracias',
     'ticket_design'     => 'Diseño de Entradas',
     'tickets'           => 'entradas',
     'TOP'               => 'TOP',
diff --git a/resources/lang/es/messages.php b/resources/lang/es/messages.php
deleted file mode 100644
index 22836f9d5..000000000
--- a/resources/lang/es/messages.php
+++ /dev/null
@@ -1,147 +0,0 @@
-<?php
-
-return [
-
-    /*
-    |--------------------------------------------------------------------------
-    | Validation Language Lines
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines contain the default error messages used by
-    | the validator class. Some of these rules have multiple versions such
-    | as the size rules. Feel free to tweak each of these messages here.
-    |
-    */
-
-    'accepted'             => ':attribute debe ser aceptado.',
-    'active_url'           => ':attribute no es una URL válida.',
-    'after'                => ':attribute debe ser una fecha posterior a :date.',
-    'after_or_equal'       => ':attribute debe ser una fecha posterior o igual a :date.',
-    'alpha'                => ':attribute sólo debe contener letras.',
-    'alpha_dash'           => ':attribute sólo debe contener letras, números y guiones.',
-    'alpha_num'            => ':attribute sólo debe contener letras y números.',
-    'array'                => ':attribute debe ser un conjunto.',
-    'before'               => ':attribute debe ser una fecha anterior a :date.',
-    'before_or_equal'      => ':attribute debe ser una fecha anterior o igual a :date.',
-    'between'              => [
-        'numeric' => ':attribute tiene que estar entre :min - :max.',
-        'file'    => ':attribute debe pesar entre :min - :max kilobytes.',
-        'string'  => ':attribute tiene que tener entre :min - :max caracteres.',
-        'array'   => ':attribute tiene que tener entre :min - :max ítems.',
-    ],
-    'boolean'              => 'El campo :attribute debe tener un valor verdadero o falso.',
-    'confirmed'            => 'La confirmación de :attribute no coincide.',
-    'date'                 => ':attribute no es una fecha válida.',
-    'date_format'          => ':attribute no corresponde al formato :format.',
-    'different'            => ':attribute y :other deben ser diferentes.',
-    'digits'               => ':attribute debe tener :digits dígitos.',
-    'digits_between'       => ':attribute debe tener entre :min y :max dígitos.',
-    'dimensions'           => 'Las dimensiones de la imagen :attribute no son válidas.',
-    'distinct'             => 'El campo :attribute contiene un valor duplicado.',
-    'email'                => ':attribute no es un correo válido',
-    'exists'               => ':attribute es inválido.',
-    'file'                 => 'El campo :attribute debe ser un archivo.',
-    'filled'               => 'El campo :attribute es obligatorio.',
-    'gt'                   => [
-        'numeric' => 'El campo :attribute debe ser mayor que :value.',
-        'file'    => 'El campo :attribute debe tener más de :value kilobytes.',
-        'string'  => 'El campo :attribute debe tener más de :value caracteres.',
-        'array'   => 'El campo :attribute debe tener más de :value elementos.',
-    ],
-    'gte'                  => [
-        'numeric' => 'El campo :attribute debe ser como mínimo :value.',
-        'file'    => 'El campo :attribute debe tener como mínimo :value kilobytes.',
-        'string'  => 'El campo :attribute debe tener como mínimo :value caracteres.',
-        'array'   => 'El campo :attribute debe tener como mínimo :value elementos.',
-    ],
-    'image'                => ':attribute debe ser una imagen.',
-    'in'                   => ':attribute es inválido.',
-    'in_array'             => 'El campo :attribute no existe en :other.',
-    'integer'              => ':attribute debe ser un número entero.',
-    'ip'                   => ':attribute debe ser una dirección IP válida.',
-    'ipv4'                 => ':attribute debe ser un dirección IPv4 válida',
-    'ipv6'                 => ':attribute debe ser un dirección IPv6 válida.',
-    'json'                 => 'El campo :attribute debe tener una cadena JSON válida.',
-    'lt'                   => [
-        'numeric' => 'El campo :attribute debe ser menor que :value.',
-        'file'    => 'El campo :attribute debe tener menos de :value kilobytes.',
-        'string'  => 'El campo :attribute debe tener menos de :value caracteres.',
-        'array'   => 'El campo :attribute debe tener menos de :value elementos.',
-    ],
-    'lte'                  => [
-        'numeric' => 'El campo :attribute debe ser como máximo :value.',
-        'file'    => 'El campo :attribute debe tener como máximo :value kilobytes.',
-        'string'  => 'El campo :attribute debe tener como máximo :value caracteres.',
-        'array'   => 'El campo :attribute debe tener como máximo :value elementos.',
-    ],
-    'max'                  => [
-        'numeric' => ':attribute no debe ser mayor a :max.',
-        'file'    => ':attribute no debe ser mayor que :max kilobytes.',
-        'string'  => ':attribute no debe ser mayor que :max caracteres.',
-        'array'   => ':attribute no debe tener más de :max elementos.',
-    ],
-    'mimes'                => ':attribute debe ser un archivo con formato: :values.',
-    'mimetypes'            => ':attribute debe ser un archivo con formato: :values.',
-    'min'                  => [
-        'numeric' => 'El tamaño de :attribute debe ser de al menos :min.',
-        'file'    => 'El tamaño de :attribute debe ser de al menos :min kilobytes.',
-        'string'  => ':attribute debe contener al menos :min caracteres.',
-        'array'   => ':attribute debe tener al menos :min elementos.',
-    ],
-    'not_in'               => ':attribute es inválido.',
-    'not_regex'            => 'El formato del campo :attribute no es válido.',
-    'numeric'              => ':attribute debe ser numérico.',
-    'present'              => 'El campo :attribute debe estar presente.',
-    'regex'                => 'El formato de :attribute es inválido.',
-    'required'             => 'El campo :attribute es obligatorio.',
-    'required_if'          => 'El campo :attribute es obligatorio cuando :other es :value.',
-    'required_unless'      => 'El campo :attribute es obligatorio a menos que :other esté en :values.',
-    'required_with'        => 'El campo :attribute es obligatorio cuando :values está presente.',
-    'required_with_all'    => 'El campo :attribute es obligatorio cuando :values está presente.',
-    'required_without'     => 'El campo :attribute es obligatorio cuando :values no está presente.',
-    'required_without_all' => 'El campo :attribute es obligatorio cuando ninguno de :values estén presentes.',
-    'same'                 => ':attribute y :other deben coincidir.',
-    'size'                 => [
-        'numeric' => 'El tamaño de :attribute debe ser :size.',
-        'file'    => 'El tamaño de :attribute debe ser :size kilobytes.',
-        'string'  => ':attribute debe contener :size caracteres.',
-        'array'   => ':attribute debe contener :size elementos.',
-    ],
-    'string'               => 'El campo :attribute debe ser una cadena de caracteres.',
-    'timezone'             => 'El :attribute debe ser una zona válida.',
-    'unique'               => ':attribute ya ha sido registrado.',
-    'uploaded'             => 'Subir :attribute ha fallado.',
-    'url'                  => 'El formato :attribute es inválido.',
-    'uuid'                 => 'El campo :attribute debe ser un UUID válido.',
-
-    /*
-    |--------------------------------------------------------------------------
-    | 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' => [
-        'terms_agreed' => [
-            'required' => 'Por favor, acepte nuestros Términos de Servicio.'
-        ]
-    ],
-
-    /*
-    |--------------------------------------------------------------------------
-    | Custom Validation Attributes
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines are used to swap attribute place-holders
-    | with something more reader friendly such as E-Mail Address instead
-    | of "email". This simply helps us make messages a little cleaner.
-    |
-    */
-
-    'attributes' => [],
-
-];
diff --git a/resources/lang/fr/Email.php b/resources/lang/fr/Email.php
index 0367d2a21..1725476e9 100644
--- a/resources/lang/fr/Email.php
+++ b/resources/lang/fr/Email.php
@@ -6,7 +6,9 @@
 return array (
   //==================================== Translations ====================================//
   'attendize_register' => 'Merci de votre inscription à Attendize',
+  'contact_organiser' => 'Vous pouvez contacter :organiser_name directement à <a href="mailto::organiser_email">:organiser_email</a>, ou en répondant à ce message.',
   'invite_user' => ':name vous a ajouté à un compte :app',
+  'message_received_from_organiser' => "Vous avez reçu un message de :organiser_name en rapport avec l'événement :event_title.",
   'message_regarding_event' => 'Message au sujet de : :event',
   'organiser_copy' => '[Copie Organisateur]',
   'refund_from_name' => 'Vous avez reçu un remboursement de :name',
diff --git a/resources/lang/fr/Order_Emails.php b/resources/lang/fr/Order_Emails.php
new file mode 100644
index 000000000..1eb28d55e
--- /dev/null
+++ b/resources/lang/fr/Order_Emails.php
@@ -0,0 +1,8 @@
+<?php
+return [
+    'received_new_order'             => "Vous avez reçu une nouvelle commande poour l'événement",
+    'order_still_awaiting_payment'   => "Note: cette commande attend encore d'être réglée.",
+    'manage_order'                   => "Vous pouvez gérer cette commande sur",
+    'successful_order'               => "Votre commande pour l'événement <strong>:name</strong> a été prise en compte.",
+    'tickets_attached'               => "Vos billets sont joints à ce message. Vous pouvez aussi voir les détails de votre commande et télécharger vos billets sur:",
+];
\ No newline at end of file
diff --git a/resources/lang/fr/Public_ViewEvent.php b/resources/lang/fr/Public_ViewEvent.php
index 8f4691769..1c43422c3 100644
--- a/resources/lang/fr/Public_ViewEvent.php
+++ b/resources/lang/fr/Public_ViewEvent.php
@@ -20,6 +20,7 @@
   'below_tickets' => 'Sélectionner le nombre de billets et cliquez sur "enregistrer". Sur l\'écran suivant vous pourrez les payer.',
   'booking_fee' => 'Frais de réservation',
   'booking_fees' => 'Frais de réservation',
+  // 'business_details' => ''
   'card_number' => 'Numéro de carte',
   'checkout_submit' => 'Enregistrer',
   'confirmation_email' => 'et un message de confirmation vous a été envoyé.',
@@ -47,8 +48,12 @@
   'offline_payment_methods_available' => 'Méthodes de paiement hors ligne disponible',
   'order_attendees' => 'Commande participants',
   'order_awaiting_payment' => 'Cette commande est en attente de paiement. Merci de lire les instructions ci-dessous pour savoir comment procéder au paiement.',
+  'order_date' => 'Date de la commande',
   'order_details' => 'Détails de la commande',
+  'order_email' => 'Courriel de la commande',
   'order_items' => 'Éléments de la commande',
+  'oder_name' => 'Nom de la commande',
+  'order_reference' => 'Référence de la commande',
   'order_summary' => 'Résumé de la commande',
   'organiser_dashboard' => 'Tableau de bord de l\'organisateur',
   'pay_using_offline_methods' => 'Payer via une méthode hors ligne',
diff --git a/resources/lang/fr/Social.php b/resources/lang/fr/Social.php
index fa174da53..14ae6889d 100644
--- a/resources/lang/fr/Social.php
+++ b/resources/lang/fr/Social.php
@@ -10,7 +10,6 @@
   //==================================== Translations ====================================//
   'email' => 'Courriel',
   'facebook' => 'Facebook',
-  'g+' => 'Google+',
   'linkedin' => 'LinkedIn',
   'share_buttons_to_show' => 'Boutons de partage à montrer',
   'social_settings' => 'Paramètres sociaux',
diff --git a/resources/lang/fr/basic.php b/resources/lang/fr/basic.php
index e6a99ac7f..a01f11394 100644
--- a/resources/lang/fr/basic.php
+++ b/resources/lang/fr/basic.php
@@ -25,6 +25,7 @@
   'event_page_design' => 'Conception de la page de l\'évènement',
   'export' => 'Exporter',
   'general' => 'Général',
+  'hello' => 'Bonjour',
   'hours' => 'heures',
   'main_menu' => 'Menu principal',
   'manage' => 'Gestion',
@@ -43,7 +44,8 @@
   'success' => 'Succès',
   'ticket_design' => 'Conception du billet',
   'tickets' => 'Billets',
-    'TOP' => 'TOP',
+  'thank_you' => 'Merci',
+  'TOP' => 'TOP',
   'total' => 'total',
   'whoops' => 'Oops !',
   'yes' => 'Oui',
diff --git a/resources/lang/fr/messages.php b/resources/lang/fr/messages.php
deleted file mode 100644
index cb4e3908e..000000000
--- a/resources/lang/fr/messages.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-return [
-
-    /*
-    |--------------------------------------------------------------------------
-    | Validation Language Lines
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines contain the default error messages used by
-    | the validator class. Some of these rules have multiple versions such
-    | as the size rules. Feel free to tweak each of these messages here.
-    |
-    */
-
-    'accepted'             => ':attribute doit être accepté.',
-    'active_url'           => ':attribute n\'est pas une URL valide.',
-    'after'                => ':attribute doit être une date après :date.',
-    'alpha'                => ':attribute ne doit contenir que des lettres.',
-    'alpha_dash'           => ':attribute ne peut contenir que des lettres, des chiffres et des tirets.',
-    'alpha_num'            => ':attribute ne peut contenir que des lettres et des chiffres.',
-    'array'                => ':attribute doit être un tableau.',
-    'before'               => ':attribute doit être une date antérieure à :date.',
-    'between'              => [
-        'numeric' => ':attribute doit être entre :min et :max.',
-        'file'    => ':attribute doit être entre :min et :max kilobytes.',
-        'string'  => ':attribute doit être entre :min et :max caractères.',
-        'array'   => ':attribute doit avoir entre :min et :max éléments.',
-    ],
-    'boolean'              => 'Le champ :attribute doit être vrai ou faux.',
-    'confirmed'            => 'La confirmation :attribute ne convient pas.',
-    'date'                 => ':attribute n\'est pas une date valide.',
-    'date_format'          => ':attribute ne correspond pas au format :format.',
-    'different'            => ':attribute et :other ne doivent pas être identiques.',
-    'digits'               => ':attribute doit contenir :digits chiffres.',
-    'digits_between'       => ':attribute doit compter entre :min et :max chiffres.',
-    'email'                => ':attribute doit être une adresse de courriel valide.',
-    'filled'               => 'Le champ :attribute est requis.',
-    'exists'               => 'Le choix :attribute est invalide.',
-    'image'                => ':attribute doit être une image.',
-    'in'                   => 'Le choix :attribute est invalide.',
-    'integer'              => ':attribute doit être un nombre entier.',
-    'ip'                   => ':attribute doit être une adresse IP valide.',
-    'max'                  => [
-        'numeric' => ':attribute ne doit pas être plus grand que :max.',
-        'file'    => ':attribute ne doit pas être plus grand que :max kilobytes.',
-        'string'  => ':attribute ne doit pas contenir plus de :max caractères.',
-        'array'   => ':attribute ne doit pas avoir plus de :max éléments.',
-    ],
-    'mimes'                => ':attribute doit être du type : :values.',
-    'min'                  => [
-        'numeric' => ':attribute doit être au moins :min.',
-        'file'    => ':attribute doit faire au moins :min kilobytes.',
-        'string'  => ':attribute doit contenir au moins :min caractères.',
-        'array'   => ':attribute doit contenir au moins least :min éléments.',
-    ],
-    'not_in'               => 'Le choix :attribute est invalide.',
-    'numeric'              => ':attribute doit être un nombre.',
-    'regex'                => 'Le format de :attribute n\'est pas valide.',
-    'required'             => 'Le champ :attribute est requis.',
-    'required_if'          => 'Le champ :attribute est requis quand :other est :value.',
-    'required_with'        => 'Le champ :attribute est requis quand :values est présent.',
-    'required_with_all'    => 'Le champ :attribute est requis quand :values est présent.',
-    'required_without'     => 'Le champ :attribute est requis quand :values n\'est pas présent.',
-    'required_without_all' => 'Le champ :attribute est requis quand aucun :values n\'est présent.',
-    'same'                 => 'Le champ :attribute et :other doivent correspondre.',
-    'size'                 => [
-        'numeric' => ':attribute doit faire :size.',
-        'file'    => ':attribute doit faire :size kilobytes.',
-        'string'  => ':attribute doit faire :size caractères.',
-        'array'   => ':attribute doit contenir :size éléments.',
-    ],
-    'unique'               => ':attribute a déjà été pris.',
-    'url'                  => 'Le format de :attribute n\'est pas valide.',
-    'timezone'             => ':attribute doit être un fuseau valide.',
-
-    /*
-    |--------------------------------------------------------------------------
-    | 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' => [
-        'terms_agreed' => [
-            'required' => 'Merci d\'accepter nos conditions générales d\'utilisation.'
-        ]
-    ],
-
-    /*
-    |--------------------------------------------------------------------------
-    | Custom Validation Attributes
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines are used to swap attribute place-holders
-    | with something more reader friendly such as E-Mail Address instead
-    | of "email". This simply helps us make messages a little cleaner.
-    |
-    */
-
-    'attributes' => [],
-
-];
diff --git a/resources/lang/it/Email.php b/resources/lang/it/Email.php
index 02c77b34a..01f485696 100644
--- a/resources/lang/it/Email.php
+++ b/resources/lang/it/Email.php
@@ -2,7 +2,9 @@
 
 return [
     'attendize_register' => 'Grazie per esserti registrato su Attendize',
+    'contact_organiser' => 'Puoi contattare :organiser_name direttamente via <a href="mailto::organiser_email">:organiser_email</a> o rispondendo a questa email.',
     'invite_user' => ':name ti ha aggiunto ad un account :app ',
+    'message_received_from_organiser' => "Hai ricevuto un messaggio da :organiser_name per l'evento :event_title.",
     'message_regarding_event' => 'Messaggio relativo a :event',
     'organiser_copy' => '[Copia Organizzatore]',
     'refund_from_name' => 'Hai ricevuto un rimborso da :name',
diff --git a/resources/lang/it/Order_Emails.php b/resources/lang/it/Order_Emails.php
new file mode 100644
index 000000000..e541bf607
--- /dev/null
+++ b/resources/lang/it/Order_Emails.php
@@ -0,0 +1,8 @@
+<?php
+return [
+    'received_new_order'             => "Hai ricevuto un nuovo ordine per l'evento",
+    'order_still_awaiting_payment'   => "Nota: il pagamento per questo ordine deve ancora essere processato.",
+    'manage_order'                   => "Puoi gestire questo ordine visitando",
+    'successful_order'               => "Il tuo ordine per l'evento <strong>:name</strong> è confermato.",
+    'tickets_attached'               => "I tuoi biglietti sono allegati a questa mail. Puoi vedere tutte le informazioni relative al tuo ordine e scaricare i biglietti visitando:",
+];
\ No newline at end of file
diff --git a/resources/lang/it/Public_ViewEvent.php b/resources/lang/it/Public_ViewEvent.php
index 1e106ebe6..c1a9ecf45 100644
--- a/resources/lang/it/Public_ViewEvent.php
+++ b/resources/lang/it/Public_ViewEvent.php
@@ -25,6 +25,7 @@
     'business_address_state_province' => 'Stato / Provincia',
     'business_address_city' => 'Città',
     'business_address_code' => 'Codice',
+    'business_details' => 'Dettagli Azienda',
     'card_number' => 'Numero di carta',
     'checkout_submit' => 'Checkout',
     'checkout_order' => 'Continua al pagamento',
@@ -54,8 +55,12 @@
     'offline_payment_methods_available' => 'Metodi di pagamento offline disponibili',
     'order_attendees' => 'Partecipanti',
     'order_awaiting_payment' => 'Questo ordine è in attesa di pagamento. Si prega di leggere le istruzioni su come effettuare il pagamento.',
+    'order_date' => 'Data',
     'order_details' => 'Dettagli ordine',
+    'order_email' => 'Email',
     'order_items' => 'Articoli',
+    'order_name' => 'Nome',
+    'order_reference' => 'Riferimento',
     'order_summary' => 'Riepilogo dell\'ordine',
     'organiser_dashboard' => 'Dashboard Organizzatore',
     'pay_using_offline_methods' => 'Paga con metodi offline',
diff --git a/resources/lang/it/Social.php b/resources/lang/it/Social.php
index f65f87045..ae720ddc0 100644
--- a/resources/lang/it/Social.php
+++ b/resources/lang/it/Social.php
@@ -4,7 +4,6 @@
     'pinterest' => 'Pinterest',
     'email' => 'E-mail',
     'facebook' => 'Facebook',
-    'g+' => 'Google+',
     'linkedin' => 'LinkedIn',
     'share_buttons_to_show' => 'Pulsanti di condivisione da mostrare',
     'social_settings' => 'Impostazioni Social',
diff --git a/resources/lang/it/basic.php b/resources/lang/it/basic.php
index c7904ff6c..5bc6af0f4 100644
--- a/resources/lang/it/basic.php
+++ b/resources/lang/it/basic.php
@@ -23,6 +23,7 @@
     'event_page_design' => 'Design Pagina Evento',
     'export' => 'Esporta',
     'general' => 'Generale',
+    'hello' => 'Ciao',
     'hours' => 'ore',
     'main_menu' => 'Menù principale',
     'manage' => 'Gestisci',
@@ -41,6 +42,7 @@
     'ticket_design' => 'Ticket Design',
     'access_codes' => 'Codici di accesso',
     'tickets' => 'Biglietti',
+    'thank_you' => 'Grazie',
     'TOP' => 'TOP',
     'total' => 'totale',
     'whoops' => 'Ops!',
diff --git a/resources/lang/it/messages.php b/resources/lang/it/messages.php
deleted file mode 100644
index 2db28719b..000000000
--- a/resources/lang/it/messages.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-return [
-
-    /*
-    |--------------------------------------------------------------------------
-    | Validation Language Lines
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines contain the default error messages used by
-    | the validator class. Some of these rules have multiple versions such
-    | as the size rules. Feel free to tweak each of these messages here.
-    |
-    */
-
-    'accepted' => ':attribute deve essere accettata .',
-    'active_url' => ':attribute non è una URL valido.',
-    'after' => ':attribute deve essere una data dopo :date.',
-    'alpha' => ':attribute può contenere solo lettere.',
-    'alpha_dash' => ':attribute può contenere solo lettere, numeri e trattini.',
-    'alpha_num' => ':attribute può contenere solo lettere e numeri.',
-    'array' => ':attribute deve essere una matrice.',
-    'before' => ':attribute deve essere una data anteriore :date.',
-    'between' => [
-        'numeric' => ':attribute deve essere compreso tra :min e :max.',
-        'file' => ':attribute deve essere compreso tra :min e :max kilobyte.',
-        'string' => ':attribute deve essere compreso tra :min e :max caratteri.',
-        'array' => ':attribute deve avere tra :min e :max oggetti.',
-    ],
-    'boolean' => ':attribute attributo deve essere vero o falso.',
-    'confirmed' => ':attribute attributo non corrisponde.',
-    'date' => ':attribute non è una data valida.',
-    'date_format' => ':attribute non corrisponde al formato :format.',
-    'different' => ':attribute e :other devono essere differenti.',
-    'digits' => ':attribute deve essere di :digits cifre.',
-    'digits_between' => ':attribute deve essere compreso tra :min e :max cifre.',
-    'email' => ':attribute deve essere un indirizzo email valido.',
-    'filled' => ':attribute è obbligatorio.',
-    'exists' => ':attribute selezionato non è valido.',
-    'image' => ':attribute deve essere un\'immagine.',
-    'in' => ':attribute selezionato non è valido.',
-    'integer' => ':attribute deve essere un numero intero.',
-    'ip' => ':attribute deve essere un indirizzo IP valido.',
-    'max' => [
-        'numeric' => ':attribute può non essere superiore a :max.',
-        'file' => ':attribute può non essere superiore a :max kilobyte.',
-        'string' => ':attribute può non essere superiore a :max caratteri.',
-        'array' => ':attribute non può avere più di :max oggetti.',
-    ],
-    'mimes' => ':attribute deve essere un file di tipo :values',
-    'min' => [
-        'numeric' => ':attribute deve essere almeno :min.',
-        'file' => ':attribute deve essere almeno :min kilobyte.',
-        'string' => ':attribute deve essere almeno :min caratteri.',
-        'array' => ':attribute deve avere almeno :min oggetti.',
-    ],
-    'not_in' => ':attribute selezionato non è valido.',
-    'numeric' => ':attribute deve essere un numero.',
-    'regex' => 'Il formato :format dell\'attributo non è valido.',
-    'required' => ':attribute è obbligatorio.',
-    'required_if' => ':attribute attributo è richiesto quando :other è :value.',
-    'required_with' => ':attribute attributo è richiesto quando :values è presente.',
-    'required_with_all' => ':attribute attributo è richiesto quando :values è presente.',
-    'required_without' => ':attribute attributo è richiesto quando :values non è presente.',
-    'required_without_all' => ':attribute attributo è richiesto quando nessuno di: valori è presente.',
-    'same' => ':attribute e :other devono combaciare.',
-    'size' => [
-        'numeric' => ':attribute deve essere :size.',
-        'file' => ':attribute deve essere :size kilobyte di dimensione.',
-        'string' => ':attribute deve essere :size caratteri di dimensioni.',
-        'array' => ':attribute deve contenere :items oggetti.',
-    ],
-    'unique' => ':attribute è già stato preso.',
-    'url' => 'Il formato di :attribute non è valido.',
-    'timezone' => ':attribute deve essere un orario valido.',
-
-    /*
-    |--------------------------------------------------------------------------
-    | 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' => [
-        'terms_agreed' => [
-            'required' => 'Per favore accetta i Termini e Condizioni d\'uso.'
-        ]
-    ],
-
-    /*
-    |--------------------------------------------------------------------------
-    | Custom Validation Attributes
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines are used to swap attribute place-holders
-    | with something more reader friendly such as E-Mail Address instead
-    | of "email". This simply helps us make messages a little cleaner.
-    |
-    */
-
-    'attributes' => [],
-
-];
diff --git a/resources/lang/ja/Email.php b/resources/lang/ja/Email.php
index eff9295cb..1fa959950 100644
--- a/resources/lang/ja/Email.php
+++ b/resources/lang/ja/Email.php
@@ -2,7 +2,9 @@
 
 return array(
     'attendize_register'      => 'Attendizeに登録していただきありがとうございます',
+    'contact_organiser' => ':organiser_name に連絡するには <a href="mailto::organiser_email">:organiser_email</a>、またはこのメールに返信してください。',
     'invite_user'             => ':nameがあなたを:appアカウントに追加しました。',
+  'message_received_from_organiser' => ':event_title に関して :organiser_name からメッセージを受け取りました。',
     'message_regarding_event' => ':eventに関するメッセージ',
     'organiser_copy'          => '[主催者コピー]',
     'refund_from_name'        => 'あなたは:nameから払い戻しを受けました。',
diff --git a/resources/lang/ja/Order_Emails.php b/resources/lang/ja/Order_Emails.php
new file mode 100644
index 000000000..45fda939f
--- /dev/null
+++ b/resources/lang/ja/Order_Emails.php
@@ -0,0 +1,8 @@
+<?php
+return [
+    'received_new_order'             => 'イベント',
+    'order_still_awaiting_payment'   => 'ご注意：この注文にはまだ支払いが必要です。',
+    'manage_order'                   => 'この注文を管理できます。',
+    'successful_order'               => 'イベント<strong>:name</strong>に対するあなたの注文は成功しました。',
+    'tickets_attached'               => 'あなたのチケットはこのEメールに添付されています。 また、注文の詳細を表示して、チケットをダウンロードすることもできます。',
+];
\ No newline at end of file
diff --git a/resources/lang/ja/Public_ViewEvent.php b/resources/lang/ja/Public_ViewEvent.php
index 6bdbfab9a..d7f2ba071 100644
--- a/resources/lang/ja/Public_ViewEvent.php
+++ b/resources/lang/ja/Public_ViewEvent.php
@@ -16,6 +16,7 @@
     'below_tickets'                     => 'チケット数を選択して「購入に進む」をクリックしてください。 次の画面で支払いを行います。',
     'booking_fee'                       => '予約料',
     'booking_fees'                      => '予約料',
+    // 'business_details' => '',
     'card_number'                       => 'カード番号',
     'checkout_submit'                   => 'チェックアウト',
     'confirmation_email'                => '確認メールが送信されました。',
@@ -43,8 +44,12 @@
     'offline_payment_methods_available' => '利用可能なオフライン支払い方法',
     'order_attendees'                   => '出席者の注文',
     'order_awaiting_payment'            => 'この注文は支払い待ちです。 支払い方法については、下記の説明をお読みください。',
+    'order_date'                        => '注文日',
     'order_details'                     => '注文の詳細',
+    'order_email'                       => '注文メール',
     'order_items'                       => '注文商品',
+    'order_name'                        => '注文名',
+    'order_reference'                   => '注文照合',
     'order_summary'                     => '注文概要',
     'organiser_dashboard'               => '主催者ダッシュボード',
     'pay_using_offline_methods'         => 'オフラインで支払う',
diff --git a/resources/lang/ja/Social.php b/resources/lang/ja/Social.php
index 5887dec1c..f22c63675 100644
--- a/resources/lang/ja/Social.php
+++ b/resources/lang/ja/Social.php
@@ -7,7 +7,6 @@
     //==================================== Translations ====================================//
     'email'                  => 'Email',
     'facebook'               => 'Facebook',
-    'g+'                     => 'Google+',
     'linkedin'               => 'LinkedIn',
     'share_buttons_to_show'  => '表示する共有ボタン',
     'social_settings'        => 'ソーシャル設定',
diff --git a/resources/lang/ja/basic.php b/resources/lang/ja/basic.php
index 730c34e45..6d7bc55c1 100644
--- a/resources/lang/ja/basic.php
+++ b/resources/lang/ja/basic.php
@@ -22,6 +22,7 @@
     'event_page_design' => 'イベントページデザイン',
     'export'            => 'エクスポート',
     'general'           => '全般',
+    'hello'             => 'こんにちは、',
     'hours'             => '時間',
     'main_menu'         => 'メインメニュー',
     'manage'            => '管理',
@@ -40,6 +41,7 @@
     'success'           => '成功',
     'ticket_design'     => 'チケットのデザイン',
     'tickets'           => 'チケット',
+    'thank_you'         => 'ありがとう',
     'TOP'               => 'TOP',
     'total'             => '合計',
     'whoops'            => 'おっと!',
diff --git a/resources/lang/ja/messages.php b/resources/lang/ja/messages.php
deleted file mode 100644
index 75170049a..000000000
--- a/resources/lang/ja/messages.php
+++ /dev/null
@@ -1,107 +0,0 @@
-<?php
-
-return [
-
-    /*
-    |--------------------------------------------------------------------------
-    | Validation Language Lines
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines contain the default error messages used by
-    | the validator class. Some of these rules have multiple versions such
-    | as the size rules. Feel free to tweak each of these messages here.
-    |
-    */
-
-    'accepted'             => ':attributeは受け入れられなければなりません。',
-    'active_url'           => ':attributeは有効なURLではありません。',
-    'after'                => ':attributeは:dateより後の日付でなければなりません。',
-    'alpha'                => ':attributeは文字のみを含むことができます。',
-    'alpha_dash'           => ':attributeには文字、数字、およびハイフンだけを含めることができます。',
-    'alpha_num'            => ':attributeは文字と数字だけを含むことができます。',
-    'array'                => ':attributeは配列でなければなりません。',
-    'before'               => ':attributeは:dateより前の日付でなければなりません。',
-    'between'              => [
-        'numeric' => ':attributeは:minと:maxの間になければなりません。',
-        'file'    => ':attributeは:minから:maxキロバイトまででなければなりません。',
-        'string'  => ':attributeは:min文字と:max文字の間になければなりません。',
-        'array'   => ':attributeは:minから:maxまでの間になければなりません。',
-    ],
-    'boolean'              => ':attributeフィールドはtrueまたはfalseでなければなりません。',
-    'confirmed'            => ':attributeの確認が一致しません。',
-    'date'                 => ':attributeは有効な日付ではありません。',
-    'date_format'          => ':attributeがフォーマット:formatと一致しません。',
-    'different'            => ':attributeと:otherは異なる必要があります。',
-    'digits'               => ':attributeは数字でなければなりません。',
-    'digits_between'       => ':attributeは:minと:maxの間になければなりません。',
-    'email'                => ':attributeは有効なメールアドレスでなければなりません。',
-    'filled'               => ':attributeフィールドは必須です。',
-    'exists'               => '選択した:attributeが無効です。',
-    'image'                => ':attributeは画像でなければなりません。',
-    'in'                   => '選択した:attributeが無効です。',
-    'integer'              => ':attributeは整数でなければなりません。',
-    'ip'                   => ':attributeは有効なIPアドレスでなければなりません。',
-    'max'                  => [
-        'numeric' => ':attributeは:maxより大きくてはいけません',
-        'file'    => ':attributeは:maxキロバイトより大きくてはいけません。',
-        'string'  => ':attributeは:max文字より大きくてはいけません。',
-        'array'   => ':attributeは:max個以上の項目を持つことはできません。',
-    ],
-    'mimes'                => ':attributeは:values.型のファイルでなければなりません。',
-    'min'                  => [
-        'numeric' => ':attributeは少なくとも:minでなければなりません。',
-        'file'    => ':attributeは少なくとも:minキロバイトでなければなりません。',
-        'string'  => ':attributeは少なくとも:min文字でなければなりません。',
-        'array'   => ':attributeには少なくとも:min個の項目が必要です。',
-    ],
-    'not_in'               => 'selected:attributeが無効です。',
-    'numeric'              => ':attributeは数字でなければなりません。',
-    'regex'                => ':attributeのフォーマットが無効です。',
-    'required'             => ':attributeフィールドは必須です。',
-    'required_if'          => ':otherフィールドが:valueの場合、:attributeフィールドは必須です。',
-    'required_with'        => ':valuesが存在する場合、:attributeフィールドは必須です。',
-    'required_with_all'    => ':valuesが存在する場合、:attributeフィールドは必須です。',
-    'required_without'     => ':valuesが存在しない場合は:attributeフィールドが必須です。',
-    'required_without_all' => ':attributeフィールドは:valuesがない場合は必須です。',
-    'same'                 => ':attributeと:otherは一致しなければなりません。',
-    'size'                 => [
-        'numeric' => ':attributeは:sizeでなければなりません。',
-        'file'    => ':attributeは:sizeキロバイトなければなりません。',
-        'string'  => ':attributeは:size文字でなければなりません。',
-        'array'   => ':attributeは:sizeつの項目を含まなければなりません。',
-    ],
-    'unique'               => ':attributeは既に使われています。',
-    'url'                  => ':attributeの形式が無効です。',
-    'timezone'             => ':attributeは有効なゾーンでなければなりません。',
-
-    /*
-    |--------------------------------------------------------------------------
-    | 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' => [
-        'terms_agreed' => [
-            'required' => '利用規約に同意してください。'
-        ]
-    ],
-
-    /*
-    |--------------------------------------------------------------------------
-    | Custom Validation Attributes
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines are used to swap attribute place-holders
-    | with something more reader friendly such as E-Mail Address instead
-    | of "email". This simply helps us make messages a little cleaner.
-    |
-    */
-
-    'attributes' => [],
-
-];
diff --git a/resources/lang/nl/Order_Emails.php b/resources/lang/nl/Order_Emails.php
new file mode 100644
index 000000000..093e69ebe
--- /dev/null
+++ b/resources/lang/nl/Order_Emails.php
@@ -0,0 +1,6 @@
+<?php
+return [
+    // 'received_new_order'             => '',
+    // 'order_still_awaiting_payment'   => '',
+    // 'manage_order'                   => '',
+];
\ No newline at end of file
diff --git a/resources/lang/nl/Public_ViewEvent.php b/resources/lang/nl/Public_ViewEvent.php
index 7b6c06027..e1a60aef0 100644
--- a/resources/lang/nl/Public_ViewEvent.php
+++ b/resources/lang/nl/Public_ViewEvent.php
@@ -16,6 +16,7 @@
   'below_tickets' => 'Selecteer het aantal tickets en klik op "registreer". Op de volgende pagina kunt u betalen.',
   'booking_fee' => 'Boekingskosten',
   'booking_fees' => 'Boekingskosten',
+  // 'business_details' => '',
   'card_number' => 'Kaartnummer',
   'checkout_submit' => 'Afrekenen',
   'confirmation_email' => 'en een bevestigingsmail is naar u toegestuurd.',
@@ -44,8 +45,12 @@
   'offline_payment_methods_available' => 'Offline betalen is mogelijk',
   'order_attendees' => 'Bestellingen bezoekers',
   'order_awaiting_payment' => 'Deze bestelling is in afwachting van betaling. Hieronder staat beschreven hoe u de bestelling kan betalen.',
+  'order_date' => '',
   'order_details' => 'Bestelling Details',
+  'order_email' => '',
   'order_items' => 'Artikelen Bestelling',
+  'order_name' => '',
+  'order_reference' => '',
   'order_summary' => 'Samenvatting Bestelling',
   'organiser_dashboard' => 'Organisator Dashboard',
   'pay_using_offline_methods' => 'Maak gebruik van offline betalingen',
diff --git a/resources/lang/nl/Social.php b/resources/lang/nl/Social.php
index e56192f23..a50d094cb 100644
--- a/resources/lang/nl/Social.php
+++ b/resources/lang/nl/Social.php
@@ -10,7 +10,6 @@
   //==================================== Translations ====================================//
   'email' => 'E-mail',
   'facebook' => 'Facebook',
-  'g+' => 'Google+',
   'linkedin' => 'LinkedIn',
   'share_buttons_to_show' => 'Deel knoppen voor weergave',
   'social_settings' => 'Socialmedia instellingen',
diff --git a/resources/lang/nl/basic.php b/resources/lang/nl/basic.php
index 3d83c06ca..1830872a9 100644
--- a/resources/lang/nl/basic.php
+++ b/resources/lang/nl/basic.php
@@ -28,6 +28,7 @@
   'export' => 'Exporteren',
   'general' => 'Algemeen',
   'hours' => 'uren',
+  // 'hello' => '',
   'main_menu' => 'Hoofdmenu',
   'manage' => 'Beheren',
   'message' => 'Bericht',
@@ -46,6 +47,7 @@
   'ticket_design' => 'Ticket Design',
   'access_codes' => 'Toegangscodes',
   'tickets' => 'Tickets',
+  'thank_you' => '',
   'TOP' => 'TOP',
   'total' => 'totaal',
   'whoops' => 'Whoops!',
diff --git a/resources/lang/nl/messages.php b/resources/lang/nl/messages.php
deleted file mode 100644
index a0acc7271..000000000
--- a/resources/lang/nl/messages.php
+++ /dev/null
@@ -1,114 +0,0 @@
-<?php
-/****************************************************************************************
-*    Title: Validation Language Lines (Dutch)
-*    Author: Johnhout
-*    Date: Feb 3, 2015
-*    Availability: https://gist.github.com/johnhout/055d2c039cfb7574d657
-*
-***************************************************************************************/
-
-return [
-
-    /*
-    |--------------------------------------------------------------------------
-    | Validation Language Lines
-    |--------------------------------------------------------------------------
-    |
-    | following language lines contain the default error messages used by
-    | the validator class. Some of these rules have multiple versions such
-    | as the size rules. Feel free to tweak each of these messages here.
-    |
-    */
-
-	'accepted'             => ':attribute dient te worden geaccepteerd.',
-	'active_url'           => ':attribute is geen geldige URL.',
-	'after'                => ':attribute dient een datum te zijn na :date.',
-	'alpha'                => ':attribute mag alleen letters bevatten.',
-	'alpha_dash'           => ':attribute mag alleen letters, nummers, and strepen bevatten.',
-	'alpha_num'            => ':attribute mag alleen letters en nummers bevatten.',
-	'array'                => ':attribute moet een array zijn.',
-	'before'               => ':attribute moet een datum zijn eerder dan :date.',
-	'between'              => [
-		'numeric' => ':attribute moet tussen :min en :max liggen.',
-		'file'    => ':attribute moet tussen :min en :max kilobytes zijn.',
-		'string'  => ':attribute moet tussen :min en :max karakters lang zijn.',
-		'array'   => ':attribute moet tussen :min en :max items bevatten.',
-	],
-	'boolean'              => ':attribute kan enkel true of false zijn.',
-	'confirmed'            => ':attribute bevestiging komt niet overeen.',
-	'date'                 => ':attribute is geen geldige datum.',
-	'date_format'          => ':attribute komt niet overeen met het formaat :format.',
-	'different'            => ':attribute en :other dienen verschillend te zijn.',
-	'digits'               => ':attribute moet :digits cijfers zijn.',
-	'digits_between'       => ':attribute moet tussen :min en :max cijfers zijn.',
-	'email'                => ':attribute dient een geldig emailadres te zijn.',
-	'filled'               => ':attribute veld is verplicht.',
-	'exists'               => 'Het geselecteerde :attribute is ongeldig.',
-	'image'                => ':attribute dient een afbeelding te zijn.',
-	'in'                   => 'Het geselecteerde :attribute is ongeldig.',
-	'integer'              => ':attribute dient een geheel getal te zijn.',
-	'ip'                   => ':attribute dient een geldig IP adres te zijn.',
-	'max'                  => [
-		'numeric' => ':attribute mag niet groter zijn dan :max.',
-		'file'    => ':attribute mag niet groter zijn dan :max kilobytes.',
-		'string'  => ':attribute mag niet groter zijn dan :max karakters.',
-		'array'   => ':attribute mag niet meer dan :max items bevatten.',
-	],
-	'mimes'                => ':attribute dient een bestand te zijn van het type: :values.',
-	'min'                  => [
-		'numeric' => ':attribute dient minimaal :min te zijn.',
-		'file'    => ':attribute dient minimaal :min kilobytes te zijn.',
-		'string'  => ':attribute dient minimaal :min karakters te bevatten.',
-		'array'   => ':attribute dient minimaal :min items te bevatten.',
-	],
-	'not_in'               => 'Het geselecteerde :attribute is ongeldig.',
-	'numeric'              => 'Het :attribute dient een nummer te zijn.',
-	'regex'                => 'Het :attribute formaat is ongeldig.',
-	'required'             => 'Het :attribute veld is verplicht.',
-	'required_if'          => 'Het :attribute veld is verplicht wanneer :other is :value.',
-	'required_with'        => 'Het :attribute veld is verplicht wanneer :values aanwezig is.',
-	'required_with_all'    => 'Het :attribute veld is verplicht wanneer :values aanwezig is.',
-	'required_without'     => 'Het :attribute veld is verplicht wanneer :values niet aanwezig is.',
-	'required_without_all' => 'Het :attribute veld is verplicht wanneer geen van :values aanwezig is.',
-	'same'                 => 'Het :attribute en :other moeten hetzelfde zijn.',
-	'size'                 => [
-		'numeric' => ':attribute moet :size zijn.',
-		'file'    => ':attribute moet :size kilobytes groot zijn.',
-		'string'  => ':attribute moet :size karakters lang zijn.',
-		'array'   => ':attribute moet :size items bevatten.',
-	],
-	'unique'               => ':attribute is al bezet.',
-	'url'                  => ':attribute formaat is ongeldig.',
-	'timezone'             => ':attribute moet een geldige tijdszone zijn.',
-
-    /*
-    |--------------------------------------------------------------------------
-    | 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' => [
-        'terms_agreed' => [
-            'required' => 'Accepteren van de algemene voorwaarde verplicht.'
-        ]
-    ],
-
-    /*
-    |--------------------------------------------------------------------------
-    | Custom Validation Attributes
-    |--------------------------------------------------------------------------
-    |
-    | The following language lines are used to swap attribute place-holders
-    | with something more reader friendly such as E-Mail Address instead
-    | of 'email'. This simply helps us make messages a little cleaner.
-    |
-    */
-
-    'attributes' => [],
-
-];
diff --git a/resources/lang/pl/Email.php b/resources/lang/pl/Email.php
index 95f1a0316..81dc8a7ad 100644
--- a/resources/lang/pl/Email.php
+++ b/resources/lang/pl/Email.php
@@ -6,7 +6,9 @@
 return array (
   //==================================== Translations ====================================//
   'attendize_register' => 'Dziękujemy za rejestrację w Attendize',
+  'contact_organiser' => 'Możesz się skontaktować z :organiser_name bezpośrednio, korzystając z adresu email: <a href="mailto::organiser_email">:organiser_email</a>, lub odpowiadając na tego emaila.',
   'invite_user' => ':name dodał cię do konta :app.',
+  'message_received_from_organiser' => 'Otrzymałeś wiadomość od :organiser_name w związku z wydarzeniem :event_title.',
   'message_regarding_event' => 'Wiadomość w związku z: :event',
   'organiser_copy' => '[Kopia Organizatora]',
   'refund_from_name' => 'Otrzymaleś refundację od :name',
diff --git a/resources/lang/pl/Order_Emails.php b/resources/lang/pl/Order_Emails.php
new file mode 100644
index 000000000..65942b3bc
--- /dev/null
+++ b/resources/lang/pl/Order_Emails.php
@@ -0,0 +1,8 @@
+<?php
+return [
+    'received_new_order'             => 'Na ten adres email zostało złożone zamówienie na następujące wydarzenie',
+    'order_still_awaiting_payment'   => 'Uwaga: to zamówienie wymaga opłacenia.',
+    'manage_order'                   => 'Możesz edytować to zamówienie tutaj',
+    'successful_order'               => 'Twoje zamówienie w związku z wydarzeniem <strong>:name</strong> zostało zakończone pomyślnie.',
+    'tickets_attached'               => 'Twoje bilety są dołączone do tego emaila. Możesz przejrzeć szczegóły dot. zamówienia i pobrać bilety tu:',
+];
\ No newline at end of file
diff --git a/resources/lang/pl/Public_ViewEvent.php b/resources/lang/pl/Public_ViewEvent.php
index b35b049d0..723bd67c5 100644
--- a/resources/lang/pl/Public_ViewEvent.php
+++ b/resources/lang/pl/Public_ViewEvent.php
@@ -16,6 +16,7 @@
   'below_tickets' => 'Wybierz liczbę biletów i kliknij rezerwuj. W następnym kroku zapłacisz za bilety.',
   'booking_fee' => 'Opłata rezerwacyjna',
   'booking_fees' => 'Opłaty rezerwacyjne',
+  // 'business_details' => '',
   'card_number' => 'Numer karty',
   'checkout_submit' => 'Podsumowanie',
   'confirmation_email' => 'i e-mail z potwierdzeniem został wysłany do ciebie.',
@@ -42,8 +43,12 @@
   'offline_payment_methods_available' => 'Płatności offline dostępne',
   'order_attendees' => 'Uczestnicy w zamówieniu',
   'order_awaiting_payment' => 'To zamówienie jest nieopłacone. Przeczytaj poniższe instrukcje, aby dowiedzieć się jak opłacić.',
+  'order_date' => 'Data',
   'order_details' => 'Szczegóły zamówienia',
+  'order_email' => 'Email',
   'order_items' => 'Przedmioty zamówienia',
+  'order_name' => 'Nazwa',
+  'order_reference' => 'Identyfikator zamówienia',
   'order_summary' => 'Podsumowanie zamówienia',
   'organiser_dashboard' => 'Panel sterowania organizatora',
   'pay_using_offline_methods' => 'Zapłać metodami offline',
diff --git a/resources/lang/pl/Social.php b/resources/lang/pl/Social.php
index d6e20532e..166986252 100644
--- a/resources/lang/pl/Social.php
+++ b/resources/lang/pl/Social.php
@@ -10,7 +10,6 @@
   //==================================== Translations ====================================//
   'email' => 'Email',
   'facebook' => 'Facebook',
-  'g+' => 'Google+',
   'linkedin' => 'LinkedIn',
   'share_buttons_to_show' => 'Przyciski Udostępniania do Wyświetlenia',
   'social_settings' => 'Ustawienia Społeczności',
diff --git a/resources/lang/pl/basic.php b/resources/lang/pl/basic.php
index b5ca02d34..5e87a22e9 100644
--- a/resources/lang/pl/basic.php
+++ b/resources/lang/pl/basic.php
@@ -25,6 +25,7 @@
   'event_page_design' => 'Wygląd Strony Wydarzenia',
   'export' => 'Eksport',
   'general' => 'Główne',
+  'hello' => 'Witaj',
   'hours' => 'godziny',
   'main_menu' => 'Menu Główne',
   'manage' => 'Zarządzaj',
@@ -43,8 +44,9 @@
   'success' => 'Sukces',
   'ticket_design' => 'Wygląd Biletów',
   'tickets' => 'Bilety',
+  'thank_you' => 'Thank you',
   'total' => 'razem',
-    'TOP' => 'GÓRA',
+  'TOP' => 'GÓRA',
   'whoops' => 'Ups!',
   'yes' => 'Tak',
     /*
diff --git a/resources/lang/ru/AccessCodes.php b/resources/lang/ru/AccessCodes.php
new file mode 100644
index 000000000..d2b27f02a
--- /dev/null
+++ b/resources/lang/ru/AccessCodes.php
@@ -0,0 +1,19 @@
+<?php
+
+return [
+    'title' => 'Промо-коды',
+    'success_message' => 'Промо-код успешно создан',
+    'delete_message' => 'Промо-код успешно удален',
+    'cannot_delete_used_code' => 'Невозможно удалить промо-код',
+    'access_codes_code' => 'Код скидки',
+    'access_codes_created_at' => 'Создан в',
+    'no_access_codes_yet' => 'Промо-кодов пока нет!',
+    'create_access_code' => 'Создать промо-код',
+    'access_code_title' => 'Промо-код',
+    'access_code_title_placeholder' => 'например: CONFERENCE2019',
+    'valid_code_required' => 'Требуется действующий промо-код',
+    'no_tickets_matched' => 'К вашему промо-коду не подходит ни один билет',
+    'select_access_code' => 'Выберите промо-код',
+    'access_codes_usage_count' => 'Количество использований',
+    'unique_error' => 'Промо-код уже использован для этого мероприятия',
+];
\ No newline at end of file
diff --git a/resources/lang/ru/Affiliates.php b/resources/lang/ru/Affiliates.php
new file mode 100644
index 000000000..47ecbbaed
--- /dev/null
+++ b/resources/lang/ru/Affiliates.php
@@ -0,0 +1,16 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/19 17:14:11 
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  'affiliate_name' => 'Имя партнеров',
+  'affiliate_tracking' => 'Отслеживание партнеров',
+  'affiliate_tracking_text' => 'Следить за тем, кто генерирует продажи для вашего мероприятия, очень просто. Просто создайте реферальную ссылку с помощью поля ниже и поделитесь ею со своими партнерами / организаторами мероприятий.',
+  'last_referral' => 'Последний реферал',
+  'no_affiliate_referrals_yet' => 'Пока нет партнерских рефералов',
+  'sales_volume_generated' => 'Генерируемый объем продаж',
+  'ticket_sales_generated' => 'Объем продаж билетов',
+  'visits_generated' => 'Сгенерировано посещений',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Attendee.php b/resources/lang/ru/Attendee.php
new file mode 100644
index 000000000..ead8dcb61
--- /dev/null
+++ b/resources/lang/ru/Attendee.php
@@ -0,0 +1,25 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/19 17:07:35
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  'scan_another_ticket' => 'Отсканировать еще один билет',
+  'scanning' => 'Сканирование',
+  'has_arrived' => 'Прибыл',
+  'arrival_time' => 'Время прибытия',
+  //==================================== Translations ====================================//
+  'attendees' => 'Участники',
+  'check_in' => 'Регистрация: :event',
+  'email' => 'Емайл',
+  'email_address' => 'Емайл адрес',
+  'event_attendees' => 'Event Attendees',
+  'first_name' => 'Имя',
+  'last_name' => 'Фамилия',
+  'name' => 'Name',
+  'ticket' => 'Билет',
+  'reference' => 'Ссылка',
+  'search_attendees' => 'Поиск участников...',
+  'send_invitation_n_ticket_to_attendee' => 'Send invitation & ticket to attendee.',
+);
diff --git a/resources/lang/ru/Controllers.php b/resources/lang/ru/Controllers.php
new file mode 100644
index 000000000..a8c69cc89
--- /dev/null
+++ b/resources/lang/ru/Controllers.php
@@ -0,0 +1,120 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/26 10:21:11
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageOrganiser\\Events.blade.php
+  'sort' =>
+  array (
+    'event_title' => 'Заголовок мероприятия',
+    'start_date' => 'Дата начала',
+    'created_at' => 'Дата создания',
+    'quantity_sold' => 'Всего продано',
+    'sales_volume' => 'Обьем продаж',
+    'sort_order' => 'Настройка порядка сортировки',
+    'title' => 'Заголовок билета',
+  ),
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageOrganiser\\Events.blade.php
+  //==================================== Translations ====================================//
+  'account_successfully_updated' => 'Аккаунт успешно обновлен',
+  'addInviteError' => 'Прежде чем пригласить участника, необходимо создать билет.',
+  'attendees_required' => 'Пожалуйста, выберите хотя бы одного участника',
+  'attendee_already_cancelled' => 'Посетитель уже отменил участие',
+  'attendee_already_checked_in' => 'Посетитель уже зарегистрировался в :time ',
+  'attendee_exception' => 'Во время регистрации этого участника произошла ошибка. Пожалуйста, попробуйте еще раз.',
+  'attendee_successfully_checked_in' => 'Посетитель успешно зарегистрирован',
+  'attendee_successfully_checked_out' => 'Посетитель успешно выбыл',
+  'attendee_successfully_invited' => 'Посетитель успешно приглашен!',
+  'cant_delete_ticket_when_sold' => 'Извините, вы не можете удалить эту категорию билетов, так как некоторые уже проданы.',
+  'check_in_all_tickets' => 'Зарегистрировать все билеты, связанные с этим заказом',
+  'confirmation_malformed' => 'Код подтверждения отсутствует или неверного формата.',
+  'confirmation_successful' => 'Успех! Ваша электронная почта теперь проверена. Теперь вы можете войти в систему.',
+  'error' =>
+  array (
+    'email' =>
+    array (
+      'email' => 'Пожалуйста, введите действующий адрес электронной почты.',
+      'required' => 'Адрес электронной почты обязателен.',
+      'unique' => 'Данный адрес уже используется в системе',
+    ),
+    'first_name' =>
+    array (
+      'required' => 'Пожалуйста, введите ваше имя.',
+    ),
+    'last_name' =>
+    array (
+      'required' => 'Пожалуйста, введите вашу фамилию.',
+    ),
+    'page_bg_color' =>
+    array (
+      'required' => 'Пожалуйста, введите цвет фона.',
+    ),
+    'page_header_bg_color' =>
+    array (
+      'required' => 'Пожалуйста, введите цвет фона заголовка.',
+    ),
+    'password' =>
+    array (
+      'passcheck' => 'Данный пароль неверен.',
+    ),
+  ),
+  'event_create_exception' => 'Ой! Возникла проблема при создании вашего мероприятия. Пожалуйста, попробуйте еще раз.',
+  'event_page_successfully_updated' => 'Страница мероприятия успешно обновлена.',
+  'event_successfully_updated' => 'Мероприятие успешно обновлено!',
+  'fill_email_and_password' => 'Пожалуйста, введите свой email и пароль.',
+  'image_upload_error' => 'Возникла проблема с загрузкой вашего изображения.',
+  'invalid_ticket_error' => 'Недействительный билет! Пожалуйста, попробуйте еще раз.',
+  'login_password_incorrect' => 'Ваша комбинация имя пользователя/пароль была неправильной',
+  'incorrect_captcha' => 'Проверка Captcha не пройдена, пожалуйста, попробуйте еще раз.',
+  'maximum_refund_amount' => 'Максимальная сумма, которую вы можете вернуть, составляет :money',
+  'message_successfully_sent' => 'Сообщение успешно отправлено!',
+  'new_order_received' => 'Получен новый заказ на мероприятие :event [:order]',
+  'no_organiser_name_error' => 'Вы должны указать имя организатора мероприятия.',
+  'nothing_to_do' => 'Нечего делать',
+  'nothing_to_refund' => 'Нечего возвращать.',
+  'num_attendees_checked_in' => ':num Участник(и) Зарегистрировался(ись).',
+  'order_already_refunded' => 'Деньги за заказ уже были возвращены!',
+  'order_cant_be_refunded' => 'Деньги за заказ не могут быть возвращены!',
+  'order_page_successfully_updated' => 'Страница заказа успешно обновлена.',
+  'order_payment_status_successfully_updated' => 'Статус оплаты заказа успешно обновлен',
+  'organiser_design_successfully_updated' => 'Дизайн страницы организатора успешно обновлен!',
+  'organiser_other_error' => 'Возникла проблема с поиском организатора.',
+  'password_successfully_reset' => 'Пароль успешно сброшен!',
+  'payment_information_successfully_updated' => 'Информация о платеже успешно обновлена.',
+  'please_enter_a_background_color' => 'Пожалуйста, введите цвет фона.',
+  'quantity_min_error' => 'Доступное количество не может быть меньше проданного или зарезервированного.',
+  'refreshing' => 'Обновление...',
+  'refund_exception' => 'Возникла проблема с возвратом денег. Пожалуйста, проверьте свои данные и попробуйте снова.',
+  'refund_only_numbers_error' => 'В этом поле допускаются только числа.',
+  'social_settings_successfully_updated' => 'Социальные настройки были успешно обновлены!',
+  'stripe_error' => 'Произошла ошибка при подключении вашей учетной записи Stripe. Пожалуйста, попробуйте еще раз.',
+  'stripe_success' => 'Вы успешно подключили свой аккаунт Stripe.',
+  'success_name_has_received_instruction' => 'Успех! <b>:name</b> были отправлены дальнейшие инструкции.',
+  'successfully_cancelled_attendee' => 'Успешная отмена участника!',
+  'successfully_cancelled_attendees' => 'Успешная отмена участников!',
+  'successfully_created_organiser' => 'Организатор успешно создан!',
+  'successfully_created_question' => 'Вопрос успешно создан.',
+  'successfully_deleted_question' => 'Вопрос успешно удален.',
+  'successfully_edited_question' => 'Вопрос успешно отредактирован.',
+  'successfully_refunded_and_cancelled' => 'Успешное возмещение заказа и отмена участников!',
+  'successfully_refunded_order' => 'Успешное возмещение заказа!',
+  'successfully_saved_details' => 'Данные успешно сохранены!',
+  'successfully_updated_attendee' => 'Данные участника успешно обновлены!',
+  'successfully_updated_organiser' => 'Данные организатора успешно обновлены!',
+  'successfully_updated_question' => 'Вопрос успешно обновлен.',
+  'successfully_updated_question_order' => 'Порядов следования вопросов успешно обновлен',
+  'survey_answers' => 'Ответы на опрос',
+  'the_order_has_been_updated' => 'Заказ был обновлен',
+  'this_question_cant_be_deleted' => 'Этот вопрос не может быть удален',
+  'ticket_field_required_error' => 'Поле "билет" является обязательным.',
+  'ticket_not_exists_error' => 'Выбранный вами билет не существует',
+  'ticket_order_successfully_updated' => 'Заказ билета успешно обновлен',
+  'ticket_successfully_deleted' => 'Билет успешно удален',
+  'ticket_successfully_resent' => 'Билет успешно отправлен!',
+  'ticket_successfully_updated' => 'Билет успешно обновлен!',
+  'tickets_for_event' => 'Ваши билеты на мероприятие :event.',
+  'whoops' => 'Ой! Похоже, что-то пошло не так. Пожалуйста, попробуйте еще раз.',
+  'your_password_reset_link' => 'Ссылка для сброса пароля',
+);
diff --git a/resources/lang/ru/Dashboard.php b/resources/lang/ru/Dashboard.php
new file mode 100644
index 000000000..393644342
--- /dev/null
+++ b/resources/lang/ru/Dashboard.php
@@ -0,0 +1,26 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/19 18:57:21 
+*************************************************************************/
+
+return array (
+    //============================== New strings to translate ==============================//
+    'this_event_has_started' => 'Это мероприятие началось.',
+    //==================================== Translations ====================================//
+    'create_tickets' => 'Создать билеты',
+    'edit_event_page_design' => 'Редактирование дизайна страницы мероприятия',
+    'edit_organiser_fees' => 'Редактировать тарифы организаторов',
+    'event_page_visits' => 'Визиты на страницу мероприятия',
+    'event_url' => 'Ссылка на мероприятие',
+    'event_views' => 'Просмотры страницы мероприятия',
+    'generate_affiliate_link' => 'Создать партнерскую ссылку',
+    'orders' => 'Заказы',
+    'quick_links' => 'Короткие ссылки',
+    'registrations_by_ticket' => 'Регистрация по категориям билетов',
+    'sales_volume' => 'Объем продаж',
+    'share_event' => 'Поделиться ссылкой на мероприятие',
+    'this_event_is_on_now' => 'Это мероприятие происходит сейчас',
+    'ticket_sales_volume' => 'Объем продажи билетов',
+    'tickets_sold' => 'Билетов продано',
+    'website_embed_code' => 'Код для вставки на сайт',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Design.php b/resources/lang/ru/Design.php
new file mode 100644
index 000000000..593fcb983
--- /dev/null
+++ b/resources/lang/ru/Design.php
@@ -0,0 +1,14 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/19 17:21:50 
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  'event_page_preview' => 'Предварительный просмотр страницы мероприятия',
+  //==================================== Translations ====================================//
+  'background_options' => 'Варианты фона',
+  'images_provided_by_pixabay' => 'Изображения предоставлены <b>PixaBay.com</b>',
+  'select_from_available_images' => 'Выбор из доступных изображений',
+  'use_a_colour_for_the_background' => 'Использовать цвет для фона',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Email.php b/resources/lang/ru/Email.php
new file mode 100644
index 000000000..e275e6762
--- /dev/null
+++ b/resources/lang/ru/Email.php
@@ -0,0 +1,22 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/26 11:05:24 
+*************************************************************************/
+
+return array (
+  //==================================== Translations ====================================//
+  'attendize_register' => 'Благодарим вас за регистрацию',
+  'contact_organiser' => 'Вы можете связаться с :organiser_name напрямую по электронной почте <a href="mailto::organiser_email">:organiser_email</a>, или ответив на это письмо.',
+      'invite_user' => ':name добавил вас в учетную запись :app .',
+  'message_received_from_organiser' => 'Вы получили сообщение от :organiser_name в связи с мероприятием :event_title.',
+  'message_regarding_event' => 'Сообщение насчет мероприятия: :event',
+  'organiser_copy' => '[Копия организатору]',
+  'refund_from_name' => 'Вы получили возврат денег от :name',
+  'your_ticket_cancelled' => 'Ваш билет был аннулирован',
+  'your_ticket_for_event' => 'Ваш билет на мероприятие :event',
+    //================================== Obsolete strings ==================================//
+  'LLH:obsolete' => 
+  array (
+
+  ),
+);
diff --git a/resources/lang/ru/Event.php b/resources/lang/ru/Event.php
new file mode 100644
index 000000000..e47dce802
--- /dev/null
+++ b/resources/lang/ru/Event.php
@@ -0,0 +1,55 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/26 10:54:45
+*************************************************************************/
+
+return array (
+  'address_details' => 'Информация об адресе',
+  'address_line_1' => 'Адрес линия 1',
+  'address_line_1_placeholder' => 'например ул. Ленина 7',
+  'address_line_2' => 'Адрес линия 2',
+  'address_line_2_placeholder' => 'например Нижегородская область',
+  'city' => 'Город',
+  'city_placeholder' => 'например: Вена',
+  'create_event' => 'Создать мероприятие',
+  'current_event_flyer' => 'Текущий логотип мероприятия',
+  'customize_event' => 'Настроить мероприятие',
+  'delete?' => 'Удалить?',
+  'enter_existing' => 'Выбор из существующих мест',
+  'enter_manual' => 'Ввести адрес вручную',
+  'event_description' => 'Описание мероприятия',
+  'event_end_date' => 'Дата окончания события',
+  'event_flyer' => 'Логотип мероприятия',
+  'event_image' => 'Изображение мероприятия (Буклет, графика или другое ...)',
+  'event_image_position' => 'Расположение изображения мероприятия',
+  'event_image_position_hide' => 'Скрыто',
+  'event_image_position_before' => 'Перед',
+  'event_image_position_after' => 'За',
+  'event_image_position_left' => 'Слева',
+  'event_image_position_right' => 'Справа',
+  'event_orders' => 'Заказы мероприятия',
+  'event_start_date' => 'Дата начала мероприятия',
+  'event_title' => 'Название мероприятия',
+  'event_title_placeholder' => 'например: Венская Международная Конференция',
+  'event_visibility' => 'Публичность мероприятия',
+  'go_live' => 'Мероприятие успешно опубликовано! Вы можете отменить это действие на странице настроек мероприятия.',
+  'n_attendees_for_event' => ':num участников для мероприятия: :name (:date)',
+  'no_events_yet' => 'Мероприятия пока отсутствуют!',
+  'no_events_yet_text' => 'Похоже, вам еще предстоит создать мероприятие. Вы можете создать его, нажав на кнопку ниже.',
+  'num_events' => ':num мероприятий',
+  'or(manual/existing_venue)' => 'или',
+  'payment_cancelled' => 'Вы отменили свой платеж. Вы можете попробовать еще раз.',
+  'post_code' => 'Почтовый индекс',
+  'post_code_placeholder' => 'например: 34070.',
+  'print_attendees_title' => 'Участники',
+  'promote' => 'Продвигать',
+  'promote_event' => 'Продвижение мероприятия',
+  'revenue' => 'Доход',
+  'save_changes' => 'Сохранить изменения',
+  'showing_num_of_orders' => 'Показано :0 заказов, всего :1',
+  'tickets_sold' => 'Билеты проданы',
+  'venue_name' => 'Название места проведения мероприятия',
+  'venue_name_placeholder' => 'например: У Одноглазого Пирата',
+  'vis_hide' => 'Распубликовать мероприятие',
+  'vis_public' => 'Опубликовать мероприятие.',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Fees.php b/resources/lang/ru/Fees.php
new file mode 100644
index 000000000..766100499
--- /dev/null
+++ b/resources/lang/ru/Fees.php
@@ -0,0 +1,15 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/19 17:24:53 
+*************************************************************************/
+
+return array (
+  'service_fee_fixed_price' => 'Стоимость услуг сервиса, фиксированная цена',
+  'service_fee_fixed_price_help' => 'например: введите <b>1.25</b> для <b>:cur1.25</b>',
+  'service_fee_fixed_price_placeholder' => '0.00',
+  'organiser_fees' => 'Стоимость услуг организатора',
+  'organiser_fees_text' => 'Это необязательные сборы, которые вы можете включить в стоимость каждого билета. Этот сбор будет отображаться в счетах покупателя \'<b>BOOKING FEES</b>\'.',
+  'service_fee_percentage' => 'Процент за услуги',
+  'service_fee_percentage_help' => 'например: введите <b>3.5</b> для <b>3.5%</b>',
+  'service_fee_percentage_placeholder' => '0',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/File_format.php b/resources/lang/ru/File_format.php
new file mode 100644
index 000000000..faaaf47db
--- /dev/null
+++ b/resources/lang/ru/File_format.php
@@ -0,0 +1,16 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/19 08:29:24 
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageEvent\\Attendees.blade.php
+  'Excel_xls' => 'Excel (XLS)',
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageEvent\\Attendees.blade.php
+  'Excel_xlsx' => 'Excel (XLSX)',
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageEvent\\Attendees.blade.php
+  'csv' => 'CSV',
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageEvent\\Attendees.blade.php
+  'html' => 'HTML',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Installer.php b/resources/lang/ru/Installer.php
new file mode 100644
index 000000000..a1a065435
--- /dev/null
+++ b/resources/lang/ru/Installer.php
@@ -0,0 +1,51 @@
+<?php
+/*************************************************************************
+ * Generated via "php artisan localization:missing" at 2018/04/17 16:35:44
+ *************************************************************************/
+
+return array(
+    'connection_success' => 'Успех, Подсоединение работает!',
+    'connection_failure' => 'Невозможно подключиться! Пожалуйста, проверьте ваши настройки',
+    'app_settings' => 'Настройки приложения',
+    'application_url' => 'URL приложения',
+    'database_type' => 'Тип базы данных',
+    'database_host' => 'Хост базы данных',
+    'database_name' => 'Имя базы данных',
+    'database_username' => 'Database Username',
+    'database_password' => 'Пароль базы данных',
+    'database_settings' => 'Настройки базы данных',
+    'database_message' => 'Если вы используете среду docker для разработки, вы можете просто использовать предварительно заполненные значения. Если вы используете свою собственную среду, вам нужно будет обновить настройки базы данных. Используйте Проверить соединение с базой данных, чтобы убедиться в правильности параметров соединения. Неправильные параметры приведут к проблемам при установке.',
+    'database_test_connect_failure' => 'Невозможно подключиться к базе! Пожалуйста, проверьте ваши настройки',
+    'database_test_connect_failure_error_message' => 'Ошибка',
+    'database_test_connect_failure_error_type' => 'Тип ошибки',
+    'database_test_connect_failure_message' => 'Невозможно подключиться к базе! Пожалуйста, проверьте ваши настройки',
+    'database_test_connect_success' => 'Успех! Настройки базы данных работают!',
+    'email_settings' => 'Настройки электронной почты',
+    'files_n_folders_check' => 'Проверка файлов и папок',
+    'install' => 'Установить Attendize',
+    'mail_encryption' => 'Шифрование протокола обмена с почтовым сервером',
+    'mail_driver' => 'Почтовый драйвер',
+    'mail_driver_help' => 'Для использования PHP\'s <a target="_blank" href="http://php.net/manual/en/function.mail.php">mail</a> фонкционала введите <b>mail</b> в этом поле и оставьте следующие ниже поля пустыми.',
+    'mail_from_address' => 'Адрес отправителя, указываемый в письмах',
+    'mail_from_name' => 'Имя отправителя',
+    'mail_host' => 'Хост почтового сервера',
+    'mail_password' => 'Пароль пользователя',
+    'mail_port' => 'Порт почтового сервера',
+    'mail_username' => 'Имя пользователя почтового сервера',
+    'optional_requirement_not_met' => 'Внимание: требование <b>:requirement</b> не выполнено',
+    'path_not_writable' => 'Внимание: <b>:path</b> недоступен для записи',
+    'path_writable' => 'Успех: <b>:path</b> доступен для записи',
+    'php_enough' => 'Успех: приложение требует версию PHP >= <b>:requires</b> а ваша <b>:has</b>',
+    'php_optional_requirements_check' => 'PHP проверка необязательных требований',
+    'php_requirements_check' => 'PHP проверка требований',
+    'php_too_low' => 'Внимание: приложение требует версию PHP >= <b>:requires.</b> Ваша же только лишь <b>:has</b>.',
+    'php_version_check' => 'PHP Проверка версии',
+    'requirement_met' => 'Успех: <b>:requirement</b> расширение установлено',
+    'requirement_not_met' => 'Ошибка: <b>:requirement</b> расширение не установлено',
+    'setup' => 'Настройка Attendize',
+    'setup_completed' => 'Attendize настройка завершена',
+    'setup_completed_already_message' => "Обнаружен установочный файл, что означает, что процесс установки Attendize уже завершен. <br /> Если вы не зарегистрировали пользователя по умолчанию, вы можете " .
+                                         "<a href='/signup'>Сделать это</a><br />Если вы уже создали пользователя по умолчанию, вы можете <a href='/login'>Войти здесь</a>",
+    'test_database_connection' => 'Тестовое подключение к базе данных',
+    'title' => 'Установка Attendize',
+);
diff --git a/resources/lang/ru/Javascript.php b/resources/lang/ru/Javascript.php
new file mode 100644
index 000000000..0418cdf2f
--- /dev/null
+++ b/resources/lang/ru/Javascript.php
@@ -0,0 +1,16 @@
+<?php
+
+return [
+    "processing" => "Секундочку...",
+    "time_run_out" => "Время истекло! Вам придется заново начать процесс оформления заказа.",
+    "just_2_minutes" => "У вас осталось всего 2 минуты, чтобы выполнить этот заказ!",
+    "whoops" => 'Ой! Похоже, что сервер выдал ошибку. Пожалуйста, попробуйте еще раз или свяжитесь с веб-мастером, если проблема сохраняется.',
+    "whoops2" => 'Что-то пошло не так! Обновите страницу и попробуйте снова',
+    "whoops_and_error" => "Ой! Что-то пошло не так.<br>:code :error</br>",
+    "at_least_one_option" => 'Надо выбрать хотя бы один вариант.',
+    "credit_card_error" => 'Номер кредитной карты, по-видимому, неправильный',
+    "expiry_error" => 'Дата истечения срока действия, по-видимому, недействительна.',
+    "cvc_error" => 'Номер CVC кажется недействительным.',
+    "card_validation_error" => 'Пожалуйста, проверьте данные вашей карты и повторите попытку.',
+    "checkin_init_error" => 'Произошла ошибка при инициализации видеокамеры или сканера. Проверьте, подключаетесь ли вы через защищенную страницу (https) и включена ли в вашем браузере поддержка видеокамеры или сканера.',
+];
\ No newline at end of file
diff --git a/resources/lang/ru/ManageAccount.php b/resources/lang/ru/ManageAccount.php
new file mode 100644
index 000000000..af064211d
--- /dev/null
+++ b/resources/lang/ru/ManageAccount.php
@@ -0,0 +1,52 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/13 13:27:24 
+*************************************************************************/
+
+return array (
+  'about' => 'О программе',
+  'account' => 'Учетная запись',
+  'account_id' => 'Идентификатор учетной записи',
+  'accout_owner' => 'Владелец учетной записи',
+  'add_user_help_block' => 'Добавленные пользователи получат дальнейшие инструкции по электронной почте.',
+  'add_user_submit' => 'Добавить пользователя',
+  'api_key' => 'ключ API',
+  'bitpay_api_key' => 'Ключ для BitPay API',
+  'bitpay_settings' => 'настройки Bitpay',
+  'branding_name' => 'Имя бренда',
+  'branding_name_help' => 'Это имя покупатели будут видеть при оформлении заказа. Оставьте это поле пустым, если вы хотите, чтобы использовалось имя организатора мероприятия.',
+  'coinbase_settings' => 'Настройки Coinbase',
+  'default_currency' => 'Валюта по умолчанию',
+  'default_payment_gateway' => 'Шлюз для платежей по умолчанию',
+  'email' => 'Почта',
+  'email_address_placeholder' => 'Адрес электронной почты',
+  'first_name' => 'Имя',
+  'general' => 'Общие настройки',
+  'last_name' => 'Фамилия',
+  'licence_info' => 'Информация о лицензии',
+  'licence_info_description' => 'Attendize лицензирована как  <b><a target="_blank" href="https://tldrlegal.com/license/attribution-assurance-license-(aal)#summary">Attribution Assurance Licence (AAL)</a></b>. Эта лицензия требует, чтобы отметка <b>Powered By Attendize</b> находилась на каждой установке Attendize. Если вы хотите удалить ссылки на Attendize, вы должны приобрести одну из whitelabel-лицензий  <b><a target="_blank" href="https://attendize.com/license.html">описанных тут</a></b>.',
+  'mastercard_internet_gateway_service_settings' => 'Настройки службы интернет-шлюза Mastercard',
+  'merchant_access_code' => 'Код доступа продавца',
+  'merchant_id' => 'ID продавца',
+  'open_source_soft' => 'ПО с открытым исходным кодом',
+  'open_source_soft_description' => 'Attendize построен с использованием множества библиотек с открытым исходным кодом. Вы можете ознакомиться с их обзором на <b><a href="https://libraries.io/github/Attendize/Attendize?ref=Attendize_About_Page" target="_blank">libraries.io</a></b>.',
+  'payment' => 'Оплата',
+  'paypal_password' => 'пароль PayPal',
+  'paypal_settings' => 'настройки PayPal',
+  'paypal_signature' => 'цифровая подпись PayPal',
+  'paypal_username' => 'имя пользователя PayPal',
+  'save_account_details_submit' => 'Сохранить настройки учетной записи',
+  'save_payment_details_submit' => 'Сохранить настройки оплаты',
+  'secret_code' => 'Секретный код',
+  'secure_hash_code' => 'Код безопасного хеша',
+  'stripe_publishable_key' => 'публичный ключ Stripe ',
+  'stripe_secret_key' => 'секретный ключ Stripe',
+  'stripe_settings' => 'настройки Stripe',
+  'timezone' => 'Временная зона',
+  'users' => 'Пользователи',
+  'version_info' => 'Информация о версии',
+  'version_out_of_date' => 'Ваша версия (<b>:installed</b>) Attendize устарела. Последняя версия (<b>:latest</b>) может быть <a href=":url" target="_blank">скачана тут</a>',
+  'version_up_to_date' => 'Вы используете новейшую версию Attendize (<b>:installed</b>)!',
+    'account_payment' => 'Аккаунт / Оплата',
+    'event_attendees' => 'Участники мероприятия',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/ManageEvent.php b/resources/lang/ru/ManageEvent.php
new file mode 100644
index 000000000..b2e2afc04
--- /dev/null
+++ b/resources/lang/ru/ManageEvent.php
@@ -0,0 +1,103 @@
+<?php
+
+return array (
+  'all_attendees' => 'Все участники',
+  'all_attendees_cancelled' => 'Все участники в этом заказе были отменены.',
+  'all_order_refunded' => 'Все :money за этот заказ были возвращены.',
+  'amount' => 'Сумма',
+  'refunded_amount' => 'Возмещенная сумма',
+  'refund_the_entire_amount' => 'Возместить всю сумму :amount',
+  'attendee_cancelled' => 'Отменен',
+  'attendee_cancelled_help' => 'Участие этого участника было аннулировано',
+  'attendees_file_requirements' => 'Файл должен быть .csv каждая строка должна содержать 3 поля в формате имя,фамилия,емайл',
+  'attendize_qrcode_check_in' => 'QRCode участника для регистрации',
+  'cancel_attendee_title' => 'Отменить :cancel',
+  'cancel_description' => 'Отмена участников удалит их из списка участников мероприятия.',
+  'cancelling_order_will_refund_attendees' => 'Отмена :type вернет деньги выбранным участникам',
+  'cancel_notify' => 'Уведомить :name об аннулировании их билета.',
+  'cancel_order_:ref' => 'Отменить заказ: :ref',
+  'cancel_refund' => 'Если вы хотите вернуть деньги за заказ, к которому относится данный участник, вы можете сделать это <strong><a href=":url">тут</a></strong>.',
+  'cancel_refund_user' => 'Вернуть деньги :name за билет.',
+  'cant_refund_here' => 'К сожалению, вы не можете вернуть деньги, оплаченные через :gateway . Вы должны сделать это на вебсайте платежной системы.',
+  'check-in' => 'Регистрация',
+  'checkin_search_placeholder' => 'Поиск по имени участника, ссылке на заказ, ссылке на участника...',
+  'close' => 'закрыть',
+  'confirm_cancel' => 'Подтвердить отмену участника',
+  'confirm_order_cancel' => 'Подтвердить отмену заказа',
+  'create_attendees' => 'Создать участников',
+  'create_ticket' => 'Создать категорию билета',
+	'default_currency' => 'Валюта по умолчанию',
+  'download_pdf_ticket' => 'Скачать билет в формате PDF',
+  'edit_attendee' => 'Редактировать участника',
+  'edit_attendee_title' => 'Редактировать :attendee',
+  'edit_order_title' => 'Заказ: :order_ref',
+  'edit_question' => 'Редактировать Вопрос',
+  'edit_ticket' => 'Редактировать билет',
+  'end_sale_on' => 'End Sale On',
+  'event_not_live' => 'Это мероприятие еще не состоялось',
+  'event_page' => 'Страница мероприятия',
+  'event_tools' => 'Детали мероприятия',
+  'export' => 'Экспорт',
+  'go_to_attendee_name' => 'Перейти к участнику :name',
+  'hide_this_ticket' => 'Скрыть этот билет',
+  'import_file' => 'Импорт файла',
+  'invite_attendee' => 'Пригласить участника',
+  'invite_attendees' => 'Пригласить участников',
+  'issue_full_refund' => 'Выполнить полный возврат денег',
+  'issue_partial_refund' => 'Выполнить частичный возврат денег',
+  'manage_order_title' => 'Заказ: :order_ref',
+  'mark_payment_received' => 'Пометить платеж как полученный',
+  'maximum_tickets_per_order' => 'Максимальное количество билетов в одном заказе',
+  'message_attendee_title' => 'Сообщение :attendee',
+  'message_attendees' => 'Сообщение',
+  'message_attendees_title' => 'Сообщение участникам',
+  'message_order' => 'Сообщение :order',
+  'minimum_tickets_per_order' => 'Минимальное количество билетов в одном заказе',
+  'more_options' => 'Еще детали',
+  'no_attendees_matching' => 'Нет подходящих участников',
+  'no_attendees_yet' => 'Участников пока нет',
+  'no_attendees_yet_text' => 'Участники появятся здесь после того, как они успешно зарегистрируются на ваше мероприятие, или вы можете сами вручную пригласить участников.',
+  'no_orders_yet' => 'Заказов пока нет',
+  'no_orders_yet_text' => 'Новые заказы будут появляться здесь по мере их создания.',
+  'order_contact_will_receive_instructions' => 'Контактное лицо по заказу будет проинструктировано направить любой ответ по адресу :email',
+  'order_details' => 'Детали заказа',
+  'order_overview' => 'Обзор заказа',
+  'order_ref' => 'Заказ: #:order_ref',
+  'order_refunded' => ':money заказу были возвращены.',
+  'price_placeholder' => 'например: 25.99',
+  'print_attendee_list' => 'Распечатать список участников',
+  'print_tickets' => 'Распечатать билеты',
+  'publish_it' => 'Опубликовать',
+  'qr_instructions' => 'Поместите QR-код перед камерой (не слишком близко)',
+  'quantity_available' => 'Доступное количество',
+  'quantity_available_placeholder' => 'например: 100 (Оставьте пустым для неограниченного количества)',
+  'refund_amount' => 'Сумма возмещения',
+  'refund_this_order?' => 'Вернуть деньги за этот заказ?',
+  'resend_ticket' => 'Повторно выслать билет',
+  'resend_ticket_help' => 'Участнику будет выслана еще одна копия его билета на :email',
+  'resend_ticket_to_attendee' => 'Повторно выслать билет :attendee',
+  'resend_tickets' => 'Повторно выслать билеты',
+  'result_for' => 'результат(ы) для',
+  'save_question' => 'Сохранить вопрос',
+  'save_ticket' => 'Сохранить билет',
+  'scan_another_ticket' => 'Отсканировать еще один билет',
+  'select_all' => 'Отметить все',
+  'select_attendee_to_cancel' => 'Выберите билеты участников, которые вы хотите отменить.',
+  'send_invitation_n_ticket_to_attendees' => 'Отправка приглашений и билетов участникам',
+  'send_message' => 'Отправить сообщение',
+  'send_ticket' => 'Отправить билет',
+  'start_sale_on' => 'Начать продажу',
+  'surveys' => 'Опросы',
+  'this_order_is_awaiting_payment' => 'Этот заказ ожидает оплаты.',
+  'ticket' => 'Билет',
+  'ticket_description' => 'Описание билета',
+  'ticket_price' => 'Цена билета',
+  'ticket_title' => 'Категория',
+  'ticket_title_placeholder' => 'например: семейный',
+  'update_order' => 'Обновить заказ',
+  'widgets' => 'Виджеты',
+  'LLH:obsolete' => 
+  array (
+    'create_question' => 'Создать вопрос',
+  ),
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Message.php b/resources/lang/ru/Message.php
new file mode 100644
index 000000000..23d86f64f
--- /dev/null
+++ b/resources/lang/ru/Message.php
@@ -0,0 +1,21 @@
+<?php
+
+return array (
+  'new_message' => 'Новое сообщение',
+  'sent_messages' => 'Отправленные',
+  'all_event_attendees' => 'Все участники мероприятия',
+  'attendees_with_ticket_type' => 'Участники с категорией билета',
+  'before_send_message' => 'Участнику будет проинструктирован отправлять все ответы организатору :organiser',
+  'content' => 'Текст сообщения',
+  'date' => 'дата',
+  'leave_blank_to_send_immediately' => 'Оставьте пустым, чтобы отправить немедленно',
+  'message' => 'Сообщение',
+  'no_messages_for_event' => 'Нет сообщений об мероприятии.',
+  'schedule_send_time' => 'Запланированное время отправки',
+  'send_a_copy_to' => 'Отправить копию организатору :organiser',
+  'send_message' => 'Отправить сообщение',
+  'send_to' => 'Получатель',
+  'subject' => 'Тема сообщения',
+  'to' => 'К',
+  'unsent' => 'Неотправлено',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Order.php b/resources/lang/ru/Order.php
new file mode 100644
index 000000000..6650c9b25
--- /dev/null
+++ b/resources/lang/ru/Order.php
@@ -0,0 +1,52 @@
+<?php
+
+return array (
+  'amount_refunded' => 'возвращенная сумма',
+  'fully_refunded' => 'деньги полностью возвращены',
+  'partially_refunded' => 'деньги возвращены частично',
+  'after_order' => 'Сообщение для отображения посетителям после завершения заказа.',
+  'after_order_help' => 'Это сообщение будет показано участникам после того, как они успешно завершат процесс оформления заказа.',
+  'amount' => 'Сумма',
+  'arrived' => 'Получено',
+  'attendee_cancelled' => 'Отменен',
+  'attendee_refunded' => 'Деньги возвращены',
+  'awaiting_payment' => 'Ожидает оплаты',
+  'before_order' => 'Сообщение для отображения посетителям до завершения заказа.',
+  'before_order_help' => 'Это сообщение будет показано участникам непосредственно перед тем, как они завершат оформление своего заказа.',
+  'booking_fee' => 'Комиссия за бронирование',
+  'cancel_order' => 'Отменить заказ',
+  'date' => 'Дата',
+  'details' => 'Подробности',
+  'edit' => 'Редактировать',
+  'email' => 'Емайл',
+  'enable_offline_payments' => 'Разрешить оплату наличными',
+  'free' => 'БЕСПЛАТНО',
+  'no_recent_orders' => 'Похоже, что недавних заказов нет.',
+  'offline_payment_instructions' => 'Введите инструкции о том, как посетители могут осуществлять оплату наличными.',
+  'offline_payment_settings' => 'Настройки оплаты наличными',
+  'order_attendees' => 'Участники заказа',
+  'order_date' => 'Дата заказа',
+  'order_items' => 'Элементы заказа',
+  'order_page_settings' => 'Настройки страницы заказа',
+  'order_ref' => 'Ссылка',
+  'organiser_booking_fees' => 'Комиссия организатору за бронирование',
+  'payment_gateway' => 'Шлюз приема оплаты',
+  'payment_intent' => 'Назначение платежа',
+  'payment_failed' => 'Оплата не прошла, пожалуйста, попробуйте ввести свои платежные данные еще раз.',
+  'price' => 'Цена',
+  'purchase_date' => 'Дата покупки',
+  'quantity' => 'Количество',
+  'recent_orders' => 'Недавние заказы',
+  'reference' => 'Ссылка',
+  'refund/cancel' => 'Отменить',
+  'registered' => 'зарегистрировано',
+  'search_placeholder' => 'Искать заказы..',
+  'status' => 'Статус',
+  'sub_total' => 'Подитог',
+  'ticket' => 'Билет',
+  'tickets' => 'Билет(ы)',
+  'total' => 'Итого',
+  'transaction_id' => 'ID транзакции',
+  'view_order' => 'Просмотр заказа',
+  'view_order_num' => 'Просмотр заказа #:num',
+);
diff --git a/resources/lang/ru/Order_Emails.php b/resources/lang/ru/Order_Emails.php
new file mode 100644
index 000000000..22af740d2
--- /dev/null
+++ b/resources/lang/ru/Order_Emails.php
@@ -0,0 +1,8 @@
+<?php
+return [
+    'received_new_order'             => 'Вы получили новый заказ на участие в мероприятии',
+    'order_still_awaiting_payment'   => 'Обратите внимание: этот заказ все еще требует оплаты.',
+    'manage_order'                   => 'Вы можете управлять этим заказом на',
+    'successful_order'               => 'Ваш заказ на мероприятие <strong>:name</strong> успешно подтвержден.',
+    'tickets_attached'               => 'Ваши билеты прикреплены к этому письму. Вы также можете просмотреть информацию о заказе и загрузить свои билеты по ссылке:',
+];
\ No newline at end of file
diff --git a/resources/lang/ru/Organiser.php b/resources/lang/ru/Organiser.php
new file mode 100644
index 000000000..8ef6a4b04
--- /dev/null
+++ b/resources/lang/ru/Organiser.php
@@ -0,0 +1,75 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/26 10:16:27 
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageOrganiser\\Customize.blade.php
+  'save_organiser' => 'Сохранить данные организатора',
+  //==================================== Translations ====================================//
+  'additional_organiser_options' => 'Дополнительные настройки организатора',
+  'background_color' => 'Цвет фона',
+  'continue_to' => 'Продолжить',
+  'create_an_organiser' => 'Создать организатора',
+  'create_new_organiser' => 'Создать нового организатора',
+  'create_organiser' => 'Создать организатора',
+  'create_organiser_text' => 'Прежде чем создавать мероприятия, вам нужно будет создать организатора. Организатор - это просто тот, кто организует мероприятия. Это может быть кто угодно, от человека до организации.',
+  'current_logo' => 'Текущий логотип',
+  'customize' => 'Настроить',
+  'dashboard' => 'Панель управления',
+  'delete_logo?' => 'Удалить логотип?',
+  'enable_public_organiser_page' => 'Включить публичную страницу организатора',
+  'event' => 'Мероприятие',
+  'event_calendar' => 'Календарь мероприятий',
+  'events' => 'Мероприятия',
+  'google_analytics_code' => 'Google Analytics code',
+  'google_analytics_code_placeholder' => 'UA-XXXXX-X',
+  'google_tag_manager_code' => 'Google Tag Manager Code',
+  'google_tag_manager_code_placeholder' => 'GTM-XXXXX',
+  'header_background_color' => 'Цвет фона заголовка',
+  'hide_additional_organiser_options' => 'Скрыть дополнительные опции организатора',
+  'make_organiser_hidden' => 'Распубликовать страницу организатора.',
+  'make_organiser_public' => 'Опубликовать страницу организатора.',
+  'no_upcoming_events' => 'У вас нет ближайших мероприятий.',
+  'no_upcoming_events_click' => 'Вы можете нажать здесь, чтобы создать мероприятие.',
+  'or' => 'или',
+  'or_caps' => 'или',
+  'organiser_description' => 'Описание организатора',
+  'organiser_description_placeholder' => '',
+  'organiser_design' => 'Дизайн страницы организатора',
+  'organiser_details' => 'Детали организатора',
+  'organiser_email' => 'Email организатора',
+  'organiser_email_placeholder' => '',
+  'organiser_events' => 'Мероприятия организатора',
+  'organiser_facebook' => 'Страница организатора на Facebook',
+  'organiser_facebook_placeholder' => 'например http://www.facebook.com/MyFaceBookPage',
+  'organiser_logo' => 'Логотип организатора',
+  'organiser_logo_help' => 'Мы рекомендуем использовать квадратное изображение, так как оно будет лучше всего смотреться на печатных билетах и страницах мероприятий.',
+  'organiser_menu' => 'Меню организатора',
+  'organiser_name' => 'Имя организатора',
+  'organiser_name_dashboard' => ':name Панель управления',
+  'organiser_name_events' => ':name Мероприятия',
+  'organiser_name_placeholder' => 'Кто организует это мероприятие?',
+  'organiser_page' => 'Organiser Page',
+  'organiser_page_design' => 'Дизайн страницы организатора',
+  'organiser_page_preview' => 'Предварительный просмотр страницы организатора',
+  'organiser_page_visibility_text' => 'Страницы организаторов содержат публичный список прошедших и предстоящих мероприятий.',
+  'organiser_settings' => 'Настройки организатора',
+  'organiser_twitter' => 'Twitter организатора',
+  'organiser_twitter_placeholder' => 'например http://www.twitter.com/MyTwitterPage',
+  'organiser_username_facebook_placeholder' => 'MyFacebookPage',
+  'organiser_username_twitter_placeholder' => 'MyTwitterPage',
+  'organiser_tax_prompt' => 'Хотите ли вы взимать налог с ваших мероприятий?',
+  'organiser_tax_id' => 'Налоговый ID',
+  'organiser_tax_name' => 'Название налога',
+  'organiser_tax_value' => 'Значение',
+  'yes' => 'Да',
+  'no' => 'Нет',
+  'sales_volume' => 'Объем продаж',
+  'search_placeholder' => 'Поиск мероприятий ...',
+  'select_an_organiser' => 'Выбрать организатора',
+  'select_organiser' => 'Выбрать организатора',
+  'text_color' => 'Цвет текста',
+  'tickets_sold' => 'Билетов продано',
+);
diff --git a/resources/lang/ru/Public_ViewEvent.php b/resources/lang/ru/Public_ViewEvent.php
new file mode 100644
index 000000000..94d6a2cfd
--- /dev/null
+++ b/resources/lang/ru/Public_ViewEvent.php
@@ -0,0 +1,99 @@
+<?php
+
+return [
+    'amount'                            => 'Сумма',
+    'at'                                => '@',
+    'attendee_cancelled'                => 'Отменен',
+    'below_order_details_header'        => '',
+    'below_payment_information_header'  => '',
+    'below_tickets'                     => 'Выберите количество билетов и нажмите "зарегистрировать".',
+    'booking_fee'                       => 'Комиссия за бронирование',
+    'booking_fees'                      => 'Комиссия за бронирование',
+    'business_address'                  => 'Адрес организации',
+    'business_address_city'             => 'Город',
+    'business_address_code'             => 'Почтовый индекс',
+    'business_address_line1'            => 'Адрес линия 1',
+    'business_address_line2'            => 'Адрес линия 2',
+    'business_address_state_province'   => 'Область/регион',
+    'business_details'                  => 'детали организации',
+    'business_name'                     => 'Название бизнеса',
+    'business_tax_number'               => 'Налоговый номер',
+    'card_number'                       => 'Номер кредитной карты',
+    'checkout_order'                    => 'Далее к оплате',
+    'checkout_submit'                   => 'Оформить заказ',
+    'confirmation_email'                => 'и подтверждение по электронной почте были отправлены вам.',
+    'Contact'                           => 'Contact',
+    'copy_buyer'                        => 'Копировать данные о покупателе всем владельцам билетов',
+    'complete_payment'                  => 'Завершить оплату',
+    'continue'                          => 'Продолжить',
+    'currently_not_on_sale'             => 'В настоящее время не продается',
+    'cvc_number'                        => 'CVC номер',
+    'date'                              => 'Дата',
+    'DETAILS'                           => 'ДЕТАЛИ',
+    'download_tickets'                  => 'Скачать билеты',
+    'email'                             => 'Емейл',
+    'email_address'                     => 'электронная почта',
+    'event_already'                     => 'Это мероприятие :started.',
+    'event_already_ended'               => 'уже закончился',
+    'event_already_started'             => 'уже начался',
+    'event_dashboard'                   => 'Панель управления мероприятием',
+    'event_details'                     => 'Детали мероприятия',
+    'event_not_live'                    => 'Эта страница мероприятия недоступна для публики.',
+    'expiry_month'                      => 'Месяц окончания действия',
+    'expiry_year'                       => 'Год окончания действия',
+    'Facebook'                          => 'Facebook',
+    'first_name'                        => 'Имя',
+    'free'                              => 'БЕСПЛАТНО',
+    'grand_total'                       => 'Общая сумма',
+    'has_unlock_codes'                  => 'У вас есть код разблокировки?',
+    'inc_fees'                          => 'Стоимость бронирования',
+    'is_business'                       => 'Являетесь ли вы зарегистрированным налоговым предприятием?',
+    'last_name'                         => 'Фамилия',
+    'LOCATION'                          => 'МЕСТО',
+    'no_payment_required'               => 'Оплата не требуется, бесплатно.',
+    'offline_payment_instructions'      => 'Инструкции оплаты наличными',
+    'offline_payment_methods_available' => 'Возможные методы оплаты наличными',
+    'order_attendees'                   => 'Участники заказа',
+    'order_awaiting_payment'            => 'Этот заказ ожидает оплаты. Пожалуйста, ознакомьтесь с приведенными ниже инструкциями о том, как произвести оплату.',
+    'order_date'                        => 'Дата заказа',
+    'order_details'                     => 'Детали заказа',
+    'order_email'                       => 'Емайл заказа',
+    'order_items'                       => 'Элементы заказа',
+    'order_name'                        => 'Название заказа',
+    'order_reference'                   => 'Ссылка на заказ',
+    'order_summary'                     => 'Резюме заказа',
+    'organiser_dashboard'               => 'Панель управления организатора',
+    'pay_using_offline_methods'         => 'Оплатить наличными',
+    'payment_information'               => 'Информация об оплате',
+    'payment_instructions'              => 'Инструкции об оплате',
+    'presents'                          => 'представляет',
+    'price'                             => 'Цена',
+    'quantity_full'                     => 'Количество',
+    'reference'                         => 'Ссылка',
+    'refunded_amount'                   => 'Возвращенная сумма',
+    'register'                          => 'Регистрация',
+    'sales_have_ended'                  => 'Продажи закончились',
+    'sales_have_not_started'            => 'Продажи не начались',
+    'send_message_submit'               => 'Послать сообщение',
+    'share_event'                       => 'Поделиться мероприятием',
+    'sold_out'                          => 'Все билеты проданы',
+    'stripe_credit_or_debit_card'       => 'Кредитовая или дебитовая карта',
+    'sub_total'                         => 'Подитог',
+    'thank_you_for_your_order'          => 'Спасибо за ваш заказ!',
+    'ticket'                            => 'Билет',
+    'ticket_holder_information'         => 'Информация о владельце билета',
+    'ticket_holder_n'                   => 'Владелец билета :n детали',
+    'ticket_price'                      => 'Цена билета',
+    'tickets'                           => 'Билет(ы)',
+    'TICKETS'                           => 'БИЛЕТЫ',
+    'tickets_are_currently_unavailable' => 'Билеты в настоящее время недоступны',
+    'time'                              => 'Пожалуйста, обратите внимание, что у вас есть только :time чтобы завершить эту операцию до того, как ваше бронирование билетов будет отменено.',
+    'total'                             => 'Всего',
+    'Twitter'                           => 'Twitter',
+    'Whatsapp'                          => 'Whatsapp',
+    'your'                              => 'Ваш',
+    'your_email_address'                => 'Ваш e-mail адрес',
+    'your_information'                  => 'Ваша информация',
+    'your_message'                      => 'Ваше сообщение',
+    'your_name'                         => 'Ваше имя',
+];
diff --git a/resources/lang/ru/Public_ViewOrganiser.php b/resources/lang/ru/Public_ViewOrganiser.php
new file mode 100644
index 000000000..d03ca1af8
--- /dev/null
+++ b/resources/lang/ru/Public_ViewOrganiser.php
@@ -0,0 +1,17 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/16 08:41:39 
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\Public\\ViewOrganiser\\Partials\\EventListingPanel.blade.php
+  'information' => 'Информация',
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\Public\\ViewOrganiser\\Partials\\EventListingPanel.blade.php
+  'tickets' => 'Билеты',
+  //==================================== Translations ====================================//
+  'no_events' => 'Нет мероприятий :panel_title к просмотру.',
+  'organiser_dashboard' => 'Панель управления мероприятиями',
+  'past_events' => 'Прошедшие мероприятия',
+  'upcoming_events' => 'Предстоящие мероприятия',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Question.php b/resources/lang/ru/Question.php
new file mode 100644
index 000000000..c768ae799
--- /dev/null
+++ b/resources/lang/ru/Question.php
@@ -0,0 +1,24 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/18 16:23:42 
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageEvent\\Partials\\SurveyBlankSlate.blade.php
+  'create_question' => 'Создать опрос',
+  //==================================== Translations ====================================//
+  'Q' => 'Q',
+  'add_another_option' => 'Добавить еще один вариант',
+  'answer' => 'Ответ',
+  'attendee_details' => 'Детали участника',
+  'make_this_a_required_question' => 'Сделать эту опцию обязательной',
+  'no_answers' => 'Извините, на этот вопрос пока нет ответов.',
+  'no_questions_yet' => 'Пока нет вопросов',
+  'no_questions_yet_text' => 'Здесь вы можете добавить вопросы, на которые посетителям будет предложено ответить в процессе регистрации.',
+  'question' => 'Вопрос',
+  'question_options' => 'Варианты вопросов',
+  'question_placeholder' => 'например: Ваши предпочтения ?',
+  'question_type' => 'Тип вопроса',
+  'require_this_question_for_ticket(s)' => 'Требовать этот вопрос для билета(ов)',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Social.php b/resources/lang/ru/Social.php
new file mode 100644
index 000000000..9e5bf8f0f
--- /dev/null
+++ b/resources/lang/ru/Social.php
@@ -0,0 +1,20 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/23 14:17:14 
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\Public\\ViewOrganiser\\Partials\\OrganiserSocialSection.blade.php
+  'pinterest' => 'Pinterest',
+  //==================================== Translations ====================================//
+  'email' => 'Email',
+  'facebook' => 'Facebook',
+  'linkedin' => 'LinkedIn',
+  'share_buttons_to_show' => 'Какие кнопки соцсетей показывать',
+  'social_settings' => 'Настройки соцсетей',
+  'social_share_text' => 'Текст для социальных сетей',
+  'social_share_text_help' => 'Это текст, который будет опубликован по умолчанию, когда пользователь поделится вашим событием в социальных сетях',
+  'twitter' => 'Twitter',
+  'whatsapp' => 'WhatsApp',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Surveys.php b/resources/lang/ru/Surveys.php
new file mode 100644
index 000000000..48f5768f3
--- /dev/null
+++ b/resources/lang/ru/Surveys.php
@@ -0,0 +1,18 @@
+<?php
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageEvent\\Surveys.blade.php
+  'question_delete' => 'Удалить вопрос',
+  //==================================== Translations ====================================//
+  'add_question' => 'Добавить вопрос',
+  'answers' => 'Ответы',
+  'event_surveys' => 'Опросы мероприятий',
+  'export_answers' => 'Экспортировать ответы',
+  'num_responses' => '# Ответов',
+  'question_delete_title' => 'Все ответы также будут удалены. Если вы хотите сохранить ответы участников, вам следует деактивировать вопрос.',
+  'question_title' => 'Заголовок вопроса',
+  'required' => 'Обязателен',
+  'status' => 'Статус',
+  'tickets_list' => 'Билеты: :list',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Ticket.php b/resources/lang/ru/Ticket.php
new file mode 100644
index 000000000..de7bae121
--- /dev/null
+++ b/resources/lang/ru/Ticket.php
@@ -0,0 +1,54 @@
+<?php
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageEvent\\Tickets.blade.php
+  'on_sale' => 'Продается',
+  'id' => 'ID билета',
+  //==================================== Translations ====================================//
+  'attendee_ref' => 'Ссылка участника',
+  'coupon_codes' => 'Коды купона',
+  'create_ticket' => 'Создать билет',
+  'demo_attendee_ref' => '#YLY9U73-1',
+  'demo_end_date_time' => 'Март 18-е 5:08PM',
+  'demo_event' => 'Демо мероприятие',
+  'demo_name' => 'Новые гибриды',
+  'demo_order_ref' => '#YLY9U73',
+  'demo_organiser' => 'Демо Организатор',
+  'demo_price' => '€XX.XX',
+  'demo_start_date_time' => 'Март 18-е 4:08PM',
+  'demo_ticket_type' => 'Общий вход',
+  'demo_venue' => 'Демо локация',
+  'doesnt_account_for_refunds' => 'Не учитывает возврат.',
+  'end_date_time' => 'Дата/время окончания',
+  'event' => 'Мероприятие',
+  'event_tickets' => 'Билеты мероприятия',
+  'footer' => 'Входной билет теряет свою силу с момента покидания места проведения мероприятия, повторный вход во время мероприятия не разрешается.',
+  'n_tickets' => ':num билетов',
+  'name' => 'Имя',
+  'no_tickets_yet' => 'Пока нет билетов',
+  'no_tickets_yet_text' => 'Создайте свой первый билет, нажав на кнопку ниже.',
+  'order_ref' => 'Ссылка на заказ',
+  'organiser' => 'Организатор',
+  'pause' => 'Пауза',
+  'price' => 'Цена',
+  'questions' => 'Вопросы',
+  'remaining' => 'Осталось',
+  'resume' => 'Резюме',
+  'revenue' => 'Доход (без налогов)',
+  'search_tickets' => 'искать билеты...',
+  'show_1d_barcode' => 'Показывать 1D баркод на билетах',
+  'sold' => 'Продано',
+  'start_date_time' => 'Дата/время начала',
+  'this_ticket_is_hidden' => 'Этот билет скрыт',
+  'ticket_background_color' => 'Цвет фона билета',
+  'ticket_border_color' => 'Цвет рамки билета',
+  'ticket_design' => 'Дизайн билета',
+  'access_codes' => 'Промо-коды',
+  'ticket_preview' => 'Предварительный просмотр билета',
+  'ticket_sales_paused' => 'Продажи приостановлены',
+  'ticket_sub_text_color' => 'Цвет подтекста билета',
+  'ticket_text_color' => 'Цвет текста билета',
+  'ticket_type' => 'Категория билета',
+  'venue' => 'Место проведения',
+);
diff --git a/resources/lang/ru/Top.php b/resources/lang/ru/Top.php
new file mode 100644
index 000000000..008aee883
--- /dev/null
+++ b/resources/lang/ru/Top.php
@@ -0,0 +1,18 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/25 10:00:32 
+*************************************************************************/
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\Shared\\Layouts\\Master.blade.php
+  'account_settings' => 'Настройки учетной записи',
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\Shared\\Layouts\\Master.blade.php
+  'create_organiser' => 'Создать организатора',
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\Shared\\Layouts\\Master.blade.php
+  'feedback_bug_report' => 'Отзывы / Сообщения об ошибках',
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\Shared\\Layouts\\Master.blade.php
+  'my_profile' => 'Мой профиль',
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\Shared\\Layouts\\Master.blade.php
+  'sign_out' => 'Выйти из системы',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/User.php b/resources/lang/ru/User.php
new file mode 100644
index 000000000..d22f4e398
--- /dev/null
+++ b/resources/lang/ru/User.php
@@ -0,0 +1,30 @@
+<?php
+
+return array (
+  'already_have_account' => 'У вас уже есть аккаунт? <a class="semibold" href=":url">Войти</a>',
+  'after_welcome' => 'Прежде чем продолжить, пожалуйста, обновите свою учетную запись, указав свое имя и новый пароль.',
+  'change_password' => 'Изменить пароль',
+  'confirm_new_password' => 'Подтвердить новый пароль',
+  'dont_have_account_button' => 'У вас нет аккаунта? <a class="semibold" href=":url">Зарегистрироваться</a>',
+  'email' => 'Емайл',
+  'first_name' => 'Имя',
+  'forgot_password' => 'Восстановление забытого пароля',
+  'forgot_password?' => 'Забыли свой пароль?',
+  'hide_change_password' => 'Скрыть изменение пароля',
+  'last_name' => 'Фамилия',
+  'login' => 'Логин',
+  'login_fail_msg' => 'Пожалуйста, проверьте свои данные и повторите попытку.',
+  'my_profile' => 'Мой профиль',
+  'new_password' => 'Новый пароль',
+  'old_password' => 'Старый пароль',
+  'password' => 'Пароль',
+  'password_already_sent' => 'Письмо со ссылкой для сброса пароля уже было отправлено на вашу электронную почту.',
+  'reset_input_errors' => 'Возникли некоторые проблемы с введенными данными.',
+  'reset_password' => 'Сбросить пароль',
+  'reset_password_success' => 'Письмо со ссылкой для сброса пароля было отправлено на вашу электронную почту.',
+  'sign_up' => 'Зарегистрироваться',
+  'sign_up_first_run' => 'Вы почти у цели. Создайте учетную запись пользователя, и вы готовы к работе.',
+  'terms_and_conditions' => '&nbsp;&nbsp;Я согласен с <a target="_blank" href=":url"> Правилами и условиями </a>',
+  'welcome_to_app' => 'Добро пожаловать в :app!',
+  'your_email' => 'Ваш емайл',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/Widgets.php b/resources/lang/ru/Widgets.php
new file mode 100644
index 000000000..39be991c2
--- /dev/null
+++ b/resources/lang/ru/Widgets.php
@@ -0,0 +1,12 @@
+<?php
+
+return array (
+  //============================== New strings to translate ==============================//
+  // Defined in file C:\\wamp\\www\\attendize\\resources\\views\\ManageEvent\\Widgets.blade.php
+  'embed_preview' => 'Предварительный просмотр',
+  //==================================== Translations ====================================//
+  'event_widgets' => 'Виджеты мероприятия',
+  'html_embed_code' => 'HTML код для встраивания в сайт',
+  'instructions' => 'Инструкции',
+  'instructions_text' => 'Просто скопируйте и вставьте предоставленный HTML на свой сайт в то место, где вы хотите, чтобы появился виджет.',
+);
\ No newline at end of file
diff --git a/resources/lang/ru/auth.php b/resources/lang/ru/auth.php
new file mode 100644
index 000000000..19c470381
--- /dev/null
+++ b/resources/lang/ru/auth.php
@@ -0,0 +1,19 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Authentication Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used during authentication for various
+    | messages that we need to display to the user. You are free to modify
+    | these language lines according to your application's requirements.
+    |
+    */
+
+    'failed' => 'Эти данные не соответствуют нашим записям.',
+    'throttle' => 'Слишком много попыток входа в систему. Пожалуйста, повторите попытку через :seconds .',
+
+];
diff --git a/resources/lang/ru/basic.php b/resources/lang/ru/basic.php
new file mode 100644
index 000000000..b9017f76c
--- /dev/null
+++ b/resources/lang/ru/basic.php
@@ -0,0 +1,67 @@
+<?php
+/*************************************************************************
+ Generated via "php artisan localization:missing" at 2018/04/26 11:05:24 
+*************************************************************************/
+
+return array (
+  //==================================== Translations ====================================//
+  'apply' => 'Применить',
+  'action' => 'Действие',
+  'affiliates' => 'Партнеры',
+  'attendees' => 'Участники',
+  'back_to_login' => 'Вернуться к входу в систему',
+  'back_to_page' => 'Вернуться к :page',
+  'back_to_orders' => 'Вернуться к заказам',
+  'cancel' => 'Отменить',
+  'customize' => 'Настроить',
+  'dashboard' => 'Панель управления',
+  'days' => 'дней',
+  'disable' => 'Отключить',
+  'disabled' => 'Выключен',
+  'drag_to_reorder' => 'Перетащите, чтобы изменить порядок',
+  'edit' => 'Редактировать',
+  'enable' => 'Включить',
+  'enabled' => 'Включен',
+  'error_404' => 'Похоже, что страница, которую вы ищете, больше не существует или переместилась.',
+  'event_dashboard' => 'Панель управления мероприятиями',
+  'event_menu' => 'Меню мероприятий',
+  'event_page_design' => 'Дизайн страницы мероприятия',
+  'export' => 'Экспорт',
+  'general' => 'Общее',
+  'hello' => 'Привет',
+  'hours' => 'часов',
+  'main_menu' => 'Главное меню',
+  'manage' => 'Управлять',
+  'message' => 'Сообщение',
+  'minutes' => 'минут',
+  'months_short' => '|Янв|Фев|Мар|Апр|Май|Июн|Июл|Авг|Снт|Окт|Ноя|Дек|',
+  'no' => 'Нет',
+  'order_form' => 'Форма заказа',
+  'orders' => 'Заказы',
+  'promote' => 'Продвигать',
+  'save_changes' => 'Сохранить изменения',
+  'save_details' => 'Сохранить детали',
+  'service_fees' => 'Стоимость услуг',
+  'social' => 'соцсети',
+  'submit' => 'Отправить',
+  'success' => 'Успех',
+  'ticket_design' => 'Дизайн билета',
+  'access_codes' => 'Промо коды',
+  'thank_you' => 'Спасибо',
+  'tickets' => 'Билеты',
+  'TOP' => 'TOP',
+  'total' => 'всего',
+  'whoops' => 'Ой!',
+  'yes' => 'Да',
+  'no' => 'Нет',
+  /*
+   * Lines below will turn obsolete in localization helper, it is declared in app/Helpers/macros.
+   * If you run it, it will break file input fields.
+  */
+  'upload' => 'Закачать',
+  'browse' => 'Обзор',
+  //================================== Obsolete strings ==================================//
+  'LLH:obsolete' => [
+    'months_long' => 'January|February|March|April|May|June|July|August|September|October|November|December',
+  ],
+);
\ No newline at end of file
diff --git a/resources/lang/ru/error.php b/resources/lang/ru/error.php
new file mode 100644
index 000000000..0196ad90e
--- /dev/null
+++ b/resources/lang/ru/error.php
@@ -0,0 +1,7 @@
+<?php
+
+return [
+    'back_soon' => 'Мы вскоре вернемся',
+    'back_soon_description'     => 'Мы в настоящее время занимаемся улучшением нашего сайта.',
+
+];
diff --git a/resources/lang/ru/pagination.php b/resources/lang/ru/pagination.php
new file mode 100644
index 000000000..4dd8db1eb
--- /dev/null
+++ b/resources/lang/ru/pagination.php
@@ -0,0 +1,19 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Pagination Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are used by the paginator library to build
+    | the simple pagination links. You are free to change them to anything
+    | you want to customize your views to better match your application.
+    |
+    */
+
+    'previous' => '&laquo; Предыдущая',
+    'next' => 'Следующая &raquo;',
+
+];
diff --git a/resources/lang/ru/passwords.php b/resources/lang/ru/passwords.php
new file mode 100644
index 000000000..fe61ddf02
--- /dev/null
+++ b/resources/lang/ru/passwords.php
@@ -0,0 +1,23 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Password Reset Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines are the default lines which match reasons
+    | that are given by the password broker for a password update attempt
+    | has failed, such as for an invalid token or invalid new password.
+    |
+    */
+
+    'reset' => 'Ваш пароль был сброшен!',
+    'sent' => 'Мы отправили вам ссылку для восстановления пароля по электронной почте!',
+    'token' => 'Эта ссылка для сброса пароля недействительна.',
+    'user' => "Мы не можем найти пользователя с таким адресом электронной почты.",
+    'timeout' => 'Пожалуйста, подождите перед повторной попыткой.',
+    'throttled' => 'Пожалуйста, подождите перед повторной попыткой.',
+
+];
diff --git a/resources/lang/ru/validation.php b/resources/lang/ru/validation.php
new file mode 100644
index 000000000..8f5002821
--- /dev/null
+++ b/resources/lang/ru/validation.php
@@ -0,0 +1,151 @@
+<?php
+
+return [
+
+    /*
+    |--------------------------------------------------------------------------
+    | Validation Language Lines
+    |--------------------------------------------------------------------------
+    |
+    | The following language lines contain the default error messages used by
+    | the validator class. Some of these rules have multiple versions such
+    | as the size rules. Feel free to tweak each of these messages here.
+    |
+    */
+
+    'accepted'             => ':attribute должен быть принят.',
+    'active_url'           => ':attribute содержит некорректный URL.',
+    'after'                => ':attribute должен быть датой после :date.',
+    'after_or_equal'       => ':attribute должен быть датой после или равной :date.',
+    'alpha'                => ':attribute может содержать только буквы.',
+    'alpha_dash'           => ':attribute может содержать только буквы, цифры и символ подчеркивания.',
+    'alpha_num'            => ':attribute может содержать только буквы и цифры.',
+    'array'                => ':attribute должен быть массивом',
+    'before'               => ':attribute должен быть датой до :date.',
+    'before_or_equal'      => ':attribute должен быть датой до или равной :date.',
+    'between'              => [
+        'numeric' => ':attribute должен быть между :min и :max.',
+        'file'    => ':attribute должен быть между :min и :max килобайт.',
+        'string'  => ':attribute должен быть между :min и :max символов.',
+        'array'   => ':attribute должен быть между :min и :max элементов.',
+    ],
+    'boolean'              => ':attribute должен быть в значении true или false.',
+    'confirmed'            => ':attribute не совпадает.',
+    'date'                 => ':attribute некорректная дата.',
+    'date_equals'          => 'The :attribute должен быть датой, равной :date.',
+    'date_format'          => ':attribute неверный формат даны, нужен :format.',
+    'different'            => ':attribute и :other должны различаться.',
+    'digits'               => ':attribute должны быть :digits цифр.',
+    'digits_between'       => ':attribute должен быть между :min and :max цифрами.',
+    'dimensions'           => ':attribute неправильный размер изображения.',
+    'distinct'             => ':attribute поле имеет дублирующее значение.',
+    'email'                => ':attribute должен быть правильным email адресом.',
+    'ends_with'            => ':attribute должен заканчиваться следующим: :values',
+    'exists'               => 'выбранное значение :attribute неверно.',
+    'file'                 => ':attribute должен быть файлом.',
+    'filled'               => ':attribute поле обязательно.',
+    'gt'                   => [
+        'numeric' => ':attribute должен быть больше чем :value.',
+        'file'    => ':attribute должен быть больше чем :value килобайт.',
+        'string'  => ':attribute должен быть больше чем :value символов.',
+        'array'   => ':attribute должен быть больше чем :value элементов.',
+    ],
+    'gte'                  => [
+        'numeric' => 'The :attribute должен быть больше или равно :value.',
+        'file'    => 'The :attribute должен быть больше или равно :value килобайт.',
+        'string'  => 'The :attribute должен быть больше или равно :value символов.',
+        'array'   => 'The :attribute должен быть :value элементов или больше.',
+    ],
+    'image'                => ':attribute должен быть изображением.',
+    'in'                   => 'выбранный :attribute неверен.',
+    'in_array'             => ':attribute поле не существует в :other.',
+    'integer'              => ':attribute должен быть целым числом.',
+    'ip'                   => ':attribute должен быть корректным IP адресом.',
+    'ipv4'                 => ':attribute должен быть корректным IPv4 адресом.',
+    'ipv6'                 => ':attribute должен быть корректным IPv6 адресом.',
+    'json'                 => ':attribute должен быть корректной JSON строкой',
+    'lt'                   => [
+        'numeric' => ':attribute должен быть меньше чем :value.',
+        'file'    => ':attribute должен быть меньше чем :value килобайт.',
+        'string'  => ':attribute должен быть меньше чем :value символов.',
+        'array'   => ':attribute  должен быть меньше чем :value элементов.',
+    ],
+    'lte'                  => [
+        'numeric' => 'The :attribute должен быть меньше или равен :value.',
+        'file'    => 'The :attribute должен быть меньше или равен :value килобайт.',
+        'string'  => 'The :attribute должен быть меньше или равен :value символов.',
+        'array'   => 'The :attribute должен быть меньше или равен :value элементов.',
+    ],
+    'max'                  => [
+        'numeric' => ':attribute не может быть больше чем :max.',
+        'file'    => ':attribute не может быть больше чем :max килобайт.',
+        'string'  => ':attribute не может быть больше чем :max символов.',
+        'array'   => ':attribute не может быть больше чем :max элементов.',
+    ],
+    'mimes'                => 'The :attribute должен быть файлом типа: :values.',
+    'mimetypes'            => 'The :attribute должен быть файлом типа: :values.',
+    'min'                  => [
+        'numeric' => ':attribute должен быть как минимум :min.',
+        'file'    => ':attribute должен быть как минимум :min килобайт.',
+        'string'  => ':attribute должен быть как минимум :min символов.',
+        'array'   => ':attribute должен быть как минимум :min элементов.',
+    ],
+    'not_in'               => 'Выбранное значение :attribute неверно.',
+    'not_regex'            => 'Формат :attribute неверен.',
+    'numeric'              => ':attribute должен быть числом.',
+    'password'             => 'Пароль неправильный.',
+    'present'              => ':attribute поле должно быть заполнено.',
+    'regex'                => ':attribute формат неверен.',
+    'required'             => ':attribute обязателен.',
+    'required_if'          => ':attribute поле обязательно если :other содержит :value.',
+    'required_unless'      => ':attribute поле обязательно если :other не содержит :values.',
+    'required_with'        => ':attribute поле обязательно, когда :values введено.',
+    'required_with_all'    => ':attribute поле обязательно, когда :values введены.',
+    'required_without'     => ':attribute поле обязательно, когда :values не введены.',
+    'required_without_all' => ':attribute поле обязательно, когда ни одно из :values не введены.',
+    'same'                 => ':attribute и :other должны совпадать.',
+    'size'                 => [
+        'numeric' => ':attribute должен иметь размер :size.',
+        'file'    => ':attribute должен иметь размер :size килобайт.',
+        'string'  => ':attribute должен иметь размер :size символов.',
+        'array'   => ':attribute должен содержать :size элементов.',
+    ],
+    'starts_with'          => ':attribute должен начинаться одним из следующего: :values',
+    'string'               => ':attribute должен быть строкой.',
+    'timezone'             => ':attribute должен быть корректной временной зоной.',
+    'unique'               => ':attribute неуникален.',
+    'uploaded'             => ':attribute ошибка закачки.',
+    'url'                  => ':attribute форман неправильный.',
+    'uuid'                 => ':attribute формат 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' => [
+        'terms_agreed' => [
+            'required' => 'Пожалуйста, согласитесь с нашими Условиями предоставления услуг.'
+        ]
+    ],
+
+    /*
+    |--------------------------------------------------------------------------
+    | 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' => [],
+
+];
diff --git a/resources/views/en/Mailers/TicketMailer/SendAttendeeInvite.blade.php b/resources/views/Emails/AttendeeInvite.blade.php
similarity index 100%
rename from resources/views/en/Mailers/TicketMailer/SendAttendeeInvite.blade.php
rename to resources/views/Emails/AttendeeInvite.blade.php
diff --git a/resources/views/Emails/Layouts/Master.blade.php b/resources/views/Emails/Layouts/Master.blade.php
new file mode 100644
index 000000000..7c1e88223
--- /dev/null
+++ b/resources/views/Emails/Layouts/Master.blade.php
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta name="viewport" content="width=device-width" />
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>
+        @section('subject')
+            Attendize.com Email
+        @show
+    </title>
+</head>
+
+<body style="background-color: #f7f7f7;margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;-webkit-font-smoothing: antialiased;-webkit-text-size-adjust: none;width: 100% !important;height: 100%">
+
+<!-- body -->
+<table class="body-wrap" style="background-color: #f7f7f7;margin: 0;padding: 20px;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;width: 100%">
+    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6"></td>
+        <td class="container" bgcolor="#FFFFFF" style="margin: 0 auto !important;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;border: 1px solid #f0f0f0;display: block !important;max-width: 600px !important;clear: both !important">
+
+            <!-- content -->
+            <div class="content" style="color: #888;margin: 0 auto;padding: 20px;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;max-width: 600px;display: block">
+                <table style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;width: 100%">
+                    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                        <td style="text-align: center;padding: 10px;margin: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                            <img style="max-width: 110px;margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6" src="{{url(asset(isset($email_logo) ? $email_logo : 'assets/images/logo-dark.png'))}}" />
+                        </td>
+                    </tr>
+                    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                            @yield('message_content')
+                        </td>
+                    </tr>
+                </table>
+            </div>
+            <!-- /content -->
+
+        </td>
+        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6"></td>
+    </tr>
+</table>
+<!-- /body -->
+
+<!-- footer -->
+<table class="footer-wrap" style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;width: 100%;clear: both !important">
+    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6"></td>
+        <td class="container" style="margin: 0 auto !important;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;display: block !important;max-width: 600px !important;clear: both !important">
+
+            <!-- content -->
+            <div class="content" style="margin: 0 auto;padding: 20px;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;max-width: 600px;display: block">
+                <table style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;width: 100%">
+                    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                        <td align="center" style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                            {{--Attendize is provided free of charge on the condition the below hyperlink is left in place.--}}
+                            {{--See https://www.attendize.com/license.html for more information.--}}
+                            <p style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 14px;line-height: 1.6;color: #666;margin-bottom: 10px;font-weight: normal">Powered By <a href="https://www.attendize.com/?email_footer_powered_by" style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;color: #999">Attendize.com</a>.
+                            </p>
+                            @yield('footer')
+                        </td>
+                    </tr>
+                </table>
+            </div><!-- /content -->
+
+        </td>
+        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6"></td>
+    </tr>
+</table>
+<!-- /footer -->
+
+</body>
+</html>
diff --git a/resources/views/Emails/MessageToAttendees.blade.php b/resources/views/Emails/MessageToAttendees.blade.php
new file mode 100644
index 000000000..bfb4d843e
--- /dev/null
+++ b/resources/views/Emails/MessageToAttendees.blade.php
@@ -0,0 +1,18 @@
+@extends('Emails.Layouts.Master')
+
+@section('message_content')
+
+<p>@lang("basic.hello") {{ $attendee->first_name }},</p>
+
+<p>@lang("Email.message_received_from_organiser", ["organiser_name"=>$event->organiser->name, "event_title"=>$event->title])</p>
+
+<p style="padding: 10px; margin:10px; border: 1px solid #f3f3f3;">
+    {!! nl2br($content) !!}
+</p>
+
+<p>@lang("Email.contact_organiser", ["organiser_name"=>$event->organiser->name, "organiser_email"=>$event->organiser->email])</p>
+@stop
+
+@section('footer')
+
+@stop
\ No newline at end of file
diff --git a/resources/views/Emails/OrderAttendeeTicket.blade.php b/resources/views/Emails/OrderAttendeeTicket.blade.php
new file mode 100644
index 000000000..34888eac9
--- /dev/null
+++ b/resources/views/Emails/OrderAttendeeTicket.blade.php
@@ -0,0 +1,9 @@
+@extends('Emails.Layouts.Master')
+
+@section('message_content')
+
+@lang("basic.hello") {{ $attendee->first_name }},<br><br>
+
+{{ @trans("Order_Emails.tickets_attached") }} <a href="{{route('showOrderDetails', ['order_reference' => $attendee->order->order_reference])}}">{{route('showOrderDetails', ['order_reference' => $attendee->order->order_reference])}}</a>.
+
+@stop
diff --git a/resources/views/en/Mailers/TicketMailer/SendOrderTickets.blade.php b/resources/views/Emails/OrderConfirmation.blade.php
similarity index 87%
rename from resources/views/en/Mailers/TicketMailer/SendOrderTickets.blade.php
rename to resources/views/Emails/OrderConfirmation.blade.php
index 53de57707..ff3a6462f 100644
--- a/resources/views/en/Mailers/TicketMailer/SendOrderTickets.blade.php
+++ b/resources/views/Emails/OrderConfirmation.blade.php
@@ -1,19 +1,20 @@
-@extends('en.Emails.Layouts.Master')
+@extends('Emails.Layouts.Master')
 
 @section('message_content')
-Hello,<br><br>
+@lang("basic.hello"),<br><br>
 
-Your order for the event <strong>{{$order->event->title}}</strong> was successful.<br><br>
+{!! @trans("Order_Emails.successful_order", ["name"=>$order->event->title]) !!}<br><br>
 
-Your tickets are attached to this email. You can also view you order details and download your tickets
-at: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
+{{ @trans("Order_Emails.tickets_attached") }} <a href="{{route('showOrderDetails', ['order_reference' => $order->order_reference])}}">{{route('showOrderDetails', ['order_reference' => $order->order_reference])}}</a>.
 
 @if(!$order->is_payment_received)
 <br><br>
-<strong>Please note: This order still requires payment. Instructions on how to make payment can be found on your
-    order page: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}</strong>
+<strong>{{ @trans("Order_Emails.order_still_awaiting_payment") }}</strong>
+<br><br>
+{{ $order->event->offline_payment_instructions }}
 <br><br>
 @endif
+
 <h3>Order Details</h3>
 Order Reference: <strong>{{$order->order_reference}}</strong><br>
 Order Name: <strong>{{$order->full_name}}</strong><br>
diff --git a/resources/views/en/Emails/OrderNotification.blade.php b/resources/views/Emails/OrderNotification.blade.php
similarity index 71%
rename from resources/views/en/Emails/OrderNotification.blade.php
rename to resources/views/Emails/OrderNotification.blade.php
index 4a72cd8a8..71e9b7434 100644
--- a/resources/views/en/Emails/OrderNotification.blade.php
+++ b/resources/views/Emails/OrderNotification.blade.php
@@ -1,23 +1,24 @@
-@extends('en.Emails.Layouts.Master')
+@extends('Emails.Layouts.Master')
 
 @section('message_content')
-Hello,<br><br>
+@lang("basic.hello"),<br><br>
 
-You have received a new order for the event <b>{{$order->event->title}}</b>.<br><br>
+@lang("Order_Emails.received_new_order") <b>{{$order->event->title}}</b>.<br><br>
 
 @if(!$order->is_payment_received)
-    <b>Please note: This order still requires payment.</b>
+    <b>@lang("Order_Emails.order_still_awaiting_payment")</b>
     <br><br>
 @endif
 
 
-<h3>Order Summary</h3>
-Order Reference: <b>{{$order->order_reference}}</b><br>
-Order Name: <b>{{$order->full_name}}</b><br>
-Order Date: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Order Email: <b>{{$order->email}}</b><br>
+<h3>@lang("Public_ViewEvent.order_summary")</h3>
+@lang("Email.organiser_copy")<br>
+@lang("Public_ViewEvent.order_reference"): <b>{{$order->order_reference}}</b><br>
+@lang("Public_ViewEvent.order_name"): <b>{{$order->full_name}}</b><br>
+@lang("Public_ViewEvent.order_date"): <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
+@lang("Public_ViewEvent.order_email"): <b>{{$order->email}}</b><br>
 @if ($order->is_business)
-<h3>Business Details</h3>
+<h3>@lang("Public_ViewEvent.business_details")</h3>
 @if ($order->business_name) @lang("Public_ViewEvent.business_name"): <strong>{{$order->business_name}}</strong><br>@endif
 @if ($order->business_tax_number) @lang("Public_ViewEvent.business_tax_number"): <strong>{{$order->business_tax_number}}</strong><br>@endif
 @if ($order->business_address_line_one) @lang("Public_ViewEvent.business_address_line1"): <strong>{{$order->business_address_line_one}}</strong><br>@endif
@@ -27,25 +28,25 @@
 @if ($order->business_address_code) @lang("Public_ViewEvent.business_address_code"): <strong>{{$order->business_address_code}}</strong><br>@endif
 @endif
 
-<h3>Order Items</h3>
+<h3>@lang("Public_ViewEvent.order_items")</h3>
 <div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
 
     <table style="width:100%; margin:10px;">
         <tr>
             <th>
-                Ticket
+                @lang("Public_ViewEvent.ticket")
             </th>
             <th>
-                Quantity
+                @lang("Public_ViewEvent.quantity_full")
             </th>
             <th>
-                Price
+                @lang("Public_ViewEvent.price")
             </th>
             <th>
-                Booking Fee
+                @lang("Public_ViewEvent.booking_fee")
             </th>
             <th>
-                Total
+                @lang("Public_ViewEvent.total")
             </th>
         </tr>
         @foreach($order->orderItems as $order_item)
@@ -58,7 +59,7 @@
             </td>
             <td>
                 @isFree($order_item->unit_price)
-                FREE
+                @lang("Public_ViewEvent.free")
                 @else
                 {{money($order_item->unit_price, $order->event->currency)}}
                 @endif
@@ -76,7 +77,7 @@
             </td>
             <td>
                 @isFree($order_item->unit_price)
-                FREE
+                @lang("Public_ViewEvent.free")
                 @else
                 {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
                 @endif
@@ -92,7 +93,7 @@
             <td>
             </td>
             <td>
-                <b>Sub Total</b>
+                <b>@lang("Public_ViewEvent.sub_total")</b>
             </td>
             <td colspan="2">
                 {{$orderService->getOrderTotalWithBookingFee(true)}}
@@ -122,7 +123,7 @@
             <td>
             </td>
             <td>
-                <b>Total</b>
+                <b>@lang("Public_ViewEvent.total")</b>
             </td>
             <td colspan="2">
                 {{$orderService->getGrandTotal(true)}}
@@ -132,9 +133,9 @@
 
 
     <br><br>
-    You can manage this order at: {{route('showEventOrders', ['event_id' => $order->event->id, 'q'=>$order->order_reference])}}
+    @lang("Order_Emails.manage_order") <a href="{{route('showEventOrders', ['event_id' => $order->event->id, 'q'=>$order->order_reference])}}">{{route('showEventOrders', ['event_id' => $order->event->id, 'q'=>$order->order_reference])}}</a>
     <br><br>
 </div>
 <br><br>
-Thank you
+@lang("basic.thank_you")
 @stop
diff --git a/resources/views/Mailers/TicketMailer/TestMail.blade.php b/resources/views/Mailers/TicketMailer/TestMail.blade.php
deleted file mode 100644
index 1577e4040..000000000
--- a/resources/views/Mailers/TicketMailer/TestMail.blade.php
+++ /dev/null
@@ -1,10 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Hello,<br><br>
-
-Your email was sent successfully.
-
-<br><br>
-Thank you
-@stop
diff --git a/resources/views/ManageAccount/Modals/EditAccount.blade.php b/resources/views/ManageAccount/Modals/EditAccount.blade.php
index 5e94c43f8..0f39fba5c 100644
--- a/resources/views/ManageAccount/Modals/EditAccount.blade.php
+++ b/resources/views/ManageAccount/Modals/EditAccount.blade.php
@@ -17,6 +17,9 @@
         .user-list .form-group {
             margin-bottom: 0;
         }
+        [hidden] {
+           display: none;
+        }
     </style>
     <div class="modal-dialog account_settings" style="width:750px;">
         <div class="modal-content">
@@ -96,10 +99,11 @@
                                                 <td><strong>{{ trans("ManageAccount.role") }}</strong></td>
                                                 <td><strong>{{ trans("ManageAccount.email") }}</strong></td>
                                                 <td><strong>{{ trans("ManageAccount.manage_events") }}</strong></td>
+                                                <td>&nbsp;</td>
                                             </tr>
                                         </thead>
                                         <tbody>
-                                        @foreach($account->users as $user)
+                                        @foreach($account->users()->withTrashed()->get() as $user)
                                             <tr class="user-list">
                                                 <td>{{$user->first_name}} {{$user->last_name}}</td>
                                                 <td class="text-center">
@@ -108,7 +112,7 @@
                                                         $defaultAssignedSelected = 1;
                                                         $assignedRoles = $roles->mapWithKeys(function($role) use ($user, &$defaultAssignedSelected) {
                                                             // Auto select the user role
-                                                            if ($role->name === $user->roles->first()->name) {
+                                                            if (isset($user->roles) && $user->roles->first() !== null && $role->name === $user->roles->first()->name) {
                                                                 $defaultAssignedSelected = $role->id;
                                                             }
                                                             return [$role['id'] => Str::title($role['name'])];
@@ -128,7 +132,7 @@
                                                     <div class="form-group">
                                                         <?php
                                                         $checked = $user->can('manage events');
-                                                        $disabled = ($user->roles->first()->name !== 'user');
+                                                        $disabled = (isset($user->roles) && $user->roles->first() !== null && $user->roles->first()->name !== 'user');
                                                         $uniqueID = sprintf("can_manage_events_%d", $user->id);
                                                         $attributes = [
                                                             'id' => $uniqueID,
@@ -148,10 +152,69 @@
                                                         </div>
                                                     </div>
                                                 </td>
+
+                                                <td>
+                                                    @if ($user->id != auth()->user()->id)
+                                                        <div style="position:relative;">
+                                                            <button data-id="dropdown" class="btn btn-sm btn-default">
+                                                                &hellip;
+                                                            </button>
+
+                                                            <div class="dropdown-content" style="position:absolute;z-index:10;bottom:0;right:0;transform:translateY(100%)" hidden>
+                                                                <div style="display:flex;flex-direction:column;padding:0.5rem;background-color:white">
+                                                                    <button
+                                                                        name="user_action"
+                                                                        data-action="send_invitation_message"
+                                                                        data-href="{!! route("sendInvitationMessage", ["id" => $user->id]) !!}"
+                                                                        class="btn btn-sm btn-default"
+                                                                        style="margin-bottom:0.5rem"
+                                                                        {!! $user->trashed() ? 'hidden' : '' !!}
+                                                                    >
+                                                                        {!! trans("ManageAccount.send_invitation_message") !!}
+                                                                    </button>
+
+                                                                    <button
+                                                                        name="user_action"
+                                                                        data-action="restore"
+                                                                        data-href="{!! route("userRestore", ["id" => $user->id]) !!}"
+                                                                        aria-label="{!! trans("basic.restore") !!}"
+                                                                        title="{!! trans("basic.restore") !!}"
+                                                                        class="btn btn-sm btn-warning"
+                                                                        style="margin-bottom:0.5rem"
+                                                                        {!! !$user->trashed() ? 'hidden' : '' !!}
+                                                                    >
+                                                                        {!! trans("basic.restore") !!}
+                                                                    </button>
+
+                                                                    <button
+                                                                        name="user_action"
+                                                                        data-action="force_delete"
+                                                                        data-href="{!! route("userDelete", ["id" => $user->id, "force" => true]) !!}"
+                                                                        class="btn btn-sm btn-danger"
+                                                                        style="margin-bottom:0.5rem"
+                                                                        {!! !$user->trashed() ? 'hidden' : '' !!}
+                                                                    >
+                                                                        {!! trans("basic.force_delete") !!}
+                                                                    </button>
+
+                                                                    <button
+                                                                        name="user_action"
+                                                                        data-action="delete"
+                                                                        data-href="{!! route("userDelete", ["id" => $user->id]) !!}"
+                                                                        class="btn btn-sm btn-danger"
+                                                                        {!! $user->trashed() ? 'hidden' : '' !!}
+                                                                    >
+                                                                        {!! trans("basic.delete") !!}
+                                                                    </button>
+                                                                </div>
+                                                            </div>
+                                                        </div>
+                                                    @endif
+                                                </td>
                                             </tr>
                                         @endforeach
                                         <tr>
-                                            <td colspan="4">
+                                            <td colspan="5">
                                                 {!! Form::open(['url' => route('postInviteUser'), 'class' => 'ajax']) !!}
                                                 <div class="row">
                                                     <div class="col-md-12">
diff --git a/resources/views/ManageEvent/Customize.blade.php b/resources/views/ManageEvent/Customize.blade.php
index 9d600c43f..bff3f4760 100644
--- a/resources/views/ManageEvent/Customize.blade.php
+++ b/resources/views/ManageEvent/Customize.blade.php
@@ -306,10 +306,6 @@ class="{{$tab == 'ticket_design' ? 'active' : ''}}"><a href="#ticket_design" dat
                             {!! Form::checkbox('social_show_email', 1, $event->social_show_email, ['id' => 'social_show_email', 'data-toggle' => 'toggle']) !!}
                             {!! Form::label('social_show_email', trans("Social.email")) !!}
                         </div>
-                        <div class="custom-checkbox mb5">
-                            {!! Form::checkbox('social_show_googleplus', 1, $event->social_show_googleplus, ['id' => 'social_show_googleplus', 'data-toggle' => 'toggle']) !!}
-                            {!! Form::label('social_show_googleplus', trans("Social.g+")) !!}
-                        </div>
                         <div class="custom-checkbox mb5">
                             {!! Form::checkbox('social_show_linkedin', 1, $event->social_show_linkedin, ['id' => 'social_show_linkedin', 'data-toggle' => 'toggle']) !!}
                             {!! Form::label('social_show_linkedin', trans("Social.linkedin")) !!}
diff --git a/resources/views/ManageEvent/Dashboard.blade.php b/resources/views/ManageEvent/Dashboard.blade.php
index b0eaeff05..c5201f7e4 100644
--- a/resources/views/ManageEvent/Dashboard.blade.php
+++ b/resources/views/ManageEvent/Dashboard.blade.php
@@ -203,7 +203,7 @@ class="popup">
                             </a>
                         </li>
                         <li class="rrssb-linkedin">
-                            <a href="http://www.linkedin.com/shareArticle?mini=true&amp;url={{$event->event_url}}?utm_source=linkedin&amp;title={{urlencode($event->title)}}&amp;summary={{{Str::words(strip_tags($event->description), 20)}}}"
+                            <a href="http://www.linkedin.com/shareArticle?mini=true&amp;url={{$event->event_url}}?utm_source=linkedin&amp;title={{urlencode($event->title)}}&amp;summary={{{Str::words(md_to_str($event->description), 20)}}}"
                                class="popup">
                             <span class="rrssb-icon">
                                 <svg version="1.1" xmlns="http://www.w3.org/2000/svg"
@@ -221,7 +221,7 @@ class="popup">
                             </a>
                         </li>
                         <li class="rrssb-twitter">
-                            <a href="http://twitter.com/intent/tweet?text=Check out: {{$event->event_url}}?utm_source=twitter {{ Str::words(strip_tags($event->description)), 20 }}"
+                            <a href="http://twitter.com/intent/tweet?text=Check out: {{$event->event_url}}?utm_source=twitter {{ Str::words(md_to_str($event->description), 20) }}"
                                class="popup">
                             <span class="rrssb-icon">
                                 <svg version="1.1" xmlns="http://www.w3.org/2000/svg"
@@ -240,38 +240,6 @@ class="popup">
                             </a>
                         </li>
 
-                        <li class="rrssb-googleplus">
-                            <a href="https://plus.google.com/share?url={{$event->event_url}}?utm_source=googleplus"
-                               class="popup">
-                            <span class="rrssb-icon">
-                                <svg version="1.1" xmlns="http://www.w3.org/2000/svg"
-                                     xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px"
-                                     height="28px" viewBox="0 0 28 28" enable-background="new 0 0 28 28"
-                                     xml:space="preserve">
-                                <g>
-                                    <g>
-                                        <path d="M14.703,15.854l-1.219-0.948c-0.372-0.308-0.88-0.715-0.88-1.459c0-0.748,0.508-1.223,0.95-1.663
-                                      c1.42-1.119,2.839-2.309,2.839-4.817c0-2.58-1.621-3.937-2.399-4.581h2.097l2.202-1.383h-6.67c-1.83,0-4.467,0.433-6.398,2.027
-                                      C3.768,4.287,3.059,6.018,3.059,7.576c0,2.634,2.022,5.328,5.604,5.328c0.339,0,0.71-0.033,1.083-0.068
-                                      c-0.167,0.408-0.336,0.748-0.336,1.324c0,1.04,0.551,1.685,1.011,2.297c-1.524,0.104-4.37,0.273-6.467,1.562
-                                      c-1.998,1.188-2.605,2.916-2.605,4.137c0,2.512,2.358,4.84,7.289,4.84c5.822,0,8.904-3.223,8.904-6.41
-                                      c0.008-2.327-1.359-3.489-2.829-4.731H14.703z M10.269,11.951c-2.912,0-4.231-3.765-4.231-6.037c0-0.884,0.168-1.797,0.744-2.511
-                                      c0.543-0.679,1.489-1.12,2.372-1.12c2.807,0,4.256,3.798,4.256,6.242c0,0.612-0.067,1.694-0.845,2.478
-                                      c-0.537,0.55-1.438,0.948-2.295,0.951V11.951z M10.302,25.609c-3.621,0-5.957-1.732-5.957-4.142c0-2.408,2.165-3.223,2.911-3.492
-                                      c1.421-0.479,3.25-0.545,3.555-0.545c0.338,0,0.52,0,0.766,0.034c2.574,1.838,3.706,2.757,3.706,4.479
-                                      c-0.002,2.073-1.736,3.665-4.982,3.649L10.302,25.609z"/>
-                                        <polygon points="23.254,11.89 23.254,8.521 21.569,8.521 21.569,11.89 18.202,11.89 18.202,13.604 21.569,13.604 21.569,17.004
-                                         23.254,17.004 23.254,13.604 26.653,13.604 26.653,11.89      "/>
-                                    </g>
-                                </g>
-                                </svg>
-                            </span>
-                                <span class="rrssb-text">@lang("Social.g+")</span>
-                            </a>
-                        </li>
-
-
-
                         <li class="rrssb-email">
                             <a href="mailto:?subject=Check This Out&body={{urlencode($event->event_url)}}?utm_source=email">
                             <span class="rrssb-icon">
diff --git a/resources/views/ManageEvent/Modals/CreateQuestion.blade.php b/resources/views/ManageEvent/Modals/CreateQuestion.blade.php
index bab61057c..d6eda99ea 100644
--- a/resources/views/ManageEvent/Modals/CreateQuestion.blade.php
+++ b/resources/views/ManageEvent/Modals/CreateQuestion.blade.php
@@ -71,7 +71,7 @@
 
                 <div class="form-group">
                     <div class="custom-checkbox">
-                        {!! Form::checkbox('is_required', 'yes', false, ['data-toggle' => 'toggle', 'id' => 'is_required']) !!}
+                        {!! Form::checkbox('is_required', 1, false, ['data-toggle' => 'toggle', 'id' => 'is_required']) !!}
                         {!! Form::label('is_required', trans('Question.make_this_a_required_question')) !!}
                     </div>
                 </div>
diff --git a/resources/views/ManageEvent/Modals/MessageOrder.blade.php b/resources/views/ManageEvent/Modals/MessageOrder.blade.php
index 5b1aa9488..dfa54bdfe 100644
--- a/resources/views/ManageEvent/Modals/MessageOrder.blade.php
+++ b/resources/views/ManageEvent/Modals/MessageOrder.blade.php
@@ -1,5 +1,5 @@
 <div role="dialog"  class="modal fade" style="display: none;">
-   {!! Form::open(array('url' => route('postMessageOrder', array('event_id' => $event->id, 'attendee_id' => $order->id)), 'class' => 'ajax reset closeModalAfter')) !!}
+   {!! Form::open(array('url' => route('postMessageOrder', array('event_id' => $event->id, 'order_id' => $order->id)), 'class' => 'ajax reset closeModalAfter')) !!}
     <div class="modal-dialog">
         <div class="modal-content">
             <div class="modal-header text-center">
@@ -9,7 +9,7 @@
                     {{ @trans("ManageEvent.message_order", ["order"=>$order->full_name]) }}
                     <br>
                     <span style="font-size: 17px;">
-                    {{ @trans("ManageEvent.order_ref", ["order_ref"=>$order->reference]) }}
+                    {{ @trans("ManageEvent.order_ref", ["order_ref"=>$order->order_reference]) }}
                     </span>
                 </h3>
             </div>
diff --git a/resources/views/ManageOrganiser/CreateOrganiser.blade.php b/resources/views/ManageOrganiser/CreateOrganiser.blade.php
index e753d9968..9f19a8868 100644
--- a/resources/views/ManageOrganiser/CreateOrganiser.blade.php
+++ b/resources/views/ManageOrganiser/CreateOrganiser.blade.php
@@ -12,9 +12,7 @@
             text-shadow: none !important;;
         }
     </style>
-    <script>
     @include('ManageOrganiser.Partials.OrganiserCreateAndEditJS')
-    </script>
 
 @stop
 
@@ -58,10 +56,10 @@
                         </div>
                     </div>
                     <div class="form-group">
-                        {!! Form::label('about', trans("Organiser.organiser_description"), array('class'=>'control-label ')) !!}
+                        {!! Form::label('about', trans("Organiser.organiser_description"), array('class'=>'control-label')) !!}
                         {!!  Form::textarea('about', old('about'),
                                     array(
-                                    'class'=>'form-control ',
+                                    'class'=>'form-control editable',
                                     'placeholder'=>trans("Organiser.organiser_description_placeholder"),
                                     'rows' => 4
                                     ))  !!}
diff --git a/resources/views/ManageOrganiser/Customize.blade.php b/resources/views/ManageOrganiser/Customize.blade.php
index 0c97dab0b..1bdb3ceca 100644
--- a/resources/views/ManageOrganiser/Customize.blade.php
+++ b/resources/views/ManageOrganiser/Customize.blade.php
@@ -2,11 +2,12 @@
 
 @section('title')
     @parent
-    @lang("Organiser.organiser_events")
+    {{ trans('Organiser.organiser_events') }}
+
 @stop
 
 @section('page_title')
-    @lang("Organiser.organiser_name_events", ["name"=>$organiser->name])
+    {{ trans('Organiser.organiser_name_events', ['name'=>$organiser->name]) }}
 @stop
 
 @section('top_nav')
@@ -31,8 +32,8 @@
 
         });
 
-        @include('ManageOrganiser.Partials.OrganiserCreateAndEditJS')
     </script>
+    @include('ManageOrganiser.Partials.OrganiserCreateAndEditJS')
 @stop
 
 @section('menu')
@@ -87,10 +88,10 @@
                                                 ))  !!}
                     </div>
                     <div class="form-group">
-                        {!! Form::label('about', trans("Organiser.organiser_description"), array('class'=>'control-label ')) !!}
+                        {!! Form::label('about', trans("Organiser.organiser_description"), array('class'=>'control-label')) !!}
                         {!!  Form::textarea('about', old('about'),
                                                 array(
-                                                'class'=>'form-control ',
+                                                'class'=>'form-control editable',
                                                 'placeholder'=>trans("Organiser.organiser_description_placeholder"),
                                                 'rows' => 4
                                                 ))  !!}
diff --git a/resources/views/ManageOrganiser/Dashboard.blade.php b/resources/views/ManageOrganiser/Dashboard.blade.php
index 9b59e695c..1b992b832 100644
--- a/resources/views/ManageOrganiser/Dashboard.blade.php
+++ b/resources/views/ManageOrganiser/Dashboard.blade.php
@@ -2,14 +2,14 @@
 
 @section('title')
     @parent
-    @lang("Organiser.dashboard")
+    {{ trans('Organiser.dashboard') }}
 @endsection
 
 @section('top_nav')
     @include('ManageOrganiser.Partials.TopNav')
 @stop
 @section('page_title')
-    @lang("Organiser.organiser_name_dashboard", ["name"=>$organiser->name])
+    {{ trans('Organiser.organiser_name_dashboard', ['name'=>$organiser->name])}}
 @stop
 
 @section('menu')
diff --git a/resources/views/ManageOrganiser/Events.blade.php b/resources/views/ManageOrganiser/Events.blade.php
index 6d17309c6..1fd2aee4c 100644
--- a/resources/views/ManageOrganiser/Events.blade.php
+++ b/resources/views/ManageOrganiser/Events.blade.php
@@ -2,11 +2,11 @@
 
 @section('title')
     @parent
-    @lang("Organiser.organiser_events")
+    {{ trans('Organiser.organiser_events') }}
 @stop
 
 @section('page_title')
-    @lang("Organiser.organiser_name_events", ["name"=>$organiser->name])
+    {{ trans('Organiser.organiser_name_events', ['name'=>$organiser->name]) }}
 @stop
 
 @section('top_nav')
diff --git a/resources/views/ManageOrganiser/Partials/EventCreateAndEditJS.blade.php b/resources/views/ManageOrganiser/Partials/EventCreateAndEditJS.blade.php
index 5caae8251..14791fc92 100644
--- a/resources/views/ManageOrganiser/Partials/EventCreateAndEditJS.blade.php
+++ b/resources/views/ManageOrganiser/Partials/EventCreateAndEditJS.blade.php
@@ -36,10 +36,12 @@
 </script>
 <style>
     .editor-toolbar {
-        border-radius: 0 !important;
+        border-radius: 0;
     }
-    .CodeMirror, .CodeMirror-scroll {
-        min-height: 100px !important;
+    .CodeMirror {
+        min-height: 100px;
+        border-bottom-left-radius: 0;
+        border-bottom-right-radius: 0;
     }
 
     .create_organiser, .address-manual {
diff --git a/resources/views/ManageOrganiser/Partials/OrganiserCreateAndEditJS.blade.php b/resources/views/ManageOrganiser/Partials/OrganiserCreateAndEditJS.blade.php
index 01737a176..624cb5bf2 100644
--- a/resources/views/ManageOrganiser/Partials/OrganiserCreateAndEditJS.blade.php
+++ b/resources/views/ManageOrganiser/Partials/OrganiserCreateAndEditJS.blade.php
@@ -1,3 +1,6 @@
+{!! Html::script('vendor/simplemde/dist/simplemde.min.js') !!}
+{!! Html::style('vendor/simplemde/dist/simplemde.min.css') !!}
+<script>
 $(document).ready(function(){
     var charge_tax = $("input[type=radio][name='charge_tax']:checked").val();
     if (charge_tax == 1) {
@@ -6,6 +9,16 @@
         $('#tax_fields').hide();
     }
 
+    $('.editable').each(function() {
+        var simplemde = new SimpleMDE({
+            element: this,
+            spellChecker: false,
+            status: false
+        });
+        simplemde.render();
+    })
+
+
     $('input[type=radio][name=charge_tax]').change(function() {
         if (this.value == 1) {
             $('#tax_fields').show();
@@ -14,4 +27,16 @@
             $('#tax_fields').hide();
         }
     });
-});
\ No newline at end of file
+});
+</script>
+<style>
+    .editor-toolbar {
+        border-radius: 0;
+    }
+    .CodeMirror {
+        height: 100px;
+        border-bottom-left-radius: 0;
+        border-bottom-right-radius: 0;
+    }
+</style>
+
diff --git a/resources/views/ManageOrganiser/SelectOrganiser.blade.php b/resources/views/ManageOrganiser/SelectOrganiser.blade.php
index c85a349d3..bd8c6583e 100644
--- a/resources/views/ManageOrganiser/SelectOrganiser.blade.php
+++ b/resources/views/ManageOrganiser/SelectOrganiser.blade.php
@@ -25,12 +25,14 @@
 
                     <h5>@lang("Organiser.continue_to"):</h5>
                     <div class="list-group">
-                        @foreach($organisers as $organiser)
-                            <a href="{{route('showOrganiserDashboard', ['organiser_id'=>$organiser->id] )}}"
-                               class="list-group-item">
-                                {{$organiser->name}}
-                            </a>
-                        @endforeach
+                        @if ($organisers)
+                            @foreach($organisers as $organiser)
+                                <a href="{{route('showOrganiserDashboard', ['organiser_id'=>$organiser->id] )}}"
+                                   class="list-group-item">
+                                    {{$organiser->name}}
+                                </a>
+                            @endforeach
+                        @endif
                     </div>
 
                     <div style="margin-top:-15px; padding: 10px; text-align: center;">
diff --git a/resources/views/Public/ViewEvent/Layouts/EmbeddedEventPage.blade.php b/resources/views/Public/ViewEvent/Layouts/EmbeddedEventPage.blade.php
index 689e77855..9a9d812c4 100644
--- a/resources/views/Public/ViewEvent/Layouts/EmbeddedEventPage.blade.php
+++ b/resources/views/Public/ViewEvent/Layouts/EmbeddedEventPage.blade.php
@@ -26,7 +26,7 @@
         @if($event->images->count())
         <meta property="og:image" content="{{URL::to($event->images->first()['image_path'])}}" />
         @endif
-        <meta property="og:description" content="{{{Str::words(strip_tags($event->description)), 20}}}" />
+        <meta property="og:description" content="{{{Str::words(md_to_str($event->description), 20)}}}" />
         <meta property="og:site_name" content="Attendize.com" />
         <!--[if lt IE 9]>
           <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
diff --git a/resources/views/Public/ViewEvent/Layouts/EventPage.blade.php b/resources/views/Public/ViewEvent/Layouts/EventPage.blade.php
index 89f04be33..a562d1c8d 100644
--- a/resources/views/Public/ViewEvent/Layouts/EventPage.blade.php
+++ b/resources/views/Public/ViewEvent/Layouts/EventPage.blade.php
@@ -26,7 +26,7 @@
         @if($event->images->count())
         <meta property="og:image" content="{{config('attendize.cdn_url_user_assets').'/'.$event->images->first()['image_path']}}" />
         @endif
-        <meta property="og:description" content="{{Str::words(strip_tags(Markdown::convertToHtml($event->description))), 20}}" />
+        <meta property="og:description" content="{{{Str::words(md_to_str($event->description), 20)}}}" />
         <meta property="og:site_name" content="Attendize.com" />
         <!--[if lt IE 9]>
           <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
diff --git a/resources/views/Public/ViewEvent/Partials/EventDescriptionSection.blade.php b/resources/views/Public/ViewEvent/Partials/EventDescriptionSection.blade.php
index bb3fbce19..917849efb 100644
--- a/resources/views/Public/ViewEvent/Partials/EventDescriptionSection.blade.php
+++ b/resources/views/Public/ViewEvent/Partials/EventDescriptionSection.blade.php
@@ -28,7 +28,7 @@
 
         <div class="col-md-{{ $descriptionColSize }}">
             <div class="content event_details" property="description">
-                {!! Markdown::convertToHtml($event->description) !!}
+                {!! md_to_html($event->description) !!}
             </div>
         </div>
 
diff --git a/resources/views/Public/ViewEvent/Partials/EventOrganiserSection.blade.php b/resources/views/Public/ViewEvent/Partials/EventOrganiserSection.blade.php
index 9646b5181..a137993c3 100644
--- a/resources/views/Public/ViewEvent/Partials/EventOrganiserSection.blade.php
+++ b/resources/views/Public/ViewEvent/Partials/EventOrganiserSection.blade.php
@@ -14,9 +14,10 @@
                     @endif
                 </h3>
 
-                <p property="description">
-                    {!! nl2br($event->organiser->about)!!}
-                </p>
+                <div property="description">
+                    {!! md_to_html($event->organiser->about) !!}
+                </div>
+
                 <p>
                     @if($event->organiser->facebook)
                         <a property="sameAs" href="https://fb.com/{{$event->organiser->facebook}}" class="btn btn-facebook">
@@ -70,4 +71,3 @@
         </div>
     </div>
 </section>
-
diff --git a/resources/views/Public/ViewEvent/Partials/EventPaymentSection.blade.php b/resources/views/Public/ViewEvent/Partials/EventPaymentSection.blade.php
index cb77234f1..ffd53041e 100644
--- a/resources/views/Public/ViewEvent/Partials/EventPaymentSection.blade.php
+++ b/resources/views/Public/ViewEvent/Partials/EventPaymentSection.blade.php
@@ -69,7 +69,7 @@
                 @if($order_requires_payment)
                 @include('Public.ViewEvent.Partials.OfflinePayments')
                 @endif
-                @if(View::exists($payment_gateway['checkout_blade_template']) && $order_requires_payment)
+                @if($order_requires_payment && View::exists($payment_gateway['checkout_blade_template']))
                 @include($payment_gateway['checkout_blade_template'])
                 @endif
                 @if(!$order_requires_payment)
diff --git a/resources/views/Public/ViewEvent/Partials/EventShareSection.blade.php b/resources/views/Public/ViewEvent/Partials/EventShareSection.blade.php
index fef36cc72..40a12012f 100644
--- a/resources/views/Public/ViewEvent/Partials/EventShareSection.blade.php
+++ b/resources/views/Public/ViewEvent/Partials/EventShareSection.blade.php
@@ -1,4 +1,4 @@
-@if($event->social_show_facebook || $event->social_show_linkedin || $event->social_show_twitter || $event->social_show_googleplus || $event->social_show_whatsapp || $event->social_show_email)
+@if($event->social_show_facebook || $event->social_show_linkedin || $event->social_show_twitter || $event->social_show_whatsapp || $event->social_show_email)
 <section id="share" class="container">
     <div class="row">
         <h1 class="section_head">
@@ -25,7 +25,7 @@
                 @endif
                 @if($event->social_show_linkedin)
                 <li class="rrssb-linkedin">
-                    <a href="http://www.linkedin.com/shareArticle?mini=true&amp;url={{$event->event_url}}?title={{urlencode($event->title)}}&amp;summary={{{Str::words(strip_tags($event->description), 20)}}}" class="popup">
+                    <a href="http://www.linkedin.com/shareArticle?mini=true&amp;url={{$event->event_url}}?title={{urlencode($event->title)}}&amp;summary={{{Str::words(md_to_str($event->description), 20)}}}" class="popup">
                         <span class="rrssb-icon">
                             <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="28px" viewBox="0 0 28 28" enable-background="new 0 0 28 28" xml:space="preserve">
                                 <path d="M25.424,15.887v8.447h-4.896v-7.882c0-1.979-0.709-3.331-2.48-3.331c-1.354,0-2.158,0.911-2.514,1.803
@@ -41,7 +41,7 @@
                 @endif
                 @if($event->social_show_twitter)
                 <li class="rrssb-twitter">
-                    <a href="http://twitter.com/intent/tweet?text=Check out: {{$event->event_url}} {{{Str::words(strip_tags($event->description), 20)}}}" class="popup">
+                    <a href="http://twitter.com/intent/tweet?text=Check out: {{$event->event_url}} {{{Str::words(md_to_str($event->description), 20)}}}" class="popup">
                         <span class="rrssb-icon">
                             <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
                                  width="28px" height="28px" viewBox="0 0 28 28" enable-background="new 0 0 28 28" xml:space="preserve">
@@ -57,33 +57,6 @@
                     </a>
                 </li>
                 @endif
-                @if($event->social_show_googleplus)
-                <li class="rrssb-googleplus">
-                    <a href="https://plus.google.com/share?url={{$event->event_url}}" class="popup">
-                        <span class="rrssb-icon">
-                            <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="28px" viewBox="0 0 28 28" enable-background="new 0 0 28 28" xml:space="preserve">
-                                <g>
-                                    <g>
-                                        <path d="M14.703,15.854l-1.219-0.948c-0.372-0.308-0.88-0.715-0.88-1.459c0-0.748,0.508-1.223,0.95-1.663
-                                              c1.42-1.119,2.839-2.309,2.839-4.817c0-2.58-1.621-3.937-2.399-4.581h2.097l2.202-1.383h-6.67c-1.83,0-4.467,0.433-6.398,2.027
-                                              C3.768,4.287,3.059,6.018,3.059,7.576c0,2.634,2.022,5.328,5.604,5.328c0.339,0,0.71-0.033,1.083-0.068
-                                              c-0.167,0.408-0.336,0.748-0.336,1.324c0,1.04,0.551,1.685,1.011,2.297c-1.524,0.104-4.37,0.273-6.467,1.562
-                                              c-1.998,1.188-2.605,2.916-2.605,4.137c0,2.512,2.358,4.84,7.289,4.84c5.822,0,8.904-3.223,8.904-6.41
-                                              c0.008-2.327-1.359-3.489-2.829-4.731H14.703z M10.269,11.951c-2.912,0-4.231-3.765-4.231-6.037c0-0.884,0.168-1.797,0.744-2.511
-                                              c0.543-0.679,1.489-1.12,2.372-1.12c2.807,0,4.256,3.798,4.256,6.242c0,0.612-0.067,1.694-0.845,2.478
-                                              c-0.537,0.55-1.438,0.948-2.295,0.951V11.951z M10.302,25.609c-3.621,0-5.957-1.732-5.957-4.142c0-2.408,2.165-3.223,2.911-3.492
-                                              c1.421-0.479,3.25-0.545,3.555-0.545c0.338,0,0.52,0,0.766,0.034c2.574,1.838,3.706,2.757,3.706,4.479
-                                              c-0.002,2.073-1.736,3.665-4.982,3.649L10.302,25.609z"/>
-                                        <polygon points="23.254,11.89 23.254,8.521 21.569,8.521 21.569,11.89 18.202,11.89 18.202,13.604 21.569,13.604 21.569,17.004
-                                                 23.254,17.004 23.254,13.604 26.653,13.604 26.653,11.89      "/>
-                                    </g>
-                                </g>
-                            </svg>
-                        </span>
-                        <span class="rrssb-text">google+</span>
-                    </a>
-                </li>
-                @endif
                 @if($event->social_show_whatsapp)
                 <li class="rrssb-whatsapp">
                    <a style="background-color: #43d854;" href="whatsapp://send?text={{urlencode($event->title . ' - ' . $event->event_url)}}" data-action="share/whatsapp/share">
diff --git a/resources/views/Public/ViewEvent/Partials/EventViewOrderSection.blade.php b/resources/views/Public/ViewEvent/Partials/EventViewOrderSection.blade.php
index 4c087cc81..159338677 100644
--- a/resources/views/Public/ViewEvent/Partials/EventViewOrderSection.blade.php
+++ b/resources/views/Public/ViewEvent/Partials/EventViewOrderSection.blade.php
@@ -138,7 +138,7 @@
                         @lang("Public_ViewEvent.order_awaiting_payment")
                     </div>
                     <div class="offline_payment_instructions well">
-                        {!! Markdown::convertToHtml($event->offline_payment_instructions) !!}
+                        {!! md_to_html($event->offline_payment_instructions) !!}
                     </div>
 
                     @endif
diff --git a/resources/views/Public/ViewEvent/Partials/OfflinePayments.blade.php b/resources/views/Public/ViewEvent/Partials/OfflinePayments.blade.php
index dab90b592..9cf3a67f0 100644
--- a/resources/views/Public/ViewEvent/Partials/OfflinePayments.blade.php
+++ b/resources/views/Public/ViewEvent/Partials/OfflinePayments.blade.php
@@ -17,9 +17,9 @@
 <div class="offline_payment" style="display: none;">
     <h5>@lang("Public_ViewEvent.offline_payment_instructions")</h5>
     <div class="well">
-        {!! Markdown::convertToHtml($event->offline_payment_instructions) !!}
+        {!! md_to_html($event->offline_payment_instructions) !!}
     </div>
-    <input class="btn btn-lg btn-success card-submit" style="width:100%;" type="submit" value="Complete Order">
+    <input class="btn btn-lg btn-success card-submit" style="width:100%;" type="submit" value="@lang("Public_ViewEvent.complete_order")">
 </div>
 {!! Form::close() !!}
 <style>
diff --git a/resources/views/Public/ViewOrganiser/Layouts/OrganiserPage.blade.php b/resources/views/Public/ViewOrganiser/Layouts/OrganiserPage.blade.php
index 2078ef50d..a465ac348 100644
--- a/resources/views/Public/ViewOrganiser/Layouts/OrganiserPage.blade.php
+++ b/resources/views/Public/ViewOrganiser/Layouts/OrganiserPage.blade.php
@@ -23,7 +23,7 @@
         <meta property="og:type" content="article" />
         <meta property="og:url" content="{{URL::to('')}}" />
         <meta property="og:image" content="{{URL::to($organiser->full_logo_path)}}" />
-        <meta property="og:description" content="{{{Str::words(strip_tags($organiser->description)), 20}}}" />
+        <meta property="og:description" content="{{{md_to_html($organiser->description, 20)}}}" />
         <meta property="og:site_name" content="Attendize.com" />
         <!--[if lt IE 9]>
           <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
diff --git a/resources/views/Public/ViewOrganiser/Partials/OrganiserHeaderSection.blade.php b/resources/views/Public/ViewOrganiser/Partials/OrganiserHeaderSection.blade.php
index a4f82bcc1..2192cc5a2 100644
--- a/resources/views/Public/ViewOrganiser/Partials/OrganiserHeaderSection.blade.php
+++ b/resources/views/Public/ViewOrganiser/Partials/OrganiserHeaderSection.blade.php
@@ -9,7 +9,7 @@
             <h1>{{$organiser->name}}</h1>
             @if($organiser->about)
             <div class="description pa10">
-                {!! $organiser->about !!}
+                {!! md_to_html($organiser->about) !!}
             </div>
             @endif
         </div>
diff --git a/resources/views/Public/ViewOrganiser/Partials/OrganiserSocialSection.blade.php b/resources/views/Public/ViewOrganiser/Partials/OrganiserSocialSection.blade.php
index 4cbd65dac..54b07c400 100644
--- a/resources/views/Public/ViewOrganiser/Partials/OrganiserSocialSection.blade.php
+++ b/resources/views/Public/ViewOrganiser/Partials/OrganiserSocialSection.blade.php
@@ -19,7 +19,7 @@
                 @endif
                 @if($event->social_show_linkedin)
                 <li class="rrssb-linkedin">
-                    <a href="http://www.linkedin.com/shareArticle?mini=true&amp;url={{$event->event_url}}?utm_source=linkedin&amp;title={{urlencode($event->title)}}&amp;summary={{{Str::words(strip_tags($event->description), 20)}}}" class="popup">
+                    <a href="http://www.linkedin.com/shareArticle?mini=true&amp;url={{$event->event_url}}?utm_source=linkedin&amp;title={{urlencode($event->title)}}&amp;summary={{{Str::words(md_to_str($event->description), 20)}}}" class="popup">
                         <span class="rrssb-icon">
                             <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="28px" viewBox="0 0 28 28" enable-background="new 0 0 28 28" xml:space="preserve">
                                 <path d="M25.424,15.887v8.447h-4.896v-7.882c0-1.979-0.709-3.331-2.48-3.331c-1.354,0-2.158,0.911-2.514,1.803
@@ -35,7 +35,7 @@
                 @endif
                 @if($event->social_show_twitter)
                 <li class="rrssb-twitter">
-                    <a href="http://twitter.com/intent/tweet?text=Check out: {{$event->event_url}} {{{Str::words(strip_tags($event->description), 20)}}}" class="popup">
+                    <a href="http://twitter.com/intent/tweet?text=Check out: {{$event->event_url}} {{{Str::words(md_to_str($event->description), 20)}}}" class="popup">
                         <span class="rrssb-icon">
                             <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
                                  width="28px" height="28px" viewBox="0 0 28 28" enable-background="new 0 0 28 28" xml:space="preserve">
@@ -51,37 +51,10 @@
                     </a>
                 </li>
                 @endif
-                @if($event->social_show_googleplus)
-                <li class="rrssb-googleplus">
-                    <a href="https://plus.google.com/share?url={{$event->event_url}}?utm_source=googleplus" class="popup">
-                        <span class="rrssb-icon">
-                            <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="28px" viewBox="0 0 28 28" enable-background="new 0 0 28 28" xml:space="preserve">
-                                <g>
-                                    <g>
-                                        <path d="M14.703,15.854l-1.219-0.948c-0.372-0.308-0.88-0.715-0.88-1.459c0-0.748,0.508-1.223,0.95-1.663
-                                              c1.42-1.119,2.839-2.309,2.839-4.817c0-2.58-1.621-3.937-2.399-4.581h2.097l2.202-1.383h-6.67c-1.83,0-4.467,0.433-6.398,2.027
-                                              C3.768,4.287,3.059,6.018,3.059,7.576c0,2.634,2.022,5.328,5.604,5.328c0.339,0,0.71-0.033,1.083-0.068
-                                              c-0.167,0.408-0.336,0.748-0.336,1.324c0,1.04,0.551,1.685,1.011,2.297c-1.524,0.104-4.37,0.273-6.467,1.562
-                                              c-1.998,1.188-2.605,2.916-2.605,4.137c0,2.512,2.358,4.84,7.289,4.84c5.822,0,8.904-3.223,8.904-6.41
-                                              c0.008-2.327-1.359-3.489-2.829-4.731H14.703z M10.269,11.951c-2.912,0-4.231-3.765-4.231-6.037c0-0.884,0.168-1.797,0.744-2.511
-                                              c0.543-0.679,1.489-1.12,2.372-1.12c2.807,0,4.256,3.798,4.256,6.242c0,0.612-0.067,1.694-0.845,2.478
-                                              c-0.537,0.55-1.438,0.948-2.295,0.951V11.951z M10.302,25.609c-3.621,0-5.957-1.732-5.957-4.142c0-2.408,2.165-3.223,2.911-3.492
-                                              c1.421-0.479,3.25-0.545,3.555-0.545c0.338,0,0.52,0,0.766,0.034c2.574,1.838,3.706,2.757,3.706,4.479
-                                              c-0.002,2.073-1.736,3.665-4.982,3.649L10.302,25.609z"/>
-                                        <polygon points="23.254,11.89 23.254,8.521 21.569,8.521 21.569,11.89 18.202,11.89 18.202,13.604 21.569,13.604 21.569,17.004
-                                                 23.254,17.004 23.254,13.604 26.653,13.604 26.653,11.89      "/>
-                                    </g>
-                                </g>
-                            </svg>
-                        </span>
-                        <span class="rrssb-text">@lang("Social.g+")</span>
-                    </a>
-                </li>
-                @endif
                 @if($event->social_show_pinterest)
                 @if(false)
                 <li class="rrssb-pinterest">
-                    <a href="http://pinterest.com/pin/create/button/?url={{$event->event_url}}?utm_source=pinterest&amp;media={{$event->bg_image_url}}&amp;description={{{Str::words(strip_tags($event->description), 20)}}}">
+                    <a href="http://pinterest.com/pin/create/button/?url={{$event->event_url}}?utm_source=pinterest&amp;media={{$event->bg_image_url}}&amp;description={{{Str::words(md_to_str($event->description), 20)}}}">
                         <span class="rrssb-icon">
                             <svg version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="28px" height="28px" viewBox="0 0 28 28" enable-background="new 0 0 28 28" xml:space="preserve">
                                 <path d="M14.021,1.57C6.96,1.57,1.236,7.293,1.236,14.355c0,7.062,5.724,12.785,12.785,12.785c7.061,0,12.785-5.725,12.785-12.785
@@ -110,4 +83,4 @@
             </ul>
         </div>
     </div>
-</section>
\ No newline at end of file
+</section>
diff --git a/resources/views/Shared/Layouts/Master.blade.php b/resources/views/Shared/Layouts/Master.blade.php
index 8c2f34ec8..bff3d4960 100644
--- a/resources/views/Shared/Layouts/Master.blade.php
+++ b/resources/views/Shared/Layouts/Master.blade.php
@@ -30,6 +30,12 @@
     {!! Html::style(config('attendize.cdn_url_static_assets').'/assets/stylesheet/application.css') !!}
     <!--/Style-->
 
+    <!--rtl-style-->
+    @if (config('app.locale_dir') =='rtl')
+        {!! Html::style(config('attendize.cdn_url_static_assets').'/assets/stylesheet/application-rtl.css') !!}    
+    @endif
+    <!--/rtl-style-->
+
     @yield('head')
 </head>
 <body class="attendize">
diff --git a/resources/views/de/Emails/Auth/Reminder.blade.php b/resources/views/de/Emails/Auth/Reminder.blade.php
index 5521b41c4..82c1c1d31 100644
--- a/resources/views/de/Emails/Auth/Reminder.blade.php
+++ b/resources/views/de/Emails/Auth/Reminder.blade.php
@@ -8,4 +8,4 @@
         Danke,<br>
        	Attendize Team
     </div>
-@stop
\ No newline at end of file
+@stop
diff --git a/resources/views/de/Emails/OrderConfirmation.blade.php b/resources/views/de/Emails/OrderConfirmation.blade.php
deleted file mode 100644
index be0377f38..000000000
--- a/resources/views/de/Emails/OrderConfirmation.blade.php
+++ /dev/null
@@ -1,121 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Hallo,<br><br>
-
-Deine Bestellung für die Veranstaltung <b>{{$order->event->title}}</b> war erfolgreich.<br><br>
-
-Deine Tickets sind dieser E-Mail beigefügt. Hier kannst Deine Bestellung ansehen und Deine Tickets herunterladen: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-
-<h3>Bestellungsdetails</h3>
-Bestellnummer: <b>{{$order->order_reference}}</b><br>
-Name: <b>{{$order->full_name}}</b><br>
-Datum: <b>{{$order->created_at->toDayDateTimeString()}}</b><br>
-E-Mail Adresse: <b>{{$order->email}}</b><br>
-
-<h3>Bestellübersicht</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <td>
-                <b>Ticket</b>
-            </td>
-            <td>
-                <b>Anzahl</b>
-            </td>
-            <td>
-                <b>Preis</b>
-            </td>
-            <td>
-                <b>Gebühr</b>
-            </td>
-            <td>
-                <b>Gesamt</b>
-            </td>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-                                <tr>
-                                    <td>
-                                        {{$order_item->title}}
-                                    </td>
-                                    <td>
-                                        {{$order_item->quantity}}
-                                    </td>
-                                    <td>
-                                        @if((int)ceil($order_item->unit_price) == 0)
-                                        Kostenlos
-                                        @else
-                                       {{money($order_item->unit_price, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @if((int)ceil($order_item->unit_price) == 0)
-                                        -
-                                        @else
-                                        {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @if((int)ceil($order_item->unit_price) == 0)
-                                        Kostenlos
-                                        @else
-                                        {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                </tr>
-                                @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Zwischensumme</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>{{$order->event->organiser->tax_name}}</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Gesamt</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-
-    <br><br>
-</div>
-<br><br>
-Danke
-@stop
\ No newline at end of file
diff --git a/resources/views/de/Emails/OrderNotification.blade.php b/resources/views/de/Emails/OrderNotification.blade.php
deleted file mode 100644
index c42c4f8a7..000000000
--- a/resources/views/de/Emails/OrderNotification.blade.php
+++ /dev/null
@@ -1,130 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Hello,<br><br>
-
-Es ging eine neue Bestllung für die Veranstaltung <b>{{$order->event->title}}</b> ein.<br><br>
-
-@if(!$order->is_payment_received)
-    <b>Achtung: Bezahlung ausstehend.</b>
-    <br><br>
-@endif
-
-
-Bestellungsdetails
-<br><br>
-Bestellnummer: <b>{{$order->order_reference}}</b><br>
-Name: <b>{{$order->full_name}}</b><br>
-Datum: <b>{{$order->created_at->toDayDateTimeString()}}</b><br>
-E-Mail Adresse: <b>{{$order->email}}</b><br>
-
-
-<h3>Bestellübersicht</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <th>
-                Ticket
-            </th>
-            <th>
-                Anzahl
-            </th>
-            <th>
-                Preis
-            </th>
-            <th>
-                Gebühr
-            </th>
-            <th>
-                Gesamt
-            </th>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-        <tr>
-            <td>
-                {{$order_item->title}}
-            </td>
-            <td>
-                {{$order_item->quantity}}
-            </td>
-            <td>
-                @if((int)ceil($order_item->unit_price) == 0)
-                Kostenlos
-                @else
-                {{money($order_item->unit_price, $order->event->currency)}}
-                @endif
-
-            </td>
-            <td>
-                @if((int)ceil($order_item->unit_price) == 0)
-                -
-                @else
-                {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                @endif
-
-            </td>
-            <td>
-                @if((int)ceil($order_item->unit_price) == 0)
-                Kostenlos
-                @else
-                {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                @endif
-
-            </td>
-        </tr>
-        @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Zwischensumme</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>{{$order->event->organiser->tax_name}}</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Gesamt</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-
-
-    <br><br>
-    Du kannst die Bestellung hier verwalten: {{route('showEventOrders', ['event_id' => $order->event->id, 'q'=>$order->order_reference])}}
-    <br><br>
-</div>
-<br><br>
-Danke
-@stop
diff --git a/resources/views/de/Emails/inviteUser.blade.php b/resources/views/de/Emails/inviteUser.blade.php
index e423d23fc..caad4c953 100644
--- a/resources/views/de/Emails/inviteUser.blade.php
+++ b/resources/views/de/Emails/inviteUser.blade.php
@@ -9,7 +9,7 @@
 
 <p>
     So kannst Du dich anmelden:<br><br>
-    
+
     Benutzername: <b>{{$user->email}}</b> <br>
     Passwort: <b>{{$temp_password}}</b>
 </p>
diff --git a/resources/views/de/Emails/notifyRefundedAttendee.blade.php b/resources/views/de/Emails/notifyRefundedAttendee.blade.php
index c503cb136..fdf8582ce 100644
--- a/resources/views/de/Emails/notifyRefundedAttendee.blade.php
+++ b/resources/views/de/Emails/notifyRefundedAttendee.blade.php
@@ -15,4 +15,4 @@
 
 @section('footer')
 
-@stop
\ No newline at end of file
+@stop
diff --git a/resources/views/de/Installer/Partials/Footer.blade.php b/resources/views/de/Installer/Partials/Footer.blade.php
index 04874e23b..28e812b32 100644
--- a/resources/views/de/Installer/Partials/Footer.blade.php
+++ b/resources/views/de/Installer/Partials/Footer.blade.php
@@ -15,4 +15,4 @@
     <p>
         Bitte Lesen Sie die  <a style="text-decoration: underline;" target="_blank" href="http://www.attendize.com/license.html">Lizenz</a> bevor Sie Attendize installieren.
     </p>
-</div>
\ No newline at end of file
+</div>
diff --git a/resources/views/de/Mailers/TicketMailer/SendAttendeeInvite.blade.php b/resources/views/de/Mailers/TicketMailer/SendAttendeeInvite.blade.php
deleted file mode 100644
index 57ea202b5..000000000
--- a/resources/views/de/Mailers/TicketMailer/SendAttendeeInvite.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Hallo {{$attendee->first_name}},<br><br>
-
-Sie wurden zum Event  <b>{{$attendee->order->event->title}} eingeladen</b>.<br/>
-Sie finden Ihr Ticket für dieses Event im Anhang.
-
-<br><br>
-Mit freundlichen Grüßen
-@stop
diff --git a/resources/views/de/Mailers/TicketMailer/SendAttendeeTicket.blade.php b/resources/views/de/Mailers/TicketMailer/SendAttendeeTicket.blade.php
deleted file mode 100644
index da1345524..000000000
--- a/resources/views/de/Mailers/TicketMailer/SendAttendeeTicket.blade.php
+++ /dev/null
@@ -1,10 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Hallo {{$attendee->first_name}},<br><br>
-
-Ihr Ticket für das Event <b>{{$attendee->order->event->title}}</b> ist an diese Email angehängt.
-
-<br><br>
-Vielen Dank
-@stop
diff --git a/resources/views/de/Mailers/TicketMailer/SendOrderTickets.blade.php b/resources/views/de/Mailers/TicketMailer/SendOrderTickets.blade.php
deleted file mode 100644
index 88f9371ac..000000000
--- a/resources/views/de/Mailers/TicketMailer/SendOrderTickets.blade.php
+++ /dev/null
@@ -1,125 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Hallo,<br><br>
-
-Ihre bestellung für das Event <b>{{$order->event->title}}</b> war erfolgreich.<br><br>
-
-Ihr Ticket ist an diese Email angehängt. Sie können Ihre Bestelldetails nochmals unter: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}} ansehen und dort auch Ihr Ticket Herunterladen
-
-@if(!$order->is_payment_received)
-<br><br>
-<b>Bitte beachten: Ihre Bestellung ist noch nicht bezahlt. Die Anleitung für die Bezahlung können Sie folgender Seite entnehmen: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}</b>
-<br><br>
-@endif
-<h3>Order Details</h3>
-Bestellreferenznummer: <b>{{$order->order_reference}}</b><br>
-Besteller Name: <b>{{$order->full_name}}</b><br>
-Bestelldatum: <b>{{$order->created_at->toDayDateTimeString()}}</b><br>
-Bestell Email: <b>{{$order->email}}</b><br>
-<a href="{!! route('downloadCalendarIcs', ['event_id' => $order->event->id]) !!}">Add To Calendar</a>
-<h3>Bestellung</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <td>
-                <b>Ticket</b>
-            </td>
-            <td>
-                <b>Menge.</b>
-            </td>
-            <td>
-                <b>Preis</b>
-            </td>
-            <td>
-                <b>Gebühren</b>
-            </td>
-            <td>
-                <b>Gesamt</b>
-            </td>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-                                <tr>
-                                    <td>
-                                        {{$order_item->title}}
-                                    </td>
-                                    <td>
-                                        {{$order_item->quantity}}
-                                    </td>
-                                    <td>
-                                        @if((int)ceil($order_item->unit_price) == 0)
-                                        FREE
-                                        @else
-                                       {{money($order_item->unit_price, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @if((int)ceil($order_item->unit_price) == 0)
-                                        -
-                                        @else
-                                        {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @if((int)ceil($order_item->unit_price) == 0)
-                                        FREE
-                                        @else
-                                        {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                </tr>
-                                @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Gesamtpreis</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>{{$order->event->organiser->tax_name}}</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Gesamt</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-
-    <br><br>
-</div>
-<br><br>
-Vielen Dank
-@stop
diff --git a/resources/views/en/Emails/OrderConfirmation.blade.php b/resources/views/en/Emails/OrderConfirmation.blade.php
deleted file mode 100644
index 550802e6c..000000000
--- a/resources/views/en/Emails/OrderConfirmation.blade.php
+++ /dev/null
@@ -1,121 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Hello,<br><br>
-
-Your order for the event <b>{{$order->event->title}}</b> was successful.<br><br>
-
-Your tickets are attached to this email. You can also view you order details and download your tickets at: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-
-<h3>Order Details</h3>
-Order Reference: <b>{{$order->order_reference}}</b><br>
-Order Name: <b>{{$order->full_name}}</b><br>
-Order Date: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Order Email: <b>{{$order->email}}</b><br>
-
-<h3>Order Items</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <td>
-                <b>Ticket</b>
-            </td>
-            <td>
-                <b>Qty.</b>
-            </td>
-            <td>
-                <b>Price</b>
-            </td>
-            <td>
-                <b>Fee</b>
-            </td>
-            <td>
-                <b>Total</b>
-            </td>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-                                <tr>
-                                    <td>
-                                        {{$order_item->title}}
-                                    </td>
-                                    <td>
-                                        {{$order_item->quantity}}
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        FREE
-                                        @else
-                                       {{money($order_item->unit_price, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        -
-                                        @else
-                                        {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        FREE
-                                        @else
-                                        {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                </tr>
-                                @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Sub Total</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>{{$order->event->organiser->tax_name}}</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Total</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-
-    <br><br>
-</div>
-<br><br>
-Thank you
-@stop
diff --git a/resources/views/en/Mailers/TicketMailer/SendAttendeeTicket.blade.php b/resources/views/en/Mailers/TicketMailer/SendAttendeeTicket.blade.php
deleted file mode 100644
index 32ad8c586..000000000
--- a/resources/views/en/Mailers/TicketMailer/SendAttendeeTicket.blade.php
+++ /dev/null
@@ -1,10 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Hello {{$attendee->first_name}},<br><br>
-
-Your ticket for the event <b>{{$attendee->order->event->title}}</b> is attached to this email.
-
-<br><br>
-Thank you
-@stop
diff --git a/resources/views/es/Emails/OrderConfirmation.blade.php b/resources/views/es/Emails/OrderConfirmation.blade.php
deleted file mode 100755
index 4031fc9b8..000000000
--- a/resources/views/es/Emails/OrderConfirmation.blade.php
+++ /dev/null
@@ -1,120 +0,0 @@
-@extends('es.Emails.Layouts.Master')
-
-@section('message_content')
-    Hola,<br><br>
-
-    Se ha procesado el pedido para el evento <b>{{$order->event->title}}</b> correctamente.<br><br>
-
-    Sus entradas se adjuntan a este correo electrónico. También puede ver los detalles de su pedido y descargar sus entradas en: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-    <h3>Resumen del pedido</h3>
-    Referencia de pedido: <b>{{$order->order_reference}}</b><br>
-    Nombre del pedido: <b>{{$order->full_name}}</b><br>
-    Fecha del pedido: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-    Correo electrónico del pedido: <b>{{$order->email}}</b><br>
-
-    <h3>Artículos del pedido</h3>
-    <div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-        <table style="width:100%; margin:10px;">
-            <tr>
-                <td>
-                    <b>Entrada</b>
-                </td>
-                <td>
-                    <b>Cantidad</b>
-                </td>
-                <td>
-                    <b>Precio</b>
-                </td>
-                <td>
-                    <b>Gastos de Gestión</b>
-                </td>
-                <td>
-                    <b>Total</b>
-                </td>
-            </tr>
-            @foreach($order->orderItems as $order_item)
-                <tr>
-                    <td>
-                        {{$order_item->title}}
-                    </td>
-                    <td>
-                        {{$order_item->quantity}}
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            GRATIS
-                        @else
-                            {{money($order_item->unit_price, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            -
-                        @else
-                            {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            GRATIS
-                        @else
-                            {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                        @endif
-
-                    </td>
-                </tr>
-            @endforeach
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>Sub Total</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getOrderTotalWithBookingFee(true)}}
-                </td>
-            </tr>
-            @if($order->event->organiser->charge_tax == 1)
-                <tr>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                        <b>{{$order->event->organiser->tax_name}}</b>
-                    </td>
-                    <td colspan="2">
-                        {{$orderService->getTaxAmount(true)}}
-                    </td>
-                </tr>
-            @endif
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>Total</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getGrandTotal(true)}}
-                </td>
-            </tr>
-        </table>
-
-        <br><br>
-    </div>
-    <br><br>
-    Gracias
-@stop
diff --git a/resources/views/es/Emails/OrderNotification.blade.php b/resources/views/es/Emails/OrderNotification.blade.php
deleted file mode 100755
index e86753ed2..000000000
--- a/resources/views/es/Emails/OrderNotification.blade.php
+++ /dev/null
@@ -1,128 +0,0 @@
-@extends('es.Emails.Layouts.Master')
-
-@section('message_content')
-    Hola,<br><br>
-
-    Ha recibido un nuevo pedido para el evento <b>{{$order->event->title}}</b>.<br><br>
-
-    @if(!$order->is_payment_received)
-        <b>Nota: Este pedido todavía no ha sido pagado.</b>
-        <br><br>
-    @endif
-
-    Resumen del pedido:
-    <br><br>
-    Referencia de pedido: <b>{{$order->order_reference}}</b><br>
-    Nombre del pedido: <b>{{$order->full_name}}</b><br>
-    Fecha del pedido: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-    Order Email: <b>{{$order->email}}</b><br>
-
-    <h3>Artículos del pedido</h3>
-    <div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-        <table style="width:100%; margin:10px;">
-            <tr>
-                <th>
-                    Entrada
-                </th>
-                <th>
-                    Cantidad
-                </th>
-                <th>
-                    Precio
-                </th>
-                <th>
-                    Gastos de Gestión
-                </th>
-                <th>
-                    Total
-                </th>
-            </tr>
-            @foreach($order->orderItems as $order_item)
-                <tr>
-                    <td>
-                        {{$order_item->title}}
-                    </td>
-                    <td>
-                        {{$order_item->quantity}}
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            GRATIS
-                        @else
-                            {{money($order_item->unit_price, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            -
-                        @else
-                            {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            GRATIS
-                        @else
-                            {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                        @endif
-
-                    </td>
-                </tr>
-            @endforeach
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>Sub Total</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getOrderTotalWithBookingFee(true)}}
-                </td>
-            </tr>
-            @if($order->event->organiser->charge_tax == 1)
-                <tr>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                        <b>{{$order->event->organiser->tax_name}}</b>
-                    </td>
-                    <td colspan="2">
-                        {{$orderService->getTaxAmount(true)}}
-                    </td>
-                </tr>
-            @endif
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>Total</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getGrandTotal(true)}}
-                </td>
-            </tr>
-        </table>
-
-
-        <br><br>
-        Puede gestionar este pedido
-        en: {{route('showEventOrders', ['event_id' => $order->event->id, 'q'=>$order->order_reference])}}
-        <br><br>
-    </div>
-    <br><br>
-    Gracias
-@stop
diff --git a/resources/views/es/Mailers/TicketMailer/SendAttendeeInvite.blade.php b/resources/views/es/Mailers/TicketMailer/SendAttendeeInvite.blade.php
deleted file mode 100755
index 00007e537..000000000
--- a/resources/views/es/Mailers/TicketMailer/SendAttendeeInvite.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-@extends('es.Emails.Layouts.Master')
-
-@section('message_content')
-    Hola {{$attendee->first_name}},<br><br>
-
-    Has sido invitado al evento <b>{{$attendee->order->event->title}}</b>.<br/>
-    Tu entrada para el evento se adjunta a este correo electrónico.
-
-    <br><br>
-    Un cordial saludo
-@stop
diff --git a/resources/views/es/Mailers/TicketMailer/SendAttendeeTicket.blade.php b/resources/views/es/Mailers/TicketMailer/SendAttendeeTicket.blade.php
deleted file mode 100755
index 4b93c8747..000000000
--- a/resources/views/es/Mailers/TicketMailer/SendAttendeeTicket.blade.php
+++ /dev/null
@@ -1,10 +0,0 @@
-@extends('es.Emails.Layouts.Master')
-
-@section('message_content')
-    Hola {{$attendee->first_name}},<br><br>
-
-    Tu entrada para el evento <b>{{$attendee->order->event->title}}</b> se adjunta a este correo electrónico.
-
-    <br><br>
-    Gracias
-@stop
diff --git a/resources/views/es/Mailers/TicketMailer/SendOrderTickets.blade.php b/resources/views/es/Mailers/TicketMailer/SendOrderTickets.blade.php
deleted file mode 100755
index 6c6bd081f..000000000
--- a/resources/views/es/Mailers/TicketMailer/SendOrderTickets.blade.php
+++ /dev/null
@@ -1,126 +0,0 @@
-@extends('es.Emails.Layouts.Master')
-
-@section('message_content')
-    Hola,<br><br>
-
-    Se ha procesado el pedido para el evento <b>{{$order->event->title}}</b> correctamente.<br><br>
-
-    Tus entradas se adjuntan a este correo electrónico. También puedes ver los detalles de tu pedido y descargar tus entradas en: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-    @if(!$order->is_payment_received)
-        <br><br>
-        <b>Nota: Este pedido todavía no ha sido pagado. Las instrucciones sobre cómo realizar el pago se encuentran en
-            la página de pedido: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}</b>
-        <br><br>
-    @endif
-    <h3>Resumen del pedido</h3>
-    Referencia de pedido: <b>{{$order->order_reference}}</b><br>
-    Nombre del pedido: <b>{{$order->full_name}}</b><br>
-    Fecha del pedido: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-    Correo electrónico del pedido: <b>{{$order->email}}</b><br>
-    <a href="{!! route('downloadCalendarIcs', ['event_id' => $order->event->id]) !!}">Añadir al Calendario</a>
-    <h3>Order Items</h3>
-    <div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-        <table style="width:100%; margin:10px;">
-            <tr>
-                <td>
-                    <b>Entrada</b>
-                </td>
-                <td>
-                    <b>Cantidad</b>
-                </td>
-                <td>
-                    <b>Precio</b>
-                </td>
-                <td>
-                    <b>Gastos de Gestión</b>
-                </td>
-                <td>
-                    <b>Total</b>
-                </td>
-            </tr>
-            @foreach($order->orderItems as $order_item)
-                <tr>
-                    <td>
-                        {{$order_item->title}}
-                    </td>
-                    <td>
-                        {{$order_item->quantity}}
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            GRATIS
-                        @else
-                            {{money($order_item->unit_price, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            -
-                        @else
-                            {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            GRATIS
-                        @else
-                            {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                        @endif
-
-                    </td>
-                </tr>
-            @endforeach
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>Sub Total</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getOrderTotalWithBookingFee(true)}}
-                </td>
-            </tr>
-            @if($order->event->organiser->charge_tax == 1)
-                <tr>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                        <b>{{$order->event->organiser->tax_name}}</b>
-                    </td>
-                    <td colspan="2">
-                        {{$orderService->getTaxAmount(true)}}
-                    </td>
-                </tr>
-            @endif
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>Total</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getGrandTotal(true)}}
-                </td>
-            </tr>
-        </table>
-
-        <br><br>
-    </div>
-    <br><br>
-    Gracias
-@stop
diff --git a/resources/views/fr/Emails/OrderConfirmation.blade.php b/resources/views/fr/Emails/OrderConfirmation.blade.php
deleted file mode 100644
index e8a18dbee..000000000
--- a/resources/views/fr/Emails/OrderConfirmation.blade.php
+++ /dev/null
@@ -1,121 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Bonjour,<br><br>
-
-Votre commande pour l'événement <b>{{$order->event->title}}</b> a été prise en compte.<br><br>
-
-Vos billets sont joints à ce message. Vous pouvez aussi voir les détails de votre commande et télécharger vos billets sur : {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-
-<h3>Détails de la commande</h3>
-Référence de la commande : <b>{{$order->order_reference}}</b><br>
-Nom de la commande : <b>{{$order->full_name}}</b><br>
-Date de la commande : <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Courriel de la commande : <b>{{$order->email}}</b><br>
-
-<h3>Éléments de la commande</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <td>
-                <b>Billet</b>
-            </td>
-            <td>
-                <b>Qté.</b>
-            </td>
-            <td>
-                <b>Prix</b>
-            </td>
-            <td>
-                <b>Frais</b>
-            </td>
-            <td>
-                <b>Total</b>
-            </td>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-                                <tr>
-                                    <td>
-                                        {{$order_item->title}}
-                                    </td>
-                                    <td>
-                                        {{$order_item->quantity}}
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        GRATUIT
-                                        @else
-                                       {{money($order_item->unit_price, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        -
-                                        @else
-                                        {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        GRATUIT
-                                        @else
-                                        {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                </tr>
-                                @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Sous-total</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>{{$order->event->organiser->tax_name}}</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Total</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-
-    <br><br>
-</div>
-<br><br>
-Merci
-@stop
diff --git a/resources/views/fr/Emails/OrderNotification.blade.php b/resources/views/fr/Emails/OrderNotification.blade.php
deleted file mode 100644
index 5b2b636ef..000000000
--- a/resources/views/fr/Emails/OrderNotification.blade.php
+++ /dev/null
@@ -1,129 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Bonjour,<br><br>
-
-Vous avez reçu une nouvelle commande poour l'événement <b>{{$order->event->title}}</b>.<br><br>
-
-@if(!$order->is_payment_received)
-    <b>Note : cette commande attend encore d'être réglée.</b>
-    <br><br>
-@endif
-
-
-Résumé de la commande :
-<br><br>
-Référence de la commande : <b>{{$order->order_reference}}</b><br>
-Nom de la commande : <b>{{$order->full_name}}</b><br>
-Date de la commande : <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Courriel de la commande : <b>{{$order->email}}</b><br>
-
-<h3>Éléments de la commande</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <th>
-                Billet
-            </th>
-            <th>
-                Quantité
-            </th>
-            <th>
-                Prix
-            </th>
-            <th>
-                Frais de réservation
-            </th>
-            <th>
-                Total
-            </th>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-        <tr>
-            <td>
-                {{$order_item->title}}
-            </td>
-            <td>
-                {{$order_item->quantity}}
-            </td>
-            <td>
-                @isFree($order_item->unit_price)
-                GRATUIT
-                @else
-                {{money($order_item->unit_price, $order->event->currency)}}
-                @endif
-
-            </td>
-            <td>
-                @isFree($order_item->unit_price)
-                -
-                @else
-                {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                @endif
-
-            </td>
-            <td>
-                @isFree($order_item->unit_price)
-                GRATUIT
-                @else
-                {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                @endif
-
-            </td>
-        </tr>
-        @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Sous-total</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>{{$order->event->organiser->tax_name}}</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Total</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-
-
-    <br><br>
-    Vous pouvez gérer cette commande sur : {{route('showEventOrders', ['event_id' => $order->event->id, 'q'=>$order->order_reference])}}
-    <br><br>
-</div>
-<br><br>
-Merci
-@stop
diff --git a/resources/views/fr/Mailers/TicketMailer/SendAttendeeInvite.blade.php b/resources/views/fr/Mailers/TicketMailer/SendAttendeeInvite.blade.php
deleted file mode 100644
index 072c015dc..000000000
--- a/resources/views/fr/Mailers/TicketMailer/SendAttendeeInvite.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Bonjour {{$attendee->first_name}},<br><br>
-
-Vous avez été invité à l'événement <b>{{$attendee->order->event->title}}</b>.<br/>
-Votre billet pour l'événement est joint à ce message.
-
-<br><br>
-Sincèrement
-@stop
diff --git a/resources/views/fr/Mailers/TicketMailer/SendAttendeeTicket.blade.php b/resources/views/fr/Mailers/TicketMailer/SendAttendeeTicket.blade.php
deleted file mode 100644
index 7307e18f1..000000000
--- a/resources/views/fr/Mailers/TicketMailer/SendAttendeeTicket.blade.php
+++ /dev/null
@@ -1,10 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Bonjour {{$attendee->first_name}},<br><br>
-
-Votre billet pour l'événement <b>{{$attendee->order->event->title}}</b> est joint à ce message.
-
-<br><br>
-Merci
-@stop
diff --git a/resources/views/fr/Mailers/TicketMailer/SendOrderTickets.blade.php b/resources/views/fr/Mailers/TicketMailer/SendOrderTickets.blade.php
deleted file mode 100644
index 27299b628..000000000
--- a/resources/views/fr/Mailers/TicketMailer/SendOrderTickets.blade.php
+++ /dev/null
@@ -1,125 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Bonjour,<br><br>
-
-Votre commande pour l'événement <b>{{$order->event->title}}</b> s'est bien passée.<br><br>
-
-Vos billets sont joints à ce message. Vous pouvez aussi voir les détails de votre commande et télécharger vos billets ici : {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-@if(!$order->is_payment_received)
-<br><br>
-<b>Notez que cette commande demande encore d'être payée.  Les instructions sur la manière de payer sont sur la page de commande : {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}</b>
-<br><br>
-@endif
-<h3>Détails</h3>
-Référence de la commande : <b>{{$order->order_reference}}</b><br>
-Nom de la commande : <b>{{$order->full_name}}</b><br>
-Date de la commande : <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Courriel de la commande : <b>{{$order->email}}</b><br>
-<a href="{!! route('downloadCalendarIcs', ['event_id' => $order->event->id]) !!}">Ajouter au calendrier</a>
-<h3>Éléments de la commande</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <td>
-                <b>Billet</b>
-            </td>
-            <td>
-                <b>Qté.</b>
-            </td>
-            <td>
-                <b>Prix</b>
-            </td>
-            <td>
-                <b>Frais</b>
-            </td>
-            <td>
-                <b>Total</b>
-            </td>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-                                <tr>
-                                    <td>
-                                        {{$order_item->title}}
-                                    </td>
-                                    <td>
-                                        {{$order_item->quantity}}
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        GRATUIT
-                                        @else
-                                       {{money($order_item->unit_price, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        -
-                                        @else
-                                        {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        GRATUIT
-                                        @else
-                                        {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                </tr>
-                                @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Sous-total</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>{{$order->event->organiser->tax_name}}</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Total</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-
-    <br><br>
-</div>
-<br><br>
-Merci
-@stop
diff --git a/resources/views/it/Emails/OrderConfirmation.blade.php b/resources/views/it/Emails/OrderConfirmation.blade.php
deleted file mode 100644
index 9647193ae..000000000
--- a/resources/views/it/Emails/OrderConfirmation.blade.php
+++ /dev/null
@@ -1,121 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Ciao,<br><br>
-
-Il tuo ordine per l'evento <b>{{$order->event->title}}</b> è confermato.<br><br>
-
-I tuoi biglietti sono allegati a questa mail. Puoi vedere tutte le informazioni relative al tuo ordine e scaricare i biglietti visitando: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-
-<h3>Dettaglio Ordine</h3>
-Riferimento: <b>{{$order->order_reference}}</b><br>
-Nome: <b>{{$order->full_name}}</b><br>
-Data: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Email: <b>{{$order->email}}</b><br>
-
-<h3>Articoli</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <td>
-                <b>Biglietto</b>
-            </td>
-            <td>
-                <b>Qtà</b>
-            </td>
-            <td>
-                <b>Prezzo</b>
-            </td>
-            <td>
-                <b>Commissione</b>
-            </td>
-            <td>
-                <b>Totale</b>
-            </td>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-                                <tr>
-                                    <td>
-                                        {{$order_item->title}}
-                                    </td>
-                                    <td>
-                                        {{$order_item->quantity}}
-                                    </td>
-                                    <td>
-                                        @if((int)ceil($order_item->unit_price) == 0)
-                                        GRATUITO
-                                        @else
-                                       {{money($order_item->unit_price, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @if((int)ceil($order_item->unit_price) == 0)
-                                        -
-                                        @else
-                                        {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @if((int)ceil($order_item->unit_price) == 0)
-                                        GRATUITO
-                                        @else
-                                        {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                </tr>
-                                @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Totale parziale</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>{{$order->event->organiser->tax_name}}</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Totale</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-
-    <br><br>
-</div>
-<br><br>
-Grazie
-@stop
diff --git a/resources/views/it/Emails/OrderNotification.blade.php b/resources/views/it/Emails/OrderNotification.blade.php
deleted file mode 100644
index 6716e6f50..000000000
--- a/resources/views/it/Emails/OrderNotification.blade.php
+++ /dev/null
@@ -1,140 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Ciao,<br><br>
-
-Hai ricevuto un nuovo ordine per l'evento <b>{{$order->event->title}}</b>.<br><br>
-
-@if(!$order->is_payment_received)
-    <b>Nota: il pagamento per questo ordine deve ancora essere processato.</b>
-    <br><br>
-@endif
-
-
-<h3>Dettaglio Ordine</h3>
-Riferimento: <b>{{$order->order_reference}}</b><br>
-Nome: <b>{{$order->full_name}}</b><br>
-Data: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Email: <b>{{$order->email}}</b><br>
-@if ($order->is_business)
-<h3>Dettagli Azienda</h3>
-@if ($order->business_name) @lang("Public_ViewEvent.business_name"): <strong>{{$order->business_name}}</strong><br>@endif
-@if ($order->business_tax_number) @lang("Public_ViewEvent.business_tax_number"): <strong>{{$order->business_tax_number}}</strong><br>@endif
-@if ($order->business_address_line_one) @lang("Public_ViewEvent.business_address_line1"): <strong>{{$order->business_address_line_one}}</strong><br>@endif
-@if ($order->business_address_line_two) @lang("Public_ViewEvent.business_address_line2"): <strong>{{$order->business_address_line_two}}</strong><br>@endif
-@if ($order->business_address_state_province) @lang("Public_ViewEvent.business_address_state_province"): <strong>{{$order->business_address_state_province}}</strong><br>@endif
-@if ($order->business_address_city) @lang("Public_ViewEvent.business_address_city"): <strong>{{$order->business_address_city}}</strong><br>@endif
-@if ($order->business_address_code) @lang("Public_ViewEvent.business_address_code"): <strong>{{$order->business_address_code}}</strong><br>@endif
-@endif
-
-<h3>Order Items</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <th>
-                Biglietto
-            </th>
-            <th>
-                Quantità
-            </th>
-            <th>
-                Prezzo
-            </th>
-            <th>
-                Commissione
-            </th>
-            <th>
-                Totale
-            </th>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-        <tr>
-            <td>
-                {{$order_item->title}}
-            </td>
-            <td>
-                {{$order_item->quantity}}
-            </td>
-            <td>
-                @if((int)ceil($order_item->unit_price) == 0)
-                GRATUITO
-                @else
-                {{money($order_item->unit_price, $order->event->currency)}}
-                @endif
-            </td>
-            <td>
-                @if ((int)ceil($order_item->unit_booking_fee) > 0)
-                    @if((int)ceil($order_item->unit_price) == 0)
-                    -
-                    @else
-                    {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                    @endif
-                @else
-                    -
-                @endif
-            </td>
-            <td>
-                @if((int)ceil($order_item->unit_price) == 0)
-                GRATUITO
-                @else
-                {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                @endif
-
-            </td>
-        </tr>
-        @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Totale parziale</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <strong>{{$order->event->organiser->tax_name}}</strong><em>({{$order->event->organiser->tax_value}}%)</em>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Totale</b>
-            </td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-
-
-    <br><br>
-    Puoi gestire questo ordine visitando: {{route('showEventOrders', ['event_id' => $order->event->id, 'q'=>$order->order_reference])}}
-    <br><br>
-</div>
-<br><br>
-Grazie
-@stop
diff --git a/resources/views/it/Mailers/TicketMailer/SendAttendeeInvite.blade.php b/resources/views/it/Mailers/TicketMailer/SendAttendeeInvite.blade.php
deleted file mode 100644
index d61d5eacc..000000000
--- a/resources/views/it/Mailers/TicketMailer/SendAttendeeInvite.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Ciao {{$attendee->first_name}},<br><br>
-
-Sei stato invitato/a all'evento <b>{{$attendee->order->event->title}}</b>.<br/>
-Il biglietto è allegato a questa email.
-
-<br><br>
-A presto,
-@stop
diff --git a/resources/views/it/Mailers/TicketMailer/SendAttendeeTicket.blade.php b/resources/views/it/Mailers/TicketMailer/SendAttendeeTicket.blade.php
deleted file mode 100644
index 875a71d91..000000000
--- a/resources/views/it/Mailers/TicketMailer/SendAttendeeTicket.blade.php
+++ /dev/null
@@ -1,10 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Ciao {{$attendee->first_name}},<br><br>
-
-Il tuo biglietto per l'evento <b>{{$attendee->order->event->title}}</b> è allegato a questa email.
-
-<br><br>
-Grazie
-@stop
diff --git a/resources/views/it/Mailers/TicketMailer/SendOrderTickets.blade.php b/resources/views/it/Mailers/TicketMailer/SendOrderTickets.blade.php
deleted file mode 100644
index b585dfa78..000000000
--- a/resources/views/it/Mailers/TicketMailer/SendOrderTickets.blade.php
+++ /dev/null
@@ -1,111 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Ciao,<br><br>
-
-Il tuo ordine per l'evento <strong>{{$order->event->title}}</strong> è stato completato con successo.<br><br>
-
-I biglietti sono allegati a questa mail. Puoi vedere tutte le informazioni relative al tuo ordine e scaricare i biglietti visitando: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-@if(!$order->is_payment_received)
-<br><br>
-<strong>Nota: il pagamento per questo ordine deve ancora essere processato. Le istruzioni per procedere con il saldo sono disponibili qui: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}</strong>
-<br><br>
-@endif
-<h3>Dettaglio Ordine</h3>
-Riferimento: <strong>{{$order->order_reference}}</strong><br>
-Nome: <strong>{{$order->full_name}}</strong><br>
-Data: <strong>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</strong><br>
-Email: <strong>{{$order->email}}</strong><br>
-<a href="{!! route('downloadCalendarIcs', ['event_id' => $order->event->id]) !!}">Add To Calendar</a>
-
-@if ($order->is_business)
-<h3>Dettagli Azienda</h3>
-@if ($order->business_name) @lang("Public_ViewEvent.business_name"): <strong>{{$order->business_name}}</strong><br>@endif
-@if ($order->business_tax_number) @lang("Public_ViewEvent.business_tax_number"): <strong>{{$order->business_tax_number}}</strong><br>@endif
-@if ($order->business_address_line_one) @lang("Public_ViewEvent.business_address_line1"): <strong>{{$order->business_address_line_one}}</strong><br>@endif
-@if ($order->business_address_line_two) @lang("Public_ViewEvent.business_address_line2"): <strong>{{$order->business_address_line_two}}</strong><br>@endif
-@if ($order->business_address_state_province) @lang("Public_ViewEvent.business_address_state_province"): <strong>{{$order->business_address_state_province}}</strong><br>@endif
-@if ($order->business_address_city) @lang("Public_ViewEvent.business_address_city"): <strong>{{$order->business_address_city}}</strong><br>@endif
-@if ($order->business_address_code) @lang("Public_ViewEvent.business_address_code"): <strong>{{$order->business_address_code}}</strong><br>@endif
-@endif
-
-<h3>Order Items</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <td>
-                <strong>Biglietto</strong>
-            </td>
-            <td>
-                <strong>Qtà</strong>
-            </td>
-            <td>
-                <strong>Prezzo</strong>
-            </td>
-            <td>
-                <strong>Commissione</strong>
-            </td>
-            <td>
-                <strong>Totale</strong>
-            </td>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-        <tr>
-            <td>{{$order_item->title}}</td>
-            <td>{{$order_item->quantity}}</td>
-            <td>
-                @if((int)ceil($order_item->unit_price) == 0)
-                GRATUITO
-                @else
-                {{money($order_item->unit_price, $order->event->currency)}}
-                @endif
-            </td>
-            <td>
-                @if((int)ceil($order_item->unit_price) == 0)
-                -
-                @else
-                {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                @endif
-            </td>
-            <td>
-                @if((int)ceil($order_item->unit_price) == 0)
-                GRATUITO
-                @else
-                {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity),
-                $order->event->currency)}}
-                @endif
-            </td>
-        </tr>
-        @endforeach
-        <tr>
-            <td colspan="3"></td>
-            <td><strong>Totale parziale</strong></td>
-            <td colspan="2">
-                {{$orderService->getOrderTotalWithBookingFee(true)}}
-            </td>
-        </tr>
-        @if($order->event->organiser->charge_tax == 1)
-        <tr>
-            <td colspan="3"></td>
-            <td>
-                <strong>{{$order->event->organiser->tax_name}}</strong><em>({{$order->event->organiser->tax_value}}%)</em>
-            </td>
-            <td colspan="2">
-                {{$orderService->getTaxAmount(true)}}
-            </td>
-        </tr>
-        @endif
-        <tr>
-            <td colspan="3"></td>
-            <td><strong>Totale</strong></td>
-            <td colspan="2">
-                {{$orderService->getGrandTotal(true)}}
-            </td>
-        </tr>
-    </table>
-    <br><br>
-</div>
-<br><br>
-Grazie
-@stop
diff --git a/resources/views/ja/Emails/OrderConfirmation.blade.php b/resources/views/ja/Emails/OrderConfirmation.blade.php
deleted file mode 100644
index f4d2a0e14..000000000
--- a/resources/views/ja/Emails/OrderConfirmation.blade.php
+++ /dev/null
@@ -1,121 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-    こんにちは、<br><br>
-
-    イベント<b>{{$order->event->title}}</b>に対するあなたの注文は成功しました。<br><br>
-
-    あなたのチケットはこのEメールに添付されています。 また、注文の詳細を表示して、チケットをダウンロードすることもできます。{{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-
-    <h3>注文の詳細</h3>
-    注文照合：<b>{{$order->order_reference}}</b><br>
-    注文名：<b>{{$order->full_name}}</b><br>
-    注文日：<b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-    注文メール：<b>{{$order->email}}</b><br>
-
-    <h3>Order Items</h3>
-    <div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-        <table style="width:100%; margin:10px;">
-            <tr>
-                <td>
-                    <b>チケット</b>
-                </td>
-                <td>
-                    <b>個数</b>
-                </td>
-                <td>
-                    <b>価格</b>
-                </td>
-                <td>
-                    <b>料金</b>
-                </td>
-                <td>
-                    <b>合計</b>
-                </td>
-            </tr>
-            @foreach($order->orderItems as $order_item)
-                <tr>
-                    <td>
-                        {{$order_item->title}}
-                    </td>
-                    <td>
-                        {{$order_item->quantity}}
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            無料
-                        @else
-                            {{money($order_item->unit_price, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            -
-                        @else
-                            {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            無料
-                        @else
-                            {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                        @endif
-
-                    </td>
-                </tr>
-            @endforeach
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>小計</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getOrderTotalWithBookingFee(true)}}
-                </td>
-            </tr>
-            @if($order->event->organiser->charge_tax == 1)
-                <tr>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                        <b>{{$order->event->organiser->tax_name}}</b>
-                    </td>
-                    <td colspan="2">
-                        {{$orderService->getTaxAmount(true)}}
-                    </td>
-                </tr>
-            @endif
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>合計</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getGrandTotal(true)}}
-                </td>
-            </tr>
-        </table>
-
-        <br><br>
-    </div>
-    <br><br>
-    ありがとう
-@stop
diff --git a/resources/views/ja/Emails/OrderNotification.blade.php b/resources/views/ja/Emails/OrderNotification.blade.php
deleted file mode 100644
index 63301da0f..000000000
--- a/resources/views/ja/Emails/OrderNotification.blade.php
+++ /dev/null
@@ -1,130 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-    こんにちは、<br><br>
-
-    イベント：<b>{{$order->event->title}}</b>の新しい注文を受けました。<br><br>
-
-    @if(!$order->is_payment_received)
-        <b>ご注意：この注文にはまだ支払いが必要です。</b>
-        <br><br>
-    @endif
-
-
-    注文の概要：
-    <br><br>
-    注文照合：<b>{{$order->order_reference}}</b><br>
-    注文名：<b>{{$order->full_name}}</b><br>
-    注文日：<b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-    注文メール：<b>{{$order->email}}</b><br>
-
-
-    <h3>Order Items</h3>
-    <div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-
-        <table style="width:100%; margin:10px;">
-            <tr>
-                <th>
-                    チケット
-                </th>
-                <th>
-                    個数
-                </th>
-                <th>
-                    価格
-                </th>
-                <th>
-                    予約料金
-                </th>
-                <th>
-                    合計
-                </th>
-            </tr>
-            @foreach($order->orderItems as $order_item)
-                <tr>
-                    <td>
-                        {{$order_item->title}}
-                    </td>
-                    <td>
-                        {{$order_item->quantity}}
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            無料
-                        @else
-                            {{money($order_item->unit_price, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            -
-                        @else
-                            {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            無料
-                        @else
-                            {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                        @endif
-
-                    </td>
-                </tr>
-            @endforeach
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>小計</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getOrderTotalWithBookingFee(true)}}
-                </td>
-            </tr>
-            @if($order->event->organiser->charge_tax == 1)
-                <tr>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                        <b>{{$order->event->organiser->tax_name}}</b>
-                    </td>
-                    <td colspan="2">
-                        {{$orderService->getTaxAmount(true)}}
-                    </td>
-                </tr>
-            @endif
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>合計</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getGrandTotal(true)}}
-                </td>
-            </tr>
-        </table>
-
-
-        <br><br>
-        この注文を管理できます。{{route('showEventOrders', ['event_id' => $order->event->id, 'q'=>$order->order_reference])}}
-        <br><br>
-    </div>
-    <br><br>
-    ありがとう
-@stop
diff --git a/resources/views/ja/Mailers/TicketMailer/SendAttendeeInvite.blade.php b/resources/views/ja/Mailers/TicketMailer/SendAttendeeInvite.blade.php
deleted file mode 100644
index 3c094eb6a..000000000
--- a/resources/views/ja/Mailers/TicketMailer/SendAttendeeInvite.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-こんにちは {{$attendee->first_name}}、<br><br>
-
-あなたはイベント<b>{{$attendee->order->event->title}}</b>に招待されました。<br/>
-イベントのチケットはこのEメールに添付されています。
-
-<br><br>
-よろしく
-@stop
diff --git a/resources/views/ja/Mailers/TicketMailer/SendAttendeeTicket.blade.php b/resources/views/ja/Mailers/TicketMailer/SendAttendeeTicket.blade.php
deleted file mode 100644
index d13b5cef1..000000000
--- a/resources/views/ja/Mailers/TicketMailer/SendAttendeeTicket.blade.php
+++ /dev/null
@@ -1,10 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-こんにちは {{$attendee->first_name}}、<br><br>
-
-イベント<b>{{$attendee->order->event->title}}</b>のチケットがこのメールに添付されています。
-
-<br><br>
-ありがとう
-@stop
diff --git a/resources/views/ja/Mailers/TicketMailer/SendOrderTickets.blade.php b/resources/views/ja/Mailers/TicketMailer/SendOrderTickets.blade.php
deleted file mode 100644
index 0d3ef49ed..000000000
--- a/resources/views/ja/Mailers/TicketMailer/SendOrderTickets.blade.php
+++ /dev/null
@@ -1,126 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-    こんにちは、<br><br>
-
-    イベント<b>{{$order->event->title}}</b>の注文は成功しました。<br><br>
-
-    あなたのチケットはこのメールに添付されています。注文の詳細を表示して、チケットをダウンロードすることもできます。{{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-    @if(!$order->is_payment_received)
-        <br><br>
-        <b>ご注意：この注文にはまだ支払いが必要です。
-            支払い方法についての説明は注文ページにあります。{{route('showOrderDetails', ['order_reference' => $order->order_reference])}}</b>
-        <br><br>
-    @endif
-    <h3>注文詳細</h3>
-    注文照合: <b>{{$order->order_reference}}</b><br>
-    注文名: <b>{{$order->full_name}}</b><br>
-    注文日: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-    注文メール: <b>{{$order->email}}</b><br>
-    <a href="{!! route('downloadCalendarIcs', ['event_id' => $order->event->id]) !!}">カレンダーに追加</a>
-    <h3>注文商品</h3>
-    <div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-        <table style="width:100%; margin:10px;">
-            <tr>
-                <td>
-                    <b>チケット</b>
-                </td>
-                <td>
-                    <b>個数</b>
-                </td>
-                <td>
-                    <b>価格</b>
-                </td>
-                <td>
-                    <b>料金</b>
-                </td>
-                <td>
-                    <b>合計</b>
-                </td>
-            </tr>
-            @foreach($order->orderItems as $order_item)
-                <tr>
-                    <td>
-                        {{$order_item->title}}
-                    </td>
-                    <td>
-                        {{$order_item->quantity}}
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            FREE
-                        @else
-                            {{money($order_item->unit_price, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            -
-                        @else
-                            {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                        @endif
-
-                    </td>
-                    <td>
-                        @isFree($order_item->unit_price)
-                            FREE
-                        @else
-                            {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                        @endif
-
-                    </td>
-                </tr>
-            @endforeach
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>小計</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getOrderTotalWithBookingFee(true)}}
-                </td>
-            </tr>
-            @if($order->event->organiser->charge_tax == 1)
-                <tr>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                    </td>
-                    <td>
-                        <b>{{$order->event->organiser->tax_name}}</b>
-                    </td>
-                    <td colspan="2">
-                        {{$orderService->getTaxAmount(true)}}
-                    </td>
-                </tr>
-            @endif
-            <tr>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                </td>
-                <td>
-                    <b>合計</b>
-                </td>
-                <td colspan="2">
-                    {{$orderService->getGrandTotal(true)}}
-                </td>
-            </tr>
-        </table>
-
-        <br><br>
-    </div>
-    <br><br>
-    ありがとう
-@stop
diff --git a/resources/views/pl/Emails/OrderConfirmation.blade.php b/resources/views/pl/Emails/OrderConfirmation.blade.php
deleted file mode 100644
index ef2cf0a8b..000000000
--- a/resources/views/pl/Emails/OrderConfirmation.blade.php
+++ /dev/null
@@ -1,91 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Witaj,<br><br>
-
-Twoje zamówienie w związku z wydarzeniem <b>{{$order->event->title}}</b> zostało zakończone pomyślnie.<br><br>
-
-Twoje bilety są dołączone do tego emaila. Możesz przejrzeć szczegóły dot. zamówienia i pobrać bilety tu: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-
-<h3>Podsumowanie zamówienia</h3>
-Identyfikator zamówienia: <b>{{$order->order_reference}}</b><br>
-Imię i Nazwisko: <b>{{$order->full_name}}</b><br>
-Data: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Email: <b>{{$order->email}}</b><br>
-
-<h3>Przedmioty zamówienia</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <td>
-                <b>Bilet</b>
-            </td>
-            <td>
-                <b>Licz.</b>
-            </td>
-            <td>
-                <b>Cena</b>
-            </td>
-            <td>
-                <b>Opłata</b>
-            </td>
-            <td>
-                <b>Razem</b>
-            </td>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-                                <tr>
-                                    <td>
-                                        {{$order_item->title}}
-                                    </td>
-                                    <td>
-                                        {{$order_item->quantity}}
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        FREE
-                                        @else
-                                       {{money($order_item->unit_price, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        -
-                                        @else
-                                        {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        FREE
-                                        @else
-                                        {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                </tr>
-                                @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Suma</b>
-            </td>
-            <td colspan="2">
-               {{money($order->amount + $order->order_fee, $order->event->currency)}}
-            </td>
-        </tr>
-    </table>
-
-    <br><br>
-</div>
-<br><br>
-Dziękujemy.
-@stop
diff --git a/resources/views/pl/Emails/OrderNotification.blade.php b/resources/views/pl/Emails/OrderNotification.blade.php
deleted file mode 100644
index d31d4655e..000000000
--- a/resources/views/pl/Emails/OrderNotification.blade.php
+++ /dev/null
@@ -1,100 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Witaj,<br><br>
-
-Na ten adres email zostało złożone zamówienie na następujące wydarzenie: <b>{{$order->event->title}}</b>.<br><br>
-
-@if(!$order->is_payment_received)
-    <b>Uwaga: to zamówienie wymaga opłacenia.</b>
-    <br><br>
-@endif
-
-
-Podsumowanie zamówienia:
-<br><br>
-Identyfikator zamówienia: <b>{{$order->order_reference}}</b><br>
-Nazwa: <b>{{$order->full_name}}</b><br>
-Data: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Email: <b>{{$order->email}}</b><br>
-
-
-<h3>Przedmioty zamówienia</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <th>
-                Bilet
-            </th>
-            <th>
-                Liczba
-            </th>
-            <th>
-                Cena
-            </th>
-            <th>
-                Opł. rezerwacyjna
-            </th>
-            <th>
-                Razem
-            </th>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-        <tr>
-            <td>
-                {{$order_item->title}}
-            </td>
-            <td>
-                {{$order_item->quantity}}
-            </td>
-            <td>
-                @isFree($order_item->unit_price)
-                    GRATIS
-                @else
-                    {{money($order_item->unit_price, $order->event->currency)}}
-                @endif
-
-            </td>
-            <td>
-                @isFree($order_item->unit_price)
-                    -
-                @else
-                    {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                @endif
-
-            </td>
-            <td>
-                @isFree($order_item->unit_price)
-                    GRATIS
-                @else
-                    {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                @endif
-
-            </td>
-        </tr>
-        @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Suma</b>
-            </td>
-            <td colspan="2">
-                {{money($order->total_amount, $order->event->currency)}}
-            </td>
-        </tr>
-    </table>
-
-
-    <br><br>
-    Możesz edytować to zamówienie tutaj: {{route('showEventOrders', ['event_id' => $order->event->id, 'q'=>$order->order_reference])}}
-    <br><br>
-</div>
-<br><br>
-Thank you
-@stop
diff --git a/resources/views/pl/Mailers/TicketMailer/SendAttendeeInvite.blade.php b/resources/views/pl/Mailers/TicketMailer/SendAttendeeInvite.blade.php
deleted file mode 100644
index 7b6a76597..000000000
--- a/resources/views/pl/Mailers/TicketMailer/SendAttendeeInvite.blade.php
+++ /dev/null
@@ -1,11 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-    Witaj {{$attendee->first_name}},<br><br>
-
-    Zostałeś zaproszony na <b>{{$attendee->order->event->title}}</b>.<br/>
-    Twój bilet został dołączony do tej wiadomości.
-
-    <br><br>
-    Pozdrawiamy
-@stop
diff --git a/resources/views/pl/Mailers/TicketMailer/SendAttendeeTicket.blade.php b/resources/views/pl/Mailers/TicketMailer/SendAttendeeTicket.blade.php
deleted file mode 100644
index 5868dd699..000000000
--- a/resources/views/pl/Mailers/TicketMailer/SendAttendeeTicket.blade.php
+++ /dev/null
@@ -1,10 +0,0 @@
-@extends('en.Emails.Layouts.Master')
-
-@section('message_content')
-Witaj {{$attendee->first_name}},<br><br>
-
-Twój bilet na <b>{{$attendee->order->event->title}}</b> został dołączony do tego emaila.
-
-<br><br>
-Dziękujemy
-@stop
diff --git a/resources/views/pl/Mailers/TicketMailer/SendOrderTickets.blade.php b/resources/views/pl/Mailers/TicketMailer/SendOrderTickets.blade.php
deleted file mode 100644
index 71f98fc7f..000000000
--- a/resources/views/pl/Mailers/TicketMailer/SendOrderTickets.blade.php
+++ /dev/null
@@ -1,95 +0,0 @@
-@extends('Emails.Layouts.Master')
-
-@section('message_content')
-Witaj,<br><br>
-
-Twoje zamówienie na <b>{{$order->event->title}}</b> zostało zakończone pomyślnie<br><br>
-
-Twoje bilety zostały dołączone do tego emaila. Możesz przejrzeć szczegóły swojego zamówienia i pobrać bilety tutaj: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}
-
-@if(!$order->is_payment_received)
-<br><br>
-<b>Uwaga: to zamówienie wymaga opłacenia. Instrukcje dot. płatności znajdują się na stronie zamówienia: {{route('showOrderDetails', ['order_reference' => $order->order_reference])}}</b>
-<br><br>
-@endif
-<h3>Szczegóły zamówienia</h3>
-Identyfikator zamówienia: <b>{{$order->order_reference}}</b><br>
-Nazwa: <b>{{$order->full_name}}</b><br>
-Data: <b>{{$order->created_at->format(config('attendize.default_datetime_format'))}}</b><br>
-Email: <b>{{$order->email}}</b><br>
-<a href="{!! route('downloadCalendarIcs', ['event_id' => $order->event->id]) !!}">Dodaj do kalendarza</a>
-<h3>Przedmioty zamówienia</h3>
-<div style="padding:10px; background: #F9F9F9; border: 1px solid #f1f1f1;">
-    <table style="width:100%; margin:10px;">
-        <tr>
-            <td>
-                <b>Bilet</b>
-            </td>
-            <td>
-                <b>Licz.</b>
-            </td>
-            <td>
-                <b>Cena</b>
-            </td>
-            <td>
-                <b>Opłata</b>
-            </td>
-            <td>
-                <b>Razem</b>
-            </td>
-        </tr>
-        @foreach($order->orderItems as $order_item)
-                                <tr>
-                                    <td>
-                                        {{$order_item->title}}
-                                    </td>
-                                    <td>
-                                        {{$order_item->quantity}}
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        GRATIS
-                                        @else
-                                       {{money($order_item->unit_price, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        -
-                                        @else
-                                        {{money($order_item->unit_booking_fee, $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                    <td>
-                                        @isFree($order_item->unit_price)
-                                        GRATIS
-                                        @else
-                                        {{money(($order_item->unit_price + $order_item->unit_booking_fee) * ($order_item->quantity), $order->event->currency)}}
-                                        @endif
-
-                                    </td>
-                                </tr>
-                                @endforeach
-        <tr>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-            </td>
-            <td>
-                <b>Suma</b>
-            </td>
-            <td colspan="2">
-               {{money($order->amount + $order->order_fee, $order->event->currency)}}
-            </td>
-        </tr>
-    </table>
-
-    <br><br>
-</div>
-<br><br>
-Dziękujemy
-@stop
diff --git a/resources/views/ru/Emails/Auth/Reminder.blade.php b/resources/views/ru/Emails/Auth/Reminder.blade.php
new file mode 100644
index 000000000..5b542226c
--- /dev/null
+++ b/resources/views/ru/Emails/Auth/Reminder.blade.php
@@ -0,0 +1,11 @@
+@extends('en.Emails.Layouts.Master')
+
+@section('message_content')
+    <div>
+        Привет,<br><br>
+        Чтобы сбросить пароль, нажмите на <a href='{{ route('password.reset', ['token' => $token]) }}'>эту ссылку</a>.
+        <br><br><br>
+        Спасибо,<br>
+        Команда Attendize
+    </div>
+@stop
\ No newline at end of file
diff --git a/resources/views/ru/Emails/ConfirmEmail.blade.php b/resources/views/ru/Emails/ConfirmEmail.blade.php
new file mode 100644
index 000000000..5f3cd3299
--- /dev/null
+++ b/resources/views/ru/Emails/ConfirmEmail.blade.php
@@ -0,0 +1,27 @@
+@extends('en.Emails.Layouts.Master')
+
+@section('message_content')
+
+<p>Привет {{$first_name}}</p>
+<p>
+    Благодарим вас за регистрацию на {{ config('attendize.app_name') }}. Мы будем рады видеть вас у нас в гостях.
+</p>
+
+<p>
+    Вы можете создать свое первое мероприятие и подтвердить свою электронную почту, для этого нажмите на <a href='{{route('confirmEmail', ['confirmation_code' => $confirmation_code])}}'>эту ссылку</a>.
+</p>
+
+<br><br>
+<p>
+    Если у вас есть какие-либо вопросы, отзывы или предложения, не стесняйтесь отвечать на это письмо.
+</p>
+<p>
+    Спасибо
+</p>
+
+@stop
+
+@section('footer')
+
+
+@stop
diff --git a/resources/views/ru/Emails/FailedQueue.blade.php b/resources/views/ru/Emails/FailedQueue.blade.php
new file mode 100644
index 000000000..d898b887c
--- /dev/null
+++ b/resources/views/ru/Emails/FailedQueue.blade.php
@@ -0,0 +1,8 @@
+<pre>
+    {{json_encode($data)}}
+</pre>
+<hr>
+<pre>
+    {{json_encode($job)}}
+</pre>
+
diff --git a/resources/views/ru/Emails/Layouts/Master.blade.php b/resources/views/ru/Emails/Layouts/Master.blade.php
new file mode 100644
index 000000000..7c1e88223
--- /dev/null
+++ b/resources/views/ru/Emails/Layouts/Master.blade.php
@@ -0,0 +1,71 @@
+<html xmlns="http://www.w3.org/1999/xhtml" xmlns="http://www.w3.org/1999/xhtml">
+<head>
+    <meta name="viewport" content="width=device-width" />
+    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+    <title>
+        @section('subject')
+            Attendize.com Email
+        @show
+    </title>
+</head>
+
+<body style="background-color: #f7f7f7;margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;-webkit-font-smoothing: antialiased;-webkit-text-size-adjust: none;width: 100% !important;height: 100%">
+
+<!-- body -->
+<table class="body-wrap" style="background-color: #f7f7f7;margin: 0;padding: 20px;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;width: 100%">
+    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6"></td>
+        <td class="container" bgcolor="#FFFFFF" style="margin: 0 auto !important;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;border: 1px solid #f0f0f0;display: block !important;max-width: 600px !important;clear: both !important">
+
+            <!-- content -->
+            <div class="content" style="color: #888;margin: 0 auto;padding: 20px;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;max-width: 600px;display: block">
+                <table style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;width: 100%">
+                    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                        <td style="text-align: center;padding: 10px;margin: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                            <img style="max-width: 110px;margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6" src="{{url(asset(isset($email_logo) ? $email_logo : 'assets/images/logo-dark.png'))}}" />
+                        </td>
+                    </tr>
+                    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                            @yield('message_content')
+                        </td>
+                    </tr>
+                </table>
+            </div>
+            <!-- /content -->
+
+        </td>
+        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6"></td>
+    </tr>
+</table>
+<!-- /body -->
+
+<!-- footer -->
+<table class="footer-wrap" style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;width: 100%;clear: both !important">
+    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6"></td>
+        <td class="container" style="margin: 0 auto !important;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;display: block !important;max-width: 600px !important;clear: both !important">
+
+            <!-- content -->
+            <div class="content" style="margin: 0 auto;padding: 20px;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;max-width: 600px;display: block">
+                <table style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;width: 100%">
+                    <tr style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                        <td align="center" style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6">
+                            {{--Attendize is provided free of charge on the condition the below hyperlink is left in place.--}}
+                            {{--See https://www.attendize.com/license.html for more information.--}}
+                            <p style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 14px;line-height: 1.6;color: #666;margin-bottom: 10px;font-weight: normal">Powered By <a href="https://www.attendize.com/?email_footer_powered_by" style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6;color: #999">Attendize.com</a>.
+                            </p>
+                            @yield('footer')
+                        </td>
+                    </tr>
+                </table>
+            </div><!-- /content -->
+
+        </td>
+        <td style="margin: 0;padding: 0;font-family: &quot;Helvetica Neue&quot;, &quot;Helvetica&quot;, Helvetica, Arial, sans-serif;font-size: 100%;line-height: 1.6"></td>
+    </tr>
+</table>
+<!-- /footer -->
+
+</body>
+</html>
diff --git a/resources/views/ru/Emails/attendeeTicket.blade.php b/resources/views/ru/Emails/attendeeTicket.blade.php
new file mode 100644
index 000000000..e13e5d8d3
--- /dev/null
+++ b/resources/views/ru/Emails/attendeeTicket.blade.php
@@ -0,0 +1,10 @@
+Привет {{{$attendee->first_name}}},<br><br>
+
+Мы прикрепили ваши билеты к этому письму.<br><br>
+
+Вы можете просмотреть информацию о заказе и скачать билеты на сайте {{route('showOrderDetails', ['order_reference' => $attendee->order->order_reference])}} в любое удобное вам время.<br><br>
+
+Ссылка на ваш заказ <b>{{$attendee->order->order_reference}}</b>.<br>
+
+Спасибо за ваш заказ<br>
+
diff --git a/resources/views/ru/Emails/inviteUser.blade.php b/resources/views/ru/Emails/inviteUser.blade.php
new file mode 100644
index 000000000..f93dcf979
--- /dev/null
+++ b/resources/views/ru/Emails/inviteUser.blade.php
@@ -0,0 +1,37 @@
+@extends('en.Emails.Layouts.Master')
+
+@section('message_content')
+
+<p>Привет</p>
+<p>
+    Для вас был создан аккаунт в приложении  {{ config('attendize.app_name') }} участником {{$inviter->first_name.' '.$inviter->last_name}}.
+</p>
+
+<p>
+    Вы можете войти в систему, используя следующие данные.<br><br>
+    
+    Имя пользователя: <b>{{$user->email}}</b> <br>
+    Пароль: <b>{{$temp_password}}</b>
+</p>
+
+<p>
+    Вы можете изменить свой временный пароль после входа в систему.
+</p>
+
+<div style="padding: 5px; border: 1px solid #ccc;" >
+   {{route('login')}}
+</div>
+<br><br>
+<p>
+    Если у вас есть какие-либо вопросы, пожалуйста, ответьте на это письмо.
+</p>
+<p>
+    Спасибо
+</p>
+
+@stop
+
+@section('footer')
+
+
+@stop
diff --git a/resources/views/ru/Emails/messageReceived.blade.php b/resources/views/ru/Emails/messageReceived.blade.php
new file mode 100644
index 000000000..ba75d58ea
--- /dev/null
+++ b/resources/views/ru/Emails/messageReceived.blade.php
@@ -0,0 +1,19 @@
+@extends('en.Emails.Layouts.Master')
+
+@section('message_content')
+
+<p>Привет,</p>
+<p>Вы получили сообщение от <b>{{ (isset($sender_name) ? $sender_name : $event->organiser->name) }}</b> в связи с мероприятием <b>{{ $event->title }}</b>.</p>
+<p style="padding: 10px; margin:10px; border: 1px solid #f3f3f3;">
+    {!! nl2br($message_content) !!}
+</p>
+
+<p>
+    Вы можете связаться с <b>{{ (isset($sender_name) ? $sender_name : $event->organiser->name) }}</b> напрямую по электронной почте <a href='mailto:{{ (isset($sender_email) ? $sender_email : $event->organiser->email) }}'>{{ (isset($sender_email) ? $sender_email : $event->organiser->email) }}</a>, или ответив на это письмо.
+</p>
+@stop
+
+@section('footer')
+
+
+@stop
diff --git a/resources/views/ru/Emails/notifyCancelledAttendee.blade.php b/resources/views/ru/Emails/notifyCancelledAttendee.blade.php
new file mode 100644
index 000000000..ff3814ee8
--- /dev/null
+++ b/resources/views/ru/Emails/notifyCancelledAttendee.blade.php
@@ -0,0 +1,17 @@
+@extends('en.Emails.Layouts.Master')
+
+@section('message_content')
+
+<p>Привет</p>
+<p>
+    Ваш билет на мероприяние <b>{{{$attendee->event->title}}}</b> был отменен.
+</p>
+
+<p>
+    Вы можете связаться с <b>{{{$attendee->event->organiser->name}}}</b> напрямую по электронной почте <a href='mailto:{{{$attendee->event->organiser->email}}}'>{{{$attendee->event->organiser->email}}}</a> или ответив на это письмо, если вам нужна дополнительная информация.
+</p>
+@stop
+
+@section('footer')
+
+@stop
diff --git a/resources/views/ru/Emails/notifyRefundedAttendee.blade.php b/resources/views/ru/Emails/notifyRefundedAttendee.blade.php
new file mode 100644
index 000000000..7951d35ae
--- /dev/null
+++ b/resources/views/ru/Emails/notifyRefundedAttendee.blade.php
@@ -0,0 +1,18 @@
+@extends('en.Emails.Layouts.Master')
+
+@section('message_content')
+
+    <p>Привет</p>
+    <p>
+        Вы получили возмещение за аннулированный билет на мероприятие <b>{{{$attendee->event->title}}}</b>.
+        <b>{{{ $refund_amount }}} был возвращен первоначальному получателю платежа, вы должны увидеть платеж через несколько дней.</b>
+    </p>
+
+    <p>
+        Вы можете связаться с <b>{{{ $attendee->event->organiser->name }}}</b> напрямую по электронной почте <a href='mailto:{{{$attendee->event->organiser->email}}}'>{{{$attendee->event->organiser->email}}}</a> или ответив на это письмо, если вам нужна дополнительная информация.
+    </p>
+@stop
+
+@section('footer')
+
+@stop
\ No newline at end of file
diff --git a/resources/views/ru/Installer/Partials/Footer.blade.php b/resources/views/ru/Installer/Partials/Footer.blade.php
new file mode 100644
index 000000000..6da5d7c64
--- /dev/null
+++ b/resources/views/ru/Installer/Partials/Footer.blade.php
@@ -0,0 +1,18 @@
+<div class="well">
+    <p>
+        Установка может занять несколько минут. Как только вы нажмете кнопку '<b>Установить Attendize</b>' настройки конфигурации будут записаны в этот файл: <b>{{base_path('.env')}}</b>. Вы можете вручную изменить эти настройки в будущем, отредактировав этот файл.
+    </p>
+    <p>
+        Если установка не удалась, обязательно проверьте файл журнала в разделе <b>{{storage_path('logs')}}</b>. Если в файлах журнала нет ошибок, также <b>проверьте другие файлы журнала на вашем сервере</b>.
+    </p>
+    <p>
+        Если вы используете виртуальный хостинг, пожалуйста, спросите у своего хостера, поддерживает ли он требования Attendize, прежде чем обращаться в службу поддержки.
+    </p>
+    <p>
+        Если вам все еще нужна помощь, вы можете <a href="https://github.com/Attendize/Attendize/issues">создать отчет об ошибке</a>. Пожалуйста, укажите как можно больше подробностей, включая любые ошибки в журнале регистрации.
+        Также взгляните на <a href="https://www.attendize.com/troubleshooting.html">руководство по устранению неисправностей</a>
+    </p>
+    <p>
+        Пожалуйста, также  <a style="text-decoration: underline;" target="_blank" href="https://www.attendize.com/license.html">прочитайте лицензию</a> перед установкой Attendize.
+    </p>
+</div>
diff --git a/routes/web.php b/routes/web.php
index 55638c655..1f7340ac6 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -248,6 +248,18 @@
             Route::post('toggle_user_can_manage_events',
                 [ManageAccountController::class, 'postToggleUserCanManageEvents']
             )->name('postToggleUserCanManageEvents');
+
+            Route::delete('/user/{id}',
+                [ManageAccountController::class, 'userDelete']
+            )->name('userDelete');
+
+            Route::get('/user/{id}/restore',
+                [ManageAccountController::class, 'userRestore']
+            )->name('userRestore');
+
+            Route::get('/user/{id}/send-invitation-message',
+                [ManageAccountController::class, 'sendInvitationMessage']
+            )->name('sendInvitationMessage');
         });
 
         Route::get('select_organiser', [OrganiserController::class, 'showSelectOrganiser'])
@@ -493,11 +505,11 @@
                 [EventOrdersController::class, 'showExportOrders']
             )->name('showExportOrders');
 
-            Route::get('{event_id}/orders/message',
+            Route::get('{event_id}/orders/message/{order_id}',
                 [EventOrdersController::class, 'showMessageOrder']
             )->name('showMessageOrder');
 
-            Route::post('{event_id}/orders/message',
+            Route::post('{event_id}/orders/message/{order_id}',
                 [EventOrdersController::class, 'postMessageOrder']
             )->name('postMessageOrder');
 
diff --git a/scripts/setup b/scripts/setup
index 549dd0347..54b64caca 100755
--- a/scripts/setup
+++ b/scripts/setup
@@ -1,10 +1,10 @@
 #! /bin/bash
 
-# Set up script used in both the Dockerfile and the Makefile, while building and installing Attendize in any environment.
+# Set up script for the web server,used in both Dockerfiles,
+# while building the Attendize container or installing Attendize in a different environment.
 composer install --no-interaction
 cp .env.example .env
 chmod -R a+w .env
 chmod -R a+w storage/
 chmod -R a+w bootstrap/cache/
 php artisan key:generate
-php artisan migrate


Test patch: