eHealthAfrica/direct-delivery-dashboard

View on GitHub
src/app/facility/reports/reports.controller.js

Summary

Maintainability
A
1 hr
Test Coverage
'use strict'

angular.module('facility')
  .controller('FacilityReportsCtrl', function (facilityService, log, $scope, authService) {
    var vm = this

    vm.facilityStatus = {}
    vm.updateStatus = function (report) {
      var facility = vm.locations.facility[report._id]
      facility.cceStatus = facility.cceStatus || []
      var status = {
        status: !vm.facilityStatus[report._id].status,
        date: new Date().toJSON()
      }

      facility.cceStatus.push(status)
      facilityService.save(facility)
        .then(function () {
          vm.facilityStatus[report._id].status = status.status
          vm.facilityStatus[report._id].date = status.date
          updateView()
        })
        .catch(function (err) {
          log.error('updateCCEStatusErr', err)
        })
    }

    function updateView () {
      authService.getUserSelectedState(true)
        .then(function (state) {
          facilityService.getStateLocations(state)
            .then(function (response) {
              vm.facilities = response.facilities.filter(function (row) {
                return !row.status.status
              })
              vm.locations = response.locations
              setStatus(response.facilities)
            })
            .catch(function (err) {
              log.error('unknownError', err)
            })
        })
    }

    function setStatus (facilities) {
      var i = facilities.length
      while (i--) {
        vm.facilityStatus[facilities[i]._id] = facilities[i].status
      }
    }
    updateView()

    $scope.$on('stateChanged', function (event, data) {
      updateView()
    })
  })