Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

lu-webapi-crud-business.js 3.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. /**
  2. * Created by robin on 12/11/16.
  3. */
  4. (function () {
  5. 'use strict';
  6. angular.module('luticate2Utils')
  7. .factory('luWebApiCrudBusiness', ['luBusiness', '$q', function (luBusiness, $q) {
  8. var luWebApiCrudBusiness = {};
  9. luWebApiCrudBusiness.create = function (dataAccess) {
  10. var Business = luBusiness.create();
  11. Business.dataAccess = dataAccess;
  12. Business.defaultDbo = {
  13. id: null
  14. };
  15. Business.extendDeep = function extendDeep(dst) {
  16. angular.forEach(arguments, function(obj) {
  17. if (obj !== dst) {
  18. angular.forEach(obj, function(value, key) {
  19. if (dst[key] && dst[key].constructor && dst[key].constructor === Object) {
  20. extendDeep(dst[key], value);
  21. } else {
  22. dst[key] = value;
  23. }
  24. });
  25. }
  26. });
  27. return dst;
  28. };
  29. Business.initDbo = function(dbo)
  30. {
  31. return Business.extendDeep({}, Business.defaultDbo, dbo);
  32. };
  33. Business.initPaginatedDbo = function(data)
  34. {
  35. var d = {
  36. count: data.count,
  37. data: []
  38. };
  39. for (var i = 0; i < data.data.length; ++i) {
  40. d.data.push(Business.initDbo(data.data[i]));
  41. }
  42. return d;
  43. };
  44. Business.thenInitDbo = function(promise)
  45. {
  46. var deferred = $q.defer();
  47. promise.then(function(data)
  48. {
  49. deferred.resolve(Business.initDbo(data));
  50. }, deferred.reject);
  51. return deferred.promise;
  52. };
  53. Business.thenInitPaginatedDbo = function(promise)
  54. {
  55. var deferred = $q.defer();
  56. promise.then(function(data)
  57. {
  58. deferred.resolve(Business.initPaginatedDbo(data));
  59. }, deferred.reject);
  60. return deferred.promise;
  61. };
  62. Business.getSingleById = function (id, luBusyGroups) {
  63. return Business.thenInitDbo(Business.dataAccess.getSingleById(id, luBusyGroups));
  64. };
  65. Business.getMultiple = function (orderBy, filter, page, perPage, luBusyGroups) {
  66. return Business.thenInitPaginatedDbo(Business.dataAccess.getMultiple(orderBy, filter, page, perPage, luBusyGroups));
  67. };
  68. Business.addDbo = function(data, luBusyGroups) {
  69. return Business.thenInitDbo(Business.dataAccess.addDbo(data, luBusyGroups));
  70. };
  71. Business.editSingleByIdDbo = function(id, data, luBusyGroups) {
  72. return Business.thenInitDbo(Business.dataAccess.editSingleByIdDbo(id, data, luBusyGroups));
  73. };
  74. Business.deleteDbo = function(id, luBusyGroups) {
  75. return Business.thenInitDbo(Business.dataAccess.deleteDbo(id, luBusyGroups));
  76. };
  77. return Business;
  78. };
  79. return luWebApiCrudBusiness;
  80. }]);
  81. })();