'use strict'; app.controller('noteController', ['$scope', '$http', '$location', '$timeout', '$document', 'noteService', '$rootScope', function ($scope, $http, $location, $timeout, $document, noteService, $rootScope) { var commonErrorTitle = 'Oops!', commonErrorMessage = 'An error occurred while processing your request. Please, try again later.'; $scope.Note = { Id: null, ParentId: null, Title: null, Details: null , DateAdded:"", DomainId: "", NoteType: 0, CreatedBy :"" }; $scope.Notes = []; $scope.DomianId; $scope.ParentId; $scope.NoteType; $scope.SaveData; $scope.UserId; $scope.UserName; $scope.SuperUser = false; $scope.initView = function (DomianId, ParentId, NType, SaveData,ignoreCache) { if (!ParentId) return; if (!ignoreCache) { var notes = []; notes = noteService.LoadFromCache(ParentId); if (notes) { for (var i = 0; i < notes.length; i++) { $scope.Notes.push(notes[i]); } } } noteService.getNotesForEC(DomianId, ParentId).then(function (data) { if ($scope.Notes.length == 0) $scope.Notes = data.Notes; $scope.UserId = data.UserInfo.Id; $scope.UserName = data.UserInfo.Name; $scope.SuperUser = data.SuperUser; }); $scope.DomianId = DomianId; $scope.ParentId = ParentId; $scope.NoteType = NType; $scope.SaveData = SaveData; } $scope.init = function (data) { if (!data) return; noteService.getNotesForEC(data.DomainId,data.ParentId).then(function (data) { $scope.Notes = data.Notes; $scope.UserId = data.UserInfo.Id; $scope.UserName = data.UserInfo.Name; $scope.SuperUser = data.SuperUser; }); $scope.DomianId = scenarioId; $scope.ParentId = ECId; $scope.NoteType = nType; }; $scope.ViewNote = function (NoteId) { noteService.getNote(NoteId); }; $scope.AddNote = function (ModalId) { var n = angular.copy($scope.Note); if (!n) return; $scope.HidePopupWindow(ModalId); n.ParentId = $scope.ParentId; n.DomainId = $scope.DomianId; n.NoteType = $scope.NoteType; n.CreatedBy = $scope.UserName; var date = new Date(); n.DateAdded = (date.getMonth() + 1) + '/' + date.getDate() + '/' + date.getFullYear() if (!n.Id) n.Id = Math.uuid(); var nIdx=NoteIndex(n); if (nIdx < 0) $scope.Notes.push(n); else $scope.Notes.splice(nIdx,1,n); if ($scope.SaveData) { noteService.EditNote(n); } else { noteService.CacheData(n); $rootScope.$broadcast('NoteAdded', n); } }; $scope.DeleteNote = function (n,ModalId) { if (!n) return; var idx = NoteIndex(n); if (idx < 0) return; $scope.Notes.splice(idx, 1); noteService.RemoveFromCache(n); if ($scope.Notes.length == 0) $scope.HidePopupWindow(ModalId); if ($scope.SaveData) noteService.RemoveNote(n.Id); else { $rootScope.$broadcast('NoteRemoved', n); } } $scope.openNoteModal = function (n) { if (!n) $scope.Reset(); else $scope.Note = angular.copy(n); $scope.$apply }; $scope.Reset= function(){ $scope.Note.Id=""; $scope.Note.ParentId = $scope.ParentId; $scope.Note.DomainId = $scope.DomianId; $scope.Note.NoteType = $scope.NoteType; $scope.Note.CreatedBy = $scope.UserName; $scope.Note.Title = ""; $scope.Note.Details = ""; $scope.Note.DateAdded=""; }; $scope.HidePopupWindow = function (WindowId) { if ($('#' + WindowId + $scope.ParentId).length) $('#' + WindowId + $scope.ParentId).modal('hide'); else if ($('#' + WindowId).length) $('#' + WindowId).modal('hide'); $scope.Reset(); } $scope.$on('removeNote', function (event, data) { var _notesToDelete = angular.copy($scope.Notes); if (!data.DomainId) { for (var i = 0; i < _notesToDelete.length; i++) { if (_notesToDelete[i].ParentId == data.ParentId) { $scope.DeleteNote(_notesToDelete[i]); } } } else { for (var i = 0; i < _notesToDelete.length; i++) { if (_notesToDelete[i].DomainId == data.ParentId) { $scope.DeleteNote(_notesToDelete[i]); } } } }); $scope.$on('removeNoteCB', function (event, data) { var _notesToDelete = angular.copy($scope.Notes); if (!data.DomainId) { for (var i = 0; i < _notesToDelete.length; i++) { if (_notesToDelete[i].ParentId == data.ParentId) { $rootScope.$broadcast('NoteRemoved', _notesToDelete[i]); noteService.RemoveFromCache(_notesToDelete[i]); } } } else { for (var i = 0; i < _notesToDelete.length; i++) { if (_notesToDelete[i].DomainId == data.ParentId) { $rootScope.$broadcast('NoteRemoved', _notesToDelete[i]); noteService.RemoveFromCache(_notesToDelete[i]); } } } }); function NoteIndex(n) { for (var i = 0; i < $scope.Notes.length; i++) { if ($scope.Notes[i].Id == n.Id) { return i; } } return -1 } }]);