/*
** Views/Partial/LCA/BOM.cshtml is using this controller
*/
angular.module('CarbonFootprint')
.controller('ItemDeliveryController', ['$scope', '$http', '$routeParams', 'Notification', 'JoinSurveyItemAndParameter', 'MultiLanguageService', '$q','$filter',
function ($scope, $http, $routeParams, Notification, JoinService, MultiLanguageService, $q ,$filter) {
// Multi-language resource object
var resource,
inited = false;
const LANDKGCO2E = 0.235;
const SEAKGCO2E = 0.0198;
const AIRKGCO2E = 0.0198;
// This property controlls modal form, will be passed to table-edit-modal directive
$scope.modalFormOption = {};
$scope.model = [];
// set $scope.baseUrl
var baseUrl = $scope.baseUrl;
if (typeof (baseUrl) === 'undefined' || baseUrl == null) {
var arr = window.location.href.split("/");
if (arr[3].indexOf('app') == 0)
baseUrl = '';
else
baseUrl = '/' + arr[3];
$scope.baseUrl = baseUrl;
}
$scope.changeTotalWeight = function (toBeEdit) {
toBeEdit.TotalWeightT = toBeEdit.TotalWeightKg / 1000;
toBeEdit.TransportTkmland = toBeEdit.TotalWeightT * toBeEdit.TransportLand;
toBeEdit.TransportTkmland3 = toBeEdit.TotalWeightT * (toBeEdit.TransportTkmland3 || 0);
toBeEdit.TotalTkmland = toBeEdit.TransportTkmland + toBeEdit.TransportTkmland3;
toBeEdit.TransportLandCo2e = toBeEdit.TotalTkmland * LANDKGCO2E;
toBeEdit.TransportTkmsea = toBeEdit.TotalWeightT * toBeEdit.TransportSea;
toBeEdit.TransportSeaCo2e = toBeEdit.TransportTkmsea * SEAKGCO2E;
toBeEdit.TransportTkmair = toBeEdit.TotalWeightT * toBeEdit.TransportAir;
toBeEdit.TransportAirCo2e = toBeEdit.TransportTkmair * AIRKGCO2E;
};
$scope.changeTransportLand = function (toBeEdit) {
toBeEdit.TransportTkmland = toBeEdit.TotalWeightT * toBeEdit.TransportLand;
toBeEdit.TotalTkmland = toBeEdit.TransportTkmland + (toBeEdit.TransportTkmland3 || 0);
toBeEdit.TransportLandCo2e = toBeEdit.TotalTkmland * LANDKGCO2E;
};
$scope.changeTransportSea = function (toBeEdit) {
toBeEdit.TransportTkmsea = toBeEdit.TotalWeightT * toBeEdit.TransportSea;
toBeEdit.TransportSeaCo2e = toBeEdit.TransportTkmsea * SEAKGCO2E;
};
$scope.changeTransportAir = function (toBeEdit) {
toBeEdit.TransportTkmair = toBeEdit.TotalWeightT * toBeEdit.TransportAir;
toBeEdit.TransportAirCo2e = toBeEdit.TransportTkmair * AIRKGCO2E;
};
$scope.changeTransportLand3 = function (toBeEdit) {
toBeEdit.TransportTkmland3 = toBeEdit.TotalWeightT * toBeEdit.TransportLand3;
toBeEdit.TotalTkmland = toBeEdit.TransportTkmland + toBeEdit.TransportTkmland3;
toBeEdit.TransportLandCo2e = toBeEdit.TotalTkmland * LANDKGCO2E;
};
$scope.createProcess = function () {
// Create an object & select it
var toBeCreated = {};
toBeCreated.ID = 0;
toBeCreated.LCAID = $routeParams.LCAID;
toBeCreated.TransportAir = 0;
toBeCreated.TransportTkmair = 0;
toBeCreated.TransportAirCo2e = 0;
// just for testing
//toBeCreated.MaterialNo = '8033-2588-00B';
//toBeCreated.ModelName = 'WA-36N12RUGK-AAAC';
//toBeCreated.Fab = '2611(亞榮源)';
//toBeCreated.DeliveryAmount = 123482;
//toBeCreated.TotalWeightKg = 27912;
//toBeCreated.TotalWeightT = 27.912;
//toBeCreated.DeliveryAddr = '台湾新竹科学园工业园区新安路5号';
//toBeCreated.TransportLand = 50;
//toBeCreated.TransportSea = 809.324;
//toBeCreated.TransportLand3 = 120;
//toBeCreated.TransportTkmland = 1395.6;
//toBeCreated.TransportTkmsea = 22589.85149;
//toBeCreated.TransportTkmland3 = 3349.44;
//toBeCreated.TotalTkmland = 4745.04;
//toBeCreated.TransportLandCo2e = 1115.0844;
//toBeCreated.TransportSeaCo2e = 447.2790595;
//toBeCreated.TradeCondition = '货交客户台湾工厂';
// For modal form
$scope.selectRow.toBeEdit = toBeCreated;
$scope.modalFormOption.show = true;
$scope.save = function () {
if (!validateModel(toBeCreated)) {
return;
}
$http.post($scope.baseUrl+'/api/ItemDelivery/Save/' + $routeParams.LCAID + "/" + toBeCreated.ID, toBeCreated)
.success(function (data) {
$scope.model.unshift(data);
$scope.modalFormOption.show = false;
})
.error(function (error) {
console.log(error);
Notification.error({ message: error.ExceptionMessage, positionX: 'center', delay: 3000 });
});
};
};
$scope.editProcess = function (selected) {
var toBeEdit = $scope.selectRow.toBeEdit = angular.copy(selected);
toBeEdit.TravelDate = $filter('date')(toBeEdit.TravelDate, 'yyyy/MM/dd');
$scope.modalFormOption.show = true;
$scope.save = function () {
if (!validateModel(toBeEdit)) {
return;
}
$http.post($scope.baseUrl+'/api/ItemDelivery/Save/' + toBeEdit.LCAID + "/" + toBeEdit.ID, toBeEdit)
.success(function (data) {
angular.copy(data, selected);
$scope.modalFormOption.show = false;
})
.error(function (error) {
console.log(error);
Notification.error({ message: error.ExceptionMessage, positionX: 'center', delay: 3000 });
});
};
};
$scope.deleteProcess = function (selected) {
var isConfirm = confirm(resource.DeleteItemMsg);
if (isConfirm) {
$http.delete($scope.baseUrl+"/api/ItemDelivery/Delete/" + selected.ID)
.success(function () {
var index = $scope.model.indexOf(selected);
$scope.model.splice(index, 1);
// This operate is base on selectRow directive in TableEdit.js file
$scope.selectRow.unSelect();
});
}
};
$scope.$on('changeSelectedTab', function (event, args) {
if (!inited && args.selectedTab == 'ItemDelivery') {
inited = true;
// Get data and prepare $scope.model
getAllDataAsync($routeParams.LCAID)
.then(function (response) {
$scope.model = response.Purchases;
}, function (error) {
console.log(error);
});
// Get multilanguage resource
MultiLanguageService.getResourceAsync()
.then(function (response) {
resource = response;
}, function (error) {
console.log(error);
});
}
});
/**
* Get all list data from server
* @param {[Int]} : LCAID
* @return {[promise]}
*/
function getAllDataAsync(LCAID) {
var deferred = $q.defer();
$http.get($scope.baseUrl+'/api/ItemDelivery/GetByLcaId/' + LCAID)
.success(function (data) {
deferred.resolve(data);
})
.error(function () {
deferred.resolve(null);
})
return deferred.promise;
}
function validateModel(model) {
model.TransportSea = model.TransportSea || 0;
model.TransportTkmsea = model.TransportTkmsea || 0;
model.TransportSeaCo2e = model.TransportSeaCo2e || 0;
model.TransportAir = model.TransportAir || 0;
model.TransportTkmair = model.TransportTkmair || 0;
model.TransportAirCo2e = model.TransportAirCo2e || 0;
model.TransportLand3 = model.TransportLand3 || 0;
if (model.TransportLand3 > 0 && model.TransportSea == 0 && model.TransportAir == 0) {
Notification.error({ message: '路程二海運或空运必须填一项内容', positionX: 'center', delay: 3000 });
return false;
}
if (model.TransportSea > 0 && model.TransportAir > 0) {
Notification.error({ message: '路程二海運或空运只能填一项内容', positionX: 'center', delay: 3000 });
return false;
}
return true;
}
}]);