Passed
Push — master ( e9940e...51e4e4 )
by
unknown
10:48 queued 26s
created

myems-admin/app/controllers/settings/energystoragecontainer/energystoragecontainer.controller.js   B

Complexity

Total Complexity 47
Complexity/F 1.27

Size

Lines of Code 394
Function Count 37

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
wmc 47
eloc 272
dl 0
loc 394
rs 8.64
c 0
b 0
f 0
mnd 10
bc 10
fnc 37
bpm 0.2702
cpm 1.2702
noi 0

How to fix   Complexity   

Complexity

Complex classes like myems-admin/app/controllers/settings/energystoragecontainer/energystoragecontainer.controller.js often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
"use strict";
2
3
app.controller(
4
  "EnergyStorageContainerController",
5
  function (
6
    $scope,
7
    $rootScope,
8
    $window,
9
    $translate,
10
    $uibModal,
11
    CostCenterService,
12
    ContactService,
13
    EnergyStorageContainerService,
14
    PointService,
15
    toaster,
16
    SweetAlert
17
  ) {
18
    $scope.cur_user = JSON.parse(
19
      $window.localStorage.getItem("myems_admin_ui_current_user")
20
    );
21
    $scope.getAllCostCenters = function () {
22
      let headers = {
23
        "User-UUID": $scope.cur_user.uuid,
24
        Token: $scope.cur_user.token,
25
      };
26
      CostCenterService.getAllCostCenters(headers, function (response) {
27
        if (angular.isDefined(response.status) && response.status === 200) {
28
          $scope.costcenters = response.data;
29
        } else {
30
          $scope.costcenters = [];
31
        }
32
      });
33
    };
34
35
    $scope.getAllContacts = function () {
36
      let headers = {
37
        "User-UUID": $scope.cur_user.uuid,
38
        Token: $scope.cur_user.token,
39
      };
40
      ContactService.getAllContacts(headers, function (response) {
41
        if (angular.isDefined(response.status) && response.status === 200) {
42
          $scope.contacts = response.data;
43
        } else {
44
          $scope.contacts = [];
45
        }
46
      });
47
    };
48
49
    $scope.getAllEnergyStorageContainers = function () {
50
      let headers = {
51
        "User-UUID": $scope.cur_user.uuid,
52
        Token: $scope.cur_user.token,
53
      };
54
      EnergyStorageContainerService.getAllEnergyStorageContainers(
55
        headers,
56
        function (response) {
57
          if (angular.isDefined(response.status) && response.status === 200) {
58
            $scope.energystoragecontainers = response.data;
59
          } else {
60
            $scope.energystoragecontainers = [];
61
          }
62
        }
63
      );
64
    };
65
    
66
    $scope.exportEnergyStorageContainer = function (container) {
67
      let headers = {
68
        "User-UUID": $scope.cur_user.uuid,
69
        "Token": $scope.cur_user.token,
70
      };
71
      EnergyStorageContainerService.exportEnergyStorageContainer(container, headers, function (response) {
72
        if (angular.isDefined(response.status) && response.status === 200) {
73
          $scope.exportdata = JSON.stringify(response.data); 
74
          var modalInstance = $uibModal.open({
75
            windowClass: "animated fadeIn",
76
            templateUrl: "views/common/export.html",
77
            controller: "ModalExportCtrl",
78
            resolve: {
79
              params: function () {
80
                return {
81
                  exportdata: angular.copy($scope.exportdata),
82
                };
83
              },
84
            },
85
          });
86
          $rootScope.modalInstance = modalInstance;
87
        } else {
88
          $scope.exportdata = null;
89
        }
90
      });
91
    };
92
    $scope.importEnergyStorageContainer = function () {
93
      var modalInstance = $uibModal.open({
94
        templateUrl: 'views/common/import.html',
95
        controller: 'ModalImportCtrl',
96
        windowClass: "animated fadeIn",
97
        resolve: {
98
          params: function () {
99
            return {};
100
          }
101
        }
102
      });
103
104
      modalInstance.result.then(function (importdata) {
105
        let headers = { 
106
          "User-UUID": $scope.cur_user.uuid, 
107
          "Token": $scope.cur_user.token 
108
        };
109
        EnergyStorageContainerService.importEnergyStorageContainer(importdata, headers, function (response) {
110
          if (angular.isDefined(response.status) && response.status === 201) {
111
            toaster.pop({
112
              type: "success",
113
              title: $translate.instant("TOASTER.SUCCESS_TITLE"),
114
              body: $translate.instant("TOASTER.SUCCESS_ADD_BODY", {
115
                template: $translate.instant("COMMON.ENERGY_STORAGE_CONTAINER")
116
              }),
117
              showCloseButton: true,
118
            });
119
            $scope.getAllEnergyStorageContainers();
120
            $scope.$emit('handleEmitEnergyStorageContainerChanged');
121
          } else {
122
            toaster.pop({
123
              type: "error",
124
              title: $translate.instant("TOASTER.ERROR_ADD_BODY", {
125
                template: $translate.instant("COMMON.ENERGY_STORAGE_CONTAINER")
126
              }),
127
              body: $translate.instant(response.data.description),
128
              showCloseButton: true,
129
            });
130
          }
131
        });
132
      }, function () {
133
        // do nothing
134
      });
135
136
      $rootScope.modalInstance = modalInstance;
137
    };
138
139
    $scope.cloneEnergyStorageContainer = function(energystoragecontainer){
140
		let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
141
		EnergyStorageContainerService.cloneEnergyStorageContainer(energystoragecontainer, headers, function(response) {
142
			if (angular.isDefined(response.status) && response.status === 201) {
143
				toaster.pop({
144
					type: "success",
145
					title: $translate.instant("TOASTER.SUCCESS_TITLE"),
146
					body: $translate.instant("TOASTER.SUCCESS_ADD_BODY", {template: $translate.instant("COMMON.ENERGY_STORAGE_CONTAINER")}),
147
					showCloseButton: true,
148
				});
149
				$scope.getAllEnergyStorageContainers();
150
				$scope.$emit('handleEmitEnergyStorageContainerChanged');
151
			}else {
152
				toaster.pop({
153
					type: "error",
154
					title: $translate.instant("TOASTER.ERROR_ADD_BODY", {template: $translate.instant("COMMON.ENERGY_STORAGE_CONTAINER")}),
155
					body: $translate.instant(response.data.description),
156
					showCloseButton: true,
157
				});
158
			}
159
		});
160
	};
161
162
    $scope.addEnergyStorageContainer = function () {
163
      var modalInstance = $uibModal.open({
164
        templateUrl:
165
          "views/settings/energystoragecontainer/energystoragecontainer.model.html",
166
        controller: "ModalAddEnergyStorageContainerCtrl",
167
        windowClass: "animated fadeIn",
168
        resolve: {
169
          params: function () {
170
            return {
171
              costcenters: angular.copy($scope.costcenters),
172
              contacts: angular.copy($scope.contacts),
173
            };
174
          },
175
        },
176
      });
177
      modalInstance.result.then(
178
        function (energystoragecontainer) {
179
          energystoragecontainer.cost_center_id =
180
            energystoragecontainer.cost_center.id;
181
          energystoragecontainer.contact_id = energystoragecontainer.contact.id;
182
183
          let headers = {
184
            "User-UUID": $scope.cur_user.uuid,
185
            Token: $scope.cur_user.token,
186
          };
187
          EnergyStorageContainerService.addEnergyStorageContainer(
188
            energystoragecontainer,
189
            headers,
190
            function (response) {
191
              if (
192
                angular.isDefined(response.status) &&
193
                response.status === 201
194
              ) {
195
                toaster.pop({
196
                  type: "success",
197
                  title: $translate.instant("TOASTER.SUCCESS_TITLE"),
198
                  body: $translate.instant("TOASTER.SUCCESS_ADD_BODY", {
199
                    template: $translate.instant(
200
                      "COMMON.ENERGY_STORAGE_CONTAINER"
201
                    ),
202
                  }),
203
                  showCloseButton: true,
204
                });
205
                $scope.$emit("handleEmitEnergyStorageContainerChanged");
206
              } else {
207
                toaster.pop({
208
                  type: "error",
209
                  title: $translate.instant("TOASTER.ERROR_ADD_BODY", {
210
                    template: $translate.instant(
211
                      "COMMON.ENERGY_STORAGE_CONTAINER"
212
                    ),
213
                  }),
214
                  body: $translate.instant(response.data.description),
215
                  showCloseButton: true,
216
                });
217
              }
218
            }
219
          );
220
        },
221
        function () {}
222
      );
223
      $rootScope.modalInstance = modalInstance;
224
    };
225
226
    $scope.editEnergyStorageContainer = function (energystoragecontainer) {
227
      var modalInstance = $uibModal.open({
228
        windowClass: "animated fadeIn",
229
        templateUrl:
230
          "views/settings/energystoragecontainer/energystoragecontainer.model.html",
231
        controller: "ModalEditEnergyStorageContainerCtrl",
232
        resolve: {
233
          params: function () {
234
            return {
235
              energystoragecontainer: angular.copy(energystoragecontainer),
236
              costcenters: angular.copy($scope.costcenters),
237
              contacts: angular.copy($scope.contacts),
238
            };
239
          },
240
        },
241
      });
242
243
      modalInstance.result.then(
244
        function (modifiedEnergyStorageContainer) {
245
          modifiedEnergyStorageContainer.cost_center_id =
246
            modifiedEnergyStorageContainer.cost_center.id;
247
          modifiedEnergyStorageContainer.contact_id =
248
            modifiedEnergyStorageContainer.contact.id;
249
250
          let headers = {
251
            "User-UUID": $scope.cur_user.uuid,
252
            Token: $scope.cur_user.token,
253
          };
254
          EnergyStorageContainerService.editEnergyStorageContainer(
255
            modifiedEnergyStorageContainer,
256
            headers,
257
            function (response) {
258
              if (
259
                angular.isDefined(response.status) &&
260
                response.status === 200
261
              ) {
262
                toaster.pop({
263
                  type: "success",
264
                  title: $translate.instant("TOASTER.SUCCESS_TITLE"),
265
                  body: $translate.instant("TOASTER.SUCCESS_UPDATE_BODY", {
266
                    template: $translate.instant(
267
                      "COMMON.ENERGY_STORAGE_CONTAINER"
268
                    ),
269
                  }),
270
                  showCloseButton: true,
271
                });
272
                $scope.$emit("handleEmitEnergyStorageContainerChanged");
273
              } else {
274
                toaster.pop({
275
                  type: "error",
276
                  title: $translate.instant("TOASTER.ERROR_UPDATE_BODY", {
277
                    template: $translate.instant(
278
                      "COMMON.ENERGY_STORAGE_CONTAINER"
279
                    ),
280
                  }),
281
                  body: $translate.instant(response.data.description),
282
                  showCloseButton: true,
283
                });
284
              }
285
            }
286
          );
287
        },
288
        function () {
289
          //do nothing;
290
        }
291
      );
292
      $rootScope.modalInstance = modalInstance;
293
    };
294
295
    $scope.deleteEnergyStorageContainer = function (energystoragecontainer) {
296
      SweetAlert.swal(
297
        {
298
          title: $translate.instant("SWEET.TITLE"),
299
          text: $translate.instant("SWEET.TEXT"),
300
          type: "warning",
301
          showCancelButton: true,
302
          confirmButtonColor: "#DD6B55",
303
          confirmButtonText: $translate.instant("SWEET.CONFIRM_BUTTON_TEXT"),
304
          cancelButtonText: $translate.instant("SWEET.CANCEL_BUTTON_TEXT"),
305
          closeOnConfirm: true,
306
          closeOnCancel: true,
307
        },
308
        function (isConfirm) {
309
          if (isConfirm) {
310
            let headers = {
311
              "User-UUID": $scope.cur_user.uuid,
312
              Token: $scope.cur_user.token,
313
            };
314
            EnergyStorageContainerService.deleteEnergyStorageContainer(
315
              energystoragecontainer,
316
              headers,
317
              function (response) {
318
                if (
319
                  angular.isDefined(response.status) &&
320
                  response.status === 204
321
                ) {
322
                  toaster.pop({
323
                    type: "success",
324
                    title: $translate.instant("TOASTER.SUCCESS_TITLE"),
325
                    body: $translate.instant("TOASTER.SUCCESS_DELETE_BODY", {
326
                      template: $translate.instant(
327
                        "COMMON.ENERGY_STORAGE_CONTAINER"
328
                      ),
329
                    }),
330
                    showCloseButton: true,
331
                  });
332
                  $scope.$emit("handleEmitEnergyStorageContainerChanged");
333
                } else {
334
                  toaster.pop({
335
                    type: "error",
336
                    title: $translate.instant("TOASTER.ERROR_DELETE_BODY", {
337
                      template: $translate.instant(
338
                        "COMMON.ENERGY_STORAGE_CONTAINER"
339
                      ),
340
                    }),
341
                    body: $translate.instant(response.data.description),
342
                    showCloseButton: true,
343
                  });
344
                }
345
              }
346
            );
347
          }
348
        }
349
      );
350
    };
351
    $scope.getAllEnergyStorageContainers();
352
    $scope.getAllCostCenters();
353
    $scope.getAllContacts();
354
    $scope.$on(
355
      "handleBroadcastEnergyStorageContainerChanged",
356
      function (event) {
357
        $scope.getAllEnergyStorageContainers();
358
      }
359
    );
360
  }
361
);
362
363
app.controller(
364
  "ModalAddEnergyStorageContainerCtrl",
365
  function ($scope, $uibModalInstance, params) {
366
    $scope.operation = "SETTING.ADD_ENERGY_STORAGE_CONTAINER";
367
    $scope.costcenters = params.costcenters;
368
    $scope.contacts = params.contacts;
369
    $scope.ok = function () {
370
      $uibModalInstance.close($scope.energystoragecontainer);
371
    };
372
373
    $scope.cancel = function () {
374
      $uibModalInstance.dismiss("cancel");
375
    };
376
  }
377
);
378
379
app.controller(
380
  "ModalEditEnergyStorageContainerCtrl",
381
  function ($scope, $uibModalInstance, params) {
382
    $scope.operation = "SETTING.EDIT_ENERGY_STORAGE_CONTAINER";
383
    $scope.energystoragecontainer = params.energystoragecontainer;
384
    $scope.costcenters = params.costcenters;
385
    $scope.contacts = params.contacts;
386
    $scope.ok = function () {
387
      $uibModalInstance.close($scope.energystoragecontainer);
388
    };
389
390
    $scope.cancel = function () {
391
      $uibModalInstance.dismiss("cancel");
392
    };
393
  }
394
);
395