Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 678 Rev 680
Línea 150... Línea 150...
150
        $conversationMapper = ConversationMapper::getInstance($this->adapter);
150
        $conversationMapper = ConversationMapper::getInstance($this->adapter);
151
        $messageMapper = MessageMapper::getInstance($this->adapter);
151
        $messageMapper = MessageMapper::getInstance($this->adapter);
152
        $conversations = [];
152
        $conversations = [];
153
        $selected_user_id = 0;
153
        $selected_user_id = 0;
Línea 154... Línea -...
154
 
-
 
155
        $id = $this->params()->fromRoute('id');
-
 
156
        if ($id) {
-
 
157
            $companyMapper = CompanyMapper::getInstance($this->adapter);
-
 
158
            $company = $companyMapper->fetchOneByUuid($id);
-
 
159
            
-
 
160
            if ($company) {
-
 
161
                // Buscar el propietario de la empresa
-
 
162
                $companyUserMapper = CompanyUserMapper::getInstance($this->adapter);
-
 
163
                $companyUser = $companyUserMapper->fetchOwnerByCompanyId($company->id);
-
 
164
 
-
 
165
                // Verificar que no haya bloqueos entre usuarios
-
 
166
                if (!in_array($companyUser->user_id, $user_blocked_ids) && 
-
 
167
                    !in_array($companyUser->id, $user_blocked_me_ids)) {
-
 
168
                    
-
 
169
                    $user = $userMapper->fetchOne($companyUser->user_id);
-
 
170
                    $selected_user_id = $user->id;
-
 
171
                    
-
 
172
                    // Buscar conversación existente
-
 
173
                    $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
-
 
174
 
-
 
175
                    // Calcular tiempo del último mensaje y mensajes no leídos
-
 
176
                    $timeElapsedString = '';
-
 
177
                    if ($conversation) {
-
 
178
                        $unread = $messageMapper->fetchCountUnreadMessagesByConversationIdAndReceiverId(
-
 
179
                            $conversation->id, 
-
 
180
                            $currentUser->id
-
 
181
                        );
-
 
182
                        $lastMessage = $messageMapper->fetchLastUnreadMessagesByConversationIdAndReceiverId(
-
 
183
                            $conversation->id, 
-
 
184
                            $currentUser->id
-
 
185
                        );
-
 
186
 
-
 
187
                        if ($lastMessage) {
-
 
188
                            $timeElapsedString = $this->timeAgo($lastMessage, $now);
-
 
189
                        }
-
 
190
                    } else {
-
 
191
                        $unread = 0;
-
 
192
                    }
-
 
193
 
-
 
194
                    // Agregar conversación de empresa a la lista
-
 
195
                    array_push($conversations, [
-
 
196
                        'uuid' => $company->uuid,
-
 
197
                        'name' => $company->name,
-
 
198
                        'image' => $this->url()->fromRoute('storage', [
-
 
199
                            'type' => 'company', 
-
 
200
                            'code' => $company->uuid, 
-
 
201
                            'filename' => $company->image
-
 
202
                        ], ['force_canonical' => true]),
-
 
203
                        'profile' => $this->url()->fromRoute('company/view', ['id' => $company->uuid]),
-
 
204
                        'last_message' => $timeElapsedString,
-
 
205
                        'count_unread' => $unread,
-
 
206
                        'messages_link' => $this->url()->fromRoute('inmail/messages', ['id' => $company->uuid]),
-
 
207
                        'send_link' => $this->url()->fromRoute('inmail/messages/send', ['id' => $company->uuid]),
-
 
208
                        'selected' => 1, // Marcar como seleccionado
-
 
209
                        'delete_link' => $this->url()->fromRoute('inmail/messages/delete', ['id' => $company->uuid]),
-
 
210
                    ]);
-
 
211
                }
-
 
212
            } 
-
 
213
            else {
-
 
214
                $user = $userMapper->fetchOneByUuid($id);
-
 
215
                if ($user) {
-
 
216
                    // Verificar que no haya bloqueos entre usuarios
-
 
217
                    if (!in_array($user->id, $user_blocked_ids) && 
-
 
218
                        !in_array($user->id, $user_blocked_me_ids)) {
-
 
219
 
-
 
220
                        $timeElapsedString = '';
-
 
221
                        $selected_user_id = $user->id;
-
 
222
                        
-
 
223
                        // Buscar conversación existente
-
 
224
                        $conversation = $conversationMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
-
 
225
                        
-
 
226
                        if ($conversation) {
-
 
227
                            $unread = $messageMapper->fetchCountUnreadMessagesByConversationIdAndReceiverId(
-
 
228
                                $conversation->id, 
-
 
229
                                $currentUser->id
-
 
230
                            );
-
 
231
                            $lastMessage = $messageMapper->fetchLastUnreadMessagesByConversationIdAndReceiverId(
-
 
232
                                $conversation->id, 
-
 
233
                                $currentUser->id
-
 
234
                            );
-
 
235
                            
-
 
236
                            if ($lastMessage) {
-
 
237
                                $timeElapsedString = $this->timeAgo($lastMessage, $now);
-
 
238
                            }
-
 
239
                        } else {
-
 
240
                            $unread = 0;
-
 
241
                        }
-
 
242
 
-
 
243
                        // Agregar conversación de usuario a la lista
-
 
244
                        array_push($conversations, [
-
 
245
                            'uuid' => $user->uuid,
-
 
246
                            'name' => trim($user->first_name . ' ' . $user->last_name),
-
 
247
                            'image' => $this->url()->fromRoute('storage', [
-
 
248
                                'type' => 'user', 
-
 
249
                                'code' => $user->uuid, 
-
 
250
                                'filename' => $user->image
-
 
251
                            ], ['force_canonical' => true]),
-
 
252
                            'profile' => $this->url()->fromRoute('profile/view', ['id' => $user->uuid]),
-
 
253
                            'last_message' => $timeElapsedString,
-
 
254
                            'count_unread' => $unread,
-
 
255
                            'messages_link' => $this->url()->fromRoute('inmail/messages', ['id' => $user->uuid]),
-
 
256
                            'send_link' => $this->url()->fromRoute('inmail/messages/send', ['id' => $user->uuid]),
-
 
257
                            'selected' => 1, // Marcar como seleccionado
-
 
258
                            'delete_link' => $this->url()->fromRoute('inmail/messages/delete', ['id' => $user->uuid]),
-
 
259
                        ]);
-
 
260
                    }
-
 
261
                }
-
 
262
            }
-
 
263
        }
-
 
264
        
154
 
Línea 265... Línea 155...
265
        $records = $conversationMapper->fetchAllByUserId($currentUser->id);
155
        $records = $conversationMapper->fetchAllByUserId($currentUser->id);
266
        
156
        
267
        foreach ($records as $record) {  
157
        foreach ($records as $record) {