<?php

namespace App\Http\Controllers\API\v1\Employee;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Models\RoleUser;
use App\Models\Role;
use App\Models\GiftCard;
use App\Models\UserProfile;
use App\Models\ChallengeCategory;
use App\Models\Challenge;
use App\Models\CompanyEmployeeLocation;
use App\Models\CompanyLocationAdmin;
use App\Models\ChallengeQuestionAnswer;
use App\Models\ChallengeEmployeeAnswer;
use App\Models\UserCreditPoint;
use App\Models\Message;
use App\Models\Company;
use App\Models\CompanyFinding;
use App\Models\CompanyFindingImage;
use App\Models\CompanyAdmin;
use App\Models\EmployeeMessage;
use App\Models\EmployeeMessageThread;
use Validator;
use DB, Hash, Mail;
use Illuminate\Support\Facades\Password;
use Illuminate\Support\Facades\Auth;
use Carbon\Carbon;
use Illuminate\Support\Str;
use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage;
use Intervention\Image\ImageManagerStatic as Image;
use Exception;
use App\Traits\ApiResponseTrait;
use App\Traits\CommonTrait;
use App\Traits\ApiEmployeeTrait;
use App\Services\DefaultServices;

class MessageController extends Controller
{

    use ApiResponseTrait, CommonTrait, ApiEmployeeTrait;

    protected $defaultServices;

    public function __construct(DefaultServices $defaultServices)
    {
        $this->defaultServices = $defaultServices;
    }



    public function AllMessageList($flag, Request $request)
    {
        $status_code = 0;
        $success     = [];
        $inputs      = getTrimmedValue($request->all());
        $extraParam  = [];
        $messageArr['input'] = $inputs;
        $userType            = 'employee';

        $limit  = ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
        $offset = ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
        $offset = ($limit * $offset) - $limit;
        $message_type = ($inputs['message_type'] <= 0) ? 1 : $inputs['message_type'];
        $message_parent_id = isset($inputs['message_parent_id']) ? $inputs['message_parent_id'] : '';
        $id = ($inputs['id'] == '') ? 0 : $inputs['id'];
        try {
            $userDetails           = Auth::user();
            $extraParam['user_id'] = $userDetails->id;
            $user_id = $userDetails->id;
            // use it as default code - start
            $employeeDataArr       = $this->checkEmployeeValidation();

            if ($employeeDataArr['status'] != 1) {
                return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
                exit(0);
            }
            // use it as default code - end

            $messages = [
                'device_type.required'    => 'Please enter device type',
                'page_count.required'     => 'Please enter page count',
                'page_size.required'      => 'Please enter page size',
                'message_type.required'   => 'Please enter message type'
            ];

            $validator = Validator::make($inputs, [
                "device_type"     => 'required|in:ios,ioS,iOS,Android,android',
                "page_count"      => 'required',
                "page_size"       => 'required',
                "message_type"    => 'required'
            ], $messages);

            if ($validator->fails()) {
                return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
                exit(0);
            }
            $status_code = 1;

            if ($message_type == 1) {
                    $whereArr = [];
                    $whereOtherArr = [];
                    $whereArr['message_type'] = 3;
                    $whereOtherArr['employeeRole'] = 4;
                    $whereOtherArr['adminRole'] = 2;
                    $whereOtherArr['employee_id'] = $userDetails->id;

                            $getMainRecvMessage = EmployeeMessage::where(function ($query) use ($whereOtherArr) {
                                $query->where(function ($query) use ($whereOtherArr) {
                                    $query->where("sender_type", $whereOtherArr['adminRole']);
                                    $query->where("receiver_type", $whereOtherArr['employeeRole']);
                                    $query->where("receiver_id", $whereOtherArr['employee_id']);
                                });
                                $query->orWhere(function ($query) use ($whereOtherArr) {
                                    $query->where("receiver_type", $whereOtherArr['adminRole']);
                                    $query->where("sender_type", $whereOtherArr['employeeRole']);
                                    $query->where("sender_id", $whereOtherArr['employee_id']);
                                });
                            })->where($whereArr)->first();
            
                            $getAllRecvMessage = EmployeeMessageThread::where('employee_message_id',$getMainRecvMessage->id);
            
                            //dd($messageDetails);
            
            
                            $count_recv_msg     = $getAllRecvMessage->count();
                            $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
                            //dd($getAllRecvMessage);
                            $output['total_count'] = $count_recv_msg;
                            $output['messages_list'] = [];
            
                            $company_data = Company::where('id', $id)->first();
                            $companyFolderPath = 'company/logo';
                            $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');
            
            
                            $userProfileDetails   = UserProfile::where('user_id', $user_id)->first();
                            $userFolderPath = 'user';
                            $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');
            
                            foreach ($getAllRecvMessage as $key => $message) {
                                if ($message->sender_id == $userDetails->id) {
                                    $isFromUser = true;
                                    $img_profile = $user_image_url;
                                } else {
                                    $isFromUser = false;
                                    $img_profile = $company_logo_image_url;
                                    //$img_profile= '';
                                }
                                $output['messages_list'][$key]['msz_id']          = $message->id;
                                $output['messages_list'][$key]['img_profile']     = $img_profile;
                                $output['messages_list'][$key]['msz_description'] = ($message->message) ? $message->message : '';
                                $output['messages_list'][$key]['msz_image']       = ($message->image != '') ? url('storage/images/messages/api/' . $message->image) : '';
                                $output['messages_list'][$key]['msz_date_time']   = strtotime($message->created_at);
                                $output['messages_list'][$key]['isFromUser']      = $isFromUser;
                                $output['messages_list'][$key]['isText']          = ($message->message != '') ? true : false;
                            }
                            $output['is_superAdmin'] = false;
            }else if ($message_type == 2) {
                    $whereArr = [];
                    $whereOtherArr = [];
                    $whereArr['message_type'] = 3;
                    $whereOtherArr['employeeRole'] = 4;
                    $whereOtherArr['adminRole'] = 3;
                    $whereOtherArr['employee_id'] = $userDetails->id;
                            $locationAdminDetails = CompanyLocationAdmin::where('location_id', $id)->first();
            
                            $getMainRecvMessage = EmployeeMessage::where(function ($query) use ($whereOtherArr) {
                                $query->where(function ($query) use ($whereOtherArr) {
                                    $query->where("sender_type", $whereOtherArr['adminRole']);
                                    $query->where("receiver_type", $whereOtherArr['employeeRole']);
                                    $query->where("receiver_id", $whereOtherArr['employee_id']);
                                });
                                $query->orWhere(function ($query) use ($whereOtherArr) {
                                    $query->where("receiver_type", $whereOtherArr['adminRole']);
                                    $query->where("sender_type", $whereOtherArr['employeeRole']);
                                    $query->where("sender_id", $whereOtherArr['employee_id']);
                                });
                            })->where($whereArr)->first();
            
                            $getAllRecvMessage = EmployeeMessageThread::where('employee_message_id',$getMainRecvMessage->id);
            
            
                            $count_recv_msg     = $getAllRecvMessage->count();
                            $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
                            //dd($getAllRecvMessage);
                            $output['total_count'] = $count_recv_msg;
                            $output['messages_list'] = [];
            
                            $location_admin_data = UserProfile::where('user_id', $locationAdminDetails->user_id)->first();
                            $locationAdminFolderPath = 'user';
                            $location_admin_image_url = $this->defaultServices->getImgPath($locationAdminFolderPath, $location_admin_data->image, 'api');
            
            
                            $userProfileDetails   = UserProfile::where('user_id', $user_id)->first();
                            $userFolderPath = 'user';
                            $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');
            
                            foreach ($getAllRecvMessage as $key => $message) {
                                if ($message->sender_id == $userDetails->id) {
                                    $isFromUser = true;
                                    $img_profile = $user_image_url;
                                } else {
                                    $isFromUser = false;
                                    $img_profile = $location_admin_image_url;
                                    //$img_profile= '';
                                }
                                $output['messages_list'][$key]['msz_id']          = $message->id;
                                $output['messages_list'][$key]['img_profile']     = $img_profile;
                                $output['messages_list'][$key]['msz_description'] = ($message->message) ? $message->message : '';
                                $output['messages_list'][$key]['msz_image']       = ($message->image != '') ? url('storage/images/messages/api/' . $message->image) : '';
                                $output['messages_list'][$key]['msz_date_time']   = strtotime($message->created_at);
                                $output['messages_list'][$key]['isFromUser']      = $isFromUser;
                                $output['messages_list'][$key]['isText']          = ($message->message != '') ? true : false;
                            }
                            $output['is_superAdmin'] = false;
            }else if ($message_type == 3) {
                $getAllRecvMessage = EmployeeMessage::leftJoin('employee_message_threads', function ($join) {
                    $join->on('employee_message_threads.employee_message_id', '=', 'employee_messages.id');
                    })
                    ->select(
                        'employee_message_threads.*'
                    )
                    ->where('employee_messages.message_type', 1)
                    ->where('employee_messages.id', $message_parent_id)
                    ->where('employee_messages.is_delete', 0)
                    ->where('employee_messages.is_active', 1);

                $count_recv_msg     = $getAllRecvMessage->count();
                $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();


                $output['total_count'] = $count_recv_msg;
                $output['messages_list'] = [];
                $output['is_superAdmin'] = false;

                $userProfileDetails   = UserProfile::where('user_id', $user_id)->first();
                $userFolderPath = 'user';
                $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');
                foreach ($getAllRecvMessage as $key => $message) {

                    if ($message->sender_type == 1) {
                        $output['is_superAdmin'] = true;
                        $super_admin_data        = User::leftJoin('role_users', function ($join) {
                            $join->on('users.id', '=', 'role_users.user_id');
                        })->where('role_users.role_id', '=', 1)->first();
                        $superAdminDetails       = UserProfile::where('user_id', $super_admin_data->id)->first();
                        $superAdminFolderPath    = 'user';
                        $company_logo_image_url  = $this->defaultServices->getImgPath($superAdminFolderPath, $superAdminDetails->image, 'api');
                    } else {
                        $output['is_superAdmin'] = false;
                        $sender_data = User::leftJoin('user_profiles', function ($join) {
                            $join->on('users.id', '=', 'user_profiles.user_id');
                        })->where('users.id', '=', $message->sender_id)->first();
                        if ($message->sender_type == 2) {
                            $company_data           = Company::leftJoin('company_admins', function ($join) {
                                $join->on('companies.id', '=', 'company_admins.company_id');
                            })->where('company_admins.user_id', '=', $message->sender_id)->first();
                            $senderFolderPath       = 'company/logo';
                            $company_logo_image_url = $this->defaultServices->getImgPath($senderFolderPath, $company_data->company_logo, 'api');
                        } else {
                            $senderFolderPath     = 'user';
                            $company_logo_image_url = $this->defaultServices->getImgPath($senderFolderPath, $sender_data->image, 'api');
                        }
                    }

                    if ($message->image != NULL || $message->image != '') {
                        $is_text = false;
                    } else {
                        $is_text = true;
                    }
                    if ($message->sender_id == $userDetails->id) {
                        $isFromUser = true;
                        $img_profile = $user_image_url;
                    } else {
                        $isFromUser = false;
                        $img_profile = $company_logo_image_url;
                    }
                    $output['messages_list'][$key]['msz_id']          = $message->id;
                    $output['messages_list'][$key]['img_profile']     = $img_profile;
                    $output['messages_list'][$key]['msz_description'] = ($message->message) ? $message->message : '';
                    $output['messages_list'][$key]['msz_image']       = ($message->image != '') ? url('storage/images/messages/api/' . $message->image) : '';
                    $output['messages_list'][$key]['msz_date_time']   = strtotime($message->created_at);
                    $output['messages_list'][$key]['isFromUser']      = $isFromUser;
                    $output['messages_list'][$key]['isText']          = $is_text;
                }
            }else if ($message_type == 4) {

                $getAllRecvMessage = EmployeeMessage::leftJoin('employee_message_threads', function ($join) {
                    $join->on('employee_message_threads.employee_message_id', '=', 'employee_messages.id');
                })
                    ->select(
                        'employee_message_threads.*'
                    )
                    ->where('employee_messages.message_type', 2)
                    ->where('employee_messages.id', $message_parent_id)
                    ->where('employee_messages.is_delete', 0)
                    ->where('employee_messages.is_active', 1);

                $count_recv_msg     = $getAllRecvMessage->count();
                $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();

                $output['total_count'] = $count_recv_msg;
                $output['messages_list'] = [];

                $userProfileDetails   = UserProfile::where('user_id', $user_id)->first();
                $userFolderPath = 'user';
                $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');



                foreach ($getAllRecvMessage as $key => $message) {

                    $sender_data = User::leftJoin('user_profiles', function ($join) {
                        $join->on('users.id', '=', 'user_profiles.user_id');
                    })->where('users.id', '=', $message->sender_id)->first();
                    //dd($sender_data);
                    if ($message->sender_type == 2) {
                        $company_data           = Company::leftJoin('company_admins', function ($join) {
                            $join->on('companies.id', '=', 'company_admins.company_id');
                        })->where('company_admins.user_id', '=', $message->sender_id)->first();
                        $senderFolderPath       = 'company/logo';
                        $company_logo_image_url = $this->defaultServices->getImgPath($senderFolderPath, $company_data->company_logo, 'api');
                    } else {
                        $senderFolderPath     = 'user';
                        $company_logo_image_url = $this->defaultServices->getImgPath($senderFolderPath, $sender_data->image, 'api');
                    }

                    if ($message->image != NULL || $message->image != '') {
                        $is_text = false;
                    } else {
                        $is_text = true;
                    }


                    if ($message->sender_id == $userDetails->id) {
                        $isFromUser = true;
                        $img_profile = $user_image_url;
                        $img_profile = '';
                    } else {
                        $isFromUser = false;
                        $img_profile = $company_logo_image_url;
                        //$img_profile = '';
                    }

                    $output['messages_list'][$key]['msz_id'] = $message->id;
                    $output['messages_list'][$key]['img_profile'] = $img_profile;
                    $output['messages_list'][$key]['msz_description'] = ($message->message) ? $message->message : '';
                    $output['messages_list'][$key]['msz_image'] = ($message->image != '') ? url('storage/images/messages/api/' . $message->image) : '';
                    $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
                    $output['messages_list'][$key]['isFromUser'] = $isFromUser;
                    $output['messages_list'][$key]['isText'] = $is_text;
                }
                $output['is_superAdmin'] = false;
            }

            $success = $output;
            $this->device_token($inputs, $userType, $userDetails->id, 1);
            return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
        } catch (Exception $e) {
            return $this->sendEmployeeResponse(0, [], $e->getMessage(), 200, $messageArr ?? []);
        }
    }


    public function ChallengeMessageList($flag, Request $request)
    {
        $status_code = 0;
        $success = [];
        $inputs = getTrimmedValue($request->all());
        $extraParam = [];
        $messageArr['input'] = $inputs;
        $userType = 'employee';

        $limit  = ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
        $offset = ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
        $offset = ($limit * $offset) - $limit;

        try {
            $userDetails = Auth::user();
            $extraParam['user_id'] = $userDetails->id;

            // use it as default code - start
            $employeeDataArr = $this->checkEmployeeValidation();

            if ($employeeDataArr['status'] != 1) {
                return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
                exit(0);
            }
            // use it as default code - end

            $messages = [
                'device_type.required' => 'Please enter device type',
                'page_count.required'  => 'Please enter page count',
                'page_size.required'   => 'Please enter page size',
            ];

            $validator = Validator::make($inputs, [
                "device_type"  => 'required|in:ios,ioS,iOS,Android,android',
                "page_count"   => 'required',
                "page_size"    => 'required',
            ], $messages);

            if ($validator->fails()) {
                return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
                exit(0);
            }
            $status_code = 1;

            $get_active_location = CompanyEmployeeLocation::where('user_id', $userDetails->id)->where('active_location', 1)->first();

            $company_data = Company::where('id', $get_active_location->company_id)->first();
            $companyFolderPath = 'company/logo';
            $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');

            $locationAdminData = CompanyLocationAdmin::where('location_id', $get_active_location->location_id)->first();
            $locAdminDetails   = UserProfile::where('user_id', $locationAdminData->user_id)->first();
            $locAdminFolderPath = 'user';
            $location_admin_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');

            $output['company_admin_id'] = $get_active_location->company_id;
            $output['location_admin_id'] = $get_active_location->location_id;
            $output['company_admin_image'] = $company_logo_image_url;
            $output['location_admin_image'] = $location_admin_image_url;

            $getAllRecvMessage = EmployeeMessage::select(DB::raw(
                'DISTINCT 
                                        employee_messages.*',
            ))
                ->where('employee_messages.message_type', 1)
                ->where('employee_messages.receiver_id', $userDetails->id)
                ->where('employee_messages.is_active', 1)
                ->where('employee_messages.is_delete', 0);


            $count_recv_msg        = $getAllRecvMessage->count();
            $getAllRecvMessage     = $getAllRecvMessage->skip($offset)->take($limit)->get();
            //dd($getAllRecvMessage);
            $output['total_count'] = $count_recv_msg;
            $output['available_challenges_list'] = [];
            $user_id               = $userDetails->id;
            $all_msg               =  objectToArray($getAllRecvMessage);
            $last_msg              =  end($all_msg);



            foreach ($getAllRecvMessage as $key => $message) {

                $challengeDetails = Challenge::where('id', $message->challenge_id)->first();
                $challenge_category = ChallengeCategory::where('id', $challengeDetails->challenge_category_id)->first();
                //dd($challengeDetails);

                $category_image_url = '';
                if ($challenge_category->image) {
                    $rootFolderPath = 'challenge/categories';
                    $category_image_url = $this->defaultServices->getImgPath($rootFolderPath, $challenge_category->app_icon, 'app_icon');
                }
                $getLastRecvMessage =  EmployeeMessageThread::where('employee_message_id', $message->id)->orderby('id', 'desc')->first();

                $output['available_challenges_list'][$key]['challenge_id']            = $challengeDetails->id;
                $output['available_challenges_list'][$key]['answer_id']               = $message->challenge_employee_answer_id;
                $output['available_challenges_list'][$key]['challenge_type_name']     = ($challengeDetails->challenge_taking_type == 2) ? 'Photo Taking Challenge' : 'Questionnaire';
                $output['available_challenges_list'][$key]['challenge_type_id']       = $challengeDetails->challenge_taking_type;
                $output['available_challenges_list'][$key]['challenge_title']         = $challengeDetails->challenge_name;
                $output['available_challenges_list'][$key]['challenge_description']   = $challengeDetails->challenge_desc;
                $output['available_challenges_list'][$key]['challenge_msg_parent_id'] = $message->id;
                $output['available_challenges_list'][$key]['message_sender_id']       = $message->sender_id;
                $output['available_challenges_list'][$key]['message_receiver_id']     = $message->receiver_id;
                $output['available_challenges_list'][$key]['challenge_image']         = $category_image_url;
                //$output['available_challenges_list'][$key]['challenge_posted_time_ago'] = strtotime($message->created_at);
                $output['available_challenges_list'][$key]['challenge_posted_time_ago'] = strtotime($getLastRecvMessage->created_at);
            }
            //die;
            $success = $output;
            $this->device_token($inputs, $userType, $userDetails->id, 1);
            return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
        } catch (Exception $e) {
            return $this->sendEmployeeResponse(0, [], $e->getMessage(), 200, $messageArr ?? []);
        }
    }

    public function FindingMessageList($flag, Request $request)
    {
        $status_code = 0;
        $success = [];
        $inputs = getTrimmedValue($request->all());
        $extraParam = [];
        $messageArr['input'] = $inputs;
        $userType = 'employee';

        $limit  = ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
        $offset = ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
        $offset = ($limit * $offset) - $limit;

        try {
            $userDetails = Auth::user();
            $extraParam['user_id'] = $userDetails->id;

            // use it as default code - start
            $employeeDataArr = $this->checkEmployeeValidation();

            if ($employeeDataArr['status'] != 1) {
                return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
                exit(0);
            }
            // use it as default code - end

            $messages = [
                'device_type.required' => 'Please enter device type',
                'page_count.required'  => 'Please enter page count',
                'page_size.required'   => 'Please enter page size',
            ];

            $validator = Validator::make($inputs, [
                "device_type"  => 'required|in:ios,ioS,iOS,Android,android',
                "page_count"   => 'required',
                "page_size"    => 'required',
            ], $messages);

            if ($validator->fails()) {
                return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
                exit(0);
            }
            $status_code = 1;

            // $getAllRecvMessage  = Message::where('company_finding_id','!=',NULL)
            //                     ->where('message_type',0)
            //                     ->where('status','!=',0)
            //                     ->where('is_delete', '!=', 1)
            //                     ->where('sender_id',$userDetails->id)
            //                     ->orderby('id','desc');


            // $getAllRecvMessage = EmployeeMessage::leftJoin('employee_message_threads', function ($join) {
            //                         $join->on('employee_message_threads.employee_message_id', '=', 'employee_messages.id');
            //                     })
            //                     ->select( 
            //                         'employee_messages.*',
            //                         'employee_message_threads.id as message_thrade_id',
            //                         'employee_message_threads.sender_id  as message_sender_id',
            //                         'employee_message_threads.receiver_id  as message_receiver_id',
            //                     )
            //                     ->where('employee_messages.message_type',2)
            //                     ->where('employee_messages.receiver_id',$userDetails->id)
            //                     ->orderby('employee_message_threads.id','desc');

            $getAllRecvMessage = EmployeeMessage::select(DB::raw(
                'DISTINCT 
                                        employee_messages.*',
            ))
                ->where('employee_messages.message_type', 2)
                ->where('employee_messages.receiver_id', $userDetails->id)
                ->where('employee_messages.is_active', 1)
                ->where('employee_messages.is_delete', 0);



            $count_recv_msg        = $getAllRecvMessage->count();
            $getAllRecvMessage     = $getAllRecvMessage->skip($offset)->take($limit)->get();
            //dd($getAllRecvMessage);
            $output['total_count'] = $count_recv_msg;
            $output['findins_list_in_msz'] = [];
            $user_id = $userDetails->id;

            $all_msg =  objectToArray($getAllRecvMessage);
            $last_msg =  end($all_msg);

            foreach ($getAllRecvMessage as $key => $fmessage) {
                //dd($fmessage);
                $findingsDetails = CompanyFinding::where('id', $fmessage->company_finding_id)->first();
                //echo "<pre>";print_r($findingsDetails);
                $findingsImages = CompanyFindingImage::where('company_finding_id', $findingsDetails->id)->get();
                $finding_images = [];
                if ($findingsImages != null) {
                    foreach ($findingsImages as $findingsImageRow) {
                        $findings_image_row = array('findings_photo_id' => $findingsImageRow->id, 'findings_photo_url' => url('storage/images/finding/api/' . $findingsImageRow->image));
                        $finding_images[] = $findings_image_row;
                    }
                }

                $getLastRecvMessage =  EmployeeMessageThread::where('employee_message_id', $fmessage->id)->orderby('id', 'desc')->first();

                $output['findins_list_in_msz'][$key]['finding_id'] = $findingsDetails->id;
                $output['findins_list_in_msz'][$key]['finding_name'] = $findingsDetails->title;
                $output['findins_list_in_msz'][$key]['finding_description'] = $findingsDetails->description;
                $output['findins_list_in_msz'][$key]['finding_date'] = strtotime($findingsDetails->created_at);
                $output['findins_list_in_msz'][$key]['finding_points'] = ($findingsDetails->point) ? (string) $findingsDetails->point : '';
                $output['findins_list_in_msz'][$key]['is_completed'] = ($findingsDetails->is_approve == 1) ? true : false;
                $output['findins_list_in_msz'][$key]['finding_msg_parent_id'] = $fmessage->id;
                $output['findins_list_in_msz'][$key]['message_sender_id']   = $fmessage->sender_id;
                $output['findins_list_in_msz'][$key]['message_receiver_id'] = $fmessage->receiver_id;
                $output['findins_list_in_msz'][$key]['finding_images'] = $finding_images;

                //$output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = strtotime($fmessage->created_at);
                $output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = strtotime($getLastRecvMessage->created_at);
            }

            $success = $output;
            $this->device_token($inputs, $userType, $userDetails->id, 1);
            return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
        } catch (Exception $e) {
            return $this->sendEmployeeResponse(0, [], $e->getMessage(), 200, $messageArr ?? []);
        }
    }

    public function MessageSubmit($flag, Request $request)
    {
        $status_code = 0;
        $success = [];
        $inputs = getTrimmedValue($request->all());
        $extraParam = [];
        $messageArr['input'] = $inputs;
        $userType = 'employee';

        $limit               = ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
        $offset              = ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
        $offset              = ($limit * $offset) - $limit;
        $message_type        = ($inputs['message_type'] <= 0) ? 1 : $inputs['message_type'];
        $id                  = ($inputs['id'] == '') ? 0 : $inputs['id'];
        $message             = (isset($inputs['message'])) ? $inputs['message'] : '';
        $message_reciever_id =  isset($inputs['message_receiver_id']) ? $inputs['message_receiver_id'] : '';
        $message_image       = $request->file('message_image');

        $receiver_user_type =  User::leftJoin('role_users', function ($join) {
            $join->on('users.id', '=', 'role_users.user_id');
        })
            ->leftJoin('roles', function ($join) {
                $join->on('roles.id', '=', 'role_users.role_id');
            })
            ->select(
                'roles.name as role_name',
                'roles.id as role_id'
            )
            ->where('users.id', $message_reciever_id)->first();


        try {
            $userDetails = Auth::user();
            $extraParam['user_id'] = $userDetails->id;
            $user_id = $userDetails->id;
            // use it as default code - start
            $employeeDataArr = $this->checkEmployeeValidation();

            if ($employeeDataArr['status'] != 1) {
                return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
                exit(0);
            }
            // use it as default code - end

            $messages = [
                'device_type.required'      => 'Please enter device type',
                'page_count.required'       => 'Please enter page count',
                'page_size.required'        => 'Please enter page size',
                'message_type.required'     => 'Please send message type',
                'id.required'               => 'Please send id',
                //'message_receiver_id.required'  => 'Please send receiver id'
            ];

            $validator = Validator::make($inputs, [
                "device_type"     => 'required|in:ios,ioS,iOS,Android,android',
                "page_count"      => 'required',
                "page_size"       => 'required',
                "message_type"    => 'required',
                "id"              => 'required',
                //"message_receiver_id" => 'required',
            ], $messages);

            if ($validator->fails()) {
                return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
                exit(0);
            }
            $status_code = 1;

            $get_active_location = CompanyEmployeeLocation::where('user_id', $userDetails->id)->where('active_location', 1)->first();

            if ($message_type == 1) {
                $whereArr = [];
                $whereOtherArr = [];
                $whereArr['message_type'] = 3;
                $whereOtherArr['employeeRole'] = 4;
                $whereOtherArr['adminRole'] = 2;
                $whereOtherArr['employee_id'] = $userDetails->id;
                //dd($userDetails->id);
                $companyAdminDetails = Company::leftJoin('company_admins', function ($join) {
                    $join->on('companies.id', '=', 'company_admins.company_id');
                })->where('companies.id', $id)->first();
                //dd($companyAdminDetails->user_id);

                $messageDetails = EmployeeMessage::where(function ($query) use ($whereOtherArr) {
                    $query->where(function ($query) use ($whereOtherArr) {
                        $query->where("sender_type", $whereOtherArr['adminRole']);
                        $query->where("receiver_type", $whereOtherArr['employeeRole']);
                        $query->where("receiver_id", $whereOtherArr['employee_id']);
                    });
                    $query->orWhere(function ($query) use ($whereOtherArr) {
                        $query->where("receiver_type", $whereOtherArr['adminRole']);
                        $query->where("sender_type", $whereOtherArr['employeeRole']);
                        $query->where("sender_id", $whereOtherArr['employee_id']);
                    });
                })
                    ->where($whereArr)
                    ->first();
                //dd($messageDetails);

                if (collect($messageDetails)->isEmpty()) {

                    $message_insert['message_type']  = 3;
                    $message_insert['sender_type']   = 4;
                    $message_insert['receiver_type'] = 2;
                    $message_insert['company_id']    = $id;
                    $message_insert['sender_id']     = $userDetails->id;
                    $message_insert['receiver_id']   = $companyAdminDetails->user_id;
                    $messageDetails                  = EmployeeMessage::create($message_insert);
                }
                $message_thread_insert['employee_message_id'] = $messageDetails->id;
                $message_thread_insert['sender_type']         = 4;
                $message_thread_insert['receiver_type']       = 2;
                $message_thread_insert['sender_id']           = $userDetails->id;
                $message_thread_insert['company_id']          = $id;
                $message_thread_insert['receiver_id']         = $companyAdminDetails->user_id;
                $message_thread_insert['status']              = 1;
                $message_thread_insert['message']             = trim($message);


                if ($message_image != '') {
                    $rootFolderPath                 = public_path('/storage/images/messages');
                    $message_thread_insert['image'] = $this->defaultServices->imgUpload($rootFolderPath, $message_image);
                }

                $insert_msg_thread                            = EmployeeMessageThread::create($message_thread_insert);
            } else if ($message_type == 2) {
                $whereArr = [];
                $whereOtherArr = [];
                $whereArr['message_type'] = 3;
                $whereOtherArr['employeeRole'] = 4;
                $whereOtherArr['adminRole'] = 3;
                $whereOtherArr['employee_id'] = $userDetails->id;
                
                $locationAdminDetails = CompanyLocationAdmin::where('location_id', $id)->first();

                $messageDetails = EmployeeMessage::where(function ($query) use ($whereOtherArr) {
                    $query->where(function ($query) use ($whereOtherArr) {
                        $query->where("sender_type", $whereOtherArr['adminRole']);
                        $query->where("receiver_type", $whereOtherArr['employeeRole']);
                        $query->where("receiver_id", $whereOtherArr['employee_id']);
                    });
                    $query->orWhere(function ($query) use ($whereOtherArr) {
                        $query->where("receiver_type", $whereOtherArr['adminRole']);
                        $query->where("sender_type", $whereOtherArr['employeeRole']);
                        $query->where("sender_id", $whereOtherArr['employee_id']);
                    });
                })->where($whereArr)->first();

                if (collect($messageDetails)->isEmpty()) {

                    $message_insert['message_type']   = 3;
                    $message_insert['sender_type']    = 4;
                    $message_insert['receiver_type']  = 3;
                    $message_insert['company_id']     = $locationAdminDetails->company_id;
                    $message_insert['location_id']    = $id;
                    $message_insert['sender_id']      = $userDetails->id;
                    $message_insert['receiver_id']    = $locationAdminDetails->user_id;
                    $messageDetails                   = EmployeeMessage::create($message_insert);
                }
                $message_thread_insert['employee_message_id'] = $messageDetails->id;
                $message_thread_insert['sender_type']         = 4;
                $message_thread_insert['receiver_type']       = 2;
                $message_thread_insert['sender_id']           = $userDetails->id;
                $message_thread_insert['company_id']           = $locationAdminDetails->company_id;
                $message_thread_insert['location_id']          = $id;
                $message_thread_insert['receiver_id']         = $locationAdminDetails->user_id;
                $message_thread_insert['status']              = 1;
                $message_thread_insert['message']             = trim($message);

                if ($message_image != '') {
                    $rootFolderPath                 = public_path('/storage/images/messages');
                    $message_thread_insert['image'] = $this->defaultServices->imgUpload($rootFolderPath, $message_image);
                }

                 $insert_msg_thread                            = EmployeeMessageThread::create($message_thread_insert);
            } else if ($message_type == 3) {
                //$message_thread_insert['challenge_id']        = $id;
                $message_thread_insert['employee_message_id'] = $inputs['message_parent_id'];
                $message_thread_insert['sender_type']         = 4;
                $message_thread_insert['receiver_type']       = $receiver_user_type->role_id;
                $message_thread_insert['sender_id']           = $userDetails->id;
                $message_thread_insert['receiver_id']         = $inputs['message_receiver_id'];
                $message_thread_insert['status']              = 1;
                //dd($message_thread_insert);
            } else if ($message_type == 4) {
                $message_thread_insert['employee_message_id'] = $inputs['message_parent_id'];
                $message_thread_insert['sender_type']         = 4;
                $message_thread_insert['receiver_type']       = $receiver_user_type->role_id;
                $message_thread_insert['sender_id']           = $userDetails->id;
                $message_thread_insert['receiver_id']         = $inputs['message_receiver_id'];
                $message_thread_insert['status']              = 1;
            }
            //$message_insert['reply_id'] = 0;
            $message_thread_insert['message']   = trim($message);

            if ($message_image != '') {
                $rootFolderPath                 = public_path('/storage/images/messages');
                $message_thread_insert['image'] = $this->defaultServices->imgUpload($rootFolderPath, $message_image);
            }

            //$message_insert['sender_id'] = $user_id;
            //dd($message_insert);
            if ($message_type == 3 || $message_type == 4) {
                $insert = EmployeeMessageThread::create($message_thread_insert);
            }




            // message list response //
            if ($message_type == 1) {
                
                $whereArr = [];
                $whereOtherArr = [];
                $whereArr['message_type'] = 3;
                $whereOtherArr['employeeRole'] = 4;
                $whereOtherArr['adminRole'] = 2;
                $whereOtherArr['employee_id'] = $userDetails->id;

                $getMainRecvMessage = EmployeeMessage::where(function ($query) use ($whereOtherArr) {
                    $query->where(function ($query) use ($whereOtherArr) {
                        $query->where("sender_type", $whereOtherArr['adminRole']);
                        $query->where("receiver_type", $whereOtherArr['employeeRole']);
                        $query->where("receiver_id", $whereOtherArr['employee_id']);
                    });
                    $query->orWhere(function ($query) use ($whereOtherArr) {
                        $query->where("receiver_type", $whereOtherArr['adminRole']);
                        $query->where("sender_type", $whereOtherArr['employeeRole']);
                        $query->where("sender_id", $whereOtherArr['employee_id']);
                    });
                })->where($whereArr)->first();

                $getAllRecvMessage = EmployeeMessageThread::where('employee_message_id',$getMainRecvMessage->id);

                //dd($messageDetails);


                $count_recv_msg     = $getAllRecvMessage->count();
                $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
                //dd($getAllRecvMessage);
                $output['total_count'] = $count_recv_msg;
                $output['messages_list'] = [];

                $company_data = Company::where('id', $id)->first();
                $companyFolderPath = 'company/logo';
                $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');


                $userProfileDetails   = UserProfile::where('user_id', $user_id)->first();
                $userFolderPath = 'user';
                $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');

                foreach ($getAllRecvMessage as $key => $message) {
                    if ($message->sender_id == $userDetails->id) {
                        $isFromUser = true;
                        $img_profile = $user_image_url;
                    } else {
                        $isFromUser = false;
                        $img_profile = $company_logo_image_url;
                        //$img_profile= '';
                    }
                    $output['messages_list'][$key]['msz_id']          = $message->id;
                    $output['messages_list'][$key]['img_profile']     = $img_profile;
                    $output['messages_list'][$key]['msz_description'] = ($message->message) ? $message->message : '';
                    $output['messages_list'][$key]['msz_image']       = ($message->image != '') ? url('storage/images/messages/api/' . $message->image) : '';
                    $output['messages_list'][$key]['msz_date_time']   = strtotime($message->created_at);
                    $output['messages_list'][$key]['isFromUser']      = $isFromUser;
                    $output['messages_list'][$key]['isText']          = ($message->message != '') ? true : false;
                }
                $output['is_superAdmin'] = false;
            } else if ($message_type == 2) {
                
                $whereArr = [];
                $whereOtherArr = [];
                $whereArr['message_type'] = 3;
                $whereOtherArr['employeeRole'] = 4;
                $whereOtherArr['adminRole'] = 3;
                $whereOtherArr['employee_id'] = $userDetails->id;

                $locationAdminDetails = CompanyLocationAdmin::where('location_id', $id)->first();

                $getMainRecvMessage = EmployeeMessage::where(function ($query) use ($whereOtherArr) {
                    $query->where(function ($query) use ($whereOtherArr) {
                        $query->where("sender_type", $whereOtherArr['adminRole']);
                        $query->where("receiver_type", $whereOtherArr['employeeRole']);
                        $query->where("receiver_id", $whereOtherArr['employee_id']);
                    });
                    $query->orWhere(function ($query) use ($whereOtherArr) {
                        $query->where("receiver_type", $whereOtherArr['adminRole']);
                        $query->where("sender_type", $whereOtherArr['employeeRole']);
                        $query->where("sender_id", $whereOtherArr['employee_id']);
                    });
                })->where($whereArr)->first();

                $getAllRecvMessage = EmployeeMessageThread::where('employee_message_id',$getMainRecvMessage->id);


                $count_recv_msg     = $getAllRecvMessage->count();
                $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
                //dd($getAllRecvMessage);
                $output['total_count'] = $count_recv_msg;
                $output['messages_list'] = [];

                $location_admin_data = UserProfile::where('user_id', $locationAdminDetails->user_id)->first();
                $locationAdminFolderPath = 'user';
                $location_admin_image_url = $this->defaultServices->getImgPath($locationAdminFolderPath, $location_admin_data->image, 'api');


                $userProfileDetails   = UserProfile::where('user_id', $user_id)->first();
                $userFolderPath = 'user';
                $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');

                foreach ($getAllRecvMessage as $key => $message) {
                    if ($message->sender_id == $userDetails->id) {
                        $isFromUser = true;
                        $img_profile = $user_image_url;
                    } else {
                        $isFromUser = false;
                        $img_profile = $location_admin_image_url;
                        //$img_profile= '';
                    }
                    $output['messages_list'][$key]['msz_id']          = $message->id;
                    $output['messages_list'][$key]['img_profile']     = $img_profile;
                    $output['messages_list'][$key]['msz_description'] = ($message->message) ? $message->message : '';
                    $output['messages_list'][$key]['msz_image']       = ($message->image != '') ? url('storage/images/messages/api/' . $message->image) : '';
                    $output['messages_list'][$key]['msz_date_time']   = strtotime($message->created_at);
                    $output['messages_list'][$key]['isFromUser']      = $isFromUser;
                    $output['messages_list'][$key]['isText']          = ($message->message != '') ? true : false;
                }
                $output['is_superAdmin'] = false;
            } else if ($message_type == 3) {

                $getAllRecvMessage = EmployeeMessage::leftJoin('employee_message_threads', function ($join) {
                    $join->on('employee_message_threads.employee_message_id', '=', 'employee_messages.id');
                })
                    ->select(
                        'employee_message_threads.*'
                    )
                    ->where('employee_messages.message_type', 1)
                    ->where('employee_messages.id', $inputs['message_parent_id'])
                    ->where('employee_messages.is_delete', 0)
                    ->where('employee_messages.is_active', 1);
                // ->orderby('employee_message_threads.id','desc');

                $count_recv_msg     = $getAllRecvMessage->count();
                $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
                //dd( $getAllRecvMessage);

                $output['total_count'] = $count_recv_msg;
                $output['messages_list'] = [];
                $output['is_superAdmin'] = false;

                $userProfileDetails   = UserProfile::where('user_id', $user_id)->first();
                $userFolderPath = 'user';
                $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');
                foreach ($getAllRecvMessage as $key => $message) {

                    if ($message->sender_type == 1) {
                        $output['is_superAdmin'] = true;
                        $super_admin_data        = User::leftJoin('role_users', function ($join) {
                            $join->on('users.id', '=', 'role_users.user_id');
                        })->where('role_users.role_id', '=', 1)->first();
                        $superAdminDetails       = UserProfile::where('user_id', $super_admin_data->id)->first();
                        $superAdminFolderPath    = 'user';
                        $company_logo_image_url  = $this->defaultServices->getImgPath($superAdminFolderPath, $superAdminDetails->image, 'api');
                    } else {
                        $output['is_superAdmin'] = false;
                        $sender_data = User::leftJoin('user_profiles', function ($join) {
                            $join->on('users.id', '=', 'user_profiles.user_id');
                        })->where('users.id', '=', $message->sender_id)->first();
                        if ($message->sender_type == 2) {
                            $company_data           = Company::leftJoin('company_admins', function ($join) {
                                $join->on('companies.id', '=', 'company_admins.company_id');
                            })->where('company_admins.user_id', '=', $message->sender_id)->first();
                            $senderFolderPath       = 'company/logo';
                            $company_logo_image_url = $this->defaultServices->getImgPath($senderFolderPath, $company_data->company_logo, 'api');
                        } else {
                            $senderFolderPath     = 'user';
                            $company_logo_image_url = $this->defaultServices->getImgPath($senderFolderPath, $sender_data->image, 'api');
                        }
                    }

                    if ($message->image != NULL || $message->image != '') {
                        $is_text = false;
                    } else {
                        $is_text = true;
                    }
                    if ($message->sender_id == $userDetails->id) {
                        $isFromUser = true;
                        $img_profile = $user_image_url;
                    } else {
                        $isFromUser = false;
                        $img_profile = $company_logo_image_url;
                    }
                    $output['messages_list'][$key]['msz_id']          = $message->id;
                    $output['messages_list'][$key]['img_profile']     = $img_profile;
                    $output['messages_list'][$key]['msz_description'] = ($message->message) ? $message->message : '';
                    $output['messages_list'][$key]['msz_image']       = ($message->image != '') ? url('storage/images/messages/api/' . $message->image) : '';
                    $output['messages_list'][$key]['msz_date_time']   = strtotime($message->created_at);
                    $output['messages_list'][$key]['isFromUser']      = $isFromUser;
                    $output['messages_list'][$key]['isText']          = $is_text;
                    //
                }
                //dd($output);
            } else if ($message_type == 4) {

                $getAllRecvMessage = EmployeeMessage::leftJoin('employee_message_threads', function ($join) {
                    $join->on('employee_message_threads.employee_message_id', '=', 'employee_messages.id');
                })
                    ->select(
                        'employee_message_threads.*'
                    )
                    ->where('employee_messages.message_type', 2)
                    ->where('employee_messages.id', $inputs['message_parent_id'])
                    ->where('employee_messages.is_delete', 0)
                    ->where('employee_messages.is_active', 1);
                //->orderby('employee_message_threads.id','desc');

                $count_recv_msg     = $getAllRecvMessage->count();
                $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();

                $output['total_count'] = $count_recv_msg;
                $output['messages_list'] = [];

                $userProfileDetails   = UserProfile::where('user_id', $user_id)->first();
                $userFolderPath = 'user';
                $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');



                foreach ($getAllRecvMessage as $key => $message) {

                    $sender_data = User::leftJoin('user_profiles', function ($join) {
                        $join->on('users.id', '=', 'user_profiles.user_id');
                    })->where('users.id', '=', $message->sender_id)->first();
                    //dd($sender_data);
                    if ($message->sender_type == 2) {
                        $company_data           = Company::leftJoin('company_admins', function ($join) {
                            $join->on('companies.id', '=', 'company_admins.company_id');
                        })->where('company_admins.user_id', '=', $message->sender_id)->first();
                        $senderFolderPath       = 'company/logo';
                        $company_logo_image_url = $this->defaultServices->getImgPath($senderFolderPath, $company_data->company_logo, 'api');
                    } else {
                        $senderFolderPath     = 'user';
                        $company_logo_image_url = $this->defaultServices->getImgPath($senderFolderPath, $sender_data->image, 'api');
                    }

                    if ($message->image != NULL || $message->image != '') {
                        $is_text = false;
                    } else {
                        $is_text = true;
                    }


                    if ($message->sender_id == $userDetails->id) {
                        $isFromUser = true;
                        $img_profile = $user_image_url;
                        $img_profile = '';
                    } else {
                        $isFromUser = false;
                        $img_profile = $company_logo_image_url;
                        //$img_profile = '';
                    }

                    $output['messages_list'][$key]['msz_id'] = $message->id;
                    $output['messages_list'][$key]['img_profile'] = $img_profile;
                    $output['messages_list'][$key]['msz_description'] = ($message->message) ? $message->message : '';
                    $output['messages_list'][$key]['msz_image'] = ($message->image != '') ? url('storage/images/messages/api/' . $message->image) : '';
                    $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
                    $output['messages_list'][$key]['isFromUser'] = $isFromUser;
                    $output['messages_list'][$key]['isText'] = $is_text;
                }
                $output['is_superAdmin'] = false;
            }

            $success = $output;
            $this->device_token($inputs, $userType, $userDetails->id, 1);
            return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
        } catch (Exception $e) {
            return $this->sendEmployeeResponse(0, [], $e->getMessage(), 200, $messageArr ?? []);
        }
    }

    public function ChallengeDelete(Request $request)
    {
        $status_code = 0;
        $success     = [];
        $extraParam  = [];
        $inputs      = getTrimmedValue($request->all());
        $messageArr['input'] = $inputs;
        $userType     = 'employee';

        $limit  = 15; // ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
        $offset = 1; // ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
        $offset = ($limit * $offset) - $limit;

        try {
            $userDetails = Auth::user();
            $extraParam['user_id'] = $userDetails->id;
            $user_id = $userDetails->id;
            // use it as default code - start
            $employeeDataArr = $this->checkEmployeeValidation();

            if ($employeeDataArr['status'] != 1) {
                return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
                exit(0);
            }
            // use it as default code - end

            $messages = [
                'device_type.required' => 'Please enter device type',
                'challenge_id.required'  => 'Please enter challenge id',
                'message_parent_id'     => 'Please enter message parent id'
            ];

            $validator = Validator::make($inputs, [
                "device_type"  => 'required|in:ios,ioS,iOS,Android,android',
                "challenge_id"   => 'required',
                "message_parent_id" => 'required'
            ], $messages);

            if ($validator->fails()) {
                return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
                exit(0);
            }
            $status_code = 1;

            EmployeeMessage::where('challenge_id', $request->challenge_id)->where('id', $request->message_parent_id)->update(['is_delete' => 1]);
            EmployeeMessageThread::where('employee_message_id', $request->message_parent_id)->update(['is_delete' => 1]);

            $get_active_location = CompanyEmployeeLocation::where('user_id', $userDetails->id)->where('active_location', 1)->first();

            $company_data = Company::where('id', $get_active_location->company_id)->first();
            $companyFolderPath = 'company/logo';
            $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');

            $locationAdminData = CompanyLocationAdmin::where('location_id', $get_active_location->location_id)->first();
            $locAdminDetails   = UserProfile::where('user_id', $locationAdminData->user_id)->first();
            $locAdminFolderPath = 'user';
            $location_admin_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');

            $output['company_admin_id'] = $get_active_location->company_id;
            $output['location_admin_id'] = $get_active_location->location_id;
            $output['company_admin_image'] = $company_logo_image_url;
            $output['location_admin_image'] = $location_admin_image_url;

            $getAllRecvMessage = EmployeeMessage::select(DB::raw(
                'DISTINCT 
                                        employee_messages.*',
            ))
                ->where('employee_messages.message_type', 1)
                ->where('employee_messages.receiver_id', $userDetails->id)
                ->where('employee_messages.is_active', 1)
                ->where('employee_messages.is_delete', 0);


            $count_recv_msg        = $getAllRecvMessage->count();
            $getAllRecvMessage     = $getAllRecvMessage->skip($offset)->take($limit)->get();
            $output['total_count'] = $count_recv_msg;
            $output['available_challenges_list'] = [];
            $user_id               = $userDetails->id;
            $all_msg               =  objectToArray($getAllRecvMessage);
            $last_msg              =  end($all_msg);



            foreach ($getAllRecvMessage as $key => $message) {

                $challengeDetails = Challenge::where('id', $message->challenge_id)->first();
                $challenge_category = ChallengeCategory::where('id', $challengeDetails->challenge_category_id)->first();
                //dd($challenge_category);

                $category_image_url = '';
                if ($challenge_category->image) {
                    $rootFolderPath = 'challenge/categories';
                    $category_image_url = $this->defaultServices->getImgPath($rootFolderPath, $challenge_category->app_icon, 'app_icon');
                }

                $getLastRecvMessage =  EmployeeMessageThread::where('employee_message_id', $message->id)->orderby('id', 'desc')->first();

                $output['available_challenges_list'][$key]['challenge_id']            = $challengeDetails->id;
                $output['available_challenges_list'][$key]['answer_id']               = $message->challenge_employee_answer_id;
                $output['available_challenges_list'][$key]['challenge_type_name']     = ($challengeDetails->challenge_taking_type == 2) ? 'Photo Taking Challenge' : 'Questionnaire';
                $output['available_challenges_list'][$key]['challenge_type_id']       = $challengeDetails->challenge_taking_type;
                $output['available_challenges_list'][$key]['challenge_title']         = $challengeDetails->challenge_name;
                $output['available_challenges_list'][$key]['challenge_description']   = $challengeDetails->challenge_desc;
                $output['available_challenges_list'][$key]['challenge_msg_parent_id'] = $message->id;
                $output['available_challenges_list'][$key]['message_sender_id']       = $message->sender_id;
                $output['available_challenges_list'][$key]['message_receiver_id']     = $message->receiver_id;
                $output['available_challenges_list'][$key]['challenge_image']         = $category_image_url;
                //$output['available_challenges_list'][$key]['challenge_posted_time_ago'] = strtotime($message->created_at);
                $output['available_challenges_list'][$key]['challenge_posted_time_ago'] = strtotime($getLastRecvMessage->created_at);
                //$output['available_challenges_list'][$key]['challenge_posted_time_ago'] = strtotime($message->created_at);
                //$output['available_challenges_list'][$key]['challenge_posted_time_ago'] = ($getLastRecvMessage != '' || $getLastRecvMessage != null ) ?strtotime($getLastRecvMessage->created_at):strtotime($message->created_at);
            }
            $success = $output;
            $this->device_token($inputs, $userType, $userDetails->id, 1);
            return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
        } catch (Exception $e) {
            return $this->sendEmployeeResponse($status_code, $success, $e->getMessage(), 200, $messageArr, $extraParam);
        }
    }

    public function FindingsDelete(Request $request)
    {
        $status_code = 0;
        $success = [];
        $extraParam = [];
        $inputs = getTrimmedValue($request->all());
        $messageArr['input'] = $inputs;
        $userType = 'employee';

        $limit  = 15; // ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
        $offset = 1; // ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
        $offset = ($limit * $offset) - $limit;

        try {
            $userDetails = Auth::user();
            $extraParam['user_id'] = $userDetails->id;
            $user_id = $userDetails->id;
            // use it as default code - start
            $employeeDataArr = $this->checkEmployeeValidation();

            if ($employeeDataArr['status'] != 1) {
                return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
                exit(0);
            }
            // use it as default code - end

            $messages = [
                'device_type.required' => 'Please enter device type',
                'findings_id.required'  => 'Please enter findings id',
            ];

            $validator = Validator::make($inputs, [
                "device_type"  => 'required|in:ios,ioS,iOS,Android,android',
                "findings_id"   => 'required',
            ], $messages);

            if ($validator->fails()) {
                return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
                exit(0);
            }
            $status_code = 1;

            //Message::where('company_finding_id', $request->findings_id)->update(['is_delete' => 1]);

            EmployeeMessage::where('company_finding_id', $request->findings_id)->where('id', $request->message_parent_id)->update(['is_delete' => 1]);
            EmployeeMessageThread::where('employee_message_id', $request->message_parent_id)->update(['is_delete' => 1]);

            $getAllRecvMessage = EmployeeMessage::select(DB::raw(
                'DISTINCT 
                                        employee_messages.*',
            ))
                ->where('employee_messages.message_type', 2)
                ->where('employee_messages.receiver_id', $userDetails->id)
                ->where('employee_messages.is_active', 1)
                ->where('employee_messages.is_delete', 0);

            $count_recv_msg        = $getAllRecvMessage->count();
            $getAllRecvMessage     = $getAllRecvMessage->skip($offset)->take($limit)->get();
            $output['total_count'] = $count_recv_msg;
            $output['findins_list_in_msz'] = [];
            $user_id = $userDetails->id;

            $all_msg =  objectToArray($getAllRecvMessage);
            $last_msg =  end($all_msg);

            foreach ($getAllRecvMessage as $key => $fmessage) {
                //dd($fmessage);
                $findingsDetails = CompanyFinding::where('id', $fmessage->company_finding_id)->first();
                //echo "<pre>";print_r($findingsDetails);
                $findingsImages = CompanyFindingImage::where('company_finding_id', $findingsDetails->id)->get();
                $finding_images = [];
                if ($findingsImages != null) {
                    foreach ($findingsImages as $findingsImageRow) {
                        $findings_image_row = array('findings_photo_id' => $findingsImageRow->id, 'findings_photo_url' => url('storage/images/finding/api/' . $findingsImageRow->image));
                        $finding_images[] = $findings_image_row;
                    }
                }

                $getLastRecvMessage =  EmployeeMessageThread::where('employee_message_id', $fmessage->id)->orderby('id', 'desc')->first();

                $output['findins_list_in_msz'][$key]['finding_id'] = $findingsDetails->id;
                $output['findins_list_in_msz'][$key]['finding_name'] = $findingsDetails->title;
                $output['findins_list_in_msz'][$key]['finding_description'] = $findingsDetails->description;
                $output['findins_list_in_msz'][$key]['finding_date'] = strtotime($findingsDetails->created_at);
                $output['findins_list_in_msz'][$key]['finding_points'] = ($findingsDetails->point) ? (string) $findingsDetails->point : '';
                $output['findins_list_in_msz'][$key]['is_completed'] = ($findingsDetails->is_approve == 1) ? true : false;
                $output['findins_list_in_msz'][$key]['finding_msg_parent_id'] = $fmessage->id;
                $output['findins_list_in_msz'][$key]['message_sender_id']   = $fmessage->sender_id;
                $output['findins_list_in_msz'][$key]['message_receiver_id'] = $fmessage->receiver_id;
                $output['findins_list_in_msz'][$key]['finding_images'] = $finding_images;

                //$output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = strtotime($fmessage->created_at);
                $output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = strtotime($getLastRecvMessage->created_at);

                //$output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = strtotime($fmessage->created_at);
                //$output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = (strtotime($getLastRecvMessage->created_at))??strtotime($fmessage->created_at);
                //$output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = (!empty($getAllRecvMessage))?strtotime($getAllRecvMessage->created_at):strtotime($fmessage->created_at);
                //$output['available_challenges_list'][$key]['finding_posted_time_ago'] = ($getLastRecvMessage != '' || $getLastRecvMessage != null ) ?strtotime($getLastRecvMessage->created_at):strtotime($fmessage->created_at);
            }
            // die;

            $success = $output;
            $this->device_token($inputs, $userType, $userDetails->id, 1);
            return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
        } catch (Exception $e) {
            return $this->sendEmployeeResponse($status_code, $success, $e->getMessage(), 200, $messageArr, $extraParam);
        }
    }












    //============================================================= previous backuup ===================================================//

    // public function AllMessageList($flag, Request $request)
    // {
    //     $status_code = 0;
    //     $success = [];
    //     $inputs = getTrimmedValue($request->all());
    //     $extraParam = [];
    //     $messageArr['input'] = $inputs;
    //     $userType = 'employee';

    //     $limit  = ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
    //     $offset = ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
    //     $offset = ($limit * $offset) - $limit;
    //     $message_type=($inputs['message_type'] <= 0) ? 1 : $inputs['message_type'];
    //     $id=($inputs['id'] == '') ? 0 : $inputs['id'];
    //     try
    //     {
    //         $userDetails = Auth::user();
    //         $extraParam['user_id'] = $userDetails->id;
    //         $user_id=$userDetails->id;
    //         // use it as default code - start
    //         $employeeDataArr = $this->checkEmployeeValidation();

    //         if($employeeDataArr['status'] != 1) {
    //             return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         // use it as default code - end

    //         $messages = [
    //             'device_type.required' => 'Please enter device type',
    //             'page_count.required'  => 'Please enter page count',
    //             'page_size.required'   => 'Please enter page size',
    //             'message_type.required'   => 'Please enter message type'
    //         ];

    //         $validator = Validator::make($inputs,[
    //             "device_type"     => 'required|in:ios,ioS,iOS,Android,android',
    //             "page_count"      => 'required',
    //             "page_size"       => 'required',
    //             "message_type"    => 'required'
    //         ], $messages);

    //         if($validator->fails()) {
    //             return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         $status_code = 1;

    //         if($message_type==1){
    //             $getAllRecvMessage  = 
    //             Message::where('type',3)
    //             ->where('company_id',$id)
    //            // ->where('message_type',0)
    //             ->where(function($query)use ($user_id){
    //                 $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //             })
    //             ->where(function($query){
    //                 $query->where('message_type', '=', 0)->orWhere('message_type', '=', 1);
    //             });
    //             $count_recv_msg     = $getAllRecvMessage->count();
    //             $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //             $output['total_count'] = $count_recv_msg;
    //             $output['messages_list'] = [];

    //             $company_data = Company::where('id',$id)->first();
    //             $companyFolderPath = 'company/logo';
    //             $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');


    //             $userProfileDetails   = UserProfile::where('user_id',$user_id)->first();
    //             $userFolderPath = 'user';
    //             $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');

    //             foreach($getAllRecvMessage as $key => $message){
    //                 if($message->sender_id==$userDetails->id){
    //                   $isFromUser=true;
    //                   $img_profile=$user_image_url;
    //                 }else{
    //                   $isFromUser=false;
    //                   $img_profile=$company_logo_image_url;
    //                 }
    //                 $output['messages_list'][$key]['msz_id'] = $message->id;
    //                 $output['messages_list'][$key]['img_profile'] = $img_profile;
    //                 $output['messages_list'][$key]['msz_description'] =($message->message)?$message->message:'';
    //                 $output['messages_list'][$key]['msz_image'] = ($message->image!='')?url('storage/images/messages/api/'.$message->image):'';
    //                 $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
    //                 $output['messages_list'][$key]['isFromUser'] = $isFromUser;
    //                 $output['messages_list'][$key]['isText'] = ($message->message!='')?true:false;
    //             }
    //             $output['is_superAdmin'] = false;
    //         }else if($message_type==2){
    //             $getAllRecvMessage  = Message::where('type',3)
    //             ->where('location_id',$id)
    //             ->where('message_type',0)
    //             ->where(function($query)use ($user_id){
    //                 $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //             });
    //             $count_recv_msg     = $getAllRecvMessage->count();
    //             $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //             $output['total_count'] = $count_recv_msg;
    //             $output['messages_list'] = [];

    //             $locationAdminData = CompanyLocationAdmin::where('location_id',$id)->first();
    //             $locAdminDetails   = UserProfile::where('user_id',$locationAdminData->user_id)->first();
    //             $locAdminFolderPath = 'user';
    //             $location_admin_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');

    //             $userProfileDetails   = UserProfile::where('user_id',$user_id)->first();
    //             $userFolderPath = 'user';
    //             $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');

    //             foreach($getAllRecvMessage as $key => $message){
    //                 if($message->sender_id==$userDetails->id){
    //                   $isFromUser=true;
    //                   $img_profile=$user_image_url;
    //                 }else{
    //                   $isFromUser=false;
    //                   $img_profile=$location_admin_image_url;
    //                 }
    //                 $output['messages_list'][$key]['msz_id'] = $message->id;
    //                 $output['messages_list'][$key]['img_profile'] = $img_profile;
    //                 $output['messages_list'][$key]['msz_description'] =($message->message)?$message->message:'';
    //                 $output['messages_list'][$key]['msz_image'] = ($message->image!='')?url('storage/images/messages/api/'.$message->image):'';
    //                 $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
    //                 $output['messages_list'][$key]['isFromUser'] = $isFromUser;
    //                 $output['messages_list'][$key]['isText'] = ($message->message!='')?true:false;

    //             }
    //             $output['is_superAdmin'] = false;
    //         }else if($message_type==3){
    //             $getAllRecvMessage  = Message::where('type',1)
    //             ->where('challenge_id',$id)
    //             ->where(function($query) use($user_id){
    //                 $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //             })
    //             ->where(function($query){

    //                 $query->where([
    //                     ["message", "=", ""],
    //                     ["image", "!=", NULL]
    //                     ]);

    //                 $query->orWhere([
    //                     ["message", "!=", ""],
    //                     ["image", "=", NULL]
    //                     ]);

    //             });
    //             $count_recv_msg     = $getAllRecvMessage->count();
    //             $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //             $output['total_count'] = $count_recv_msg;
    //             $output['messages_list'] = [];
    //             $output['is_superAdmin'] = false;

    //             $userProfileDetails   = UserProfile::where('user_id',$user_id)->first();
    //             $userFolderPath = 'user';
    //             $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');

    //             foreach($getAllRecvMessage as $key => $message){

    //                 if($message->company_id != '' || $message->company_id != NULL){
    //                     $company_data = Company::where('id',$message->company_id)->first();
    //                     $companyFolderPath = 'company/logo';
    //                     $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');
    //                 }

    //                 if($message->location_id != '' || $message->location_id != NULL){
    //                     $locationAdminData = CompanyLocationAdmin::where('location_id',$message->location_id)->first();
    //                     $locAdminDetails   = UserProfile::where('user_id',$locationAdminData->user_id)->first();
    //                     $locAdminFolderPath = 'user';
    //                     $company_logo_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');
    //                 }

    //                 if($message->receiver_id == $user_id && ($message->location_id == '' || $message->location_id == NULL) &&  ($message->company_id == '' || $message->company_id == NULL)){
    //                     $super_admin_data = User::leftJoin('role_users', function ($join) {
    //                                              $join->on('users.id', '=', 'role_users.user_id');
    //                                         })->where('role_users.role_id','=',1)->first();
    //                     $superAdminDetails   = UserProfile::where('user_id',$super_admin_data->id)->first();
    //                     $superAdminFolderPath = 'user';
    //                     $company_logo_image_url = $this->defaultServices->getImgPath($superAdminFolderPath, $superAdminDetails->image, 'api');
    //                     $output['is_superAdmin'] = true;
    //                 }

    //                 if($message->image != NULL || $message->image != ''){
    //                     $is_text = false; 
    //                 }else{
    //                     $is_text = true; 
    //                 }


    //                 if($message->sender_id==$userDetails->id){
    //                     $isFromUser = true;
    //                     $img_profile=$user_image_url;
    //                 }else{
    //                   $isFromUser = false;
    //                   $img_profile=$company_logo_image_url;
    //                 }

    //                 $output['messages_list'][$key]['msz_id'] = $message->id;
    //                 $output['messages_list'][$key]['img_profile'] = $img_profile;
    //                 $output['messages_list'][$key]['msz_description'] =($message->message)?$message->message:'';
    //                 $output['messages_list'][$key]['msz_image'] = ($message->image!='')?url('storage/images/messages/api/'.$message->image):'';
    //                 $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
    //                 $output['messages_list'][$key]['isFromUser'] = $isFromUser;
    //                 $output['messages_list'][$key]['isText'] = $is_text;
    //                 //dd($output);
    //             }
    //         }else if($message_type==4){
    //             $getAllRecvMessage  = Message::where('type',2)
    //             ->where('company_finding_id',$id)
    //             ->where(function($query)use ($user_id){
    //                 $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //             })
    //             ->where(function($query){
    //                  $query->where([
    //                     ["message", "=", ""],
    //                     ["image", "!=", NULL]
    //                     ]);

    //                 $query->orWhere([
    //                     ["message", "!=", ""],
    //                     ["image", "=", NULL]
    //                     ]);

    //             });
    //             //dd($getAllRecvMessage->get());
    //             $count_recv_msg     = $getAllRecvMessage->count();
    //             $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //             //dd($getAllRecvMessage);
    //             $output['total_count'] = $count_recv_msg;
    //             $output['messages_list'] = [];

    //             $userProfileDetails   = UserProfile::where('user_id',$user_id)->first();
    //             $userFolderPath = 'user';
    //             $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');



    //             foreach($getAllRecvMessage as $key => $message){
    //                 // $findingsImage=CompanyFindingImage::where('company_finding_id',$id)->first();
    //                 // $finding_image='';
    //                 // if($findingsImage!=null){
    //                 //     $finding_image=url('storage/images/finding/api/'.$findingsImage->image);
    //                 // }
    //                 //dd($message);

    //                 if($message->company_id != '' || $message->company_id != NULL){
    //                     $company_data = Company::where('id',$message->company_id)->first();
    //                     $companyFolderPath = 'company/logo';
    //                     $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');
    //                 }

    //                 if($message->location_id != '' || $message->location_id != NULL){
    //                     $locationAdminData = CompanyLocationAdmin::where('location_id',$message->location_id)->first();
    //                     $locAdminDetails   = UserProfile::where('user_id',$locationAdminData->user_id)->first();
    //                     $locAdminFolderPath = 'user';
    //                     $company_logo_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');
    //                 }

    //                 if($message->image != NULL || $message->image != ''){
    //                     $is_text = false; 
    //                 }else{
    //                     $is_text = true; 
    //                 }


    //                 if($message->sender_id==$userDetails->id){
    //                   $isFromUser=true;
    //                   $img_profile=$user_image_url;
    //                 }else{
    //                   $isFromUser=false;
    //                   $img_profile=$company_logo_image_url;
    //                 }

    //                 $output['messages_list'][$key]['msz_id'] = $message->id;
    //                 $output['messages_list'][$key]['img_profile'] = $img_profile;
    //                 $output['messages_list'][$key]['msz_description'] =($message->message)?$message->message:'';
    //                 $output['messages_list'][$key]['msz_image'] = ($message->image!='')?url('storage/images/messages/api/'.$message->image):'';
    //                 $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
    //                 $output['messages_list'][$key]['isFromUser'] = $isFromUser;
    //                 $output['messages_list'][$key]['isText'] = $is_text;
    //             }
    //             $output['is_superAdmin'] = false;
    //         }

    //         $success = $output;
    //         //dd($success);
    //         $this->device_token($inputs, $userType, $userDetails->id, 1);
    //         return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
    //     } catch (Exception $e) {
    //         return $this->sendEmployeeResponse(0, [], $e->getMessage(), 200, $messageArr??[]);
    //     }
    // }

    // public function ChallengeMessageList($flag, Request $request)
    // {
    //     $status_code = 0;
    //     $success = [];
    //     $inputs = getTrimmedValue($request->all());
    //     $extraParam = [];
    //     $messageArr['input'] = $inputs;
    //     $userType = 'employee';

    //     $limit  = ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
    //     $offset = ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
    //     $offset = ($limit * $offset) - $limit;

    //     try
    //     {
    //         $userDetails = Auth::user();
    //         $extraParam['user_id'] = $userDetails->id;

    //         // use it as default code - start
    //         $employeeDataArr = $this->checkEmployeeValidation();

    //         if($employeeDataArr['status'] != 1) {
    //             return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         // use it as default code - end

    //         $messages = [
    //             'device_type.required' => 'Please enter device type',
    //             'page_count.required'  => 'Please enter page count',
    //             'page_size.required'   => 'Please enter page size',
    //         ];

    //         $validator = Validator::make($inputs,[
    //             "device_type"  => 'required|in:ios,ioS,iOS,Android,android',
    //             "page_count"   => 'required',
    //             "page_size"    => 'required',
    //         ], $messages);

    //         if($validator->fails()) {
    //             return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         $status_code = 1;

    //         $get_active_location = CompanyEmployeeLocation::where('user_id',$userDetails->id)->where('active_location',1)->first();

    //         $company_data = Company::where('id',$get_active_location->company_id)->first();
    //         $companyFolderPath = 'company/logo';
    //         $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');

    //         $locationAdminData = CompanyLocationAdmin::where('location_id',$get_active_location->location_id)->first();
    //         $locAdminDetails   = UserProfile::where('user_id',$locationAdminData->user_id)->first();
    //         $locAdminFolderPath = 'user';
    //         $location_admin_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');

    //         $output['company_admin_id'] = $get_active_location->company_id;
    //         $output['location_admin_id'] = $get_active_location->location_id;
    //         $output['company_admin_image'] = $company_logo_image_url;
    //         $output['location_admin_image'] = $location_admin_image_url;

    //         $getAllRecvMessage  = Message::where('challenge_id','!=',NULL)
    //         ->where('message_type',0)
    //         ->where('status','!=',0)
    //         ->where('is_delete','!=',1)
    //         ->where('sender_id',$userDetails->id)
    //         ->orderby('id','desc');

    //         // $getAllRecvMessage  = Message::where('challenge_id','!=',NULL)
    //         // ->where('message_type',1)
    //         // ->where('status','!=',0)
    //         // ->where('is_delete', '!=', 1)
    //         // ->where('receiver_id',$userDetails->id)
    //         // ->orderby('id','desc');

    //         $count_recv_msg     = $getAllRecvMessage->count();
    //         $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //         $output['total_count'] = $count_recv_msg;
    //         $output['available_challenges_list'] = [];
    //         $user_id  = $userDetails->id;
    //         $all_msg =  objectToArray($getAllRecvMessage);
    //         $last_msg =  end($all_msg);



    //         foreach($getAllRecvMessage as $key => $message){

    //             $challengeDetails = Challenge::where('id',$message->challenge_id)->first();

    //             $challenge_category=ChallengeCategory::where('id',$challengeDetails->challenge_category_id)->first();

    //             $category_image_url = '';
    //             if($challenge_category->image){
    //                 $rootFolderPath = 'challenge/categories';
    //                 $category_image_url = $this->defaultServices->getImgPath($rootFolderPath, $challenge_category->app_icon, 'app_icon');
    //             }

    //             $getLastRecvMessage  = Message::where('type',1)
    //             ->where('challenge_id',$message->challenge_id)
    //             ->where(function($query) use($user_id){
    //                 $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //             })
    //             ->where(function($query){

    //                 $query->where([
    //                     ["message", "=", ""],
    //                     ["image", "!=", NULL]
    //                     ]);

    //                 $query->orWhere([
    //                     ["message", "!=", ""],
    //                     ["image", "=", NULL]
    //                     ]);

    //             })->orderby('id','desc')->first();

    //             //dd($getAllRecvMessage);

    //             $output['available_challenges_list'][$key]['challenge_id'] = $challengeDetails->id;
    //             $output['available_challenges_list'][$key]['answer_id'] = $message->employee_ans_id;
    //             $output['available_challenges_list'][$key]['challenge_type_name'] = ($challengeDetails->challenge_taking_type == 2) ? 'Photo Taking Challenge' : 'Questionnaire';
    //             $output['available_challenges_list'][$key]['challenge_type_id'] = $challengeDetails->challenge_taking_type;
    //             $output['available_challenges_list'][$key]['challenge_title'] = $challengeDetails->challenge_name;
    //             $output['available_challenges_list'][$key]['challenge_description'] =$challengeDetails->challenge_desc;
    //             $output['available_challenges_list'][$key]['challenge_image'] = $category_image_url;
    //             //$output['available_challenges_list'][$key]['challenge_posted_time_ago'] = strtotime($message->created_at);
    //             $output['available_challenges_list'][$key]['challenge_posted_time_ago'] = ($getLastRecvMessage != '' || $getLastRecvMessage != null ) ?strtotime($getLastRecvMessage->created_at):strtotime($message->created_at);


    //         }
    //         //die;
    //         $success = $output;
    //         $this->device_token($inputs, $userType, $userDetails->id, 1);
    //         return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
    //     } catch (Exception $e) {
    //         return $this->sendEmployeeResponse(0, [], $e->getMessage(), 200, $messageArr??[]);
    //     }
    // }

    // public function FindingMessageList($flag, Request $request)
    // {
    //     $status_code = 0;
    //     $success = [];
    //     $inputs = getTrimmedValue($request->all());
    //     $extraParam = [];
    //     $messageArr['input'] = $inputs;
    //     $userType = 'employee';

    //     $limit  = ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
    //     $offset = ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
    //     $offset = ($limit * $offset) - $limit;

    //     try
    //     {
    //         $userDetails = Auth::user();
    //         $extraParam['user_id'] = $userDetails->id;

    //         // use it as default code - start
    //         $employeeDataArr = $this->checkEmployeeValidation();

    //         if($employeeDataArr['status'] != 1) {
    //             return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         // use it as default code - end

    //         $messages = [
    //             'device_type.required' => 'Please enter device type',
    //             'page_count.required'  => 'Please enter page count',
    //             'page_size.required'   => 'Please enter page size',
    //         ];

    //         $validator = Validator::make($inputs,[
    //             "device_type"  => 'required|in:ios,ioS,iOS,Android,android',
    //             "page_count"   => 'required',
    //             "page_size"    => 'required',
    //         ], $messages);

    //         if($validator->fails()) {
    //             return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         $status_code = 1;

    //         $getAllRecvMessage  = Message::where('company_finding_id','!=',NULL)
    //         ->where('message_type',0)
    //         //->where('message_type',1)
    //         ->where('status','!=',0)
    //         ->where('is_delete', '!=', 1)
    //         ->where('sender_id',$userDetails->id)
    //         //->where('receiver_id',$userDetails->id)
    //         ->orderby('id','desc');



    //         $count_recv_msg     = $getAllRecvMessage->count();
    //         $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //         $output['total_count'] = $count_recv_msg;
    //         $output['findins_list_in_msz'] = [];
    //         $user_id = $userDetails->id;

    //         $all_msg =  objectToArray($getAllRecvMessage);
    //         $last_msg =  end($all_msg);

    //         foreach($getAllRecvMessage as $key => $fmessage){
    //                 $findingsDetails = CompanyFinding::where('id',$fmessage->company_finding_id)->first();
    //                 //echo "<pre>";print_r($findingsDetails);
    //                 $findingsImages=CompanyFindingImage::where('company_finding_id',$findingsDetails->id)->get();
    //                 $finding_images=[];
    //                 if($findingsImages!=null){
    //                     foreach($findingsImages as $findingsImageRow){
    //                        $findings_image_row=array('findings_photo_id'=>$findingsImageRow->id,'findings_photo_url'=>url('storage/images/finding/api/'.$findingsImageRow->image));
    //                         $finding_images[]=$findings_image_row;
    //                     }
    //                 }

    //                 $getLastRecvMessage  = Message::where('type',2)
    //                 ->where('challenge_id',$fmessage->finding_id)
    //                 ->where(function($query) use($user_id){
    //                     $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //                 })
    //                 ->where(function($query){

    //                     $query->where([
    //                         ["message", "=", ""],
    //                         ["image", "!=", NULL]
    //                         ]);

    //                     $query->orWhere([
    //                         ["message", "!=", ""],
    //                         ["image", "=", NULL]
    //                         ]);

    //                 })->orderby('id','desc')->first();

    //                 //dd($getAllRecvMessage);

    //                 $output['findins_list_in_msz'][$key]['finding_id'] = $findingsDetails->id;
    //                 $output['findins_list_in_msz'][$key]['finding_name'] = $findingsDetails->title;
    //                 $output['findins_list_in_msz'][$key]['finding_description'] =$findingsDetails->description;
    //                 $output['findins_list_in_msz'][$key]['finding_date'] = strtotime($findingsDetails->created_at);
    //                 $output['findins_list_in_msz'][$key]['finding_points'] = ($findingsDetails->point) ? (string) $findingsDetails->point:'';
    //                 $output['findins_list_in_msz'][$key]['is_completed'] = ($findingsDetails->is_approve==1)?true:false;
    //                 $output['findins_list_in_msz'][$key]['finding_images'] = $finding_images;
    //                 //$output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = strtotime($fmessage->created_at);
    //                 $output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = (strtotime($getLastRecvMessage->created_at))??strtotime($fmessage->created_at);
    //                 //$output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = (!empty($getAllRecvMessage))?strtotime($getAllRecvMessage->created_at):strtotime($fmessage->created_at);
    //                 $output['available_challenges_list'][$key]['finding_posted_time_ago'] = ($getLastRecvMessage != '' || $getLastRecvMessage != null ) ?strtotime($getLastRecvMessage->created_at):strtotime($fmessage->created_at);
    //         }
    //       // die;

    //         $success = $output;
    //         $this->device_token($inputs, $userType, $userDetails->id, 1);
    //         return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
    //     } catch (Exception $e) {
    //         return $this->sendEmployeeResponse(0, [], $e->getMessage(), 200, $messageArr??[]);
    //     }
    // }

    // public function MessageSubmit($flag, Request $request)
    // {
    //     $status_code = 0;
    //     $success = [];
    //     $inputs = getTrimmedValue($request->all());
    //     $extraParam = [];
    //     $messageArr['input'] = $inputs;
    //     $userType = 'employee';

    //     $limit  = ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
    //     $offset = ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
    //     $offset = ($limit * $offset) - $limit;
    //     $message_type=($inputs['message_type'] <= 0) ? 1 : $inputs['message_type'];
    //     $id=($inputs['id'] == '') ? 0 : $inputs['id'];
    //     $message=(isset($inputs['message']))?$inputs['message']:'';
    //     $message_image = $request->file('message_image');

    //     try
    //     {
    //         $userDetails = Auth::user();
    //         $extraParam['user_id'] = $userDetails->id;
    //         $user_id=$userDetails->id;
    //         // use it as default code - start
    //         $employeeDataArr = $this->checkEmployeeValidation();

    //         if($employeeDataArr['status'] != 1) {
    //             return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         // use it as default code - end

    //         $messages = [
    //             'device_type.required' => 'Please enter device type',
    //             'page_count.required'  => 'Please enter page count',
    //             'page_size.required'   => 'Please enter page size',
    //             'message_type.required'   => 'Please send message type',
    //             'id.required'   => 'Please send id'
    //         ];

    //         $validator = Validator::make($inputs,[
    //             "device_type"  => 'required|in:ios,ioS,iOS,Android,android',
    //             "page_count"   => 'required',
    //             "page_size"    => 'required',
    //             "message_type"    => 'required',
    //             "id"    => 'required'
    //         ], $messages);

    //         if($validator->fails()) {
    //             return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         $status_code = 1;

    //         $get_active_location = CompanyEmployeeLocation::where('user_id', $userDetails->id)->where('active_location', 1)->first();

    //         if($message_type==1){
    //             $message_insert['type'] = 3;
    //             $message_insert['company_id'] = $id;
    //         }else if($message_type==2){
    //             $message_insert['type'] = 3;
    //             $message_insert['location_id'] = $id;
    //         }else if($message_type==3){
    //             $message_insert['type'] = 1;
    //             $message_insert['challenge_id'] = $id;
    //             $message_insert['message_type'] = 1;
    //             $message_insert['status'] = 1;

    //         }else if($message_type==4){
    //             $message_insert['type'] = 2;
    //             $message_insert['company_finding_id'] = $id;
    //             $message_insert['message_type'] = 1;
    //             $message_insert['status'] = 1;
    //         }
    //         $message_insert['reply_id'] = 0;
    //         $message_insert['message'] = trim($message);

    //         if($message_image!='') {
    //             $rootFolderPath = public_path('/storage/images/messages');
    //             $message_insert['image'] = $this->defaultServices->imgUpload($rootFolderPath, $message_image);
    //         }

    //         $message_insert['sender_id'] = $user_id;
    //         //dd($message_insert);
    //         $insert = Message::create($message_insert);

    //         // message list response //
    //         if($message_type==1){
    //             $getAllRecvMessage  = Message::where('type',3)
    //             ->where('company_id',$id)
    //             //->where('message_type',0)
    //             ->where(function($query){
    //                 $query->where('message_type', '=', 0)->orWhere('message_type', '=', 1);
    //             })
    //             ->where(function($query)use ($user_id){
    //                 $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //             });
    //             $count_recv_msg     = $getAllRecvMessage->count();
    //             $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //             $output['total_count'] = $count_recv_msg;
    //             $output['messages_list'] = [];
    //             // dd($getAllRecvMessage);

    //             $company_data = Company::where('id',$id)->first();
    //             $companyFolderPath = 'company/logo';
    //             $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');

    //             $userProfileDetails   = UserProfile::where('user_id',$user_id)->first();
    //             $userFolderPath = 'user';
    //             $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');

    //             foreach($getAllRecvMessage as $key => $message){
    //                 if($message->sender_id==$userDetails->id){
    //                   $isFromUser=true;
    //                   $img_profile=$user_image_url;
    //                 }else{
    //                   $isFromUser=false;
    //                   $img_profile=$company_logo_image_url;
    //                 }
    //                 $output['messages_list'][$key]['msz_id'] = $message->id;
    //                 $output['messages_list'][$key]['img_profile'] = $img_profile;
    //                 $output['messages_list'][$key]['msz_description'] =($message->message)?$message->message:'';
    //                 $output['messages_list'][$key]['msz_image'] = ($message->image!='')?url('storage/images/messages/api/'.$message->image):'';
    //                 $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
    //                 $output['messages_list'][$key]['isFromUser'] = $isFromUser;
    //                 $output['messages_list'][$key]['isText'] = ($message->message!='')?true:false;
    //             }
    //         }else if($message_type==2){
    //             $getAllRecvMessage  = Message::where('type',3)
    //             ->where('location_id',$id)
    //             ->where('message_type',0)
    //             ->where(function($query)use ($user_id){
    //                 $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //             });
    //             $count_recv_msg     = $getAllRecvMessage->count();
    //             $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //             $output['total_count'] = $count_recv_msg;
    //             $output['messages_list'] = [];
    //             // dd($getAllRecvMessage);

    //             $locationAdminData = CompanyLocationAdmin::where('location_id',$id)->first();
    //             $locAdminDetails   = UserProfile::where('user_id',$locationAdminData->user_id)->first();
    //             $locAdminFolderPath = 'user';
    //             $location_admin_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');

    //             $userProfileDetails   = UserProfile::where('user_id',$user_id)->first();
    //             $userFolderPath = 'user';
    //             $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');

    //             foreach($getAllRecvMessage as $key => $message){
    //                 if($message->sender_id==$userDetails->id){
    //                   $isFromUser=true;
    //                   $img_profile=$user_image_url;
    //                 }else{
    //                   $isFromUser=false;
    //                   $img_profile=$location_admin_image_url;
    //                 }
    //                 $output['messages_list'][$key]['msz_id'] = $message->id;
    //                 $output['messages_list'][$key]['img_profile'] = $img_profile;
    //                 $output['messages_list'][$key]['msz_description'] =($message->message)?$message->message:'';
    //                 $output['messages_list'][$key]['msz_image'] = ($message->image!='')?url('storage/images/messages/api/'.$message->image):'';
    //                 $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
    //                 $output['messages_list'][$key]['isFromUser'] = $isFromUser;
    //                 $output['messages_list'][$key]['isText'] = ($message->message!='')?true:false;
    //             }
    //         }else if($message_type==3){
    //             $getAllRecvMessage  = Message::where('type',1)
    //             ->where('challenge_id',$id)
    //             ->where(function($query)use ($user_id){
    //                 $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //             })
    //             ->where(function($query){

    //                 // $query->whereNotNull('image');
    //                 // $query->where('message', '!=', '');

    //                 $query->where([
    //                     ["message", "=", ""],
    //                     ["image", "!=", NULL]
    //                     ]);

    //                 $query->orWhere([
    //                     ["message", "!=", ""],
    //                     ["image", "=", NULL]
    //                     ]);

    //             });
    //             $count_recv_msg     = $getAllRecvMessage->count();
    //             $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //             $output['total_count'] = $count_recv_msg;
    //             $output['messages_list'] = [];
    //             // dd($getAllRecvMessage);

    //             $userProfileDetails   = UserProfile::where('user_id',$user_id)->first();
    //             $userFolderPath = 'user';
    //             $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');

    //             foreach($getAllRecvMessage as $key => $message){

    //                 // $challengeDetails = Challenge::where('id',$message->challenge_id)->first();
    //                 // $challenge_category=ChallengeCategory::where('id',$challengeDetails->challenge_category_id)->first();
    //                 // $challenge_image = url('storage/images/challenge/categories/api/'.$challenge_category->image);

    //                 if($message->company_id != '' || $message->company_id != NULL){
    //                     $company_data = Company::where('id',$message->company_id)->first();
    //                     $companyFolderPath = 'company/logo';
    //                     $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');
    //                 }

    //                 if($message->location_id != '' || $message->location_id != NULL){
    //                     $locationAdminData = CompanyLocationAdmin::where('location_id',$message->location_id)->first();
    //                     $locAdminDetails   = UserProfile::where('user_id',$locationAdminData->user_id)->first();
    //                     $locAdminFolderPath = 'user';
    //                     $company_logo_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');
    //                 }

    //                 if($message->sender_id==$userDetails->id){
    //                     $isFromUser = true;
    //                     $img_profile=$user_image_url;
    //                 }else{
    //                   $isFromUser = false;
    //                   $img_profile=$company_logo_image_url;
    //                 }


    //                 $output['messages_list'][$key]['msz_id'] = $message->id;
    //                 $output['messages_list'][$key]['img_profile'] = $img_profile;
    //                 $output['messages_list'][$key]['msz_description'] =($message->message)?$message->message:'';
    //                 $output['messages_list'][$key]['msz_image'] = ($message->image!='')?url('storage/images/messages/api/'.$message->image):'';
    //                 $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
    //                 $output['messages_list'][$key]['isFromUser'] = $isFromUser;
    //                 $output['messages_list'][$key]['isText'] = ($message->message!='')?true:false;
    //             }
    //         }else if($message_type==4){
    //             $getAllRecvMessage  = Message::where('type',2)
    //             ->where('company_finding_id',$id)
    //             ->where(function($query)use ($user_id){
    //                 $query->where('sender_id', '=', $user_id)->orWhere('receiver_id', '=', $user_id);
    //             })
    //             ->where(function($query){

    //                 // $query->whereNotNull('image');
    //                 // $query->where('message', '!=', '');

    //                 $query->where([
    //                     ["message", "=", ""],
    //                     ["image", "!=", NULL]
    //                     ]);

    //                 $query->orWhere([
    //                     ["message", "!=", ""],
    //                     ["image", "=", NULL]
    //                     ]);

    //             });
    //             $count_recv_msg     = $getAllRecvMessage->count();
    //             $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //             $output['total_count'] = $count_recv_msg;
    //             $output['messages_list'] = [];
    //             // dd($getAllRecvMessage);

    //             $userProfileDetails   = UserProfile::where('user_id',$user_id)->first();
    //             $userFolderPath = 'user';
    //             $user_image_url = $this->defaultServices->getImgPath($userFolderPath, $userProfileDetails->image, 'api');

    //             foreach($getAllRecvMessage as $key => $message){

    //                 // $findingsImage=CompanyFindingImage::where('company_finding_id',$id)->first();
    //                 // $finding_image='';
    //                 // if($findingsImage!=null){
    //                 //     $finding_image=url('storage/images/finding/api/'.$findingsImage->image);
    //                 // }

    //                 if($message->company_id != '' || $message->company_id != NULL){
    //                     $company_data = Company::where('id',$message->company_id)->first();
    //                     $companyFolderPath = 'company/logo';
    //                     $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');
    //                 }

    //                 if($message->location_id != '' || $message->location_id != NULL){
    //                     $locationAdminData = CompanyLocationAdmin::where('location_id',$message->location_id)->first();
    //                     $locAdminDetails   = UserProfile::where('user_id',$locationAdminData->user_id)->first();
    //                     $locAdminFolderPath = 'user';
    //                     $company_logo_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');
    //                 }


    //                 if($message->sender_id==$userDetails->id){
    //                     $isFromUser = true;
    //                     $img_profile=$user_image_url;
    //                 }else{
    //                   $isFromUser = false;
    //                   $img_profile=$company_logo_image_url;
    //                 }

    //                 // $isFromUser = false;
    //                 // if($message->sender_id==$userDetails->id){
    //                 //    $isFromUser=true;
    //                 //   $img_profile=$user_image_url;
    //                 // }else{
    //                 //    $isFromUser=false;
    //                 //   $img_profile=$finding_image;
    //                 // }

    //                 $output['messages_list'][$key]['msz_id'] = $message->id;
    //                 $output['messages_list'][$key]['img_profile'] = $img_profile;
    //                 $output['messages_list'][$key]['msz_description'] =($message->message)?$message->message:'';
    //                 $output['messages_list'][$key]['msz_image'] = ($message->image!='')?url('storage/images/messages/api/'.$message->image):'';
    //                 $output['messages_list'][$key]['msz_date_time'] = strtotime($message->created_at);
    //                 $output['messages_list'][$key]['isFromUser'] = $isFromUser;
    //                 $output['messages_list'][$key]['isText'] = ($message->message!='')?true:false;
    //             }
    //         }

    //         $success = $output;
    //         $this->device_token($inputs, $userType, $userDetails->id, 1);
    //         return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
    //     } catch (Exception $e) {
    //         return $this->sendEmployeeResponse(0, [], $e->getMessage(), 200, $messageArr??[]);
    //     }
    // }

    // public function ChallengeDelete(Request $request)
    // {
    //     $status_code = 0;
    //     $success = [];
    //     $extraParam = [];
    //     $inputs = getTrimmedValue($request->all());
    //     $messageArr['input'] = $inputs;
    //     $userType = 'employee';

    //     $limit  = 15; // ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
    //     $offset = 1; // ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
    //     $offset = ($limit * $offset) - $limit;

    //     try {
    //         $userDetails = Auth::user();
    //         $extraParam['user_id'] = $userDetails->id;
    //         $user_id = $userDetails->id;
    //         // use it as default code - start
    //         $employeeDataArr = $this->checkEmployeeValidation();

    //         if ($employeeDataArr['status'] != 1) {
    //             return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         // use it as default code - end

    //         $messages = [
    //             'device_type.required' => 'Please enter device type',
    //             'challenge_id.required'  => 'Please enter challenge id',
    //         ];

    //         $validator = Validator::make($inputs, [
    //             "device_type"  => 'required|in:ios,ioS,iOS,Android,android',
    //             "challenge_id"   => 'required',
    //         ], $messages);

    //         if ($validator->fails()) {
    //             return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         $status_code = 1;

    //         Message::where('challenge_id', $request->challenge_id)->update(['is_delete' => 1]);

    //         $get_active_location = CompanyEmployeeLocation::where('user_id', $userDetails->id)->where('active_location', 1)->first();

    //         $company_data = Company::where('id', $get_active_location->company_id)->first();
    //         $companyFolderPath = 'company/logo';
    //         $company_logo_image_url = $this->defaultServices->getImgPath($companyFolderPath, $company_data->company_logo, 'api');

    //         $locationAdminData = CompanyLocationAdmin::where('location_id', $get_active_location->location_id)->first();
    //         $locAdminDetails   = UserProfile::where('user_id', $locationAdminData->user_id)->first();
    //         $locAdminFolderPath = 'user';
    //         $location_admin_image_url = $this->defaultServices->getImgPath($locAdminFolderPath, $locAdminDetails->image, 'api');

    //         $output['company_admin_id'] = $get_active_location->company_id;
    //         $output['location_admin_id'] = $get_active_location->location_id;
    //         $output['company_admin_image'] = $company_logo_image_url;
    //         $output['location_admin_image'] = $location_admin_image_url;

    //         $getAllRecvMessage  = Message::where('challenge_id', '!=', NULL)
    //         ->where('message_type', 0)
    //         ->where('status', '!=', 0)
    //         ->where('is_delete', '!=', 1)
    //         ->where('sender_id', $userDetails->id);
    //         $count_recv_msg     = $getAllRecvMessage->count();
    //         $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //         $output['total_count'] = $count_recv_msg;
    //         $output['available_challenges_list'] = [];
    //         // dd($getAllRecvMessage);
    //         foreach ($getAllRecvMessage as $key => $message) {
    //             $challengeDetails = Challenge::where('id', $message->challenge_id)->first();
    //             $challenge_category = ChallengeCategory::where('id', $challengeDetails->challenge_category_id)->first();

    //             $category_image_url = '';
    //             if ($challenge_category->image) {
    //                 $rootFolderPath = 'challenge/categories';
    //                 $category_image_url = $this->defaultServices->getImgPath($rootFolderPath, $challenge_category->app_icon, 'app_icon');
    //             }

    //             $output['available_challenges_list'][$key]['challenge_id'] = $challengeDetails->id;
    //             $output['available_challenges_list'][$key]['answer_id'] = $message->employee_ans_id;
    //             $output['available_challenges_list'][$key]['challenge_type_name'] = ($challengeDetails->challenge_taking_type == 2) ? 'Photo Taking Challenge' : 'Questionnaire';
    //             $output['available_challenges_list'][$key]['challenge_type_id'] = $challengeDetails->challenge_taking_type;
    //             $output['available_challenges_list'][$key]['challenge_title'] = $challengeDetails->challenge_name;
    //             $output['available_challenges_list'][$key]['challenge_description'] = $challengeDetails->challenge_desc;
    //             $output['available_challenges_list'][$key]['challenge_image'] = $category_image_url;
    //             $output['available_challenges_list'][$key]['challenge_posted_time_ago'] = strtotime($message->created_at);
    //         }

    //         $success = $output;
    //         $this->device_token($inputs, $userType, $userDetails->id, 1);
    //         return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
    //     } catch (Exception $e) {
    //         return $this->sendEmployeeResponse($status_code, $success, $e->getMessage(), 200, $messageArr, $extraParam);
    //     }
    // }

    // public function FindingsDelete(Request $request)
    // {
    //     $status_code = 0;
    //     $success = [];
    //     $extraParam = [];
    //     $inputs = getTrimmedValue($request->all());
    //     $messageArr['input'] = $inputs;
    //     $userType = 'employee';

    //     $limit  = 15; // ($inputs['page_size'] <= 0) ? 10 : $inputs['page_size'];
    //     $offset = 1; // ($inputs['page_count'] <= 0) ? 1 : $inputs['page_count'];
    //     $offset = ($limit * $offset) - $limit;

    //     try {
    //         $userDetails = Auth::user();
    //         $extraParam['user_id'] = $userDetails->id;
    //         $user_id = $userDetails->id;
    //         // use it as default code - start
    //         $employeeDataArr = $this->checkEmployeeValidation();

    //         if ($employeeDataArr['status'] != 1) {
    //             return $this->sendEmployeeResponse($status_code, $success, $employeeDataArr['message'], 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         // use it as default code - end

    //         $messages = [
    //             'device_type.required' => 'Please enter device type',
    //             'findings_id.required'  => 'Please enter findings id',
    //         ];

    //         $validator = Validator::make($inputs, [
    //             "device_type"  => 'required|in:ios,ioS,iOS,Android,android',
    //             "findings_id"   => 'required',
    //         ], $messages);

    //         if ($validator->fails()) {
    //             return $this->sendEmployeeResponse($status_code, $success, $validator->errors()->first(), 200, $messageArr, $extraParam);
    //             exit(0);
    //         }
    //         $status_code = 1;

    //         Message::where('company_finding_id', $request->findings_id)->update(['is_delete' => 1]);

    //         $getAllRecvMessage  = Message::where('company_finding_id', '!=', NULL)
    //         ->where('message_type', 0)
    //         ->where('status', '!=', 0)
    //         ->where('is_delete', '!=', 1)
    //         ->where('sender_id', $userDetails->id);
    //         $count_recv_msg     = $getAllRecvMessage->count();
    //         $getAllRecvMessage  = $getAllRecvMessage->skip($offset)->take($limit)->get();
    //         $output['total_count'] = $count_recv_msg;
    //         $output['findins_list_in_msz'] = [];
    //         // dd($getAllRecvMessage);

    //         foreach ($getAllRecvMessage as $key => $fmessage) {
    //             $findingsDetails = CompanyFinding::where('id', $fmessage->company_finding_id)->first();
    //             $findingsImages = CompanyFindingImage::where('company_finding_id', $findingsDetails->id)->get();
    //             $finding_images = [];
    //             if ($findingsImages != null) {
    //                 foreach ($findingsImages as $findingsImageRow) {
    //                     $findings_image_row = array('findings_photo_id' => $findingsImageRow->id, 'findings_photo_url' => url('storage/images/finding/api/' . $findingsImageRow->image));
    //                     $finding_images[] = $findings_image_row;
    //                 }
    //             }
    //             $output['findins_list_in_msz'][$key]['finding_id'] = $findingsDetails->id;
    //             $output['findins_list_in_msz'][$key]['finding_name'] = $findingsDetails->title;
    //             $output['findins_list_in_msz'][$key]['finding_description'] = $findingsDetails->description;
    //             $output['findins_list_in_msz'][$key]['finding_date'] = strtotime($findingsDetails->created_at);
    //             $output['findins_list_in_msz'][$key]['finding_points'] = ($findingsDetails->point) ? (string) $findingsDetails->point : '';
    //             $output['findins_list_in_msz'][$key]['is_completed'] = ($findingsDetails->is_approve == 1) ? true : false;
    //             $output['findins_list_in_msz'][$key]['finding_images'] = $finding_images;
    //             $output['findins_list_in_msz'][$key]['finding_posted_time_ago'] = strtotime($fmessage->created_at);
    //         }

    //         $success = $output;
    //         $this->device_token($inputs, $userType, $userDetails->id, 1);
    //         return $this->sendEmployeeResponse($status_code, $success, 'success', 200, $messageArr, $extraParam);
    //     } catch (Exception $e) {
    //         return $this->sendEmployeeResponse($status_code, $success, $e->getMessage(), 200, $messageArr, $extraParam);
    //     }
    // }

}
