/**
  * Send new message to another contributor in storage.
  *
  * @param  \Illuminate\Http\Request $request
  * @return \Illuminate\Http\Response
  */
 public function send(Request $request)
 {
     /*
      * --------------------------------------------------------------------------
      * Create message
      * --------------------------------------------------------------------------
      * Each conversation will handle by one message record as identity, first
      * check if contributor sender or receiver ever make conversation, if they
      * did not then create new one of message.
      */
     $sender = $request->input('contributor_id');
     $receiver = $request->input('receiver_id');
     $lastMessage = $this->conversation->whereSender($sender)->whereReceiver($receiver)->orWhere('sender', $receiver)->whereReceiver($sender)->first();
     if (count($lastMessage) == 0) {
         $message = new Message();
         $message->save();
         $messageId = $message->id;
     } else {
         $messageId = $lastMessage->message_id;
     }
     /*
      * --------------------------------------------------------------------------
      * Create conversation
      * --------------------------------------------------------------------------
      * Populate message id from last conversation or last inserted new message
      * then create the first conversation or continue with last message, check
      * if there is request of attachment, if so then upload it.
      */
     $conversation = new Conversation(['message_id' => $messageId, 'sender' => $sender, 'receiver' => $receiver, 'message' => $request->input('message')]);
     $result = $conversation->save();
     if ($result) {
         $contributorSender = Contributor::findOrFail($sender);
         $contributor = Contributor::findOrFail($receiver);
         if ($contributor->email_message) {
             $this->sendEmailNotification($contributorSender, $contributor, $request->input('message'));
         }
         $conversation->broadcastConversation($contributorSender, $contributor, $request->input('message'));
     }
     return response()->json(['request_id' => uniqid(), 'status' => $result ? 'success' : 'failure', 'timestamp' => Carbon::now()], $result ? 200 : 500);
 }
 /**
  * Send new message to another contributor in storage.
  *
  * @param  \Illuminate\Http\Request $request
  * @return \Illuminate\Http\Response
  */
 public function send(Request $request)
 {
     /*
      * --------------------------------------------------------------------------
      * Create message
      * --------------------------------------------------------------------------
      * Each conversation will handle by one message record as identity, first
      * check if contributor sender or receiver ever make conversation, if they
      * did not then create new one of message.
      */
     $sender = Auth::user()->id;
     $receiver = (int) $request->input('contributor_id');
     $lastMessage = $this->conversation->whereSender($sender)->whereReceiver($receiver)->orWhere('sender', $receiver)->whereReceiver($sender)->first();
     if (count($lastMessage) == 0) {
         $message = new Message();
         $message->save();
         $messageId = $message->id;
     } else {
         $messageId = $lastMessage->message_id;
     }
     /*
      * --------------------------------------------------------------------------
      * Create conversation
      * --------------------------------------------------------------------------
      * Populate message id from last conversation or last inserted new message
      * then create the first conversation or continue with last message, check
      * if there is request of attachment, if so then upload it.
      */
     $conversation = new Conversation(['message_id' => $messageId, 'sender' => $sender, 'receiver' => $receiver, 'message' => $request->input('message')]);
     if ($conversation->save()) {
         $contributor = Contributor::findOrFail($receiver);
         if ($contributor->email_message) {
             $this->sendEmailNotification(Auth::user(), $contributor, $request->input('message'));
         }
         $conversation->broadcastConversation(Auth::user(), $contributor, $request->input('message'));
         if ($request->has('async') && $request->ajax()) {
             $image = new Uploader();
             if ($image->upload($request, 'attachment', base_path('public/file/'), 'attachment_' . uniqid())) {
                 $attachment = new Attachment();
                 $attachment->conversation_id = $conversation->id;
                 $attachment->file = $request->input('attachment');
                 if (!$attachment->save()) {
                     return false;
                 }
             }
             return 'sent';
         }
         return redirect()->back()->with(['status' => 'success', 'message' => Lang::get('alert.message.send', ['receiver' => $contributor->name])]);
     }
     if ($request->has('async') && $request->ajax()) {
         return false;
     }
     return redirect()->back()->with(['status' => 'danger', 'message' => Lang::get('alert.error.database')]);
 }