Merge "Yangman history and collections tab"
[dlux.git] / modules / yangman-resources / src / main / resources / yangman / services / requests.services.js
1 define(
2     [
3         'app/yangman/models/historylist.model',
4         'app/yangman/models/collectionlist.model',
5         'app/yangman/models/history-request.model',
6     ],
7     function (HistoryListModel, CollectionListModel, HistoryRequestModel) {
8         'use strict';
9
10         angular.module('app.yangman').service('RequestsService', RequestsService);
11
12         RequestsService.$inject = ['PathUtilsService', 'ParsingJsonService', 'YangUtilsService'];
13
14         function RequestsService(PathUtilsService, ParsingJsonService, YangUtilsService){
15
16             var service = {};
17
18             service.createEmptyCollectionList = createEmptyCollectionList;
19             service.createEmptyHistoryList = createEmptyHistoryList;
20             service.createHistoryRequestFromElement = createHistoryRequestFromElement;
21             service.createHistoryRequest = createHistoryRequest;
22             service.validateFile = validateFile;
23
24             /**
25              * Validating collection import file
26              * @param data
27              * @param checkArray
28              * @returns {*}
29              */
30             function validateFile(data, checkArray){
31                 try {
32                     var obj = ParsingJsonService.parseJson(data);
33
34                     return obj && obj.every(function (el){
35                         return checkArray.every(function (arr){
36                             return el.hasOwnProperty(arr);
37                         });
38                     });
39                 } catch (e) {
40                     return e;
41                 }
42             }
43
44             /**
45              * Service for creating basic history object
46              * @param sentData
47              * @param receivedData
48              * @param path
49              * @param parametrizedPath
50              * @param operation
51              * @param status
52              * @param name
53              * @param collection
54              * @param getApiFunction
55              * @returns {HistoryRequest}
56              */
57             function createHistoryRequest(sentData, receivedData, path, parametrizedPath, operation, status, name,
58                                           collection, timestamp, getApiFunction){
59
60                 var api = (getApiFunction || angular.noop)(path),
61                     receivedDataProcessed = status === 'success' ? receivedData : null,
62                     result = new HistoryRequestModel(PathUtilsService, YangUtilsService, ParsingJsonService);
63
64                 result.setData(sentData, receivedDataProcessed, status, path, parametrizedPath, operation, api, name,
65                     collection, timestamp);
66
67                 return result;
68             }
69
70             /**
71              * Creating {HistoryRequest} from elem containing all necessary data
72              * @param {Object} elem
73              * @param {function} getApiFunction
74              * @returns {HistoryRequest}
75              */
76             function createHistoryRequestFromElement(elem, getApiFunction) {
77                 return service.createHistoryRequest(elem.sentData, elem.receivedData,
78                     elem.path, elem.parametrizedPath,
79                     elem.method, elem.status, elem.name,
80                     elem.collection, elem.timestamp, getApiFunction);
81             }
82
83             /**
84              * Service for creating empty collection list
85              * @param name
86              * @param getApiFunction
87              * @returns {CollectionList}
88              */
89             function createEmptyCollectionList(name, getApiFunction){
90                 var result = new CollectionListModel(ParsingJsonService, service);
91                 result.setName(name);
92                 result.setGetApiFunction(getApiFunction);
93                 return result;
94             }
95
96             /**
97              * Service for creating empty history list
98              * @param name
99              * @param getApiFunction
100              * @returns {HistoryList}
101              */
102             function createEmptyHistoryList(name, getApiFunction){
103                 var result = new HistoryListModel(ParsingJsonService, service);
104                 result.setName(name);
105                 result.setGetApiFunction(getApiFunction);
106                 return result;
107             }
108
109             return service;
110
111         }
112
113     });