Proyectos de Subversion LeadersLinked - Backend

Rev

Rev 16262 | Rev 16279 | Ir a la última revisión | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 16262 Rev 16271
Línea 2... Línea 2...
2
 
2
 
Línea 3... Línea 3...
3
declare(strict_types=1);
3
declare(strict_types=1);
Línea -... Línea 4...
-
 
4
 
4
 
5
namespace LeadersLinked\Controller;
5
namespace LeadersLinked\Controller;
6
 
6
 
7
use LeadersLinked\Model\User;
7
use LeadersLinked\Library\Zoom;
8
use LeadersLinked\Library\Zoom;
8
use Laminas\Log\LoggerInterface;
9
use Laminas\Log\LoggerInterface;
Línea 2844... Línea 2845...
2844
            ];
2845
            ];
2845
        }
2846
        }
Línea 2846... Línea 2847...
2846
 
2847
 
2847
        return new JsonModel($response);
2848
        return new JsonModel($response);
-
 
2849
    }
-
 
2850
 
-
 
2851
    public function openOrCreateAction()
-
 
2852
    {
-
 
2853
        $request    = $this->getRequest();
-
 
2854
        if ($request->isPost()) {
-
 
2855
            $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
2856
            $currentUser = $currentUserPlugin->getUser();
-
 
2857
 
-
 
2858
            $currentNetworkPlugin = $this->plugin('currentNetworkPlugin');
-
 
2859
            $currentNetwork = $currentNetworkPlugin->getNetwork();
-
 
2860
 
-
 
2861
 
-
 
2862
            $id = filter_var($this->params()->fromRoute('id'), FILTER_SANITIZE_STRING);
-
 
2863
 
-
 
2864
            if (!$id) {
-
 
2865
                return new JsonModel([
-
 
2866
                    'success' => false,
-
 
2867
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
-
 
2868
                ]);
-
 
2869
            }
-
 
2870
 
-
 
2871
            $userMapper = UserMapper::getInstance($this->adapter);
-
 
2872
            $user = $userMapper->fetchOneByUuid($id);
-
 
2873
 
-
 
2874
            if (!$user) {
-
 
2875
                return new JsonModel([
-
 
2876
                    'success' => false,
-
 
2877
                    'data' => 'ERROR_USER_NOT_FOUND'
-
 
2878
                ]);
-
 
2879
            }
-
 
2880
 
-
 
2881
            if ($user->email_verified == User::EMAIL_VERIFIED_NO || $user->status != User::STATUS_ACTIVE) {
-
 
2882
                return new JsonModel([
-
 
2883
                    'success' => false,
-
 
2884
                    'data' => 'ERROR_USER_IS_INACTIVE'
-
 
2885
                ]);
-
 
2886
            }
-
 
2887
 
-
 
2888
            if ($user->network_id != $currentUser->network_id) {
-
 
2889
                return new JsonModel([
-
 
2890
                    'success' => false,
-
 
2891
                    'data' => 'ERROR_USER_IS_INACTIVE'
-
 
2892
                ]);
-
 
2893
            }
-
 
2894
 
-
 
2895
            if ($currentNetwork->relationship_user_mode == Network::RELATIONSHIP_USER_MODE_USER_2_USER) {
-
 
2896
 
-
 
2897
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
-
 
2898
                $connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
-
 
2899
 
-
 
2900
                if (!$connection) {
-
 
2901
                    return new JsonModel([
-
 
2902
                        'success' => false,
-
 
2903
                        'data' =>  'ERROR_CONNECTION_NOT_ACTIVE'
-
 
2904
                    ]);
-
 
2905
                }
-
 
2906
            }
-
 
2907
 
-
 
2908
            $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
-
 
2909
            $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
-
 
2910
            if ($chatUser) {
-
 
2911
                if ($currentUser->id == $chatUser->user_id1) {
-
 
2912
                    $chatUserMapper->markIsOpen1($chatUser->id);
-
 
2913
                } else {
-
 
2914
                    $chatUserMapper->markIsOpen2($chatUser->id);
-
 
2915
                }
-
 
2916
            } else {
-
 
2917
                $chatUser = new ChatUser();
-
 
2918
                $chatUser->user_id1 = $currentUser->id;
-
 
2919
                $chatUser->user_id2 = $user->id;
-
 
2920
                $chatUser->user_open1 = ChatUser::OPEN_YES;
-
 
2921
                $chatUser->user_open2 = ChatUser::OPEN_NO;
-
 
2922
 
-
 
2923
 
-
 
2924
                if (!$chatUserMapper->insert($chatUser)) {
-
 
2925
                    return new JsonModel([
-
 
2926
                        'success' => false,
-
 
2927
                        'data' =>  $chatUserMapper->getError()
-
 
2928
                    ]);
-
 
2929
                }
-
 
2930
            }
-
 
2931
 
-
 
2932
            $utilMapper = UtilMapper::getInstance($this->adapter);
-
 
2933
            $now = $utilMapper->getDatebaseNow();
-
 
2934
 
-
 
2935
            $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
-
 
2936
            $count_not_received_messages = $chatMessageMapper->countNotReceivedMessagesByChatIdAndToId($chatUser->id, $currentUser->id);
-
 
2937
            $count_not_seen_messages = $chatMessageMapper->countNotSeenMessagesByChatIdAndToId($chatUser->id, $currentUser->id);
-
 
2938
            $lastMessage = $chatMessageMapper->fetchLastMessage($chatUser->id, $currentUser->id);
-
 
2939
 
-
 
2940
            if ($lastMessage) {
-
 
2941
                $lastMessage = Functions::timeAgo($lastMessage->added_on, $now);
-
 
2942
            } else {
-
 
2943
                $lastMessage = '';
-
 
2944
            }
-
 
2945
 
-
 
2946
            if ($currentUser->id == $chatUser->user_id1) {
-
 
2947
                $is_open = $chatUser->user_open1 == ChatUser::OPEN_YES;
-
 
2948
            } else {
-
 
2949
                $is_open = $chatUser->user_open2 == ChatUser::OPEN_YES;
-
 
2950
            }
-
 
2951
 
-
 
2952
 
-
 
2953
            $not_received_messages = $count_not_received_messages > 0;
-
 
2954
            $not_seen_messages = $count_not_seen_messages > 0;
-
 
2955
 
-
 
2956
            $data = [
-
 
2957
                'url_clear'                 => $this->url()->fromRoute('chat/clear', ['id' => $user->uuid]),
-
 
2958
                'url_close'                 => $this->url()->fromRoute('chat/close', ['id' => $user->uuid]),
-
 
2959
                'url_open'                  => $this->url()->fromRoute('chat/open', ['id' => $user->uuid]),
-
 
2960
                'url_send'                  => $this->url()->fromRoute('chat/send', ['id' => $user->uuid]),
-
 
2961
                'url_upload'                => $this->url()->fromRoute('chat/upload', ['id' => $user->uuid]),
-
 
2962
                'url_mark_seen'             => $this->url()->fromRoute('chat/mark-seen', ['id' => $user->uuid]),
-
 
2963
                'url_mark_received'         => $this->url()->fromRoute('chat/mark-received', ['id' => $user->uuid]),
-
 
2964
                'url_get_all_messages'      => $this->url()->fromRoute('chat/get-all-messages', ['id' => $user->uuid]),
-
 
2965
                'url_zoom'                  => $this->url()->fromRoute('chat/zoom', ['id' => $user->uuid, 'type' => 'chat']),
-
 
2966
                'id'                        => $user->uuid,
-
 
2967
                'name'                      => trim($user->first_name . ' ' . $user->last_name),
-
 
2968
                'image'                     => $this->url()->fromRoute('storage', ['code' => $user->uuid, 'type' => 'user', 'filename' => $user->image]),
-
 
2969
                'profile'                   => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
-
 
2970
                'type'                      => 'user',
-
 
2971
                'online'                    => $user->online ? 1 : 0,
-
 
2972
                'is_open'                   => $is_open ? 1 : 0,
-
 
2973
                'not_seen_messages'         => $not_seen_messages,
-
 
2974
                'not_received_messages'     => $not_received_messages,
-
 
2975
                'count_not_seen_messages'       => $count_not_seen_messages,
-
 
2976
                'count_not_received_messages'   => $count_not_received_messages,
-
 
2977
                'last_message'                  => $lastMessage
-
 
2978
            ];
-
 
2979
 
-
 
2980
 
-
 
2981
 
-
 
2982
            $userMapper->updateLastActivity($currentUser->id);
-
 
2983
 
-
 
2984
            return new JsonModel([
-
 
2985
                'success' => true,
-
 
2986
                'data' => $data,
-
 
2987
            ]);
-
 
2988
        } else {
-
 
2989
            return new JsonModel([
-
 
2990
                'success' => false,
-
 
2991
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
2992
            ]);
-
 
2993
        }
2848
    }
2994
    }