You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

lu-webapi-crud-dataaccess.js 5.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. /**
  2. * Created by robin on 12/11/16.
  3. */
  4. (function () {
  5. 'use strict';
  6. angular.module('luticate2Utils')
  7. .factory('luWebApiCrudDataAccess', ['luWebApiDataAccess', '$q', 'luUtilsDataAccess', 'luDataInitializer',
  8. function (luWebApiDataAccess, $q, luUtilsDataAccess, luDataInitializer) {
  9. var luWebApiCrudDataAccess = {};
  10. luWebApiCrudDataAccess.create = function (entry_point) {
  11. var DataAccess = luWebApiDataAccess.create(entry_point);
  12. DataAccess.OP_EDIT = 'OP_EDIT';
  13. DataAccess.OP_ADD = 'OP_ADD';
  14. DataAccess.TYPE_DBO = 'TYPE_DBO';
  15. DataAccess.TYPE_MODEL = 'TYPE_MODEL';
  16. DataAccess.defaultDbo = {
  17. id: null,
  18. createdAt: null,
  19. updatedAt: null,
  20. toString: function()
  21. {
  22. return this.id;
  23. }
  24. };
  25. DataAccess.modelInitializer = luDataInitializer.create(function(model, op)
  26. {
  27. return DataAccess.initModel(model, op);
  28. });
  29. DataAccess.dboInitializer = luDataInitializer.create(function(dbo, type)
  30. {
  31. return DataAccess.initDbo(dbo, type);
  32. });
  33. DataAccess._initModel = function(model, op)
  34. {
  35. if (model == null) {
  36. return null;
  37. }
  38. model = angular.copy(model);
  39. delete model.id;
  40. delete model.updatedAt;
  41. delete model.createdAt;
  42. delete model._itemType;
  43. delete model.toString;
  44. return model;
  45. };
  46. DataAccess.initModel = function(model, op)
  47. {
  48. return DataAccess._initModel(model, op);
  49. };
  50. DataAccess._initDbo = function(model, type)
  51. {
  52. if (model == null) {
  53. return null;
  54. }
  55. var dbo = DataAccess.extendDeep({}, angular.copy(DataAccess.defaultDbo), model);
  56. if (type == DataAccess.TYPE_MODEL) {
  57. dbo.createdAt = luUtilsDataAccess.stringToMomentDateTime(dbo.createdAt);
  58. dbo.updatedAt = luUtilsDataAccess.stringToMomentDateTime(dbo.updatedAt);
  59. }
  60. return dbo;
  61. };
  62. DataAccess.initDbo = function(model, type)
  63. {
  64. return DataAccess._initDbo(model, type);
  65. };
  66. DataAccess.extendDeep = function extendDeep(dst) {
  67. angular.forEach(arguments, function(obj) {
  68. if (obj !== dst) {
  69. angular.forEach(obj, function(value, key) {
  70. if (dst[key] && dst[key].constructor && dst[key].constructor === Object) {
  71. extendDeep(dst[key], value);
  72. } else {
  73. dst[key] = value;
  74. }
  75. });
  76. }
  77. });
  78. return dst;
  79. };
  80. DataAccess.getSingleById = function (id, luBusyGroups) {
  81. return DataAccess.dboInitializer.thenInitData(DataAccess.get(id, null, luBusyGroups), DataAccess.TYPE_MODEL);
  82. };
  83. DataAccess.getMultiple = function (orderBy, filter, page, perPage, luBusyGroups) {
  84. return DataAccess.dboInitializer.thenInitPaginatedData(DataAccess.get('', {
  85. orderBy: orderBy,
  86. filter: filter,
  87. page: page,
  88. perPage: perPage
  89. }, luBusyGroups), DataAccess.TYPE_MODEL);
  90. };
  91. DataAccess.addDbo = function(data, luBusyGroups) {
  92. var model = DataAccess.modelInitializer.initData(data, DataAccess.OP_ADD);
  93. return DataAccess.dboInitializer.thenInitData(DataAccess.post('', null, model, luBusyGroups), DataAccess.TYPE_MODEL);
  94. };
  95. DataAccess.editSingleByIdDbo = function(id, data, luBusyGroups) {
  96. var model = DataAccess.modelInitializer.initData(data, DataAccess.OP_EDIT);
  97. return DataAccess.dboInitializer.thenInitData(DataAccess.post(id, null, model, luBusyGroups), DataAccess.TYPE_MODEL);
  98. };
  99. DataAccess.deleteDbo = function(id, luBusyGroups) {
  100. return DataAccess.dboInitializer.thenInitData(DataAccess.delete(id, null, null, luBusyGroups), DataAccess.TYPE_MODEL);
  101. };
  102. return DataAccess;
  103. };
  104. return luWebApiCrudDataAccess;
  105. }]);
  106. })();