1 | (function (ng) {
|
---|
2 | angular.module('search')
|
---|
3 | .factory('SearchService', ['$http', function ($http) {
|
---|
4 | var Search = function (searchObject) {
|
---|
5 | this.search = searchObject.search;
|
---|
6 | this.pageSize = searchObject.pageSize;
|
---|
7 | this.siteSections = searchObject.siteSections;
|
---|
8 | this.includeDocuments = searchObject.includeDocuments;
|
---|
9 | this.dateFrom = searchObject.dateFrom;
|
---|
10 | this.dateTo = searchObject.dateTo;
|
---|
11 | this.pageNumber = 1;
|
---|
12 | this.resultsCount = 0;
|
---|
13 | this.pagedResultsCount = 0;
|
---|
14 | this.results = [];
|
---|
15 | this.busy = false;
|
---|
16 | this.isSearchExhausted = function () {
|
---|
17 | return (this.pagedResultsCount == this.resultsCount) && this.resultsCount > 0;
|
---|
18 | };
|
---|
19 | };
|
---|
20 |
|
---|
21 | Search.prototype.nextPage = function () {
|
---|
22 | if (this.busy || this.isSearchExhausted()) {
|
---|
23 | return;
|
---|
24 | }
|
---|
25 |
|
---|
26 | this.busy = true;
|
---|
27 |
|
---|
28 | // Maps to our Web API search dto
|
---|
29 | var searchDto = angular.toJson({
|
---|
30 | Search: this.search,
|
---|
31 | SectionIds: this.siteSections != null ? this.siteSections : [],
|
---|
32 | PageNumber: this.pageNumber,
|
---|
33 | PageSize: this.pageSize,
|
---|
34 | DateFrom: getDate(this.dateFrom),
|
---|
35 | DateTo: getDate(this.dateTo),
|
---|
36 | IncludeDocuments: this.includeDocuments,
|
---|
37 | });
|
---|
38 |
|
---|
39 | $http({ cache: false, dataType: 'json', url: "/api/cms/PostSearchQuery", method: 'POST', data: searchDto })
|
---|
40 | .success(function (data) {
|
---|
41 | this.resultsCount = data.Count;
|
---|
42 | var items = data.Results;
|
---|
43 | for (var i = 0; i < items.length; i++) {
|
---|
44 | this.results.push(items[i]);
|
---|
45 | }
|
---|
46 | this.pagedResultsCount = this.pagedResultsCount + items.length;
|
---|
47 | this.pageNumber = this.pageNumber + 1;
|
---|
48 | this.busy = false;
|
---|
49 | }.bind(this));
|
---|
50 |
|
---|
51 | };
|
---|
52 |
|
---|
53 | return {
|
---|
54 | GetInstance: function (searchData) {
|
---|
55 | return new Search(searchData);
|
---|
56 | }
|
---|
57 | };
|
---|
58 |
|
---|
59 | function getDate(date) {
|
---|
60 | if (date instanceof Date) {
|
---|
61 | return date.toDateString();
|
---|
62 | }
|
---|
63 |
|
---|
64 | return "";
|
---|
65 | }
|
---|
66 |
|
---|
67 | }]);
|
---|
68 | })(angular); |
---|