src/app/manage-learn/core/services/update-tracker.service.ts
        
                        Methods | 
                
constructor(localStorage: LocalStorageService, utils: UtilsService)
                     | 
                |||||||||
| 
                             
                                    Parameters :
                                     
                    
  | 
                
| getLastModifiedInEntity | ||||||
getLastModifiedInEntity(evidences, recentlyUpdatedEntity)
                 | 
            ||||||
| 
                     
                        Parameters :
                        
                         
                    
 
                        Returns :          
                    boolean
                     | 
            
| getLastModifiedInEvidences | ||||||
getLastModifiedInEvidences(evidences, recentlyUpdatedEntity?)
                 | 
            ||||||
| 
                     
                        Parameters :
                        
                         
                    
 
                        Returns :          
                    any
                     | 
            
| getLastModifiedInSection | ||||||||||
getLastModifiedInSection(assessmentDetails, selectedEvidenceIndex, submissionId, recentlyUpdatedEntity)
                 | 
            ||||||||||
| 
                     
                        Parameters :
                        
                         
                    
 
                        Returns :          
                    any
                     | 
            
import { Injectable } from '@angular/core';
import { LocalStorageService, UtilsService } from '.';
@Injectable({
  providedIn: 'root',
})
export class UpdateTrackerService {
  constructor(private localStorage: LocalStorageService, private utils: UtilsService) {}
  getLastModifiedInSection(assessmentDetails, selectedEvidenceIndex, submissionId, recentlyUpdatedEntity) {
    for (
      let currentSectionIndex = 0;
      currentSectionIndex < assessmentDetails['assessment']['evidences'][selectedEvidenceIndex].sections.length;
      currentSectionIndex++
    ) {
      let lastUpdated = 0;
      for (
        var questionIndex = 0;
        questionIndex <
        assessmentDetails['assessment']['evidences'][selectedEvidenceIndex].sections[currentSectionIndex].questions
          .length;
        questionIndex++
      ) {
        lastUpdated =
          lastUpdated <
          assessmentDetails['assessment']['evidences'][selectedEvidenceIndex].sections[currentSectionIndex].questions[
            questionIndex
          ].endTime
            ? assessmentDetails['assessment']['evidences'][selectedEvidenceIndex].sections[currentSectionIndex]
                .questions[questionIndex].endTime
            : lastUpdated;
      }
      if (lastUpdated != 0) {
        assessmentDetails['assessment']['evidences'][selectedEvidenceIndex].sections[
          currentSectionIndex
        ].lastModified = lastUpdated;
        if (submissionId) {
          this.localStorage.setLocalStorage(this.utils.getAssessmentLocalStorageKey(submissionId), assessmentDetails);
        }
      }
    }
    let success = recentlyUpdatedEntity
      ? this.getLastModifiedInEvidences(assessmentDetails['assessment']['evidences'], recentlyUpdatedEntity)
      : null;
    return assessmentDetails;
  }
  getLastModifiedInEvidences(evidences, recentlyUpdatedEntity?) {
    for (let currentEvidencesIndex = 0; currentEvidencesIndex < evidences.length; currentEvidencesIndex++) {
      let lastUpdated = evidences[currentEvidencesIndex].sections[0].lastModified
        ? evidences[currentEvidencesIndex].sections[0].lastModified
        : 0;
      for (var sectionIndex = 0; sectionIndex < evidences[currentEvidencesIndex].sections.length; sectionIndex++) {
        lastUpdated =
          lastUpdated < evidences[currentEvidencesIndex].sections[sectionIndex].lastModified
            ? evidences[currentEvidencesIndex].sections[sectionIndex].lastModified
            : lastUpdated;
      }
      if (lastUpdated != 0) {
        evidences[currentEvidencesIndex]['lastModified'] = lastUpdated;
      }
    }
    let success = recentlyUpdatedEntity ? this.getLastModifiedInEntity(evidences, recentlyUpdatedEntity) : null;
    return evidences;
  }
  getLastModifiedInEntity(evidences, recentlyUpdatedEntity) {
    console.log('recentlyUpdatedEntity');
    let lastUpdated = evidences[0].lastModified ? evidences[0].lastModified : 0;
    for (let currentEvidencesIndex = 0; currentEvidencesIndex < evidences.length; currentEvidencesIndex++) {
      lastUpdated =
        lastUpdated < evidences[currentEvidencesIndex].lastModified
          ? evidences[currentEvidencesIndex].lastModified
          : lastUpdated;
    }
    if (lastUpdated != 0) {
      recentlyUpdatedEntity.lastModified = lastUpdated;
      this.localStorage
        .getLocalStorage('recentlyModifiedAssessment')
        .then((updatedList) => {
          let successArray = [...updatedList];
          let isPresentFlag = true;
          for (let assessmentIndex = 0; assessmentIndex < updatedList.length; assessmentIndex++) {
            if (
              updatedList[assessmentIndex].ProgramId === recentlyUpdatedEntity.ProgramId &&
              updatedList[assessmentIndex].EntityId === recentlyUpdatedEntity.EntityId
            ) {
              isPresentFlag = false;
              if (updatedList[assessmentIndex].lastModified != recentlyUpdatedEntity.lastModified) {
                delete successArray[assessmentIndex];
                isPresentFlag = true;
              }
            }
          }
          isPresentFlag ? successArray.unshift(recentlyUpdatedEntity) : '';
          this.localStorage.setLocalStorage(
            'recentlyModifiedAssessment',
            successArray.filter((item) => item !== null).slice(0, 10)
          );
        })
        .catch(() => {
          this.localStorage.setLocalStorage('recentlyModifiedAssessment', [recentlyUpdatedEntity]);
        });
    }
    console.log('lastModifiedAssessment');
    return true;
  }
}