Proyectos de Subversion LeadersLinked - Services

Rev

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

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