pshq_engine 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (261) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +7 -0
  3. data/.travis.yml +3 -0
  4. data/Gemfile +4 -0
  5. data/README.md +39 -0
  6. data/Rakefile +1 -0
  7. data/app/models/.keep +0 -0
  8. data/app/models/ability.rb +76 -0
  9. data/app/models/alert.rb +56 -0
  10. data/app/models/asset.rb +485 -0
  11. data/app/models/asset_assignment.rb +13 -0
  12. data/app/models/asset_image.rb +9 -0
  13. data/app/models/asset_repair_request.rb +167 -0
  14. data/app/models/asset_scan.rb +87 -0
  15. data/app/models/asset_ticket.rb +3 -0
  16. data/app/models/cancellation.rb +64 -0
  17. data/app/models/candidate.rb +127 -0
  18. data/app/models/certification.rb +4 -0
  19. data/app/models/concerns/.keep +0 -0
  20. data/app/models/depreciation_setting.rb +10 -0
  21. data/app/models/dispatch.rb +3 -0
  22. data/app/models/employee.rb +22 -0
  23. data/app/models/feedback.rb +24 -0
  24. data/app/models/history_email.rb +221 -0
  25. data/app/models/importfile.rb +6 -0
  26. data/app/models/job.rb +37 -0
  27. data/app/models/jobs_users.rb +18 -0
  28. data/app/models/lateness.rb +35 -0
  29. data/app/models/location.rb +4 -0
  30. data/app/models/manufacturer.rb +4 -0
  31. data/app/models/member.rb +65 -0
  32. data/app/models/member_device.rb +4 -0
  33. data/app/models/message.rb +33 -0
  34. data/app/models/note.rb +20 -0
  35. data/app/models/notification.rb +73 -0
  36. data/app/models/notification_user.rb +4 -0
  37. data/app/models/o_auth/base.rb +27 -0
  38. data/app/models/o_auth/facebook.rb +21 -0
  39. data/app/models/o_auth/google.rb +18 -0
  40. data/app/models/organization.rb +189 -0
  41. data/app/models/plan.rb +4 -0
  42. data/app/models/project.rb +5 -0
  43. data/app/models/project_payment.rb +4 -0
  44. data/app/models/recurring_time_off.rb +4 -0
  45. data/app/models/response.rb +23 -0
  46. data/app/models/role.rb +22 -0
  47. data/app/models/schedule.rb +228 -0
  48. data/app/models/setting.rb +25 -0
  49. data/app/models/shift.rb +364 -0
  50. data/app/models/shift_off.rb +4 -0
  51. data/app/models/shift_trade.rb +43 -0
  52. data/app/models/subdomain.rb +5 -0
  53. data/app/models/swap.rb +82 -0
  54. data/app/models/task.rb +26 -0
  55. data/app/models/template.rb +59 -0
  56. data/app/models/template_asset.rb +3 -0
  57. data/app/models/timeoff.rb +101 -0
  58. data/app/models/token.rb +22 -0
  59. data/app/models/transaction.rb +2 -0
  60. data/app/models/unavailable.rb +37 -0
  61. data/app/models/user.rb +392 -0
  62. data/app/models/user_notification_setting.rb +178 -0
  63. data/app/models/user_vacation_info.rb +22 -0
  64. data/app/models/vacation.rb +24 -0
  65. data/app/models/vendor.rb +130 -0
  66. data/app/models/vendor_rating.rb +7 -0
  67. data/bin/console +14 -0
  68. data/bin/setup +7 -0
  69. data/db/migrate/20140211085026_devise_create_users.rb +58 -0
  70. data/db/migrate/20140211093822_rolify_create_roles.rb +19 -0
  71. data/db/migrate/20140211124352_create_subdomains.rb +9 -0
  72. data/db/migrate/20140211175737_devise_invitable_add_to_users.rb +24 -0
  73. data/db/migrate/20140222020040_create_schedules.rb +13 -0
  74. data/db/migrate/20140222020246_create_jobs.rb +11 -0
  75. data/db/migrate/20140222020348_create_shifts.rb +17 -0
  76. data/db/migrate/20140222020425_create_organizations.rb +19 -0
  77. data/db/migrate/20140226070901_create_plans.rb +11 -0
  78. data/db/migrate/20140302152936_create_feedbacks.rb +12 -0
  79. data/db/migrate/20140302153059_create_swaps.rb +16 -0
  80. data/db/migrate/20140302153215_create_timeoffs.rb +19 -0
  81. data/db/migrate/20140302153302_create_cancellations.rb +13 -0
  82. data/db/migrate/20140306014858_create_candidates.rb +15 -0
  83. data/db/migrate/20140314041018_create_shift_trades.rb +15 -0
  84. data/db/migrate/20140314041210_create_notes.rb +11 -0
  85. data/db/migrate/20140314041313_create_latenesses.rb +11 -0
  86. data/db/migrate/20140314041351_create_vacations.rb +11 -0
  87. data/db/migrate/20140314041440_create_user_vacation_infos.rb +11 -0
  88. data/db/migrate/20140318072438_create_jobs_users.rb +10 -0
  89. data/db/migrate/20140325151307_create_tasks.rb +16 -0
  90. data/db/migrate/20140406040247_create_mailboxer.mailboxer_engine.rb +66 -0
  91. data/db/migrate/20140406040248_add_conversation_optout.mailboxer_engine.rb +15 -0
  92. data/db/migrate/20141015085628_create_alerts.rb +14 -0
  93. data/db/migrate/20141023104634_add_disabled_to_users.rb +5 -0
  94. data/db/migrate/20141024094518_add_is_viewed_to_schedules.rb +5 -0
  95. data/db/migrate/20141027091531_add_customer_id_to_users.rb +5 -0
  96. data/db/migrate/20141029124637_create_unavailables.rb +11 -0
  97. data/db/migrate/20141029151702_create_certifications.rb +10 -0
  98. data/db/migrate/20141105091745_add_reminder_time_to_shifts.rb +5 -0
  99. data/db/migrate/20141106054916_create_certifications_users.rb +10 -0
  100. data/db/migrate/20141106100123_add_birth_date_to_users.rb +5 -0
  101. data/db/migrate/20141106134815_add_allow_rolling_v_hrs_to_organizations.rb +5 -0
  102. data/db/migrate/20141107155319_create_recurring_time_offs.rb +12 -0
  103. data/db/migrate/20141111084845_add_termination_date_to_users.rb +5 -0
  104. data/db/migrate/20141111103759_add_requested_weekly_hours_to_users.rb +5 -0
  105. data/db/migrate/20141113094547_add_api_token_to_users.rb +5 -0
  106. data/db/migrate/20150105143729_create_templates.rb +9 -0
  107. data/db/migrate/20150105164236_add_coloumn_is_template.rb +5 -0
  108. data/db/migrate/20150106121306_add_org_id.rb +5 -0
  109. data/db/migrate/20150126070904_add_job_id_to_shifts.rb +6 -0
  110. data/db/migrate/20150203112955_add_time_zone_to_org.rb +5 -0
  111. data/db/migrate/20150204160711_add_show_owner_to_org.rb +5 -0
  112. data/db/migrate/20150210165627_add_training_hours_to_shift.rb +9 -0
  113. data/db/migrate/20150217131509_add_total_hours_to_schedules.rb +5 -0
  114. data/db/migrate/20150218094709_add_show_disable_users.rb +5 -0
  115. data/db/migrate/20150225134050_add_notes_to_cancellation.rb +9 -0
  116. data/db/migrate/20150226125524_add_unexcused_absence_note_to_cancellation.rb +9 -0
  117. data/db/migrate/20150226125811_add_cancel_shift_to_shifts.rb +9 -0
  118. data/db/migrate/20150302100542_add_picture_to_user.rb +9 -0
  119. data/db/migrate/20150304082219_add_priorty_to_user.rb +9 -0
  120. data/db/migrate/20150304094605_add_time_format_to_organization.rb +8 -0
  121. data/db/migrate/20150304142621_create_shift_offs.rb +15 -0
  122. data/db/migrate/20150306120726_add_shiftoff_to_shifts.rb +9 -0
  123. data/db/migrate/20150310103643_add_email_and_number_to_user.rb +11 -0
  124. data/db/migrate/20150311110055_add_one_sided_to_candidate.rb +9 -0
  125. data/db/migrate/20150318083934_add_notes_to_shift_trade.rb +9 -0
  126. data/db/migrate/20150408180855_add_column_status_to_unavailability.rb +8 -0
  127. data/db/migrate/20150409140324_create_assets.rb +35 -0
  128. data/db/migrate/20150409142753_create_vendors.rb +14 -0
  129. data/db/migrate/20150409144023_create_employees.rb +13 -0
  130. data/db/migrate/20150409144751_create_assign_assets.rb +16 -0
  131. data/db/migrate/20150409150449_create_asset_repair_requests.rb +19 -0
  132. data/db/migrate/20150409151023_create_dispatches.rb +13 -0
  133. data/db/migrate/20150409151329_create_vendor_ratings.rb +11 -0
  134. data/db/migrate/20150409151546_create_template_assets.rb +11 -0
  135. data/db/migrate/20150413101913_create_index_organization.rb +7 -0
  136. data/db/migrate/20150414153330_change_vendors.rb +16 -0
  137. data/db/migrate/20150420112003_add_name_to_users.rb +5 -0
  138. data/db/migrate/20150421074542_add_comment_to_ratings.rb +5 -0
  139. data/db/migrate/20150421131331_add_retire_column_to_assets.rb +5 -0
  140. data/db/migrate/20150422135600_add_attachment_avatar_to_assets.rb +11 -0
  141. data/db/migrate/20150422143242_create_importfiles.rb +8 -0
  142. data/db/migrate/20150422143301_add_attachment_avatar_to_importfiles.rb +11 -0
  143. data/db/migrate/20150423080234_change_retire_column.rb +5 -0
  144. data/db/migrate/20150423170953_add_attachment_avatar_to_vendors.rb +11 -0
  145. data/db/migrate/20150423225459_add_lockable.rb +7 -0
  146. data/db/migrate/20150427171842_create_asset_scans.rb +15 -0
  147. data/db/migrate/20150429211309_add_attachment_logo_to_organizations.rb +11 -0
  148. data/db/migrate/20150430074555_change_assets_table.rb +8 -0
  149. data/db/migrate/20150430235920_add_unique_email_index_to_users.rb +5 -0
  150. data/db/migrate/20150505104834_add_columntouser.rb +8 -0
  151. data/db/migrate/20150505140926_add_maintenance_cost_to_assets.rb +6 -0
  152. data/db/migrate/20150505142413_create_asset_images.rb +8 -0
  153. data/db/migrate/20150505152604_create_pg_search_documents.rb +17 -0
  154. data/db/migrate/20150506090012_change_employee.rb +12 -0
  155. data/db/migrate/20150506110441_add_status_to_asset_repair_requests.rb +6 -0
  156. data/db/migrate/20150507080738_change_phone_in_employees.rb +6 -0
  157. data/db/migrate/20150507101306_create_manufacturers.rb +12 -0
  158. data/db/migrate/20150507101446_remove.rb +9 -0
  159. data/db/migrate/20150507102211_add_index_manufacturer.rb +5 -0
  160. data/db/migrate/20150507104605_add_website_manufacturer.rb +5 -0
  161. data/db/migrate/20150507115535_change_refrence_manucaturer.rb +6 -0
  162. data/db/migrate/20150507150848_create_notifications.rb +9 -0
  163. data/db/migrate/20150507150855_create_notification_users.rb +10 -0
  164. data/db/migrate/20150508094912_add_landline_to_organization.rb +5 -0
  165. data/db/migrate/20150508143536_add_source_to_notifications.rb +7 -0
  166. data/db/migrate/20150508145048_add_postal_to_profile.rb +5 -0
  167. data/db/migrate/20150508162219_add_summary_to_notifications.rb +5 -0
  168. data/db/migrate/20150509220624_remove_responded_from_notifications.rb +5 -0
  169. data/db/migrate/20150509220625_add_responded_to_notifications.rb +5 -0
  170. data/db/migrate/20150509225608_change_columns_asset_repair_requests.rb +11 -0
  171. data/db/migrate/20150511105420_remove_avatar_asset.rb +6 -0
  172. data/db/migrate/20150514105700_add_unique_asset_id_to_asset.rb +5 -0
  173. data/db/migrate/20150515110042_add_deleted_at_in_assets.rb +6 -0
  174. data/db/migrate/20150515111410_add_deleted_at_vendors.rb +6 -0
  175. data/db/migrate/20150515113054_add_deleted_at_in_employee.rb +6 -0
  176. data/db/migrate/20150515142228_create_locations.rb +16 -0
  177. data/db/migrate/20150515142242_add_locations_to_assets.rb +5 -0
  178. data/db/migrate/20150515142536_add_organization_to_locations.rb +5 -0
  179. data/db/migrate/20150518123010_change_assign_asset.rb +9 -0
  180. data/db/migrate/20150518140153_add_asset_id_in_asset_assign.rb +5 -0
  181. data/db/migrate/20150518144758_rename_assign_assets.rb +8 -0
  182. data/db/migrate/20150518145248_rename_asset_assignment.rb +8 -0
  183. data/db/migrate/20150519140425_change_empid_to_string.rb +6 -0
  184. data/db/migrate/20150521085132_change_uique_asset_id_to_string.rb +6 -0
  185. data/db/migrate/20150525095045_add_status_to_organizations.rb +5 -0
  186. data/db/migrate/20150525123202_create_transactions.rb +20 -0
  187. data/db/migrate/20150526124755_create_settings.rb +16 -0
  188. data/db/migrate/20150603163451_add_cost_comment_collected_by_to_asset_repair_request.rb +7 -0
  189. data/db/migrate/20150605144111_collected.rb +5 -0
  190. data/db/migrate/20150609111725_add_column_notification.rb +5 -0
  191. data/db/migrate/20150609170014_create_user_notification_settings.rb +13 -0
  192. data/db/migrate/20150609175555_add_city_to_locations.rb +4 -0
  193. data/db/migrate/20150612190052_addcity.rb +5 -0
  194. data/db/migrate/20150614215015_create_members.rb +27 -0
  195. data/db/migrate/20150616070816_add_organization_to_schedules.rb +9 -0
  196. data/db/migrate/20150616114344_change_timestape_to_date.rb +4 -0
  197. data/db/migrate/20150619085555_add_index_repair_scan_to_repair.rb +6 -0
  198. data/db/migrate/20150623120915_create_depreciation_settings.rb +9 -0
  199. data/db/migrate/20150624060402_add_depriciation_ref_to_assets.rb +5 -0
  200. data/db/migrate/20150624085501_add_organization_ref_dep.rb +5 -0
  201. data/db/migrate/20150624114339_add_user_to_vacation_info.rb +9 -0
  202. data/db/migrate/20150624131422_change_dep_seeting.rb +6 -0
  203. data/db/migrate/20150625090838_add_dep_cost_col_in_assets.rb +5 -0
  204. data/db/migrate/20150626123545_add_vendor_id_to_asset.rb +5 -0
  205. data/db/migrate/20150629095216_add_depreciated_cost_asset.rb +5 -0
  206. data/db/migrate/20150629124325_add_allow_vendor_additon_to_setings.rb +7 -0
  207. data/db/migrate/20150630080925_add_approve_to_vendor.rb +5 -0
  208. data/db/migrate/20150630112252_add_referrenc_dereciation_to_asset.rb +5 -0
  209. data/db/migrate/20150630124838_add_ref_dep_organization.rb +5 -0
  210. data/db/migrate/20150707102850_add_column_sittings_to_delete_ticket.rb +6 -0
  211. data/db/migrate/20150710150314_add_org_ref_to_subdomain.rb +5 -0
  212. data/db/migrate/20150713204553_add_hire_dateto_member.rb +9 -0
  213. data/db/migrate/20150714004440_add_organization_to_notes.rb +9 -0
  214. data/db/migrate/20150714100444_add_time_format_to_member.rb +9 -0
  215. data/db/migrate/20150714202050_create_asset_tickets.rb +11 -0
  216. data/db/migrate/20150722151752_add_invitation_counts_to_user.rb +10 -0
  217. data/db/migrate/20150723141352_add_invitation_created_at_to_member.rb +10 -0
  218. data/db/migrate/20150724105130_create_projects.rb +8 -0
  219. data/db/migrate/20150724105257_create_project_payments.rb +13 -0
  220. data/db/migrate/20150724220844_add_user_index_to_asset.rb +6 -0
  221. data/db/migrate/20150727085046_add_projects_to_organization.rb +11 -0
  222. data/db/migrate/20150727122551_add_coloumn_to_vendors.rb +5 -0
  223. data/db/migrate/20150727211029_add_column_code_to_asset.rb +5 -0
  224. data/db/migrate/20150728101649_add_disabled_to_member.rb +9 -0
  225. data/db/migrate/20150731095354_add_column_repair_date_to_asset.rb +6 -0
  226. data/db/migrate/20150731104152_add_column_repair_reminder_setting.rb +5 -0
  227. data/db/migrate/20150806085559_create_member_devices.rb +10 -0
  228. data/db/migrate/20150807133155_add_view_to_alert.rb +9 -0
  229. data/db/migrate/20150808151840_app_col_in_member_device.rb +5 -0
  230. data/db/migrate/20150808180234_add_deleted_at_toalerts.rb +7 -0
  231. data/db/migrate/20150810110136_add_address_in_4_feilds_vendor.rb +12 -0
  232. data/db/migrate/20150810172933_change_column_type_in_vendors.rb +6 -0
  233. data/db/migrate/20150811061019_change_column_in_vendors.rb +5 -0
  234. data/db/migrate/20150811133002_change_shift_off_time.rb +5 -0
  235. data/db/migrate/20150811135657_change_column_type_timestamp_to_date.rb +7 -0
  236. data/db/migrate/20150818131207_create_history_emails.rb +10 -0
  237. data/db/migrate/20150820115042_change_schedule_total_hours.rb +6 -0
  238. data/db/migrate/20150820120309_add_column_email_remove.rb +5 -0
  239. data/db/migrate/20150820121702_add_column_email_organization.rb +5 -0
  240. data/db/migrate/20150824085019_add_column_asset_purchase_vendor.rb +5 -0
  241. data/db/migrate/20150826122944_add_column_exipry_notification.rb +5 -0
  242. data/db/migrate/20150827113937_create_members_roles.rb +9 -0
  243. data/db/migrate/20150828145913_add_locable_to_member.rb +7 -0
  244. data/db/migrate/20150903155708_add_vendor_feilds_to_user.rb +8 -0
  245. data/db/migrate/20150903200953_add_shift_to_candidate.rb +9 -0
  246. data/db/migrate/20150904082434_add_one_sided_to_trade_shift.rb +9 -0
  247. data/db/migrate/20150904134529_add_column_in_setting_user_dispatch.rb +5 -0
  248. data/db/migrate/20150907082501_add_website_for_vendor.rb +6 -0
  249. data/db/migrate/20150907141100_add_dollar_limit_to_user.rb +5 -0
  250. data/db/migrate/20150907193030_add_estimate_in_repair.rb +8 -0
  251. data/db/migrate/20150908123735_add_vendor_aproval_in_repair.rb +10 -0
  252. data/db/migrate/20150909112005_add_column_amount_into_plan.rb +5 -0
  253. data/db/migrate/20150916131512_add_plan_name_to_project_payment.rb +9 -0
  254. data/db/schema.rb +909 -0
  255. data/db/seeds.rb +23 -0
  256. data/lib/assets/.keep +0 -0
  257. data/lib/pshq_engine/version.rb +3 -0
  258. data/lib/pshq_engine.rb +5 -0
  259. data/lib/tasks/.keep +0 -0
  260. data/pshq_engine.gemspec +26 -0
  261. metadata +330 -0
@@ -0,0 +1,9 @@
1
+ class AssetImage < ActiveRecord::Base
2
+ belongs_to :asset
3
+ has_attached_file :image, :styles => {
4
+ :medium => "300x300!",
5
+ :thumb => "100x100!"
6
+ }, :default_url => "assets/users/imgo.jpeg"
7
+ validates_attachment_content_type :image, :content_type => /\Aimage\/.*\Z/
8
+
9
+ end
@@ -0,0 +1,167 @@
1
+ class AssetRepairRequest < ActiveRecord::Base
2
+ belongs_to :asset
3
+ belongs_to :vendor, :class_name => 'User'
4
+ belongs_to :requested_by, :class_name => "User"
5
+ belongs_to :responded_by, :class_name => "User"
6
+ belongs_to :collected_by, :class_name => "User"
7
+ has_one :dispatch
8
+ has_many :notifications, :as => :source
9
+ has_one :asset_scan
10
+
11
+ # Naive approach
12
+ def self.rebuild_pg_search_documents
13
+ find_each { |record| record.update_pg_search_document }
14
+ end
15
+ # Global search
16
+ include PgSearch
17
+ multisearchable :against => [:id,:responder_comments,:vending_cost,:vendor_comments, :asset_name ,:vendor_name]
18
+
19
+ # User name for multiple search
20
+ def user_name
21
+ requested_by.name
22
+ end
23
+
24
+ def asset_name
25
+ asset.name
26
+ end
27
+
28
+ def vendor_name
29
+ vendor.name
30
+ end
31
+ # End
32
+ def respond(is_accepted, comments, responded_by)
33
+ self.status = (is_accepted ? 1 : -1)
34
+ self.responder_comments = comments
35
+ self.responded_by = responded_by
36
+ self.responded_date = Time.new
37
+ self.save!
38
+ end
39
+
40
+ # All notifications of type "ARR" -> "Asset Repair Request"
41
+ def arr_notifications
42
+ self.notifications.where({
43
+ notification_type: "ARR"
44
+ })
45
+ end
46
+
47
+ def self.repair_cost_origional(asset)
48
+ @vendor_cost= AssetRepairRequest.where(:asset_id =>asset)
49
+ @total = 0
50
+ @vendor_cost.each do |f|
51
+ @vend = f.vending_cost.to_f
52
+ @total = @vend + @total
53
+ end
54
+ return @total
55
+ end
56
+
57
+ # for preventative details
58
+ def self.preventative_detail(organization_id , start_date, end_date)
59
+ @asset = Asset.where("organization_id =? and created_at >= ? and created_at <= ? and retire =?", organization_id, start_date , end_date, false)
60
+ arr =[]
61
+ count = 0
62
+ @asset.each do |asset|
63
+ asset_name = asset.name
64
+ request = self.find_by_asset_id(asset.id)
65
+ if request.blank?
66
+ vendor = ""
67
+ vendor_name = ""
68
+ else
69
+ vendor = Vendor.find_by_id(request.vendor_id)
70
+ vendor_name = vendor.name
71
+ arr<<asset_name << request << vendor_name
72
+ end
73
+ end
74
+ return arr
75
+ end
76
+
77
+ # All
78
+ def self.all_repair_request(organization_id , start_date, end_date)
79
+ asset = Asset.where("organization_id =? and created_at >= ? and created_at <= ? ", organization_id, start_date , end_date)
80
+ total = 0
81
+ asset.each do |ass|
82
+ total_count = self.where("asset_id =?", ass.id).count
83
+ total = total+ total_count
84
+ end
85
+ return total
86
+ end
87
+
88
+
89
+ def self.open_repair(organization_id , start_date, end_date)
90
+ asset = Asset.where("organization_id =? and created_at >= ? and created_at <= ? ", organization_id, start_date , end_date)
91
+ total = 0
92
+ asset.each do |aset_detail|
93
+ total_count = self.where("asset_id =? and status =?", aset_detail.id , 0).count
94
+ total = total+ total_count
95
+ end
96
+ return total
97
+ end
98
+
99
+ def self.complete_repair(organization_id , start_date, end_date)
100
+ asset = Asset.where("organization_id =? and created_at >= ? and created_at <= ? ", organization_id, start_date , end_date)
101
+ total = 0
102
+ asset.each do |aset_detail|
103
+ total_count = self.where("asset_id =? and status =?", aset_detail.id , 2).count
104
+ total = total+ total_count
105
+ end
106
+ return total
107
+ end
108
+
109
+ def self.delete_repair(organization_id , start_date, end_date)
110
+ asset = Asset.where("organization_id =? and created_at >= ? and created_at <= ? ", organization_id, start_date , end_date)
111
+ total = 0
112
+ asset.each do |aset_detail|
113
+ total_count = self.where("asset_id =? and status =?", aset_detail.id , 4).count
114
+ total = total+ total_count
115
+ end
116
+ return total
117
+ end
118
+
119
+ def self.dispatch_repair(organization_id , start_date, end_date)
120
+ asset = Asset.where("organization_id =? and created_at >= ? and created_at <= ? ", organization_id, start_date , end_date)
121
+ dispatch_total = 0
122
+ asset.each do |ass|
123
+ total_dis = self.where("asset_id =? and status =? ", ass.id , 3).count
124
+ dispatch_total= dispatch_total + total_dis
125
+ end
126
+ return dispatch_total
127
+ end
128
+
129
+ # Get Ticket for Email
130
+ def self.get_ticket(ticket_id )
131
+ self.find_by_id(ticket_id)
132
+ end
133
+
134
+ # Get Collected Ticket
135
+ def self.get_collect(collect_id)
136
+ self.find_by_collected_by_id(collect_id)
137
+ end
138
+
139
+ # Get Total repair for an asset
140
+ def self.get_total_repair(asset_id)
141
+ self.where("asset_id = ?",asset_id).count
142
+ end
143
+
144
+ def self.create_repair_request(params , status ,current_user)
145
+ self.create(:comments => params[:comments],
146
+ :asset_id => params[:asset][:id],
147
+ :requested_by_id => current_user.id,
148
+ :vendor_id => params[:vendor][:id],
149
+ :status => status,
150
+ :estimate_by_user => params[:request][:estimate_by_user],
151
+ :requested_date => Date.today(),
152
+ :responded_date => Date.today(),
153
+ :responder_comments => 'Approved',
154
+ :responded_by_id => current_user.id)
155
+ end
156
+
157
+ def self.create_ticket_user(params,current_user)
158
+ self.create(:comments => params[:comments],
159
+ :asset_id => params[:asset][:id],
160
+ :requested_by_id => current_user.id,
161
+ :vendor_id => params[:vendor][:id],
162
+ :status => '0',
163
+ :estimate_by_user => params[:request][:estimate_by_user],
164
+ :requested_date => Date.today())
165
+ end
166
+
167
+ end
@@ -0,0 +1,87 @@
1
+ class AssetScan < ActiveRecord::Base
2
+ belongs_to :asset
3
+ belongs_to :organization
4
+ has_one :asset_repair_request
5
+
6
+ has_attached_file :scans, :styles =>lambda{ |a|
7
+ ["image/jpeg", "image/png", "image/jpg", "image/gif"].include?( a.content_type ) ? {
8
+ :thumb=> "100x100!",
9
+ :medium => "300x300!"}: {}
10
+ }, :default_url => "assets/users/scan.png"
11
+ validates_attachment_content_type :scans, :content_type => /\Aimage\/.*\Z/ ,:if => :is_image?
12
+ validates_attachment_content_type :scans, :content_type => %w(application/pdf application/msword application/vnd.openxmlformats-officedocument.wordprocessingml.document), :if =>:is_pdf?
13
+
14
+
15
+ include PgSearch
16
+ pg_search_scope :custom_search,
17
+ :against => [:name, :description],
18
+ :using => {
19
+ :tsearch => {:prefix => true}
20
+ }
21
+
22
+
23
+ def is_image?
24
+ scans.content_type =~ %r(image)
25
+ end
26
+ def is_pdf?
27
+ scans.content_type =~ %r(application)
28
+ end
29
+
30
+
31
+ #decode hash of anuglar base 64 image string
32
+ def decode_scan(params,asset_scan)
33
+ # Rails.logger.info 'decoding base64 file'
34
+ decoded_data = Base64.decode64(params[:image_url][:base64])
35
+ # create 'file' understandable by Paperclip
36
+ data = StringIO.new(decoded_data)
37
+ data.class_eval do
38
+ attr_accessor :content_type, :original_filename
39
+ end
40
+ # set file properties
41
+ data.content_type = params[:image_url][:filetype]
42
+ data.original_filename = params[:image_url][:filename]
43
+ asset_scan.update(:scans => data)
44
+ end
45
+
46
+ # for view scan list
47
+ def self.asset_scan_list(name , asset)
48
+ AssetScan.where("name = ? and asset_id =?",name , asset).last
49
+ end
50
+
51
+ # find history records
52
+ def self.find_repaired_history(repair_id)
53
+ @repair_record = AssetScan.find_by_repair_id(repair_id)
54
+ end
55
+
56
+ def self.find_scans(scan_id)
57
+ @scan_id = AssetScan.find_by_id(scan_id)
58
+ end
59
+
60
+
61
+ # for asset warranties
62
+ def self.asset_warranties(oraginaztion_id , start_month ,end_month)
63
+ scan_list ={}
64
+ assets = Asset.where("organization_id =? and created_at >= ? and created_at <= ? and retire =?", oraginaztion_id, start_month , end_month, false)
65
+
66
+ assets.each do |asset|
67
+ asset_name = asset.name
68
+ scan = self.where("name = ? and asset_id =? and start_date >= ? and expiry_date <= ?", "warranty", asset.id , start_month.to_date, end_month.to_date)
69
+ if !scan.blank?
70
+ scan_list.store(scan , asset_name)
71
+ end
72
+ end
73
+
74
+ return scan_list
75
+ end
76
+
77
+ # Find total scan for warranty
78
+ def self.total_asset_warranty(asset_id)
79
+ self.where("asset_id = ? and name = ?",asset_id, "warranty")
80
+ end
81
+
82
+ # Find Total scan for service contract
83
+ def self.total_service_contract(asset_id)
84
+ self.where("asset_id = ? and name = ?",asset_id, "service_contract")
85
+ end
86
+
87
+ end
@@ -0,0 +1,3 @@
1
+ class AssetTicket < ActiveRecord::Base
2
+ belongs_to :asset
3
+ end
@@ -0,0 +1,64 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: cancellations
4
+ #
5
+ # id :integer not null, primary key
6
+ # shift_id :integer
7
+ # reason :string(255)
8
+ # status :string(255) default("pending")
9
+ # created_at :datetime
10
+ # updated_at :datetime
11
+ # approved_date :datetime
12
+ # approved_by :integer
13
+ #
14
+
15
+ class Cancellation < ActiveRecord::Base
16
+
17
+ belongs_to :shift
18
+
19
+ validates_presence_of :shift
20
+ validates_uniqueness_of :shift_id
21
+
22
+ def pending?
23
+ self.status == 'pending'
24
+ end
25
+
26
+ def approved?
27
+ self.status == 'approved'
28
+ end
29
+
30
+ def shift_detail
31
+ "AS #{shift.job_name} from #{shift.start_time.strftime('%H:%M')} to #{shift.end_time.strftime('%H:%M')} on #{shift.formatted_due_date}"
32
+ end
33
+
34
+ def approve(manager, cancellation, excused)
35
+ self.approved_by = manager.id
36
+ self.approved_date = Time.zone.now
37
+ self.notes = cancellation[:notes] if !cancellation[:notes].blank?
38
+ self.unexcused_note = cancellation[:unexcused_note] if !cancellation[:unexcused_note].blank?
39
+ if excused == true
40
+ self.status = 'approved excused'
41
+ else
42
+ self.status = 'approved unexcused'
43
+ end
44
+ save
45
+ end
46
+
47
+ def deny(cancellation)
48
+ self.status = 'denied'
49
+ self.notes = cancellation[:notes] if !cancellation[:notes].blank?
50
+ save
51
+ end
52
+
53
+ def discuss(cancellation)
54
+ self.status = 'discuss'
55
+ self.notes = cancellation[:notes] if !cancellation[:notes].blank?
56
+ save
57
+ end
58
+
59
+ def cancel
60
+ self.status = 'cancelled'
61
+ save
62
+ end
63
+
64
+ end
@@ -0,0 +1,127 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: candidates
4
+ #
5
+ # id :integer not null, primary key
6
+ # swap_id :integer
7
+ # user_id :integer
8
+ # created_at :datetime
9
+ # updated_at :datetime
10
+ # status :string(255) default("initial")
11
+ #
12
+
13
+ class Candidate < ActiveRecord::Base
14
+
15
+ belongs_to :swap
16
+ belongs_to :user
17
+ belongs_to :organization
18
+
19
+ # has_many :shift_trades, :dependent => :destroy
20
+ # accepts_nested_attributes_for :shift_trades
21
+
22
+ def trade
23
+ self.status = 'trading'
24
+ save
25
+ end
26
+
27
+ def job_name
28
+ self.swap.shift.schedule.job.name
29
+ end
30
+
31
+ def user_name
32
+ self.user.name
33
+ end
34
+
35
+ def start_time
36
+ self.swap.shift.start_time
37
+ end
38
+
39
+ def end_time
40
+ self.swap.shift.end_time
41
+ end
42
+
43
+ def deny
44
+ self.status = 'denied'
45
+ save
46
+ end
47
+
48
+ def get_swap_job
49
+ @swap = self.swap
50
+ if !@swap.nil?
51
+ @swap.shift.job.name
52
+ end
53
+ end
54
+
55
+ def get_fill_shift_job
56
+ @shift = Shift.find_by_id(self.alert_type_id)
57
+ @shift.job.name
58
+ end
59
+
60
+ def get_fill_start_time
61
+ @shift = Shift.find_by_id(self.alert_type_id)
62
+ @shift.start_time.strftime('%H:%M')
63
+ end
64
+
65
+ def get_fill_end_time
66
+ @shift = Shift.find_by_id(self.alert_type_id)
67
+ @shift.end_time.strftime('%H:%M')
68
+ end
69
+
70
+ def get_week_hours
71
+ user = self.user
72
+ shift = Shift.find_by_id(self.alert_type_id)
73
+ if user.present? and shift.present?
74
+ return user.shifts.where("due_date >= ? AND due_date <= ?",shift.due_date.beginning_of_week, shift.due_date.end_of_week ).sum(:hours).to_i
75
+ end
76
+ end
77
+
78
+ def if_swap_approved
79
+ shift = Shift.find_by_id(self.alert_type_id)
80
+ if shift.present?
81
+ return (self.get_week_hours + shift.hours.strftime('%H').to_i)
82
+ end
83
+ end
84
+
85
+ def shift_job_name
86
+ shift = Shift.find_by_id(self.alert_type_id)
87
+ if shift.present?
88
+ return shift.job_name
89
+ end
90
+ end
91
+
92
+ def shift_start_time
93
+ if self.one_sided
94
+ shift = Shift.find_by_id(self.alert_type_id)
95
+ else
96
+ shift = Shift.find_by_id(self.candidate_shift_id)
97
+ end
98
+ shift.start_time
99
+ end
100
+
101
+ def shift_end_time
102
+ if self.one_sided
103
+ shift = Shift.find_by_id(self.alert_type_id)
104
+ else
105
+ shift = Shift.find_by_id(self.candidate_shift_id)
106
+ end
107
+ shift.end_time
108
+ end
109
+
110
+ def shift_due_date
111
+ if self.one_sided
112
+ shift = Shift.find_by_id(self.alert_type_id)
113
+ else
114
+ shift = Shift.find_by_id(self.candidate_shift_id)
115
+ end
116
+ shift.due_date
117
+ end
118
+
119
+ def confirm(confirmed_shift_trade_id)
120
+ self.status = 'approved'
121
+ save
122
+ self.shift_trades.delete_if{|trade| trade.id == confirmed_shift_trade_id}
123
+ self.shift_trades.each {|shift_trade| shift_trade.ignore}
124
+ self.swap.approve
125
+ end
126
+
127
+ end
@@ -0,0 +1,4 @@
1
+ class Certification < ActiveRecord::Base
2
+ belongs_to :organization
3
+ has_and_belongs_to_many :users
4
+ end
File without changes
@@ -0,0 +1,10 @@
1
+ class DepreciationSetting < ActiveRecord::Base
2
+ has_many :assets
3
+ belongs_to :organization
4
+
5
+
6
+ # def dep_count(organization)
7
+ # Asset.where(:depreciation_settings_id => organization.depreciation_settings).count
8
+ # end
9
+
10
+ end
@@ -0,0 +1,3 @@
1
+ class Dispatch < ActiveRecord::Base
2
+ # belongs_to :request, class_name => "AssetRepairRequest"
3
+ end
@@ -0,0 +1,22 @@
1
+ class Employee < ActiveRecord::Base
2
+ acts_as_paranoid
3
+ belongs_to :organization
4
+ has_many :asset_assignments
5
+
6
+ validates :employeeId , :department, :fullName, :email,:phone_number , :designation, :presence => true
7
+ validates :employeeId, :uniqueness => true
8
+
9
+ include PgSearch
10
+ pg_search_scope :custom_search,
11
+ :against => [:fullName , :email,:phone_number , :designation ],
12
+ :using => {
13
+ :tsearch => {:prefix => true}
14
+ }
15
+
16
+ # For Mutlti search Employee
17
+ multisearchable :against => [:fullName , :employeeId , :department , :email,:phone_number , :designation]
18
+
19
+ def self.rebuild_pg_search_documents
20
+ find_each { |record| record.update_pg_search_document }
21
+ end
22
+ end
@@ -0,0 +1,24 @@
1
+ # == Schema Information
2
+ #
3
+ # Table name: feedbacks
4
+ #
5
+ # id :integer not null, primary key
6
+ # user_id :integer
7
+ # message :string(255)
8
+ # in_trash :boolean default(FALSE)
9
+ # created_at :datetime
10
+ # updated_at :datetime
11
+ # ancestry :string(255)
12
+ #
13
+
14
+ class Feedback < ActiveRecord::Base
15
+
16
+ belongs_to :user
17
+
18
+ validates_presence_of :user
19
+ validates_presence_of :message
20
+
21
+ def send_feedback
22
+ Notifier.delay.send_website_msg(self.user.email,self.message)
23
+ end
24
+ end