cats_core 1.5.16 → 1.5.18

Sign up to get free protection for your applications and to get access to all the features.
Files changed (263) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +7 -7
  3. data/app/controllers/cats/core/access_controller.rb +4 -4
  4. data/app/controllers/cats/core/application_controller.rb +4 -4
  5. data/app/controllers/cats/core/commodities_controller.rb +7 -7
  6. data/app/controllers/cats/core/commodity_categories_controller.rb +4 -4
  7. data/app/controllers/cats/core/dispatch_authorizations_controller.rb +30 -7
  8. data/app/controllers/cats/core/dispatch_plan_items_controller.rb +4 -4
  9. data/app/controllers/cats/core/dispatch_plans_controller.rb +10 -10
  10. data/app/controllers/cats/core/dispatch_transactions_controller.rb +5 -5
  11. data/app/controllers/cats/core/dispatches_controller.rb +19 -19
  12. data/app/controllers/cats/core/loans_controller.rb +1 -1
  13. data/app/controllers/cats/core/locations_controller.rb +4 -4
  14. data/app/controllers/cats/core/menus_controller.rb +1 -1
  15. data/app/controllers/cats/core/notifications_controller.rb +5 -5
  16. data/app/controllers/cats/core/purchase_orders_controller.rb +3 -3
  17. data/app/controllers/cats/core/receipt_authorizations_controller.rb +30 -18
  18. data/app/controllers/cats/core/receipt_transactions_controller.rb +4 -4
  19. data/app/controllers/cats/core/receipts_controller.rb +1 -1
  20. data/app/controllers/cats/core/roles_controller.rb +3 -3
  21. data/app/controllers/cats/core/round_beneficiaries_controller.rb +13 -13
  22. data/app/controllers/cats/core/round_plans_controller.rb +13 -13
  23. data/app/controllers/cats/core/routes_controller.rb +2 -2
  24. data/app/controllers/cats/core/spaces_controller.rb +1 -1
  25. data/app/controllers/cats/core/stack_transactions_controller.rb +3 -3
  26. data/app/controllers/cats/core/stacks_controller.rb +15 -7
  27. data/app/controllers/cats/core/stores_controller.rb +14 -14
  28. data/app/controllers/cats/core/swaps_controller.rb +2 -2
  29. data/app/controllers/cats/core/transporters_controller.rb +1 -1
  30. data/app/controllers/cats/core/users_controller.rb +24 -12
  31. data/app/controllers/concerns/cats/core/common.rb +24 -23
  32. data/app/helpers/cats/core/document_helper.rb +1 -1
  33. data/app/models/cats/core/authorization.rb +9 -9
  34. data/app/models/cats/core/beneficiary.rb +6 -6
  35. data/app/models/cats/core/beneficiary_plan_item.rb +9 -9
  36. data/app/models/cats/core/beneficiary_round_plan_item.rb +2 -2
  37. data/app/models/cats/core/cash_donation.rb +1 -1
  38. data/app/models/cats/core/commodity.rb +47 -33
  39. data/app/models/cats/core/commodity_donation.rb +2 -2
  40. data/app/models/cats/core/commodity_substitution.rb +15 -7
  41. data/app/models/cats/core/contract_item.rb +2 -2
  42. data/app/models/cats/core/dispatch.rb +36 -21
  43. data/app/models/cats/core/dispatch_authorization.rb +31 -5
  44. data/app/models/cats/core/dispatch_plan.rb +19 -10
  45. data/app/models/cats/core/dispatch_plan_item.rb +27 -14
  46. data/app/models/cats/core/dispatch_transaction.rb +15 -5
  47. data/app/models/cats/core/gift_certificate.rb +3 -3
  48. data/app/models/cats/core/hub_authorization.rb +7 -7
  49. data/app/models/cats/core/loan.rb +2 -2
  50. data/app/models/cats/core/location.rb +12 -8
  51. data/app/models/cats/core/lost_commodity.rb +2 -2
  52. data/app/models/cats/core/notification.rb +2 -2
  53. data/app/models/cats/core/offer_item.rb +4 -4
  54. data/app/models/cats/core/plan.rb +9 -9
  55. data/app/models/cats/core/plan_item.rb +5 -5
  56. data/app/models/cats/core/plan_item_detail.rb +2 -2
  57. data/app/models/cats/core/project.rb +1 -1
  58. data/app/models/cats/core/purchase_order.rb +5 -5
  59. data/app/models/cats/core/ration.rb +1 -1
  60. data/app/models/cats/core/receipt.rb +5 -5
  61. data/app/models/cats/core/receipt_authorization.rb +6 -2
  62. data/app/models/cats/core/receipt_transaction.rb +8 -4
  63. data/app/models/cats/core/rhn_request.rb +8 -8
  64. data/app/models/cats/core/role_menu.rb +1 -1
  65. data/app/models/cats/core/round_beneficiary.rb +10 -2
  66. data/app/models/cats/core/round_plan.rb +15 -11
  67. data/app/models/cats/core/round_plan_item.rb +9 -5
  68. data/app/models/cats/core/round_plan_item_detail.rb +3 -3
  69. data/app/models/cats/core/round_ration.rb +2 -2
  70. data/app/models/cats/core/route.rb +12 -8
  71. data/app/models/cats/core/stack.rb +52 -34
  72. data/app/models/cats/core/stack_transaction.rb +3 -3
  73. data/app/models/cats/core/stacking_rule.rb +2 -2
  74. data/app/models/cats/core/store.rb +29 -7
  75. data/app/models/cats/core/swap.rb +5 -5
  76. data/app/models/cats/core/transaction.rb +6 -6
  77. data/app/models/cats/core/transport_bid.rb +13 -13
  78. data/app/models/cats/core/transport_bid_item.rb +2 -2
  79. data/app/models/cats/core/transport_offer.rb +3 -3
  80. data/app/models/cats/core/transport_order.rb +8 -8
  81. data/app/models/cats/core/transport_order_item.rb +2 -2
  82. data/app/models/cats/core/transport_plan.rb +7 -7
  83. data/app/models/cats/core/transport_plan_item.rb +2 -2
  84. data/app/models/cats/core/transport_requisition.rb +9 -9
  85. data/app/models/cats/core/transport_requisition_detail.rb +2 -2
  86. data/app/models/cats/core/transport_requisition_item.rb +3 -3
  87. data/app/models/cats/core/transporter.rb +4 -0
  88. data/app/models/cats/core/unit_conversion.rb +4 -4
  89. data/app/models/cats/core/unit_of_measure.rb +4 -4
  90. data/app/models/cats/core/user.rb +11 -11
  91. data/app/models/concerns/cats/core/dispatchable.rb +3 -3
  92. data/app/notifications/cats/core/allocation_notification.rb +1 -1
  93. data/app/notifications/cats/core/dispatch_authorization_notification.rb +35 -0
  94. data/app/notifications/cats/core/dispatch_notification.rb +1 -1
  95. data/app/notifications/cats/core/receipt_authorization_notification.rb +1 -1
  96. data/app/notifications/cats/core/round_plan_notification.rb +1 -1
  97. data/app/notifications/cats/core/simple_notification.rb +1 -1
  98. data/app/serializers/cats/core/cash_donation_serializer.rb +1 -1
  99. data/app/serializers/cats/core/commodity_donation_serializer.rb +2 -2
  100. data/app/serializers/cats/core/commodity_serializer.rb +2 -2
  101. data/app/serializers/cats/core/dispatch_authorization_serializer.rb +2 -2
  102. data/app/serializers/cats/core/dispatch_plan_item_serializer.rb +3 -3
  103. data/app/serializers/cats/core/dispatch_plan_serializer.rb +1 -1
  104. data/app/serializers/cats/core/dispatch_serializer.rb +2 -2
  105. data/app/serializers/cats/core/dispatch_transaction_serializer.rb +1 -1
  106. data/app/serializers/cats/core/loan_serializer.rb +1 -1
  107. data/app/serializers/cats/core/purchase_order_serializer.rb +2 -2
  108. data/app/serializers/cats/core/receipt_authorization_serializer.rb +2 -2
  109. data/app/serializers/cats/core/receipt_serializer.rb +1 -1
  110. data/app/serializers/cats/core/receipt_transaction_serializer.rb +2 -2
  111. data/app/serializers/cats/core/round_beneficiary_serializer.rb +1 -1
  112. data/app/serializers/cats/core/round_plan_serializer.rb +1 -1
  113. data/app/serializers/cats/core/stack_serializer.rb +1 -1
  114. data/app/serializers/cats/core/store_serializer.rb +1 -1
  115. data/app/serializers/cats/core/swap_serializer.rb +2 -2
  116. data/app/services/cats/core/authorization_service.rb +36 -18
  117. data/app/services/cats/core/beneficiary_service.rb +11 -11
  118. data/app/services/cats/core/dispatch_plan_service.rb +10 -10
  119. data/app/services/cats/core/dispatch_service.rb +31 -31
  120. data/app/services/cats/core/notification_service.rb +5 -5
  121. data/app/services/cats/core/round_plan_service.rb +23 -23
  122. data/app/services/cats/core/space_service.rb +11 -11
  123. data/app/services/cats/core/stack_service.rb +10 -10
  124. data/app/services/cats/core/token_auth_service.rb +4 -4
  125. data/app/services/cats/core/user_service.rb +19 -0
  126. data/app/utils/cats/core/util.rb +1 -1
  127. data/config/routes.rb +110 -105
  128. data/config/spring.rb +1 -0
  129. data/db/migrate/20210715114910_create_cats_core_users.rb +3 -3
  130. data/db/migrate/20210715120018_create_cats_core_roles.rb +14 -14
  131. data/db/migrate/20210715121244_create_cats_core_menus.rb +3 -3
  132. data/db/migrate/20210715122141_create_cats_core_menu_items.rb +3 -3
  133. data/db/migrate/20210715122423_create_cats_core_role_menus.rb +13 -13
  134. data/db/migrate/20210717031810_create_cats_core_plans.rb +4 -4
  135. data/db/migrate/20210717032024_create_cats_core_plan_items.rb +18 -18
  136. data/db/migrate/20210717032260_create_cats_core_beneficiary_categories.rb +3 -3
  137. data/db/migrate/20210717032270_create_cats_core_rations.rb +10 -10
  138. data/db/migrate/20210717032290_create_cats_core_beneficiary_plan_items.rb +7 -7
  139. data/db/migrate/20210717032295_create_cats_core_plan_item_details.rb +7 -7
  140. data/db/migrate/20210717032330_create_cats_core_commodity_donations.rb +12 -12
  141. data/db/migrate/20210717032408_create_cats_core_cash_donations.rb +6 -6
  142. data/db/migrate/20210717032602_create_cats_core_gift_certificates.rb +12 -12
  143. data/db/migrate/20210717032855_create_cats_core_purchase_orders.rb +12 -12
  144. data/db/migrate/20210717032927_create_cats_core_projects.rb +3 -3
  145. data/db/migrate/20210717033223_create_cats_core_commodities.rb +10 -10
  146. data/db/migrate/20210717140855_create_cats_core_stores.rb +3 -3
  147. data/db/migrate/20210717171101_create_cats_core_stacks.rb +11 -11
  148. data/db/migrate/20210718040129_create_cats_core_routes.rb +9 -9
  149. data/db/migrate/20210718042755_create_cats_core_rhn_requests.rb +6 -6
  150. data/db/migrate/20210718043328_create_cats_core_dispatch_plans.rb +7 -7
  151. data/db/migrate/20210718043401_create_cats_core_dispatch_plan_items.rb +17 -17
  152. data/db/migrate/20210718045516_create_cats_core_dispatches.rb +13 -13
  153. data/db/migrate/20210718055414_create_cats_core_dispatch_authorizations.rb +13 -13
  154. data/db/migrate/20210718202957_create_cats_core_dispatch_transactions.rb +11 -11
  155. data/db/migrate/20210727074646_create_cats_core_receipt_authorizations.rb +13 -13
  156. data/db/migrate/20210727105834_create_cats_core_receipts.rb +6 -6
  157. data/db/migrate/20210728041505_create_cats_core_lost_commodities.rb +6 -6
  158. data/db/migrate/20210814160628_create_cats_core_receipt_transactions.rb +10 -10
  159. data/db/migrate/20210814175406_create_cats_core_stack_transactions.rb +10 -10
  160. data/db/migrate/20211024063240_add_status_to_cats_core_rhn_requests.rb +1 -1
  161. data/db/migrate/20211030133752_add_status_to_cats_core_commodities.rb +1 -1
  162. data/db/migrate/20211215114737_create_cats_core_transport_plans.rb +4 -4
  163. data/db/migrate/20211215114835_create_cats_core_transport_plan_items.rb +9 -9
  164. data/db/migrate/20211215121151_create_cats_core_transport_bids.rb +4 -4
  165. data/db/migrate/20211215124452_create_cats_core_transport_bid_items.rb +10 -10
  166. data/db/migrate/20211229160125_create_cats_core_transport_offers.rb +7 -7
  167. data/db/migrate/20211229160126_create_cats_core_offer_items.rb +6 -6
  168. data/db/migrate/20211229160127_create_cats_core_transport_contracts.rb +6 -6
  169. data/db/migrate/20211229160128_create_cats_core_contract_items.rb +9 -9
  170. data/db/migrate/20211229160129_create_cats_core_commodity_substitutions.rb +10 -10
  171. data/db/migrate/20220103152802_create_cats_core_tenderers.rb +6 -6
  172. data/db/migrate/20220107121752_create_cats_core_round_plans.rb +7 -7
  173. data/db/migrate/20220107122280_create_cats_core_round_rations.rb +12 -12
  174. data/db/migrate/20220107125025_create_cats_core_round_plan_items.rb +19 -19
  175. data/db/migrate/20220107126025_create_cats_core_beneficiary_round_plan_items.rb +8 -8
  176. data/db/migrate/20220107132433_create_cats_core_round_plan_item_details.rb +9 -9
  177. data/db/migrate/20220209083928_create_cats_core_hub_authorizations.rb +12 -12
  178. data/db/migrate/20220416143416_create_cats_core_unit_conversions.rb +6 -6
  179. data/db/migrate/20220417105839_create_cats_core_transport_requisitions.rb +12 -12
  180. data/db/migrate/20220417123835_create_cats_core_transport_requisition_items.rb +9 -9
  181. data/db/migrate/20220417151821_create_cats_core_transport_requisition_details.rb +6 -6
  182. data/db/migrate/20220506082329_create_cats_core_transport_orders.rb +10 -10
  183. data/db/migrate/20220506083042_create_cats_core_transport_order_items.rb +13 -13
  184. data/db/migrate/20220511082354_create_cats_core_beneficiaries.rb +6 -6
  185. data/db/migrate/20220626063501_create_cats_core_loans.rb +6 -6
  186. data/db/migrate/20220626063757_create_cats_core_swaps.rb +12 -12
  187. data/db/migrate/20220626132050_create_cats_core_round_beneficiaries.rb +13 -13
  188. data/db/migrate/20220923190857_create_cats_core_application_settings.rb +3 -3
  189. data/lib/cats/core/engine.rb +4 -4
  190. data/lib/cats/core/version.rb +1 -1
  191. data/lib/cats_core.rb +8 -8
  192. data/spec/factories/cats/core/application_modules.rb +1 -1
  193. data/spec/factories/cats/core/application_settings.rb +1 -1
  194. data/spec/factories/cats/core/beneficiaries.rb +3 -3
  195. data/spec/factories/cats/core/beneficiary_categories.rb +1 -1
  196. data/spec/factories/cats/core/beneficiary_plan_items.rb +1 -1
  197. data/spec/factories/cats/core/beneficiary_round_plan_items.rb +1 -1
  198. data/spec/factories/cats/core/cash_donations.rb +1 -1
  199. data/spec/factories/cats/core/commodities.rb +1 -1
  200. data/spec/factories/cats/core/commodity_categories.rb +1 -1
  201. data/spec/factories/cats/core/commodity_donations.rb +1 -1
  202. data/spec/factories/cats/core/commodity_substitutions.rb +2 -2
  203. data/spec/factories/cats/core/contract_items.rb +1 -1
  204. data/spec/factories/cats/core/currencies.rb +1 -1
  205. data/spec/factories/cats/core/dispatch_authorizations.rb +7 -11
  206. data/spec/factories/cats/core/dispatch_plan_items.rb +16 -1
  207. data/spec/factories/cats/core/dispatch_plans.rb +1 -1
  208. data/spec/factories/cats/core/dispatch_transactions.rb +2 -4
  209. data/spec/factories/cats/core/dispatches.rb +16 -25
  210. data/spec/factories/cats/core/donors.rb +1 -1
  211. data/spec/factories/cats/core/gift_certificates.rb +1 -1
  212. data/spec/factories/cats/core/hub_authorizations.rb +1 -1
  213. data/spec/factories/cats/core/loans.rb +1 -1
  214. data/spec/factories/cats/core/locations.rb +6 -6
  215. data/spec/factories/cats/core/lost_commodities.rb +1 -1
  216. data/spec/factories/cats/core/menu_items.rb +1 -1
  217. data/spec/factories/cats/core/menus.rb +1 -1
  218. data/spec/factories/cats/core/notification_rules.rb +1 -1
  219. data/spec/factories/cats/core/notifications.rb +2 -2
  220. data/spec/factories/cats/core/offer_items.rb +1 -1
  221. data/spec/factories/cats/core/operators.rb +1 -1
  222. data/spec/factories/cats/core/plan_item_details.rb +1 -1
  223. data/spec/factories/cats/core/plan_items.rb +1 -1
  224. data/spec/factories/cats/core/plans.rb +1 -1
  225. data/spec/factories/cats/core/programs.rb +1 -1
  226. data/spec/factories/cats/core/projects.rb +1 -1
  227. data/spec/factories/cats/core/purchase_orders.rb +1 -1
  228. data/spec/factories/cats/core/rations.rb +1 -1
  229. data/spec/factories/cats/core/receipt_authorizations.rb +1 -1
  230. data/spec/factories/cats/core/receipt_transactions.rb +2 -2
  231. data/spec/factories/cats/core/receipts.rb +1 -1
  232. data/spec/factories/cats/core/rhn_requests.rb +1 -1
  233. data/spec/factories/cats/core/role_menus.rb +1 -1
  234. data/spec/factories/cats/core/roles.rb +1 -1
  235. data/spec/factories/cats/core/round_beneficiaries.rb +1 -1
  236. data/spec/factories/cats/core/round_plan_item_details.rb +3 -3
  237. data/spec/factories/cats/core/round_plan_items.rb +1 -1
  238. data/spec/factories/cats/core/round_plans.rb +1 -1
  239. data/spec/factories/cats/core/round_rations.rb +1 -1
  240. data/spec/factories/cats/core/routes.rb +1 -1
  241. data/spec/factories/cats/core/stack_transactions.rb +1 -1
  242. data/spec/factories/cats/core/stacking_rules.rb +1 -1
  243. data/spec/factories/cats/core/stacks.rb +1 -1
  244. data/spec/factories/cats/core/stores.rb +1 -1
  245. data/spec/factories/cats/core/suppliers.rb +1 -1
  246. data/spec/factories/cats/core/swaps.rb +1 -1
  247. data/spec/factories/cats/core/tenderers.rb +1 -1
  248. data/spec/factories/cats/core/transport_bid_items.rb +1 -1
  249. data/spec/factories/cats/core/transport_bids.rb +1 -1
  250. data/spec/factories/cats/core/transport_contracts.rb +1 -1
  251. data/spec/factories/cats/core/transport_offers.rb +1 -1
  252. data/spec/factories/cats/core/transport_order_items.rb +1 -1
  253. data/spec/factories/cats/core/transport_orders.rb +1 -1
  254. data/spec/factories/cats/core/transport_plan_items.rb +1 -1
  255. data/spec/factories/cats/core/transport_plans.rb +1 -1
  256. data/spec/factories/cats/core/transport_requisition_details.rb +1 -1
  257. data/spec/factories/cats/core/transport_requisition_items.rb +1 -1
  258. data/spec/factories/cats/core/transport_requisitions.rb +1 -1
  259. data/spec/factories/cats/core/transporters.rb +1 -1
  260. data/spec/factories/cats/core/unit_conversions.rb +1 -1
  261. data/spec/factories/cats/core/unit_of_measures.rb +1 -1
  262. data/spec/factories/cats/core/users.rb +2 -2
  263. metadata +19 -2
@@ -8,7 +8,7 @@ module Cats
8
8
  def index
9
9
  super do
10
10
  Role.joins(:application_module)
11
- .where(cats_core_application_modules: { prefix: params[:prefix] })
11
+ .where(cats_core_application_modules: {prefix: params[:prefix]})
12
12
  end
13
13
  end
14
14
 
@@ -16,11 +16,11 @@ module Cats
16
16
  user = User.find(params[:id])
17
17
  roles = Role.where(application_module_id: user.application_module_id)
18
18
  unassigned = roles - user.roles
19
- render json: { success: true, data: serialize(unassigned) }
19
+ render json: {success: true, data: serialize(unassigned)}
20
20
  end
21
21
 
22
22
  def users
23
- render json: { success: true, data: serialize(@role.users) }
23
+ render json: {success: true, data: serialize(@role.users)}
24
24
  end
25
25
 
26
26
  private
@@ -5,38 +5,38 @@ module Cats
5
5
 
6
6
  def index
7
7
  beneficiaries = RoundBeneficiary.joins(:round_plan_item)
8
- .where(round_plan_item: { round_plan_id: params[:id] })
9
- .includes(:beneficiary, :commodity_category, :unit)
10
- render json: { success: true, data: serialize(beneficiaries) }
8
+ .where(round_plan_item: {round_plan_id: params[:id]})
9
+ .includes(:beneficiary, :commodity_category, :unit)
10
+ render json: {success: true, data: serialize(beneficiaries)}
11
11
  end
12
12
 
13
13
  def generate
14
14
  service = BeneficiaryService.new
15
15
  result = service.generate_distribution_list(params[:id])
16
- render json: { success: result }
17
- rescue StandardError => e
18
- render json: { success: false, error: e.message }
16
+ render json: {success: result}
17
+ rescue => e
18
+ render json: {success: false, error: e.message}
19
19
  end
20
20
 
21
21
  def filter
22
22
  query = RoundBeneficiary.includes(:beneficiary, :commodity_category, :unit).ransack(params[:q])
23
- render json: { success: true, data: serialize(query.result) }
23
+ render json: {success: true, data: serialize(query.result)}
24
24
  end
25
25
 
26
26
  def remove_beneficiaries
27
27
  service = BeneficiaryService.new
28
28
  result = service.remove_items(params[:id], common_params[:ids])
29
- render json: { success: result }
30
- rescue StandardError => e
31
- render json: { success: false, error: e.message }
29
+ render json: {success: result}
30
+ rescue => e
31
+ render json: {success: false, error: e.message}
32
32
  end
33
33
 
34
34
  def confirm_receipt
35
35
  service = BeneficiaryService.new
36
36
  result = service.confirm_receipt(params[:id], common_params[:ids])
37
- render json: { success: result }
38
- rescue StandardError => e
39
- render json: { success: false, error: e.message }
37
+ render json: {success: result}
38
+ rescue => e
39
+ render json: {success: false, error: e.message}
40
40
  end
41
41
 
42
42
  private
@@ -8,40 +8,40 @@ module Cats
8
8
 
9
9
  def index
10
10
  super do
11
- RoundPlan.includes({ plan: :program }, :region).where(plan: params[:id])
11
+ RoundPlan.includes({plan: :program}, :region).where(plan: params[:id])
12
12
  end
13
13
  end
14
14
 
15
15
  def filter
16
- query = RoundPlan.includes({ plan: :program }, :region).ransack(params[:q])
17
- render json: { success: true, data: serialize(query.result) }
16
+ query = RoundPlan.includes({plan: :program}, :region).ransack(params[:q])
17
+ render json: {success: true, data: serialize(query.result)}
18
18
  end
19
19
 
20
20
  def approve
21
21
  plan = @service.approve(params[:id])
22
- render json: { success: true, data: serialize(plan) }
23
- rescue StandardError => e
24
- render json: { success: false, error: e.message }, status: :unprocessable_entity
22
+ render json: {success: true, data: serialize(plan)}
23
+ rescue => e
24
+ render json: {success: false, error: e.message}, status: :unprocessable_entity
25
25
  end
26
26
 
27
27
  def generate
28
28
  p = model_params
29
29
  plan = @service.generate_round_plan(p[:reference_no], p[:rounds], p[:plan_id], p[:region_id])
30
- render json: { success: true, data: serialize(plan) }
30
+ render json: {success: true, data: serialize(plan)}
31
31
  end
32
32
 
33
33
  def generate_round_needs
34
34
  plan = @service.generate_round_needs(params[:id])
35
- render json: { success: true, data: serialize(plan) }
36
- rescue StandardError => e
37
- render json: { success: false, error: e.message }
35
+ render json: {success: true, data: serialize(plan)}
36
+ rescue => e
37
+ render json: {success: false, error: e.message}
38
38
  end
39
39
 
40
40
  def remove_items
41
41
  plan = @service.remove_items(params[:id], remove_params[:ids])
42
- render json: { success: true, data: serialize(plan) }
43
- rescue StandardError => e
44
- render json: { success: false, error: e.message }
42
+ render json: {success: true, data: serialize(plan)}
43
+ rescue => e
44
+ render json: {success: false, error: e.message}
45
45
  end
46
46
 
47
47
  private
@@ -11,7 +11,7 @@ module Cats
11
11
 
12
12
  def filter
13
13
  query = Route.includes(:region).ransack(params[:q])
14
- render json: { success: true, data: serialize(query.result) }
14
+ render json: {success: true, data: serialize(query.result)}
15
15
  end
16
16
 
17
17
  def bulk_create
@@ -30,7 +30,7 @@ module Cats
30
30
 
31
31
  result = Route.insert_all!(data, record_timestamps: true)
32
32
  routes = Route.includes(:region).where(id: result.rows.flatten)
33
- render json: { success: true, data: serialize(routes) }
33
+ render json: {success: true, data: serialize(routes)}
34
34
  end
35
35
 
36
36
  private
@@ -4,7 +4,7 @@ module Cats
4
4
  def available_space
5
5
  service = SpaceService.new
6
6
  space = service.available_space(params[:id], params[:level])
7
- render json: { success: true, data: space }
7
+ render json: {success: true, data: space}
8
8
  end
9
9
  end
10
10
  end
@@ -5,14 +5,14 @@ module Cats
5
5
 
6
6
  def index
7
7
  super do
8
- StackTransaction.joins({ source: :store }, :unit)
9
- .where(cats_core_stacks: { cats_core_stores: { warehouse_id: params[:id] } })
8
+ StackTransaction.joins({source: :store}, :unit)
9
+ .where(cats_core_stacks: {cats_core_stores: {warehouse_id: params[:id]}})
10
10
  end
11
11
  end
12
12
 
13
13
  def filter
14
14
  query = StackTransaction.ransack(params[:q])
15
- render json: { success: true, data: serialize(query.result) }
15
+ render json: {success: true, data: serialize(query.result)}
16
16
  end
17
17
 
18
18
  private
@@ -11,13 +11,13 @@ module Cats
11
11
 
12
12
  def filter
13
13
  query = Stack.includes(:commodity, :unit).where(store_id: params[:id]).ransack(params[:q])
14
- render json: { success: true, data: serialize(query.result) }
14
+ render json: {success: true, data: serialize(query.result)}
15
15
  end
16
16
 
17
17
  def items_for_location
18
18
  service = StackService.new
19
19
  commodities = service.items_for_location(current_user)
20
- render json: { success: true, data: serialize(commodities) }
20
+ render json: {success: true, data: serialize(commodities)}
21
21
  end
22
22
 
23
23
  def dispatch_stacks
@@ -26,25 +26,33 @@ module Cats
26
26
  stacks = service.dispatch_stacks(dispatch)
27
27
 
28
28
  # Filter for current user
29
- if current_user.details.key?('stores')
30
- stores = current_user.details['stores']
29
+ if current_user.details.key?("stores")
30
+ stores = current_user.details["stores"]
31
31
  stacks = stacks.select { |stack| stores.include?(stack.store_id) }
32
32
  end
33
- render json: { success: true, data: serialize(stacks) }
33
+ render json: {success: true, data: serialize(stacks)}
34
34
  end
35
35
 
36
36
  def receipt_stacks
37
37
  service = StackService.new
38
38
  authorization = ReceiptAuthorization.find(params[:id])
39
39
  stacks = service.receipt_stacks(authorization.id)
40
- render json: { success: true, data: serialize(stacks) }
40
+ render json: {success: true, data: serialize(stacks)}
41
+ end
42
+
43
+ def destroy
44
+ stack = set_object
45
+ stack.destroy_stack
46
+ render json: {success: true, data: serialize(stack)}
47
+ rescue => e
48
+ render json: {success: false, error: e}
41
49
  end
42
50
 
43
51
  private
44
52
 
45
53
  def model_params
46
54
  params.require(:payload).permit(:code, :length, :width, :height, :start_x, :start_y, :commodity_id, :store_id,
47
- :commodity_status, :stack_status, :quantity, :unit_id)
55
+ :commodity_status, :stack_status, :quantity, :unit_id)
48
56
  end
49
57
  end
50
58
  end
@@ -5,38 +5,38 @@ module Cats
5
5
 
6
6
  def index
7
7
  stores = Store.includes(:stacks).where(warehouse_id: params[:id])
8
- render json: { success: true, data: serialize(stores) }
8
+ render json: {success: true, data: serialize(stores)}
9
9
  end
10
10
 
11
11
  def filter
12
12
  query = Store.includes(:stacks).ransack(params[:q])
13
- render json: { success: true, data: serialize(query.result) }
13
+ render json: {success: true, data: serialize(query.result)}
14
14
  end
15
15
 
16
16
  def stores_for_hub
17
17
  warehouses = Location.find(params[:id]).children
18
18
  ids = warehouses.map(&:id)
19
19
  stores = Store.includes(:stacks).where(warehouse_id: ids)
20
- render json: { success: true, data: serialize(stores) }
20
+ render json: {success: true, data: serialize(stores)}
21
21
  end
22
22
 
23
23
  def assign_store
24
24
  store_keeper = User.find(params[:id])
25
- store_keeper.details['stores'] ||= []
26
- store_keeper.details['stores'] += store_params[:store_ids]
25
+ store_keeper.details["stores"] ||= []
26
+ store_keeper.details["stores"] += store_params[:store_ids]
27
27
  store_keeper.save!
28
28
 
29
- render json: { success: true, data: serialize(store_keeper) }
29
+ render json: {success: true, data: serialize(store_keeper)}
30
30
  end
31
31
 
32
32
  def unassign_store
33
33
  store_keeper = User.find(params[:id])
34
- if store_keeper.details.key?('stores')
35
- store_keeper.details['stores'] -= store_params[:store_ids]
34
+ if store_keeper.details.key?("stores")
35
+ store_keeper.details["stores"] -= store_params[:store_ids]
36
36
  store_keeper.save!
37
- render json: { success: true, data: serialize(store_keeper) }
37
+ render json: {success: true, data: serialize(store_keeper)}
38
38
  else
39
- render json: { success: false, error: 'User has no stores assigned.' }
39
+ render json: {success: false, error: "User has no stores assigned."}
40
40
  end
41
41
  end
42
42
 
@@ -44,17 +44,17 @@ module Cats
44
44
  store = Store.find(params[:id])
45
45
  location = store.warehouse.parent
46
46
  if location.location_type == Location::FDP
47
- render json: { success: true, data: serialize(location) }
47
+ render json: {success: true, data: serialize(location)}
48
48
  else
49
- render json: { success: false, error: 'No FDP is associated with store.' }
49
+ render json: {success: false, error: "No FDP is associated with store."}
50
50
  end
51
51
  end
52
52
 
53
53
  private
54
54
 
55
55
  def model_params
56
- params.require('payload').permit(:id, :code, :name, :length, :width, :height, :temporary, :has_gangway,
57
- :gangway_length, :gangway_width, :gangway_corner_dist, :warehouse_id)
56
+ params.require("payload").permit(:id, :code, :name, :length, :width, :height, :temporary, :has_gangway,
57
+ :gangway_length, :gangway_width, :gangway_corner_dist, :warehouse_id)
58
58
  end
59
59
 
60
60
  def store_params
@@ -13,8 +13,8 @@ module Cats
13
13
 
14
14
  def model_params
15
15
  params.require(:payload).permit(:reference_no, :swapper, :agreement_date, :issued_commodity_id, :description,
16
- :issued_quantity, :received_commodity_id, :received_quantity, :issued_unit_id,
17
- :received_unit_id)
16
+ :issued_quantity, :received_commodity_id, :received_quantity, :issued_unit_id,
17
+ :received_unit_id)
18
18
  end
19
19
  end
20
20
  end
@@ -5,7 +5,7 @@ module Cats
5
5
 
6
6
  def filter
7
7
  query = Transporter.ransack(params[:q])
8
- render json: { success: true, data: serialize(query.result) }
8
+ render json: {success: true, data: serialize(query.result)}
9
9
  end
10
10
 
11
11
  private
@@ -3,11 +3,12 @@ module Cats
3
3
  class UsersController < ApplicationController
4
4
  include Common
5
5
 
6
+ skip_before_action :authenticate, only: [:change_password]
6
7
  around_action :skip_bullet, if: -> { defined?(Bullet) }, only: %i[stores]
7
8
 
8
9
  def index
9
10
  super do
10
- User.joins(:application_module).where(cats_core_application_modules: { prefix: params[:prefix] })
11
+ User.joins(:application_module).where(cats_core_application_modules: {prefix: params[:prefix]})
11
12
  end
12
13
  end
13
14
 
@@ -34,14 +35,25 @@ module Cats
34
35
  end
35
36
 
36
37
  if user.save
37
- render json: { success: true, data: serialize(user) }
38
+ render json: {success: true, data: serialize(user)}
38
39
  else
39
- render json: { success: false, error: user.errors.full_messages[0] }, status: :unprocessable_entity
40
+ render json: {success: false, error: user.errors.full_messages[0]}, status: :unprocessable_entity
40
41
  end
41
42
  end
42
43
 
44
+ def change_password
45
+ service = UserService.new
46
+ payload = params.require(:payload).permit(:email, :old_password, :password, :password_confirmation)
47
+ email, old_pass, new_pass, confirmation = *payload.values
48
+ user = service.change_password(email, old_pass, new_pass, confirmation)
49
+
50
+ render json: {success: true, data: serialize(user)}
51
+ rescue => e
52
+ render json: {success: false, error: e}
53
+ end
54
+
43
55
  def roles
44
- render json: { success: true, data: serialize(set_object.roles) }
56
+ render json: {success: true, data: serialize(set_object.roles)}
45
57
  end
46
58
 
47
59
  def assign_role
@@ -50,15 +62,15 @@ module Cats
50
62
  user.roles << role
51
63
 
52
64
  case role.name
53
- when 'warehouse_manager'
65
+ when "warehouse_manager"
54
66
  user.add_detail(:warehouse, params[:warehouse_id])
55
- when 'hub_manager'
67
+ when "hub_manager"
56
68
  user.add_detail(:hub, params[:hub_id])
57
- when 'regional_manager'
69
+ when "regional_manager"
58
70
  user.add_detail(:region, params[:region_id])
59
71
  end
60
72
 
61
- render json: { success: true, data: serialize(role) }
73
+ render json: {success: true, data: serialize(role)}
62
74
  end
63
75
 
64
76
  def revoke_role
@@ -66,19 +78,19 @@ module Cats
66
78
  role = Role.find(params[:role_id])
67
79
  user.roles.delete(role)
68
80
  user.remove_detail(role.name) if %w[warehouse_manager hub_manager regional_manager].include?(role.name)
69
- render json: { success: true, data: serialize(role) }
81
+ render json: {success: true, data: serialize(role)}
70
82
  end
71
83
 
72
84
  def stores
73
- render json: { success: true, data: serialize(set_object.stores) }
85
+ render json: {success: true, data: serialize(set_object.stores)}
74
86
  end
75
87
 
76
88
  def warehouse
77
- render json: { success: true, data: serialize(set_object.warehouse) }
89
+ render json: {success: true, data: serialize(set_object.warehouse)}
78
90
  end
79
91
 
80
92
  def hub
81
- render json: { success: true, data: serialize(set_object.hub) }
93
+ render json: {success: true, data: serialize(set_object.hub)}
82
94
  end
83
95
 
84
96
  private
@@ -10,45 +10,45 @@ module Cats
10
10
 
11
11
  def index
12
12
  data = if block_given?
13
- yield
14
- else
15
- @clazz.all
16
- end
17
- render json: { success: true, data: serialize(data) }
13
+ yield
14
+ else
15
+ @clazz.all
16
+ end
17
+ render json: {success: true, data: serialize(data)}
18
18
  end
19
19
 
20
20
  def show
21
- render json: { success: true, data: serialize(@obj) }
21
+ render json: {success: true, data: serialize(@obj)}
22
22
  end
23
23
 
24
24
  def create
25
25
  obj = if block_given?
26
- yield
27
- else
28
- @clazz.new(model_params)
29
- end
26
+ yield
27
+ else
28
+ @clazz.new(model_params)
29
+ end
30
30
  if obj.save
31
- render json: { success: true, data: serialize(obj) }, status: :created
31
+ render json: {success: true, data: serialize(obj)}, status: :created
32
32
  else
33
- render json: { success: false, error: obj.errors.full_messages[0] }, status: :unprocessable_entity
33
+ render json: {success: false, error: obj.errors.full_messages[0]}, status: :unprocessable_entity
34
34
  end
35
- rescue StandardError => e
36
- render json: { success: false, error: e.message }
35
+ rescue => e
36
+ render json: {success: false, error: e.message}
37
37
  end
38
38
 
39
39
  def update
40
40
  obj = if block_given?
41
- yield
42
- else
43
- obj = @obj
44
- end
41
+ yield
42
+ else
43
+ obj = @obj
44
+ end
45
45
  if obj.update(model_params)
46
- render json: { success: true, data: serialize(obj) }
46
+ render json: {success: true, data: serialize(obj)}
47
47
  else
48
- render json: { success: false, error: obj.errors.full_messages[0] }, status: :unprocessable_entity
48
+ render json: {success: false, error: obj.errors.full_messages[0]}, status: :unprocessable_entity
49
49
  end
50
- rescue StandardError => e
51
- render json: { success: false, error: e.message }
50
+ rescue => e
51
+ render json: {success: false, error: e.message}
52
52
  end
53
53
 
54
54
  private
@@ -66,7 +66,8 @@ module Cats
66
66
  end
67
67
 
68
68
  # This class should be overridden by respective child controllers
69
- def model_params; end
69
+ def model_params
70
+ end
70
71
  end
71
72
  end
72
73
  end
@@ -1,7 +1,7 @@
1
1
  module Cats
2
2
  module Core
3
3
  module DocumentHelper
4
- require 'sablon'
4
+ require "sablon"
5
5
 
6
6
  def generate_document(template, output, data)
7
7
  tpl = Sablon.template(template)
@@ -6,17 +6,17 @@ module Cats
6
6
  before_validation :set_unit
7
7
 
8
8
  # Authorization statuses
9
- AUTHORIZED = 'Authorized'.freeze
10
- CONFIRMED = 'Confirmed'.freeze
9
+ AUTHORIZED = "Authorized".freeze
10
+ CONFIRMED = "Confirmed".freeze
11
11
  STATUSES = [AUTHORIZED, CONFIRMED].freeze
12
12
 
13
13
  belongs_to :dispatch
14
14
  belongs_to :store
15
- belongs_to :unit, class_name: 'Cats::Core::UnitOfMeasure'
16
- belongs_to :authorized_by, class_name: 'Cats::Core::User'
15
+ belongs_to :unit, class_name: "Cats::Core::UnitOfMeasure"
16
+ belongs_to :authorized_by, class_name: "Cats::Core::User"
17
17
 
18
- validates :quantity, presence: true, numericality: { greater_than: 0 }
19
- validates :status, presence: true, inclusion: { in: STATUSES }
18
+ validates :quantity, presence: true, numericality: {greater_than: 0}
19
+ validates :status, presence: true, inclusion: {in: STATUSES}
20
20
  validate :validate_dispatch_status, if: -> { status == AUTHORIZED }
21
21
 
22
22
  delegate(:full_name, to: :authorized_by, prefix: :authorizer)
@@ -39,7 +39,7 @@ module Cats
39
39
  return unless dispatch
40
40
 
41
41
  if instance_of?(DispatchAuthorization)
42
- errors.add(:dispatch, 'is not in draft state.') unless dispatch.dispatch_status == Dispatch::DRAFT
42
+ errors.add(:dispatch, "is not in draft state.") unless dispatch.dispatch_status == Dispatch::DRAFT
43
43
  else
44
44
  return if dispatch.dispatch_status == Cats::Core::Dispatch::STARTED
45
45
 
@@ -58,7 +58,7 @@ module Cats
58
58
  def confirm
59
59
  if instance_of?(DispatchAuthorization)
60
60
  ActiveRecord::Base.transaction do
61
- raise(StandardError, 'Authorization does not have transactions.') if transactions.blank?
61
+ raise(StandardError, "Authorization does not have transactions.") if transactions.blank?
62
62
 
63
63
  transactions.each(&:commit)
64
64
  self.status = CONFIRMED
@@ -72,7 +72,7 @@ module Cats
72
72
  end
73
73
  end
74
74
  elsif instance_of?(ReceiptAuthorization)
75
- raise(StandardError, 'Authorization does not have receipts.') unless receipts.count.positive?
75
+ raise(StandardError, "Authorization does not have receipts.") unless receipts.count.positive?
76
76
 
77
77
  total_received = receipts.sum(:quantity)
78
78
  total_lost = lost_commodities.sum(:quantity)
@@ -1,16 +1,16 @@
1
1
  module Cats
2
2
  module Core
3
3
  class Beneficiary < ApplicationRecord
4
- MALE = 'M'.freeze
5
- FEMALE = 'F'.freeze
4
+ MALE = "M".freeze
5
+ FEMALE = "F".freeze
6
6
  GENDERS = [MALE, FEMALE].freeze
7
7
 
8
8
  belongs_to :beneficiary_category
9
- belongs_to :fdp, class_name: 'Location'
9
+ belongs_to :fdp, class_name: "Location"
10
10
 
11
11
  validates :full_name, :age, :gender, presence: true
12
- validates :gender, inclusion: { in: GENDERS }
13
- validates :age, numericality: { greater_than: 0, less_than: 100 }
12
+ validates :gender, inclusion: {in: GENDERS}
13
+ validates :age, numericality: {greater_than: 0, less_than: 100}
14
14
  validate :validate_fdp
15
15
 
16
16
  delegate(:name, to: :beneficiary_category, prefix: true)
@@ -19,7 +19,7 @@ module Cats
19
19
  def validate_fdp
20
20
  return unless fdp
21
21
 
22
- errors.add(:fdp, 'should be a valid distribution point.') unless fdp.location_type == Location::FDP
22
+ errors.add(:fdp, "should be a valid distribution point.") unless fdp.location_type == Location::FDP
23
23
  end
24
24
  end
25
25
  end
@@ -5,12 +5,12 @@ module Cats
5
5
  belongs_to :beneficiary_category
6
6
  has_many :plan_item_details
7
7
 
8
- validates :beneficiaries, presence: true, numericality: { greater_than: 0 }
9
- validates :plan_item_id, uniqueness: { scope: :beneficiary_category_id }
8
+ validates :beneficiaries, presence: true, numericality: {greater_than: 0}
9
+ validates :plan_item_id, uniqueness: {scope: :beneficiary_category_id}
10
10
 
11
- validates :rounds, presence: true, numericality: { greater_than: 0 }, if: :psnp?
12
- validates :rounds_served, presence: true, numericality: { greater_than_or_equal_to: 0 }, allow_nil: true,
13
- if: :psnp?
11
+ validates :rounds, presence: true, numericality: {greater_than: 0}, if: :psnp?
12
+ validates :rounds_served, presence: true, numericality: {greater_than_or_equal_to: 0}, allow_nil: true,
13
+ if: :psnp?
14
14
  validates :rounds, :rounds_served, absence: true, unless: :psnp?
15
15
  validate :validate_rounds
16
16
 
@@ -19,17 +19,17 @@ module Cats
19
19
  def psnp?
20
20
  return false unless plan_item
21
21
 
22
- plan_item.plan.program.code == 'PSNP'
22
+ plan_item.plan.program.code == "PSNP"
23
23
  end
24
24
 
25
25
  def validate_rounds
26
26
  return unless rounds && rounds_served
27
27
 
28
- errors.add(:rounds, 'should not be set for non PSNP plans.') unless psnp?
28
+ errors.add(:rounds, "should not be set for non PSNP plans.") unless psnp?
29
29
 
30
- errors.add(:rounds_served, 'should not be set for non PSNP plans.') unless psnp?
30
+ errors.add(:rounds_served, "should not be set for non PSNP plans.") unless psnp?
31
31
 
32
- errors.add(:rounds, 'cannot be lower than rounds served.') if rounds < rounds_served
32
+ errors.add(:rounds, "cannot be lower than rounds served.") if rounds < rounds_served
33
33
  end
34
34
  end
35
35
  end
@@ -5,8 +5,8 @@ module Cats
5
5
  belongs_to :beneficiary_category
6
6
  has_many :round_plan_item_details
7
7
 
8
- validates :beneficiaries, presence: true, numericality: { greater_than_or_equal_to: 0 }
9
- validates :round_plan_item_id, uniqueness: { scope: :beneficiary_category_id }
8
+ validates :beneficiaries, presence: true, numericality: {greater_than_or_equal_to: 0}
9
+ validates :round_plan_item_id, uniqueness: {scope: :beneficiary_category_id}
10
10
  validates :beneficiary_plan_item_id, presence: true
11
11
 
12
12
  delegate(:name, to: :beneficiary_category, prefix: true)
@@ -3,7 +3,7 @@ module Cats
3
3
  class CashDonation < Donation
4
4
  belongs_to :currency
5
5
 
6
- validates :amount, presence: true, numericality: { greater_than: 0 }
6
+ validates :amount, presence: true, numericality: {greater_than: 0}
7
7
 
8
8
  delegate(:code, to: :currency, prefix: true)
9
9
  end