Class: CompaniesController

Inherits:
ApplicationController show all
Defined in:
app/controllers/companies_controller.rb

Instance Method Summary collapse

Methods included from AuthentificationHelper

#accessible_company_ids_from_tenant_and_user, #application_mode_from_hostname, #current_company_id_from_accessible_company_ids, #current_tenant_from_user, #current_user_and_locale_from_token

Instance Method Details

#companies_by_tenantObject



118
119
120
121
122
123
124
125
# File 'app/controllers/companies_controller.rb', line 118

def companies_by_tenant
  data = ActiveRecord::Base.connection.execute_procedure(
    'pr_get_companies',
    0,
    nil
  )
  render json: { data: data }
end

#company_detailsObject



25
26
27
28
29
30
31
32
33
34
# File 'app/controllers/companies_controller.rb', line 25

def company_details
  company = Company.find(params[:company_id])
  data = Company.find_by_procedure(params[:company_id]).merge(
    ship_province: company.ship_province
  )

  render json: {
    data: data
  }
end

#createObject



82
83
84
85
86
87
88
89
90
91
92
93
94
# File 'app/controllers/companies_controller.rb', line 82

def create
  render json: {}, status: :not_found
  #   company = current_tenant.create_placeholder_company(email: current_user.email)
  #   render json: {
  #     data: company
  #   }
  # rescue ActiveRecord::RecordInvalid => e
  #   render json: {
  #     errors: e.record.errors,
  #     message: e.record.errors.full_messages.join(', '),
  #     redirect_to: "/app/settings/account/companies/#{e.record.company_id}"
  #   }, status: :bad_request
end

#currentObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'app/controllers/companies_controller.rb', line 36

def current
  company = Company.find_by_procedure(current_company_id)

  data = company.merge({
                         province: current_company.province,
                         ship_province: current_company.ship_province,
                         duns_no: current_company.duns_no&.strip,
                         payroll_frequency_option: current_company.payroll_frequency_option,
                         phone_no: current_company.phone_no,
                         ship_phone_no: current_company.ship_phone_no,
                         default_language_option: current_company.default_language_option,
                         industry_sector_option: current_company.industry_sector_option,
                         gvt_remittance_frequency_option: current_company.gvt_remittance_frequency_option,
                         business_start_date: current_company.business_start_date,
                         exempt_from_fss: current_company.exempt_from_fss,
                         exempt_from_fss_end_date: current_company.exempt_from_fss_end_date,
                         company_name_e: current_company.company_name_e
                       })

  render json: {
    data: data
  }
end

#destroyObject



114
115
116
# File 'app/controllers/companies_controller.rb', line 114

def destroy
  render json: {}, status: :not_found
end

#formObject



127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'app/controllers/companies_controller.rb', line 127

def form
  render json: {
    payroll_frequencies: TypesMaster.payroll_frequencies.as_json(
      methods: %i[type_description]
    ),
    industry_sectors: TypesMaster.industry_sectors.as_json(
      methods: %i[type_description]
    ),
    gov_remittance_frequency: TypesMaster.gov_remittance_frequency.as_json(
      methods: %i[type_description]
    )
  }
end

#headerObject



141
142
143
144
145
146
147
148
149
150
# File 'app/controllers/companies_controller.rb', line 141

def header
  render json: {
    data: {
      contacts_count: current_company.contacts.count,
      bank_accounts_count: current_company.bank_accounts.count,
      reports_count: current_company.reports.count
      # invoices_count: current_company.invoices_count
    }
  }
end

#indexObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
# File 'app/controllers/companies_controller.rb', line 60

def index
  companies = accessible_companies.map do |company|
    payroll_frequency_type = TypesMaster.payroll_frequencies.find_by(type: company.payroll_frequency)
    company.attributes.merge(
      province: company.province,
      ship_province: company.ship_province,
      duns_no: company.duns_no&.strip,
      payroll_frequency: {
        type: company.payroll_frequency,
        type_description: payroll_frequency_type&.type_description,
        type_id: payroll_frequency_type&.types_id
      },
      phone_no: HasPhone.format_phone(company.phone_no),
      ship_phone_no: HasPhone.format_phone(company.ship_phone_no)
    )
  end

  render json: {
    data: companies
  }
end

#optionsObject



11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'app/controllers/companies_controller.rb', line 11

def options
  query = params[:query] || ''
  company_options = accessible_companies
                    .select(:company_code, :company_name_e)
                    .where(tenant_id: current_user.tenant_id)
                    .where('company_name_e LIKE :query', query: "%#{query}%")
                    .order(:company_name_e)
                    .limit(10)

  render json: {
    data: company_options
  }
end

#rl1_summaryObject



160
161
162
163
164
165
166
# File 'app/controllers/companies_controller.rb', line 160

def rl1_summary
  file = Rl1Summary.dummy.to_file(
    signed_by: 'Charbel Tabet'
  )

  send_file file, type: 'application/pdf', disposition: 'inline'
end

#t4_summaryObject



152
153
154
155
156
157
158
# File 'app/controllers/companies_controller.rb', line 152

def t4_summary
  file = T4Summary.dummy.to_file(
    signed_by: 'Charbel Tabet'
  )

  send_file file, type: 'application/pdf', disposition: 'inline'
end

#updateObject



96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'app/controllers/companies_controller.rb', line 96

def update
  company = current_company
  company.assign_attributes(company_params)
  # raise ActiveRecord::RecordInvalid.new(company) unless company.valid?

  company.write_procedure(validate: false)
  render json: {
    message: I18n.t('messages.company_updated'),
    redirect_to: params[:from_url] || '/app/settings/company'
  }
rescue ActiveRecord::RecordInvalid => e
  render json: {
    errors: e.record.errors,
    message: e.record.errors.full_messages.join(', '),
    redirect_to: params[:from_url] || '/app/settings/company'
  }, status: :bad_request
end