Files
apps.supersamsev.ru/webroot/js/calcDoorsOrdersController.js

291 lines
11 KiB
JavaScript

supersamApp.controller('CalcDoorsOrdersController', [
'$scope',
'$http',
'$timeout',
'config',
'$filter',
function($scope,
$http,
$timeout,
config,
$filter) {
var calcDoorsOrders;
calcDoorsOrders = (function() {
class calcDoorsOrders {
constructor() {
this.takeOrderModal = this.takeOrderModal.bind(this);
this.takeOrder = this.takeOrder.bind(this);
this.confirmTakeOrder = this.confirmTakeOrder.bind(this);
this.getOrdersList = this.getOrdersList.bind(this);
this.adminDeleteOrder = this.adminDeleteOrder.bind(this);
this.adminTakeOrderModal = this.adminTakeOrderModal.bind(this);
this.adminTakeOrder = this.adminTakeOrder.bind(this);
this.confirmAdminTakeOrder = this.confirmAdminTakeOrder.bind(this);
this.openOrderReadyDatepicker = this.openOrderReadyDatepicker.bind(this);
this.printOrder = this.printOrder.bind(this);
$scope.utilities.showContentOnLoad();
}
takeOrderModal(action) {
$timeout(() => {
return angular.element("#takeOrderModal").modal(action);
});
return $scope.takeOrderForm.$setPristine();
}
takeOrder(order) {
this.takeOrderModalData = angular.copy(order);
this.orderReadyDatepickerOptions.minDate = new Date(order.created);
this.takeOrderModalData.ready_date = new Date();
this.takeOrderModalData.ready_date.setDate(this.takeOrderModalData.ready_date.getDate() + parseInt(config.common.orderReadyDateInterval.value));
return this.takeOrderModal("show");
}
confirmTakeOrder() {
var dataToSend;
if (!this.isTakeOrderSubmitting) {
this.isTakeOrderSubmitting = true;
dataToSend = {
id: this.takeOrderModalData.id,
ready_date: this.takeOrderModalData.ready_date
};
return $http({
method: 'POST',
url: config.urls.calcDoorsTakeOrder,
data: dataToSend,
timeout: 30000
}).then((response) => {
var data, key, order, ref;
this.isTakeOrderSubmitting = false;
if (response.data) {
data = response.data;
if (data.status && (data.status === "success")) {
ref = config.orders.list;
for (key in ref) {
order = ref[key];
if (order.id === this.takeOrderModalData.id) {
order.manager_id = data.manager_id;
order.taken_date = data.taken_date;
order.ready_date = data.ready_date;
}
}
this.takeOrderModal("hide");
toastr.success("Данный заказ взят Вами на исполнение");
return window.location = config.urls.calcDoorsDownloadOrderFiles.replace('12345', this.takeOrderModalData.id);
} else {
if (data.warning) {
toastr.warning(data.warning);
}
if (data.error) {
return toastr.warning(data.error);
}
}
}
}).catch(() => {
this.isTakeOrderSubmitting = false;
return toastr.error(config.global_labels.defaultErrorMessage.value);
});
}
}
getOrdersList() {
var dataToSend;
if (!this.isLoading) {
this.isLoading = true;
dataToSend = {
month: config.orders.month,
year: config.orders.year,
select: config.orders.select,
branchId: config.orders.branchId,
managerId: config.orders.managerId
};
return $http({
method: 'POST',
url: config.urls.calcDoorsGetOrdersList,
data: dataToSend,
timeout: 30000
}).then((response) => {
var data;
this.isLoading = false;
if (response.data) {
data = response.data;
if (data.status && (data.status === "success")) {
config.orders = data.orders;
return $timeout(() => {
return $('[data-toggle="popover"]').popover();
});
} else {
if (data.warning) {
toastr.warning(data.warning);
}
if (data.error) {
return toastr.warning(data.error);
}
}
}
}).catch(() => {
this.isLoading = false;
return toastr.error(config.global_labels.defaultErrorMessage.value);
});
}
}
adminDeleteOrder(adminDeleteOrder) {
var dataToSend;
if (!this.isTakeOrderSubmitting) {
if (confirm("Вы уверены, что хотите удалить данный заказ?")) {
this.isTakeOrderSubmitting = true;
dataToSend = {
id: adminDeleteOrder.id
};
return $http({
method: 'POST',
url: config.urls.calcDoorsAdminDeleteOrder,
data: dataToSend,
timeout: 30000
}).then((response) => {
var data, dupKey, dupOrderNum, key, order, ref, ref1, ref2;
this.isTakeOrderSubmitting = false;
if (response.data) {
data = response.data;
if (data.status && (data.status === "success")) {
ref = config.orders.list;
for (key in ref) {
order = ref[key];
if (order.possibleDuplicates) {
ref1 = order.possibleDuplicates;
for (dupKey in ref1) {
dupOrderNum = ref1[dupKey];
if (dupOrderNum === adminDeleteOrder.order_num) {
order.possibleDuplicates.splice(dupKey, 1);
}
}
}
}
ref2 = config.orders.list;
for (key in ref2) {
order = ref2[key];
if (order.id === adminDeleteOrder.id) {
config.orders.list.splice(key, 1);
}
}
return toastr.success("Заказ был успешно удалён");
} else {
if (data.warning) {
toastr.warning(data.warning);
}
if (data.error) {
return toastr.warning(data.error);
}
}
}
}).catch(() => {
this.isTakeOrderSubmitting = false;
return toastr.error(config.global_labels.defaultErrorMessage.value);
});
}
}
}
adminTakeOrderModal(action) {
$timeout(() => {
return angular.element("#adminTakeOrderModal").modal(action);
});
return $scope.adminTakeOrderForm.$setPristine();
}
adminTakeOrder(order) {
this.adminTakeOrderModalData = angular.copy(order);
this.adminTakeOrderModalData.current_manager_id = angular.copy(order.manager_id);
if (!this.adminTakeOrderModalData.ready_date) {
this.adminTakeOrderModalData.ready_date = new Date();
this.adminTakeOrderModalData.ready_date.setDate(this.adminTakeOrderModalData.ready_date.getDate() + parseInt(config.common.orderReadyDateInterval.value));
}
this.orderReadyDatepickerOptions.minDate = new Date(order.created);
return this.adminTakeOrderModal("show");
}
confirmAdminTakeOrder() {
var dataToSend;
if (!this.isTakeOrderSubmitting) {
dataToSend = {
id: this.adminTakeOrderModalData.id,
manager_id: this.adminTakeOrderModalData.manager_id,
ready_date: this.adminTakeOrderModalData.ready_date
};
return $http({
method: 'POST',
url: config.urls.calcDoorsAdminTakeOrder,
data: dataToSend,
timeout: 30000
}).then((response) => {
var data, key, order, ref;
this.isTakeOrderSubmitting = false;
if (response.data) {
data = response.data;
if (data.status && (data.status === "success")) {
ref = config.orders.list;
for (key in ref) {
order = ref[key];
if (order.id === this.adminTakeOrderModalData.id) {
order.manager_id = data.manager_id;
order.taken_date = data.taken_date;
order.ready_date = data.ready_date;
}
}
this.adminTakeOrderModal("hide");
return toastr.success("Настройки заказа были успешно изменены");
} else {
if (data.warning) {
toastr.warning(data.warning);
}
if (data.error) {
return toastr.warning(data.error);
}
}
}
}).catch(() => {
this.isTakeOrderSubmitting = false;
return toastr.error(config.global_labels.defaultErrorMessage.value);
});
}
}
openOrderReadyDatepicker() {
return this.orderReadyDatepicker.opened = true;
}
printOrder(printOrderUrl) {
var printOrderWindow;
if (printOrderUrl && (printOrderUrl.length > 0)) {
printOrderWindow = window.open(printOrderUrl, '_blank');
printOrderWindow.focus();
return $timeout(() => {
return printOrderWindow.print();
}, 1000);
}
}
};
calcDoorsOrders.prototype.orderReadyDatepicker = {
opened: false
};
calcDoorsOrders.prototype.orderReadyDatepickerOptions = {
formatYear: 'yyyy',
startingDay: 1,
showWeeks: false
};
return calcDoorsOrders;
}).call(this);
$scope.config = config;
$scope.utilities = new UtilitiesClass(config,
$filter,
$timeout);
return $scope.orders = new calcDoorsOrders();
}
]);