Proyectos de Subversion LeadersLinked - Services

Rev

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

Rev 166 Rev 167
Línea 1473... Línea 1473...
1473
                    'background'    => $slide->background ? $this->url()->fromRoute('storage',['type' => 'microlearning-slide', 'code' => $slide->uuid, 'filename' => $slide->background], ['force_canonical' => true]) : '',
1473
                    'background'    => $slide->background ? $this->url()->fromRoute('storage',['type' => 'microlearning-slide', 'code' => $slide->uuid, 'filename' => $slide->background], ['force_canonical' => true]) : '',
1474
                    'file'          => $slide->file ? $this->url()->fromRoute('storage',['type' => 'microlearning-slide', 'code' => $slide->uuid, 'filename' => $slide->file], ['force_canonical' => true]) : '',
1474
                    'file'          => $slide->file ? $this->url()->fromRoute('storage',['type' => 'microlearning-slide', 'code' => $slide->uuid, 'filename' => $slide->file], ['force_canonical' => true]) : '',
1475
                    'order'         => $slide->order,
1475
                    'order'         => $slide->order,
1476
                    'completed'     => $completed,
1476
                    'completed'     => $completed,
1477
                    'link_get'      => $this->url()->fromRoute('microlearning/get-slide', ['id' => $slide->uuid], ['force_canonical' => true]),
1477
                    'link_get'      => $this->url()->fromRoute('microlearning/get-slide', ['id' => $slide->uuid], ['force_canonical' => true]),
-
 
1478
                    'link_sync'     => $this->url()->fromRoute('microlearning/sync', ['operation' => 'slide-view', 'topic_uuid' => $topic->uuid, 'capsule' => $capsule->uuid, 'slide_uuid' => $slide->uuid], ['force_canonical' => true]),
1478
                    'added_on'      => $slide->added_on,
1479
                    'added_on'      => $slide->added_on,
1479
                    'updated_on'    => $slide->updated_on,
1480
                    'updated_on'    => $slide->updated_on,
1480
                ]);
1481
                ]);
Línea 1581... Línea 1582...
1581
                'type'          => $slide->type,
1582
                'type'          => $slide->type,
1582
                'background'    => $slide->background ? $this->url()->fromRoute('storage',['type' => 'microlearning-slide', 'code' => $slide->uuid, 'filename' => $slide->background], ['force_canonical' => true]) : '',
1583
                'background'    => $slide->background ? $this->url()->fromRoute('storage',['type' => 'microlearning-slide', 'code' => $slide->uuid, 'filename' => $slide->background], ['force_canonical' => true]) : '',
1583
                'file'          => $slide->file ? $this->url()->fromRoute('storage',['type' => 'microlearning-slide', 'code' => $slide->uuid, 'filename' => $slide->file], ['force_canonical' => true]) : '',
1584
                'file'          => $slide->file ? $this->url()->fromRoute('storage',['type' => 'microlearning-slide', 'code' => $slide->uuid, 'filename' => $slide->file], ['force_canonical' => true]) : '',
1584
                'order'         => $slide->order,
1585
                'order'         => $slide->order,
1585
                'completed'     => $completed,
1586
                'completed'     => $completed,
-
 
1587
                'link_sync'     => $this->url()->fromRoute('microlearning/sync', ['operation' => 'slide-view', 'topic_uuid' => $topic->uuid, 'capsule' => $capsule->uuid, 'slide_uuid' => $slide->uuid], ['force_canonical' => true]),
1586
                'added_on'      => $slide->added_on,
1588
                'added_on'      => $slide->added_on,
1587
                'updated_on'    => $slide->updated_on,
1589
                'updated_on'    => $slide->updated_on,
1588
            ];
1590
            ];
Línea 1744... Línea 1746...
1744
            
1746
            
1745
        } else {
1747
        } else {
1746
            return new JsonModel([
1748
            return new JsonModel([
1747
                'success' => false,
1749
                'success' => false,
-
 
1750
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
-
 
1751
            ]);
-
 
1752
        }
-
 
1753
    }
-
 
1754
    
-
 
1755
    public function syncAction()
-
 
1756
    {
-
 
1757
        $request = $this->getRequest();
-
 
1758
        if($request->iPost()) {
-
 
1759
            $currentUserPlugin = $this->plugin('currentUserPlugin');
-
 
1760
            $currentUser = $currentUserPlugin->getUser();
-
 
1761
            
-
 
1762
           
-
 
1763
            $operation = $this->params()->fromRoute('operation');
-
 
1764
            if($operation == 'slide-view' || $operation == 'capsule-close' || $operation == 'topic-close') {
-
 
1765
                $accessGrantedIds = $this->getAccessGranted();
-
 
1766
                
-
 
1767
                $topic_uuid     = $this->params()->fromRoute('topic_uuid');
-
 
1768
                $capsule_uuid   = $this->params()->fromRoute('capsule_uuid');
-
 
1769
                $slide_uuid     = $this->params()->fromRoute('slide_uuid');
-
 
1770
                
-
 
1771
                $accessGrantedIds = $this->getAccessGranted();
-
 
1772
                if($operation == 'slide-view') {
-
 
1773
                    
-
 
1774
                    if(empty($slide_uuid) || empty($capsule_uuid ) || empty($topic_uuid)) {
-
 
1775
                        return new JsonModel([
-
 
1776
                            'success' => false,
-
 
1777
                            'data' => 'ERROR_INVALID_PARAMETERS'
-
 
1778
                        ]);
-
 
1779
                    }
-
 
1780
                    
-
 
1781
                    
-
 
1782
                    $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
-
 
1783
                    $topic = $topicMapper->fetchOneByUuid($topic_uuid);
-
 
1784
                    
-
 
1785
                    if(!$topic) {
-
 
1786
                        return new JsonModel([
-
 
1787
                            'success' => false,
-
 
1788
                            'data' => 'ERROR_TOPIC_NOT_FOUND'
-
 
1789
                        ]);
-
 
1790
                    }
-
 
1791
                    
-
 
1792
                    
-
 
1793
                    
-
 
1794
                    if(!in_array($topic->id, $accessGrantedIds->topics)) {
-
 
1795
                        return new JsonModel([
-
 
1796
                            'success' => false,
-
 
1797
                            'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_TOPIC'
-
 
1798
                        ]);
-
 
1799
                    }
-
 
1800
                    
-
 
1801
                    $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
-
 
1802
                    $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
-
 
1803
                    
-
 
1804
                    if(!$capsule) {
-
 
1805
                        return new JsonModel([
-
 
1806
                            'success' => false,
-
 
1807
                            'data' => 'ERROR_CAPSULE_NOT_FOUND'
-
 
1808
                        ]);
-
 
1809
                    }
-
 
1810
    
-
 
1811
                    if(!in_array($capsule->id, $accessGrantedIds->capsules) || $capsule->topic_id != $topic->id) {
-
 
1812
                        return new JsonModel([
-
 
1813
                            'success' => false,
-
 
1814
                            'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE'
-
 
1815
                        ]);
-
 
1816
                    }
-
 
1817
                    
-
 
1818
                    $slideMapper = CompanyMicrolearningSlideMapper::getInstance($this->adapter);
-
 
1819
                    $slide = $slideMapper->fetchOneByUuid($slide_uuid);
-
 
1820
                    if(!$slide) {
-
 
1821
                        return new JsonModel([
-
 
1822
                            'success' => false,
-
 
1823
                            'data' => 'ERROR_SLIDE_NOT_FOUND'
-
 
1824
                        ]);
-
 
1825
                    }
-
 
1826
                    
-
 
1827
                    if($slide->capsule_id != $capsule->id && $slide->topic_id != $topic->id) {
-
 
1828
                        return new JsonModel([
-
 
1829
                            'success' => false,
-
 
1830
                            'data' => 'ERROR_SLIDE_NOT_FOUND'
-
 
1831
                        ]);
-
 
1832
                        
-
 
1833
                    }
-
 
1834
                    
-
 
1835
                    
-
 
1836
                    $userLogMapper = CompanyMicrolearningUserLogMapper::getInstance($this->adapter);
-
 
1837
                    
-
 
1838
                    $userProgressMapper = CompanyMicrolearningUserProgressMapper::getInstance($this->adapter);
-
 
1839
                    $added_on = $userProgressMapper->getDatebaseNow();
-
 
1840
                    
-
 
1841
                    
-
 
1842
                    $userProgressTopic = $userProgressMapper->fetchOneByUserIdAndTopicId($currentUser->id, $topic->id);
-
 
1843
                    if(!$userProgressTopic) {
-
 
1844
                        
-
 
1845
                        $userProgressTopic = new CompanyMicrolearningUserProgress();
-
 
1846
                        $userProgressTopic->company_id                  = $slide->company_id;
-
 
1847
                        $userProgressTopic->topic_id                    = $slide->topic_id;
-
 
1848
                        $userProgressTopic->progress                    = 0;
-
 
1849
                        $userProgressTopic->returning                   = 0;
-
 
1850
                        $userProgressTopic->returning_after_completed   = 0;
-
 
1851
                        $userProgressTopic->completed                   = 0;
-
 
1852
                        $userProgressTopic->total_slides                = $slideMapper->fetchTotalCountByCompanyIdAndTopicId($slide->company_id, $slide->topic_id);
-
 
1853
                        $userProgressTopic->view_slides                 = 0;
-
 
1854
                        $userProgressTopic->type                        = CompanyMicrolearningUserProgress::TYPE_TOPIC;
-
 
1855
                        $userProgressTopic->added_on                    = $added_on;
-
 
1856
                        $userProgressTopic->updated_on                  = $added_on;
-
 
1857
 
-
 
1858
                        if($userProgressMapper->insert($userProgressTopic)) {
-
 
1859
                            
-
 
1860
                            $userLog = new CompanyMicrolearningUserLog();
-
 
1861
                            $userLog->activity      = CompanyMicrolearningUserLog::ACTIVITY_START_TOPIC;
-
 
1862
                            $userLog->user_id       = $currentUser->id;
-
 
1863
                            $userLog->company_id    = $slide->company_id;
-
 
1864
                            $userLog->topic_id      = $slide->topic_id;
-
 
1865
                            $userLog->added_on      = $added_on;
-
 
1866
                            
-
 
1867
                            if(!$userLogMapper->insert($userLog)) {
-
 
1868
                                return new JsonModel([
-
 
1869
                                    'success' => false,
-
 
1870
                                    'data' => $userProgressMapper->getError()
-
 
1871
                                ]);
-
 
1872
                            }
-
 
1873
                        } else {
-
 
1874
                            return new JsonModel([
-
 
1875
                                'success' => false,
-
 
1876
                                'data' => $userProgressMapper->getError()
-
 
1877
                            ]);
-
 
1878
                        }
-
 
1879
                    }
-
 
1880
                    
-
 
1881
                    
-
 
1882
                    $userProgressCapsule = $userProgressMapper->fetchOneByUseridAndCapsuleId($currentUser->id, $capsule->id);
-
 
1883
                    if(!$userProgressCapsule) {
-
 
1884
                        
-
 
1885
                        $userProgressCapsule = new CompanyMicrolearningUserProgress();
-
 
1886
                        $userProgressCapsule->company_id                  = $slide->company_id;
-
 
1887
                        $userProgressCapsule->topic_id                    = $slide->topic_id;
-
 
1888
                        $userProgressCapsule->capsule_id                  = $slide->capsule_id;
-
 
1889
                        $userProgressCapsule->progress                    = 0;
-
 
1890
                        $userProgressCapsule->returning                   = 0;
-
 
1891
                        $userProgressCapsule->returning_after_completed   = 0;
-
 
1892
                        $userProgressCapsule->completed                   = 0;
-
 
1893
                        $userProgressCapsule->total_slides                = $slideMapper->fetchTotalCountByCompanyIdAndTopicIdAndCapsuleId($slide->company_id, $slide->topic_id, $slide->capsule_id);
-
 
1894
                        $userProgressCapsule->view_slides                 = 0;
-
 
1895
                        $userProgressCapsule->type                        = CompanyMicrolearningUserProgress::TYPE_CAPSULE;
-
 
1896
                        $userProgressCapsule->added_on                    = $added_on;
-
 
1897
                        $userProgressTopic->updated_on                    = $added_on;
-
 
1898
                        
-
 
1899
                        if($userProgressMapper->insert($userProgressCapsule)) {
-
 
1900
                            
-
 
1901
                            $userLog = new CompanyMicrolearningUserLog();
-
 
1902
                            $userLog->activity      = CompanyMicrolearningUserLog::ACTIVITY_START_CAPSULE;
-
 
1903
                            $userLog->user_id       = $currentUser->id;
-
 
1904
                            $userLog->company_id    = $slide->company_id;
-
 
1905
                            $userLog->topic_id      = $slide->topic_id;
-
 
1906
                            $userLog->capsule_id    = $slide->capsule_id;
-
 
1907
                            $userLog->added_on      = $added_on;
-
 
1908
                            
-
 
1909
                            if(!$userLogMapper->insert($userLog)) {
-
 
1910
                                return new JsonModel([
-
 
1911
                                    'success' => false,
-
 
1912
                                    'data' => $userLogMapper->getError()
-
 
1913
                                ]);
-
 
1914
                            }
-
 
1915
                        } else {
-
 
1916
                            return new JsonModel([
-
 
1917
                                'success' => false,
-
 
1918
                                'data' => $userProgressMapper->getError()
-
 
1919
                            ]);
-
 
1920
                        }
-
 
1921
                    }
-
 
1922
                    
-
 
1923
                    
-
 
1924
                    $userProgressSlide = $userProgressMapper->fetchOneByUserIdAndSlideId($currentUser->id, $slide->id);
-
 
1925
                    if(!$userProgressSlide) {
-
 
1926
                        $userProgressSlide = new CompanyMicrolearningUserProgress();
-
 
1927
                        $userProgressSlide->company_id                  = $slide->company_id;
-
 
1928
                        $userProgressSlide->topic_id                    = $slide->topic_id;
-
 
1929
                        $userProgressSlide->capsule_id                  = $slide->capsule_id;
-
 
1930
                        $userProgressSlide->slide_id                    = $slide->id;
-
 
1931
                        $userProgressSlide->progress                    = 0;
-
 
1932
                        $userProgressSlide->returning                   = 0;
-
 
1933
                        $userProgressSlide->returning_after_completed   = 0;
-
 
1934
                        $userProgressSlide->completed                   = 1;
-
 
1935
                        $userProgressSlide->total_slides                = 0;
-
 
1936
                        $userProgressSlide->view_slides                 = 0;
-
 
1937
                        $userProgressSlide->type                        = CompanyMicrolearningUserProgress::TYPE_SLIDE;
-
 
1938
                        $userProgressSlide->added_on                    = $added_on;
-
 
1939
                        $userProgressSlide->updated_on                  = $added_on;
-
 
1940
                        
-
 
1941
                        if(!$userProgressMapper->insert($userProgressSlide)) {
-
 
1942
                            return new JsonModel([
-
 
1943
                                'success' => false,
-
 
1944
                                'data' => $userProgressMapper->getError()
-
 
1945
                            ]);
-
 
1946
                        }
-
 
1947
                    } 
-
 
1948
                    
-
 
1949
                    $userLog = new CompanyMicrolearningUserLog();
-
 
1950
                    $userLog->activity      = CompanyMicrolearningUserLog::ACTIVITY_VIEW_SLIDE;
-
 
1951
                    $userLog->user_id       = $currentUser->id;
-
 
1952
                    $userLog->company_id    = $slide->company_id;
-
 
1953
                    $userLog->topic_id      = $slide->topic_id;
-
 
1954
                    $userLog->capsule_id    = $slide->capsule_id;
-
 
1955
                    $userLog->slide_id      = $slide->id;
-
 
1956
                    $userLog->added_on      = $added_on;
-
 
1957
                    
-
 
1958
                    if(!$userLogMapper->insert($userLog)) {
-
 
1959
                        return new JsonModel([
-
 
1960
                            'success' => false,
-
 
1961
                            'data' => $userLogMapper->getError()
-
 
1962
                        ]);
-
 
1963
                    }
-
 
1964
                    
-
 
1965
                    $closeCapsule = false;
-
 
1966
                    
-
 
1967
                    if($userProgressCapsule->completed) {
-
 
1968
                        
-
 
1969
                        $dt = \DateTime::createFromFormat('Y-m-d H:i:s', $added_on);
-
 
1970
                        $returning_on = $dt->format('Y-m-d');
-
 
1971
                        
-
 
1972
                        if(!$userProgressCapsule->returning_on || $userProgressCapsule->returning_on != $returning_on) {
-
 
1973
                            
-
 
1974
                            $userProgressCapsule->returning_on = $returning_on;
-
 
1975
                            $userProgressCapsule->returning_after_completed = $userProgressCapsule->returning_after_completed + 1;
-
 
1976
                            
-
 
1977
                            if(!$userProgressMapper->update($userProgressCapsule)) {
-
 
1978
                                return new JsonModel([
-
 
1979
                                    'success' => false,
-
 
1980
                                    'data' => $userProgressMapper->getError()
-
 
1981
                                ]);
-
 
1982
                            }
-
 
1983
                        }
-
 
1984
                        
-
 
1985
                    }  else {
-
 
1986
                        
-
 
1987
                        $userProgressCapsule->total_slides = $slideMapper->fetchTotalCountByCompanyIdAndTopicIdAndCapsuleId($slide->company_id, $slide->topic_id, $slide->capsule_id);
-
 
1988
                        $userProgressCapsule->view_slides = $userProgressMapper->fetchCountAllSlideCompletedByUserIdAndCapsuleId($currentUser->id, $slide->capsule_id);
-
 
1989
                        
-
 
1990
                        if($userProgressCapsule->total_slides) {
-
 
1991
                          
-
 
1992
                            $userProgressCapsule->progress = ($userProgressCapsule->view_slides * 100) / $userProgressCapsule->total_slides;
-
 
1993
                            $userProgressCapsule->progress = $userProgressCapsule->progress > 100 ? 100 : $userProgressCapsule->progress;
-
 
1994
                        } 
-
 
1995
                        
-
 
1996
                        if(!$userProgressMapper->update($userProgressCapsule)) {
-
 
1997
                            return new JsonModel([
-
 
1998
                                'success' => false,
-
 
1999
                                'data' => $userProgressMapper->getError()
-
 
2000
                            ]);
-
 
2001
                        }
-
 
2002
                        
-
 
2003
                        if($userProgressCapsule->progress >= 100) {
-
 
2004
                            $closeCapsule = true;
-
 
2005
                        }
-
 
2006
                    }
-
 
2007
                    
-
 
2008
                    $closeTopic = false;
-
 
2009
                    if(!$userProgressTopic->completed) {
-
 
2010
                        
-
 
2011
                        
-
 
2012
                        $userProgressTopic->total_slides = $slideMapper->fetchTotalCountByCompanyIdAndTopicId($slide->company_id, $slide->topic_id);
-
 
2013
                        $userProgressTopic->view_slides = $userProgressMapper->fetchCountAllSlideCompletedByUserIdAndTopicId($currentUser->id, $slide->topic_id);
-
 
2014
                        
-
 
2015
                        if($userProgressTopic->total_slides) {
-
 
2016
                            
-
 
2017
                            $userProgressTopic->progress = ($userProgressTopic->view_slides * 100) / $userProgressTopic->total_slides;
-
 
2018
                            $userProgressTopic->progress = $userProgressTopic->progress > 100 ? 100 : $userProgressTopic->progress;
-
 
2019
                        }
-
 
2020
                        if(!$userProgressMapper->update($userProgressTopic)) {
-
 
2021
                            return new JsonModel([
-
 
2022
                                'success' => false,
-
 
2023
                                'data' => $userProgressMapper->getError()
-
 
2024
                            ]);
-
 
2025
                        }
-
 
2026
                        
-
 
2027
                        if($userProgressTopic->progress >= 100) {
-
 
2028
                            $closeTopic = true;
-
 
2029
                        }
-
 
2030
                        
-
 
2031
                        
-
 
2032
                    }
-
 
2033
                    
-
 
2034
                    
-
 
2035
                    $data = [
-
 
2036
                        'message' => 'LABEL_THE_USER_PROGRESS_FOR_THIS_SLIDE_HAS_BEEN_COMPLETED',
-
 
2037
                        
-
 
2038
                    ]; 
-
 
2039
                    
-
 
2040
                    if($closeCapsule) {
-
 
2041
                        $data['link_close_capsule'] = $this->url()->fromRoute('microlearning/sync', ['operation' => 'capsule-close', 'topic_uuid' => $topic->uuid, 'capsule_uuid' => $capsule->uuid]);
-
 
2042
                    }
-
 
2043
                    
-
 
2044
          
-
 
2045
                    if($closeTopic) {
-
 
2046
                        $data['link_close_topic'] = $this->url()->fromRoute('microlearning/sync', ['operation' => 'topic-close', 'topic_uuid' => $topic->uuid]);
-
 
2047
                    }
-
 
2048
                    
-
 
2049
                    
-
 
2050
                    return new JsonModel([
-
 
2051
                        'success' => true,
-
 
2052
                        'data' => $data
-
 
2053
                    ]);
-
 
2054
                    
-
 
2055
                    
-
 
2056
                    
-
 
2057
                    
-
 
2058
                } else if($operation == 'capsule-close') {
-
 
2059
                    
-
 
2060
                    if(empty($capsule_uuid ) || empty($topic_uuid)) {
-
 
2061
                        return new JsonModel([
-
 
2062
                            'success' => false,
-
 
2063
                            'data' => 'ERROR_INVALID_PARAMETERS'
-
 
2064
                        ]);
-
 
2065
                    }
-
 
2066
                    
-
 
2067
                    
-
 
2068
                    $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
-
 
2069
                    $topic = $topicMapper->fetchOneByUuid($topic_uuid);
-
 
2070
                    
-
 
2071
                    if(!$topic) {
-
 
2072
                        return new JsonModel([
-
 
2073
                            'success' => false,
-
 
2074
                            'data' => 'ERROR_TOPIC_NOT_FOUND'
-
 
2075
                        ]);
-
 
2076
                    }
-
 
2077
                    
-
 
2078
                    
-
 
2079
                    
-
 
2080
                    if(!in_array($topic->id, $accessGrantedIds->topics)) {
-
 
2081
                        return new JsonModel([
-
 
2082
                            'success' => false,
-
 
2083
                            'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_TOPIC'
-
 
2084
                        ]);
-
 
2085
                    }
-
 
2086
                    
-
 
2087
                    $capsuleMapper = CompanyMicrolearningCapsuleMapper::getInstance($this->adapter);
-
 
2088
                    $capsule = $capsuleMapper->fetchOneByUuid($capsule_uuid);
-
 
2089
                    
-
 
2090
                    if(!$capsule) {
-
 
2091
                        return new JsonModel([
-
 
2092
                            'success' => false,
-
 
2093
                            'data' => 'ERROR_CAPSULE_NOT_FOUND'
-
 
2094
                        ]);
-
 
2095
                    }
-
 
2096
                    
-
 
2097
                    if(!in_array($capsule->id, $accessGrantedIds->capsules) || $capsule->topic_id != $topic->id) {
-
 
2098
                        return new JsonModel([
-
 
2099
                            'success' => false,
-
 
2100
                            'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_CAPSULE'
-
 
2101
                        ]);
-
 
2102
                    }
-
 
2103
                    
-
 
2104
                    
-
 
2105
                    $userLogMapper = CompanyMicrolearningUserLogMapper::getInstance($this->adapter);
-
 
2106
                    
-
 
2107
                    $userProgressMapper = CompanyMicrolearningUserProgressMapper::getInstance($this->adapter);
-
 
2108
                    $updated_on = $userProgressMapper->getDatebaseNow();
-
 
2109
                    
-
 
2110
                    $userProgressCapsule = $userProgressMapper->fetchOneByUseridAndCapsuleId($currentUser->id, $capsule->id);
-
 
2111
                    if(!$userProgressCapsule) {
-
 
2112
                        return new JsonModel([
-
 
2113
                            'success' => false,
-
 
2114
                            'data' => 'ERROR_THE_USER_PROGRESS_FOR_THIS_CAPSULE_NOT_FOUND'
-
 
2115
                        ]);
-
 
2116
                    }
-
 
2117
                    
-
 
2118
                    if($userProgressCapsule->completed) {
-
 
2119
                        return new JsonModel([
-
 
2120
                            'success' => false,
-
 
2121
                            'data' => 'ERROR_THE_USER_PROGRESS_FOR_THIS_CAPSULE_ALREADY_CLOSED'
-
 
2122
                        ]);
-
 
2123
                    }
-
 
2124
                    
-
 
2125
                    
-
 
2126
                    $userProgressCapsule->completed = 1;
-
 
2127
                    $userProgressCapsule->updated_on = $updated_on;
-
 
2128
                    
-
 
2129
                    if($userProgressMapper->update($userProgressCapsule)) {
-
 
2130
                        return new JsonModel([
-
 
2131
                            'success' => true,
-
 
2132
                            'data' => 'LABEL_THE_USER_PROGRESS_FOR_THIS_CAPSULE_HAS_BEEN_COMPLETED'
-
 
2133
                        ]);
-
 
2134
                    } else {
-
 
2135
                        return new JsonModel([
-
 
2136
                            'success' => false,
-
 
2137
                            'data' => 'ERROR_THE_USER_PROGRESS_FOR_THIS_CAPSULE_COULD_NOT_BE_COMPLETED'
-
 
2138
                        ]);
-
 
2139
                    }
-
 
2140
                    
-
 
2141
                    
-
 
2142
                    
-
 
2143
                    
-
 
2144
                    
-
 
2145
                    
-
 
2146
                    
-
 
2147
                } else if($operation == 'topic-close') {
-
 
2148
                    if(empty($capsule_uuid ) || empty($topic_uuid)) {
-
 
2149
                        return new JsonModel([
-
 
2150
                            'success' => false,
-
 
2151
                            'data' => 'ERROR_INVALID_PARAMETERS'
-
 
2152
                        ]);
-
 
2153
                    }
-
 
2154
                    
-
 
2155
                    
-
 
2156
                    $topicMapper = CompanyMicrolearningTopicMapper::getInstance($this->adapter);
-
 
2157
                    $topic = $topicMapper->fetchOneByUuid($topic_uuid);
-
 
2158
                    
-
 
2159
                    if(!$topic) {
-
 
2160
                        return new JsonModel([
-
 
2161
                            'success' => false,
-
 
2162
                            'data' => 'ERROR_TOPIC_NOT_FOUND'
-
 
2163
                        ]);
-
 
2164
                    }
-
 
2165
                    
-
 
2166
                    
-
 
2167
                    
-
 
2168
                    if(!in_array($topic->id, $accessGrantedIds->topics)) {
-
 
2169
                        return new JsonModel([
-
 
2170
                            'success' => false,
-
 
2171
                            'data' => 'ERROR_YOU_DO_NOT_HAVE_ACCESS_TO_THIS_TOPIC'
-
 
2172
                        ]);
-
 
2173
                    }
-
 
2174
                    
-
 
2175
                 
-
 
2176
                    
-
 
2177
                    
-
 
2178
                    $userLogMapper = CompanyMicrolearningUserLogMapper::getInstance($this->adapter);
-
 
2179
                    
-
 
2180
                    $userProgressMapper = CompanyMicrolearningUserProgressMapper::getInstance($this->adapter);
-
 
2181
                    $updated_on = $userProgressMapper->getDatebaseNow();
-
 
2182
                    
-
 
2183
                    $userProgressTopic = $userProgressMapper->fetchOneByUserIdAndTopicId($currentUser->id, $topic->id);
-
 
2184
                    if(!$userProgressTopic) {
-
 
2185
                        return new JsonModel([
-
 
2186
                            'success' => false,
-
 
2187
                            'data' => 'ERROR_THE_USER_PROGRESS_FOR_THIS_TOPIC_NOT_FOUND'
-
 
2188
                        ]);
-
 
2189
                    }
-
 
2190
                    
-
 
2191
                    if($userProgressTopic->completed) {
-
 
2192
                        return new JsonModel([
-
 
2193
                            'success' => false,
-
 
2194
                            'data' => 'ERROR_THE_USER_PROGRESS_FOR_THIS_TOPIC_ALREADY_CLOSED'
-
 
2195
                        ]);
-
 
2196
                    }
-
 
2197
                    
-
 
2198
                    
-
 
2199
                    $userProgressTopic->completed = 1;
-
 
2200
                    $userProgressTopic->updated_on = $updated_on;
-
 
2201
                    
-
 
2202
                    if($userProgressMapper->update($userProgressTopic)) {
-
 
2203
                        return new JsonModel([
-
 
2204
                            'success' => true,
-
 
2205
                            'data' => 'LABEL_THE_USER_PROGRESS_FOR_THIS_TOPIC_HAS_BEEN_COMPLETED'
-
 
2206
                        ]);
-
 
2207
                    } else {
-
 
2208
                        return new JsonModel([
-
 
2209
                            'success' => false,
-
 
2210
                            'data' => 'ERROR_THE_USER_PROGRESS_FOR_THIS_TOPIC_COULD_NOT_BE_COMPLETED'
-
 
2211
                        ]);
-
 
2212
                    }
-
 
2213
                }
-
 
2214
                
-
 
2215
                
-
 
2216
                
-
 
2217
                
-
 
2218
            } else {
-
 
2219
                
-
 
2220
                return new JsonModel([
-
 
2221
                    'success' => false,
-
 
2222
                    'data' => 'ERROR_OPERATION_UNKNOWN'
-
 
2223
                ]);
-
 
2224
                    
-
 
2225
            
-
 
2226
            }
-
 
2227
            
-
 
2228
        } else {
-
 
2229
            return new JsonModel([
-
 
2230
                'success' => false,
1748
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
2231
                'data' => 'ERROR_METHOD_NOT_ALLOWED'
1749
            ]);
2232
            ]);
1750
        }
2233
        }