/* ** 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; } }]);