Files
InventoryTraker-Box/InventoryTraker.Web/js/inventory/inventorySvc.js
T
2016-10-18 11:10:01 -04:00

109 lines
2.5 KiB
JavaScript

(function() {
window.app.factory("inventorySvc",
[
"$http", "$filter", 'Upload',
function($http, $filter, Upload) {
var inventories = [];
loadInventories();
var svc = {
add: add,
distribute: distribute,
update: update,
remove: remove,
inventories: inventories,
get: get,
refresh: refresh,
load: load,
exportInventory: exportInventory,
isShredReady: isShredReady,
importFile: importFile
};
return svc;
function loadInventories() {
$http.post("/Inventory/All")
.success(function(data) {
angular.copy(data, inventories);
});
}
function exportInventory() {
return $http.post("/Inventory/Export", {}, { responseType: "arraybuffer" });
}
function add(inventory) {
return $http.post("/Inventory/Add", inventory)
.success(function(inventory) {
inventories.unshift(inventory);
});
}
function distribute(distribution) {
return $http.post("/Inventory/Distribute", distribution)
.success(function(data) {
angular.copy(data, inventories);
});
}
function update(existingInventory, updatedInventory) {
return $http.post("/Inventory/Update", updatedInventory)
.success(function(inventory) {
angular.extend(existingInventory, inventory);
});
}
// remove quantity from this inventory
function remove(removeForm) {
var existingInventory = get(removeForm.inventoryId);
return $http.post("/Inventory/Remove", removeForm)
.success(function(data) {
angular.copy(data, existingInventory);
});
}
function get(id) {
var results = $filter("filter")(inventories, { id: id });
if (results.length > 0)
return results[0];
return null;
}
// refresh this inventory from the server
function refresh(id) {
var existingInventory = get(id);
if (existingInventory) {
load(id)
.success(function(inventory) {
angular.copy(inventory, existingInventory);
});
}
}
function load(id) {
return $http.post("/Inventory/Find", { id: id })
.success(function (inventory) {
var existingInventory = get(id);
if (existingInventory != null)
angular.copy(inventory, existingInventory);
else
inventories.unshift(inventory);
});
}
function importFile(file) {
return Upload.upload({
url: "/api/Import",
method: 'POST',
data: { file: file}
});
}
function isShredReady(inventory) {
return new Date(inventory.shredReadyDate) <= new Date();
}
}
]);
})();