Proyectos de Subversion LeadersLinked - Backend

Rev

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

Rev 16181 Rev 16182
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 4... Línea 4...
4
 
4
 
-
 
5
namespace LeadersLinked\Controller;
-
 
6
 
5
namespace LeadersLinked\Controller;
7
use Laminas\Db\Adapter\AdapterInterface;
6
 
8
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
7
use LeadersLinked\Library\Zoom;
9
use Laminas\Mvc\Controller\AbstractActionController;
8
use Laminas\Log\LoggerInterface;
-
 
9
use Laminas\View\Model\JsonModel;
-
 
10
use Laminas\View\Model\ViewModel;
-
 
11
use LeadersLinked\Model\ChatUser;
10
use Laminas\Log\LoggerInterface;
12
use LeadersLinked\Model\ChatGroup;
11
use Laminas\View\Model\JsonModel;
13
use LeadersLinked\Model\Connection;
-
 
14
use LeadersLinked\Library\Functions;
-
 
15
use LeadersLinked\Mapper\UserMapper;
-
 
16
use LeadersLinked\Mapper\UtilMapper;
-
 
17
use LeadersLinked\Model\ChatMessage;
-
 
18
use LeadersLinked\Model\ZoomMeeting;
-
 
19
use LeadersLinked\Model\ChatGroupUser;
-
 
20
use Laminas\Db\Adapter\AdapterInterface;
-
 
21
use LeadersLinked\Form\Chat\ZoomAddForm;
-
 
22
use LeadersLinked\Mapper\ChatUserMapper;
-
 
23
use LeadersLinked\Model\ZoomMeetingUser;
12
use Laminas\View\Model\ViewModel;
24
use LeadersLinked\Mapper\ChatGroupMapper;
-
 
25
use LeadersLinked\Model\ChatGroupMessage;
13
use LeadersLinked\Library\Functions;
26
use LeadersLinked\Mapper\ConnectionMapper;
-
 
27
use LeadersLinked\Form\CreateChatGroupForm;
14
use LeadersLinked\Mapper\UserMapper;
28
use LeadersLinked\Mapper\ChatMessageMapper;
-
 
29
use LeadersLinked\Mapper\ZoomMeetingMapper;
-
 
30
use LeadersLinked\Mapper\ChatGroupUserMapper;
15
use LeadersLinked\Mapper\ConnectionMapper;
31
use LeadersLinked\Model\ChatGroupUserMessage;
-
 
32
use LeadersLinked\Mapper\ZoomMeetingUserMapper;
-
 
33
use LeadersLinked\Mapper\ChatGroupMessageMapper;
16
use LeadersLinked\Mapper\ChatMessageMapper;
-
 
17
use LeadersLinked\Mapper\ChatGroupMapper;
-
 
18
use LeadersLinked\Mapper\ChatGroupMessageMapper;
-
 
19
use LeadersLinked\Mapper\ChatGroupUserMessageMapper;
-
 
20
use LeadersLinked\Mapper\ChatUserMapper;
-
 
21
use LeadersLinked\Model\ChatMessage;
-
 
22
use LeadersLinked\Model\ChatGroupMessage;
-
 
23
use LeadersLinked\Model\ChatGroupUserMessage;
-
 
24
use LeadersLinked\Model\Connection;
-
 
25
use LeadersLinked\Model\ChatGroup;
-
 
26
use LeadersLinked\Model\ChatUser;
-
 
27
use LeadersLinked\Form\CreateChatGroupForm;
Línea 34... Línea 28...
34
use Laminas\Cache\Storage\Adapter\AbstractAdapter;
28
use LeadersLinked\Mapper\ChatGroupUserMapper;
35
use Laminas\Mvc\Controller\AbstractActionController;
29
use LeadersLinked\Model\ChatGroupUser;
36
use LeadersLinked\Mapper\ChatGroupUserMessageMapper;
30
use LeadersLinked\Mapper\UtilMapper;
Línea 2508... Línea 2502...
2508
            return true;
2502
            return true;
2509
        }
2503
        }
Línea 2510... Línea 2504...
2510
 
2504
 
2511
        return ($diff->s) > 15 ? true : false;
2505
        return ($diff->s) > 15 ? true : false;
2512
    }
-
 
2513
 
-
 
2514
    public function zoomAction()
-
 
2515
    {
-
 
2516
        $request = $this->getRequest();
-
 
2517
        if ($request->isPost()) {
-
 
2518
            $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
2519
            $currentUser = $currentUserPlugin->getUser();
-
 
2520
 
-
 
2521
            $id = $this->params()->fromRoute('id');
-
 
2522
 
-
 
2523
            if (!$id) {
-
 
2524
                return new JsonModel([
-
 
2525
                    'success' => false,
-
 
2526
                    'data' => 'ERROR_PARAMETERS_ARE_INVALID'
-
 
2527
                ]);
-
 
2528
            }
-
 
2529
 
-
 
2530
            $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
-
 
2531
            $chatGroupMapper = ChatGroupMapper::getInstance($this->adapter);
-
 
2532
 
-
 
2533
            $chatUser = null;
-
 
2534
            $chatGroup = $chatGroupMapper->fetchOneByUuid($id);
-
 
2535
 
-
 
2536
            if ($chatGroup) {
-
 
2537
                $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
-
 
2538
                $chatGroupUser = $chatGroupUserMapper->fetchOneByGroupIdAndUserId($chatGroup->id, $currentUser->id);
-
 
2539
 
-
 
2540
                if (!$chatGroupUser) {
-
 
2541
                    $data = [
-
 
2542
                        'success' => false,
-
 
2543
                        'data' =>  'ERROR_ZOOM_CHAT_UNAUTHORIZE'
-
 
2544
                    ];
-
 
2545
 
-
 
2546
 
-
 
2547
                    return new JsonModel($data);
-
 
2548
                }
-
 
2549
            } else {
-
 
2550
 
-
 
2551
                $userMapper = UserMapper::getInstance($this->adapter);
-
 
2552
                $user = $userMapper->fetchOneByUuid($id);
-
 
2553
                if (!$user) {
-
 
2554
                    return new JsonModel([
-
 
2555
                        'success' => false,
-
 
2556
                        'data' => 'ERROR_USER_NOT_FOUND'
-
 
2557
                    ]);
-
 
2558
                }
-
 
2559
 
-
 
2560
 
-
 
2561
                $connectionMapper = ConnectionMapper::getInstance($this->adapter);
-
 
2562
                $connection = $connectionMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
-
 
2563
                if (!$connection || $connection->status != Connection::STATUS_ACCEPTED) {
-
 
2564
 
-
 
2565
                    return new JsonModel([
-
 
2566
                        'success' => false,
-
 
2567
                        'data' => 'ERROR_THIS_USER_IS_NOT_A_CONNECTION'
-
 
2568
                    ]);
-
 
2569
                }
-
 
2570
                $chatUserMapper = ChatUserMapper::getInstance($this->adapter);
-
 
2571
                $chatUser = $chatUserMapper->fetchOneByUserId1AndUserId2($currentUser->id, $user->id);
-
 
2572
                if (!$chatUser) {
-
 
2573
                    $chatUser = new ChatUser();
-
 
2574
                    $chatUser->user_id1 = $currentUser->id;
-
 
2575
                    $chatUser->user_id2 = $user->id;
-
 
2576
 
-
 
2577
                    $response = $chatUserMapper->insert($chatUser);
-
 
2578
                    if (!$response) {
-
 
2579
                        return new JsonModel([
-
 
2580
                            'success' => false,
-
 
2581
                            'data' => $chatUserMapper->getError()
-
 
2582
                        ]);
-
 
2583
                    }
-
 
2584
 
-
 
2585
                    $chatUser = $chatUserMapper->fetchOne($chatUser->id);
-
 
2586
                    $fullpath_chat = $this->config['leaderslinked.fullpath.chat'];
-
 
2587
                    $dirpath = $fullpath_chat . $chatUser->uuid;
-
 
2588
                    if (!file_exists($dirpath)) {
-
 
2589
                        mkdir($dirpath, 0777, true);
-
 
2590
                        chmod($dirpath, 0777);
-
 
2591
                    }
-
 
2592
                }
-
 
2593
            }
-
 
2594
 
-
 
2595
 
-
 
2596
 
-
 
2597
 
-
 
2598
 
-
 
2599
            if (!$chatUser && !$chatGroup) {
-
 
2600
                $data = [
-
 
2601
                    'success' => false,
-
 
2602
                    'data' => 'ERROR_ZOOM_CHAT_NOT_FOUND'
-
 
2603
                ];
-
 
2604
 
-
 
2605
 
-
 
2606
                return new JsonModel($data);
-
 
2607
            }
-
 
2608
 
-
 
2609
            $dataPost = $request->getPost()->toArray();
-
 
2610
            $form = new ZoomAddForm();
-
 
2611
            $form->setData($dataPost);
-
 
2612
            if ($form->isValid()) {
-
 
2613
 
-
 
2614
                $dataPost = (array) $form->getData();
-
 
2615
 
-
 
2616
 
-
 
2617
                $dtStart = \DateTime::createFromFormat('Y-m-d H:i:s', $dataPost['date'] . ' ' . $dataPost['time']);
-
 
2618
                if (!$dtStart) {
-
 
2619
                    return new JsonModel([
-
 
2620
                        'success' => false,
-
 
2621
                        'data' => 'ERROR_PARAMETERS_ARE_INVALID'
-
 
2622
                    ]);
-
 
2623
                }
-
 
2624
 
-
 
2625
 
-
 
2626
 
-
 
2627
                $dtEnd = \DateTime::createFromFormat('Y-m-d H:i:s', $dataPost['date'] . ' ' . $dataPost['time']);
-
 
2628
                $dtEnd->add(new \DateInterval('PT' . $dataPost['duration'] . 'M'));
-
 
2629
 
-
 
2630
                $start_time = $dtStart->format('Y-m-d\TH:i:s');
-
 
2631
                $zoom = new Zoom($this->adapter, $this->config);
-
 
2632
                $result = $zoom->add($dataPost['title'], $dataPost['description'], $dataPost['type'], $start_time, $dataPost['duration'], $dataPost['timezone'], $dataPost['password']);
-
 
2633
 
-
 
2634
 
-
 
2635
 
-
 
2636
                if ($result['success']) {
-
 
2637
 
-
 
2638
 
-
 
2639
                    $zoomMeetingMapper = ZoomMeetingMapper::getInstance($this->adapter);
-
 
2640
                    $zoomMeeting = $zoomMeetingMapper->fetchOne($result['data']['id']);
-
 
2641
 
-
 
2642
                    if (!$zoomMeeting) {
-
 
2643
 
-
 
2644
 
-
 
2645
                        $zoomMeeting = new ZoomMeeting();
-
 
2646
                        $zoomMeeting->id = $result['data']['id'];
-
 
2647
                        $zoomMeeting->topic = $dataPost['title'];
-
 
2648
                        $zoomMeeting->agenda = $dataPost['description'];
-
 
2649
                        $zoomMeeting->duration = $dataPost['duration'];
-
 
2650
                        $zoomMeeting->join_url = $result['data']['join_url'];
-
 
2651
                        $zoomMeeting->start_time = $dtStart->format('Y-m-d H:i:s');
-
 
2652
                        $zoomMeeting->end_time = $dtEnd->format('Y-m-d H:i:s');
-
 
2653
                        $zoomMeeting->timezone = $dataPost['timezone'];
-
 
2654
                        $zoomMeeting->type = $dataPost['type'];
-
 
2655
                        $zoomMeeting->uuid = $result['data']['uuid'];
-
 
2656
                        $zoomMeeting->password = $dataPost['password'];
-
 
2657
 
-
 
2658
 
-
 
2659
                        if (!$zoomMeetingMapper->insert($zoomMeeting)) {
-
 
2660
                            return new JsonModel([
-
 
2661
                                'success' => false,
-
 
2662
                                'data' => $zoomMeetingMapper->getError()
-
 
2663
                            ]);
-
 
2664
                        }
-
 
2665
                    }
-
 
2666
 
-
 
2667
 
-
 
2668
 
-
 
2669
 
-
 
2670
 
-
 
2671
                    $chatMessageContent = "LABEL_ZOOM_MEETING \r\n" .
-
 
2672
                        " LABEL_ZOOM_MEETING_START_DATE : " . $dtStart->format('Y-m-d') . "\r\n" .
-
 
2673
                        " LABEL_ZOOM_MEETING_START_TIME : " . $dtStart->format('H:i a') . "\r\n" .
-
 
2674
                        " LABEL_ZOOM_MEETING_TIMEZONE : " . $zoomMeeting->timezone . "\r\n" .
-
 
2675
                        " LABEL_ZOOM_MEETING_TITLE :  " . $zoomMeeting->topic  . "\r\n" .
-
 
2676
                        " LABEL_ZOOM_MEETING_URL : " . $zoomMeeting->join_url . "\r\n" .
-
 
2677
                        " LABEL_ZOOM_MEETING_PASSWORD : " . $zoomMeeting->password . "\r\n";
-
 
2678
 
-
 
2679
 
-
 
2680
                    $zoomMeetingUserMapper = ZoomMeetingUserMapper::getInstance($this->adapter);
-
 
2681
                    $zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $currentUser->id);
-
 
2682
 
-
 
2683
                    if (!$zoomMeetingUser) {
-
 
2684
 
-
 
2685
                        $zoomMeetingUser = new ZoomMeetingUser();
-
 
2686
                        $zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
-
 
2687
                        $zoomMeetingUser->user_id = $currentUser->id;
-
 
2688
                        $zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
-
 
2689
                        $zoomMeetingUserMapper->insert($zoomMeetingUser);
-
 
2690
                    }
-
 
2691
 
-
 
2692
 
-
 
2693
 
-
 
2694
 
-
 
2695
 
-
 
2696
 
-
 
2697
                    if ($chatUser) {
-
 
2698
 
-
 
2699
                        if ($chatUser->user_id1 == $currentUser->id) {
-
 
2700
 
-
 
2701
                            $zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $chatUser->user_id2);
-
 
2702
                            if (!$zoomMeetingUser) {
-
 
2703
                                $zoomMeetingUser = new ZoomMeetingUser();
-
 
2704
                                $zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
-
 
2705
                                $zoomMeetingUser->user_id = $chatUser->user_id2;
-
 
2706
                                $zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
-
 
2707
                                $zoomMeetingUserMapper->insert($zoomMeetingUser);
-
 
2708
                            }
-
 
2709
                        } else {
-
 
2710
                            $zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $chatUser->user_id1);
-
 
2711
                            if (!$zoomMeetingUser) {
-
 
2712
                                $zoomMeetingUser = new ZoomMeetingUser();
-
 
2713
                                $zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
-
 
2714
                                $zoomMeetingUser->user_id = $chatUser->user_id1;
-
 
2715
                                $zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
-
 
2716
                                $zoomMeetingUserMapper->insert($zoomMeetingUser);
-
 
2717
                            }
-
 
2718
                        }
-
 
2719
 
-
 
2720
                        $chatMessage = new ChatMessage();
-
 
2721
                        $chatMessage->recd = ChatMessage::RECD_NO;
-
 
2722
                        $chatMessage->seen = ChatMessage::SEEN_NO;
-
 
2723
                        $chatMessage->type = ChatMessage::TYPE_TEXT;
-
 
2724
                        $chatMessage->content = $chatMessageContent;
-
 
2725
                        $chatMessage->from_id = $currentUser->id;
-
 
2726
                        $chatMessage->to_id = $chatUser->user_id1 == $currentUser->id ? $chatUser->user_id2 : $chatUser->user_id1;
-
 
2727
                        $chatMessage->chat_id = $chatUser->id;
-
 
2728
 
-
 
2729
 
-
 
2730
                        $chatMessageMapper = ChatMessageMapper::getInstance($this->adapter);
-
 
2731
                        $chatMessageMapper->insert($chatMessage);
-
 
2732
 
-
 
2733
 
-
 
2734
                        $chatUserMapper->markIsOpen1($chatUser->id);
-
 
2735
                        $chatUserMapper->markIsOpen2($chatUser->id);
-
 
2736
                    } else if ($chatGroup) {
-
 
2737
 
-
 
2738
                        $chatGroupMessage = new ChatGroupMessage();
-
 
2739
                        $chatGroupMessage->group_id = $chatGroup->id;
-
 
2740
                        $chatGroupMessage->content = $chatMessageContent;
-
 
2741
                        $chatGroupMessage->sender_id = $currentUser->id;
-
 
2742
                        $chatGroupMessage->type = ChatGroupMessage::TYPE_TEXT;
-
 
2743
                        $chatGroupMessageMapper = ChatGroupMessageMapper::getInstance($this->adapter);
-
 
2744
                        if ($chatGroupMessageMapper->insert($chatGroupMessage)) {
-
 
2745
 
-
 
2746
                            $chatGroupUserMapper = ChatGroupUserMapper::getInstance($this->adapter);
-
 
2747
                            $groupUsers =   $chatGroupUserMapper->fetchAllByGroupId($chatGroup->id);
-
 
2748
 
-
 
2749
 
-
 
2750
                            $chatGroupUserMessageMapper = ChatGroupUserMessageMapper::getInstance($this->adapter);
-
 
2751
                            foreach ($groupUsers as $groupUser) {
-
 
2752
 
-
 
2753
                                if ($groupUser->user_id != $currentUser->id) {
-
 
2754
                                    $zoomMeetingUser = $zoomMeetingUserMapper->fetchOneByZoomMeetingIdAndUserId($zoomMeeting->id, $groupUser->user_id);
-
 
2755
 
-
 
2756
                                    if (!$zoomMeetingUser) {
-
 
2757
                                        $zoomMeetingUser = new ZoomMeetingUser();
-
 
2758
                                        $zoomMeetingUser->zoom_meeting_id = $zoomMeeting->id;
-
 
2759
                                        $zoomMeetingUser->user_id = $groupUser->user_id;
-
 
2760
                                        $zoomMeetingUser->type = ZoomMeetingUser::TYPE_CREATOR;
-
 
2761
                                        $zoomMeetingUserMapper->insert($zoomMeetingUser);
-
 
2762
                                    }
-
 
2763
                                }
-
 
2764
 
-
 
2765
 
-
 
2766
                                $chatGroupUserMessage = new ChatGroupUserMessage();
-
 
2767
                                $chatGroupUserMessage->group_id = $chatGroup->id;
-
 
2768
                                $chatGroupUserMessage->message_id = $chatGroupMessage->id;
-
 
2769
                                $chatGroupUserMessage->receiver_id = $groupUser->user_id;
-
 
2770
                                $chatGroupUserMessage->recd = ChatGroupUserMessage::RECD_NO;
-
 
2771
                                $chatGroupUserMessage->seen = ChatGroupUserMessage::SEEN_NO;
-
 
2772
                                $chatGroupUserMessageMapper->insert($chatGroupUserMessage);
-
 
2773
 
-
 
2774
                                $chatGroupUserMapper->markIsOpen($groupUser->group_id, $groupUser->user_id);
-
 
2775
                            }
-
 
2776
                        }
-
 
2777
                    }
-
 
2778
 
-
 
2779
                    return new JsonModel([
-
 
2780
                        'success' => true,
-
 
2781
                        'data' => 'LABEL_ZOOM_NEW_MEETING_SUCCESSFULLY'
-
 
2782
                    ]);
-
 
2783
                } else {
-
 
2784
                    return new JsonModel([
-
 
2785
                        'success' => false,
-
 
2786
                        'data' => 'ERROR_ZOOM_CREATING_NEW_MEETING'
-
 
2787
                    ]);
-
 
2788
                }
-
 
2789
            } else {
-
 
2790
 
-
 
2791
 
-
 
2792
 
-
 
2793
                $messages = [];
-
 
2794
                $form_messages = (array) $form->getMessages();
-
 
2795
                foreach ($form_messages  as $fieldname => $field_messages) {
-
 
2796
 
-
 
2797
                    $messages[$fieldname] = array_values($field_messages);
-
 
2798
                }
-
 
2799
 
-
 
2800
                return new JsonModel([
-
 
2801
                    'success'   => false,
-
 
2802
                    'data'   => $messages
-
 
2803
                ]);
-
 
2804
 
-
 
2805
 
-
 
2806
                return new JsonModel($response);
-
 
2807
            }
-
 
2808
        } else {
-
 
2809
            $response = [
-
 
2810
                'success' => false,
-
 
2811
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
2812
            ];
-
 
2813
        }
-
 
2814
 
-
 
2815
        return new JsonModel($response);
-
 
2816
    }
2506
    }