290 lines
11 KiB
JavaScript
290 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();
|
||
|
|
}
|
||
|
|
]);
|