angular.module('odoo')
/**
*
*/
.controller('OpportunitiesController', function (
$scope,
$ionicActionSheet,
$ionicPopup,
crmStagesDataFactory,
opportunitiesDataFactory,
ionicToast
) {
$scope.loading = false;
$scope.stages = [];
$scope.opportunities = [];
$scope.currentStage = {};
$scope.stageToMove = {};
$scope.selected = -1;
/**
*
*/
$scope.$on("$ionicSlides.sliderInitialized", function (event, data) {
$scope.slider = data.slider;
});
/**
*
*/
$scope.$on("$ionicSlides.slideChangeEnd", function (event, data) {
$scope.stageChanged(data.slider.activeIndex);
});
/**
*
*/
$scope.$on("$ionicView.enter", function () {
$scope.initialize();
});
/**
*
*/
$scope.initialize = function () {
$scope.loading = true;
$scope.getStages(function (stages) {
$scope.slider.updateLoop();
$scope.getOpportunities(function (opportunities) {
console.log(opportunities);
$scope.loading = false;
$scope.$apply();
}, function (err) {
$scope.loading = false;
});
}, function (err) {
$scope.loading = false;
});
}
/**
*
*/
$scope.getStages = function (success, error) {
crmStagesDataFactory.sync(function (stages) {
$scope.stages = stages;
$scope.stageChanged(0);
success(stages);
}, function (syncErr) {
crmStagesDataFactory.getAll(function (stages) {
$scope.stages = stages;
$scope.stageChanged(0);
success(stages);
}, function (getAllErr) {
error(getAllErr);
});
});
}
/**
*
*/
$scope.getOpportunities = function (success, error) {
opportunitiesDataFactory.sync(function (opportunities) {
$scope.opportunities = opportunities;
success(opportunities);
}, function (syncErr) {
opportunitiesDataFactory.getAll(function (opportunities) {
$scope.opportunities = opportunities;
success(opportunities);
}, function (getAllErr) {
error(getAllErr);
});
});
}
/**
* Change the state
*/
$scope.changeStage = function (mode) {
$scope.loading = true;
if (mode) {
$scope.slider.slideNext();
} else {
$scope.slider.slidePrev();
}
$scope.loading = false;
}
/**
* Change stage name on title
*/
$scope.stageChanged = function (index) {
if (!$scope.stages.length) {
return;
}
$scope.currentStage = $scope.stages[index];
if (!$scope.$$phase) {
$scope.$apply();
}
}
/**
* Show availables stages to move
*/
$scope.showStagesToMove = function () {
$ionicPopup.show({
scope: $scope,
title: 'Mover a',
templateUrl: 'templates/sales/crm-stages.html',
buttons: [
{
text: 'Mover',
type: 'button-positive',
onTap: function (e) {
// console.log(e);
$scope.moveOpportunity();
}
},
{
text: 'Cancelar',
type: 'button-default',
onTap: function (e) {
// e.preventDefault();
}
}
]
});
}
/**
*
*/
$scope.selectStageToMove = function (index) {
$scope.stageToMove = $scope.stages[index];
}
/**
* Move opportunity to stage
*/
$scope.moveOpportunity = function () {
console.log($scope.stageToMove);
ionicToast.show('Se moviĆ³ la oportunidad ', 'bottom', false, 1500);
}
/**
* Open the actionsheet action options
*/
$scope.openOptions = function (index) {
$scope.selected = index;
$ionicActionSheet.show({
titleText: 'Acciones',
buttons: [
{
text: ' Abrir'
},
{
text: ' Mover a'
}
],
destructiveText: ' Eliminar',
cancel: function () {
$scope.customer = {};
$scope.selected = -1;
},
buttonClicked: function (index) {
switch (index) {
case 0:
$scope.show();
break;
case 1:
$scope.showStagesToMove();
break;
default:
$scope.show();
}
return true;
},
destructiveButtonClicked: function () {
$scope.delete();
return true;
}
});
}
});