Skip to content

Instantly share code, notes, and snippets.

@alexey-sh
Last active August 29, 2015 14:23
Show Gist options
  • Save alexey-sh/7eabcb100041460e88d3 to your computer and use it in GitHub Desktop.
Save alexey-sh/7eabcb100041460e88d3 to your computer and use it in GitHub Desktop.
all is clear for me now
orders_list_app.constant('User', {
auth : ('False' == 'True') ? true : false,
contractor : ('' == 'True') ? true : false,
user_id : ('False' == 'True') ? None : false
});
$scope.go = function(data){
$scope.newOrdersAmount = null;
if(!User.auth){
if(data.category_id){
$scope.currentCategory = data.category_id;
} else if(data.region_id){
$scope.currentRegion = data.region_id;
}
} else if(User.auth && !User.contractor){
if(data.category_id){
if($scope.currentCategory){
var currentCategoriesArr = $scope.currentCategory.toString().split(','),
index = _.indexOf(currentCategoriesArr, data.category_id.toString());
if(index != -1){
currentCategoriesArr.splice(index, 1);
} else {
currentCategoriesArr.push(data.category_id);
}
$scope.currentCategory = currentCategoriesArr.join(',');
} else {
$scope.currentCategory = data.category_id;
}
} else if(data.region_id){
$scope.currentRegion = data.region_id;
}
} else if(User.auth && User.contractor){
if(docCookies.hasItem("filterId_"+User.user_id)){ // удаляем фильтр из куки, если есть
docCookies.removeItem("filterId_"+User.user_id);
}
delete $scope.myOrdersFilter;
delete $scope.myOffersFilter;
delete $scope.openedOrdersFilter;
delete $scope.closedOrdersFilter;
delete $scope.currentFilter;
delete $scope.currentFilterObject;
delete $scope.filterDescription;
if(data.only){
$scope.myOrdersFilter = true;
$interval.cancel($scope.inervalPromise);
$scope.inervalPromise = null;
} else if(data.is_published){
$scope.openedOrdersFilter = true;
} else if(data.is_closed){
$scope.closedOrdersFilter = true;
} else if(data.my_offers){
$scope.myOffersFilter = true;
$interval.cancel($scope.inervalPromise);
$scope.inervalPromise = null;
}
}
if($scope.currentPage != 1){ // при изменении количества категорий, если мы не на первой странице переходим на неё
$scope.currentPage = 1;
}
$scope.loadOrders();
};
function further(){
if(User.auth && User.contractor) { // если мастер
if($scope.myOffersFilter){
orders_params.my_offers = true;
orders = MyOffers.query(orders_params).$promise,
orders_amount = MyOffersNum.query().$promise;
$scope.mainTitle = "С моим ответом";
} else {
if($scope.currentFilter){
orders_params.filter_id = $scope.currentFilter;
orders_num_params.filter_id = $scope.currentFilter;
} else if($scope.myOrdersFilter){
orders_params.only = 'my';
orders_num_params.only = 'my';
$scope.mainTitle = "Мои заказы";
} else if($scope.closedOrdersFilter){
orders_params.is_published = false;
orders_num_params.is_published = false;
$scope.mainTitle = "Закрытые заказы";
} else if($scope.openedOrdersFilter){
orders_params.is_published = true;
orders_num_params.is_published = true;
$scope.mainTitle = "Открытые заказы";
} else {
$scope.mainTitle = "Все заказы";
}
orders = Orders.query(orders_params).$promise,
orders_amount = OrdersNum.query(orders_num_params).$promise
}
} else { // для всех остальных
if($scope.currentCategory) {
if(User.auth){
var arrCategories = $scope.currentCategory.toString().split(','), innerCategoryArr = [];
angular.forEach($scope.rootCategories, function(root_category){
angular.forEach(arrCategories, function(currentCategory){
if(root_category.id == currentCategory){
angular.forEach(root_category.categories, function(innerCategory){
innerCategoryArr.push(innerCategory.id);
});
}
});
});
orders_params.categories_id = innerCategoryArr.join(',');
orders_num_params.categories_id = innerCategoryArr.join(',');
} else {
angular.forEach($scope.rootCategories, function(root_category){
angular.forEach(root_category.categories, function(category){
if(category.id == $scope.currentCategory){
title = "Заказы из категории "+category.title;
}
});
});
orders_params.categories_id = $scope.currentCategory;
orders_num_params.categories_id = $scope.currentCategory;
}
};
if($scope.currentRegion){
orders_params.region_id = $scope.currentRegion;
orders_num_params.region_id = $scope.currentRegion;
Regions.query({region_id:$scope.currentRegion}, function(region){
$scope.currentRegionName = region[0].name;
if(!title){
if(User.auth){
$scope.mainTitle = 'Заказы, ' + $scope.currentRegionName;
} else {
$scope.mainTitle = 'Все заказы, ' + $scope.currentRegionName;
}
} else {
$scope.mainTitle = title + ', ' + $scope.currentRegionName;
}
});
orderQuery();
} else {
if(!title){
if(User.auth){
$scope.mainTitle = 'Заказы';
} else {
$scope.mainTitle = 'Все заказы';
}
} else {
$scope.mainTitle = title;
}
orderQuery();
}
}
if(first_load){ // подгружаем объемы и собственные заказы только при первой загрузке
budgets = Budgets.query().$promise;
if(User.auth && !User.contractor){
my_orders = Orders.query({only: "my"}).$promise;
}
}
$q.all([
orders,
orders_amount,
budgets,
my_orders
]).then(function(data) {
$scope.orders = data[0];
$scope.orders_amount = data[1].amount;
if(data[2]){
$scope.budgets = data[2];
}
if(data[3]){
$scope.my_orders = data[3];
}
if(first_load){
$scope.$emit('pageunload');
} else {
$scope.$emit('unload');
}
if(!$scope.inervalPromise && !orders_params.my_offers && !orders_params.only){
$scope.inervalPromise = $interval($scope.poll, 5000);
}
});
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment