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.
		
		
		
		
		
			
		
			
				
					
					
						
							33 lines
						
					
					
						
							902 B
						
					
					
				
			
		
		
	
	
							33 lines
						
					
					
						
							902 B
						
					
					
				| class BulkUploadController < ApplicationController | |
|   SPREADSHEET_CONTENT_TYPES = %w[ | |
|     application/vnd.ms-excel | |
|     application/vnd.openxmlformats-officedocument.spreadsheetml.sheet | |
|   ] | |
|  | |
|   FIRST_DATA_ROW = 7 | |
|  | |
|   def show | |
|     render "case_logs/bulk_upload" | |
|   end | |
|  | |
|   def process_bulk_upload | |
|     if SPREADSHEET_CONTENT_TYPES.include?(params["case_log_bulk_upload"].content_type) | |
|       xlsx = Roo::Spreadsheet.open(params["case_log_bulk_upload"].tempfile, extension: :xlsx) | |
|       sheet = xlsx.sheet(0) | |
|       last_row = sheet.last_row | |
|       if last_row < FIRST_DATA_ROW | |
|         head :no_content | |
|       else | |
|         data_range = FIRST_DATA_ROW..last_row | |
|         data_range.map do |row_num| | |
|           row = sheet.row(row_num) | |
|           CaseLog.create!( | |
|             tenant_code: row[7], | |
|             startertenancy: row[8] | |
|           ) | |
|         end | |
|         redirect_to(case_logs_path) | |
|       end | |
|     end | |
|   end | |
| end
 | |
| 
 |