mirror of
https://github.com/Growstuff/growstuff.git
synced 2025-12-31 13:37:49 -05:00
* Paginate, 100 at a time * Limited i18n * Paginate roles * Pagination * Pagination * i18n and pagination * Paginate alternate names * Silence code climate * Rewrite coverage as a feature * Remove coverage in favour of crops/scientific_name_spec * Add missing admin link * Rewrite coverage as feature * Rewrite coverage --------- Co-authored-by: Brenda Wallace <brenda@wallace.net.nz>
84 lines
2.0 KiB
Ruby
84 lines
2.0 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class ScientificNamesController < ApplicationController
|
|
before_action :authenticate_member!, except: %i(index show gbif_suggest)
|
|
load_and_authorize_resource except: [:gbif_suggest]
|
|
respond_to :html, :json
|
|
responders :flash
|
|
|
|
# GET /scientific_names
|
|
# GET /scientific_names.json
|
|
def index
|
|
@scientific_names = ScientificName.all.order(:name).paginate(page: params[:page], per_page: 100)
|
|
respond_with(@scientific_names)
|
|
end
|
|
|
|
# GET /scientific_names/1
|
|
# GET /scientific_names/1.json
|
|
def show
|
|
respond_with(@scientific_name)
|
|
end
|
|
|
|
# GET /scientific_names/new
|
|
# GET /scientific_names/new.json
|
|
def new
|
|
@scientific_name = ScientificName.new
|
|
@crop = Crop.find_or_initialize_by(id: params[:crop_id])
|
|
respond_with(@scientific_name)
|
|
end
|
|
|
|
# GET /scientific_names/1/edit
|
|
def edit; end
|
|
|
|
# POST /scientific_names
|
|
# POST /scientific_names.json
|
|
def create
|
|
@scientific_name = ScientificName.new(scientific_name_params)
|
|
@scientific_name.creator = current_member
|
|
gbif_sync!(@scientific_name)
|
|
@scientific_name.save
|
|
respond_with(@scientific_name.crop)
|
|
end
|
|
|
|
# PUT /scientific_names/1
|
|
# PUT /scientific_names/1.json
|
|
def update
|
|
@scientific_name.assign_attributes(scientific_name_params)
|
|
gbif_sync!(@scientific_name)
|
|
@scientific_name.save
|
|
respond_with(@scientific_name.crop)
|
|
end
|
|
|
|
# DELETE /scientific_names/1
|
|
# DELETE /scientific_names/1.json
|
|
def destroy
|
|
@crop = @scientific_name.crop
|
|
@scientific_name.destroy
|
|
flash[:notice] = 'Scientific name was successfully deleted.'
|
|
respond_with(@crop)
|
|
end
|
|
|
|
def gbif_suggest
|
|
render json: gbif_service.suggest(params[:term])
|
|
end
|
|
|
|
private
|
|
|
|
def gbif_sync!(model)
|
|
return unless model.gbif_key
|
|
|
|
result = gbif_service.fetch(model.gbif_key)
|
|
|
|
model.gbif_rank = result["rank"]
|
|
model.gbif_status = result["status"]
|
|
end
|
|
|
|
def scientific_name_params
|
|
params.require(:scientific_name).permit(:crop_id, :name, :gbif_key)
|
|
end
|
|
|
|
def gbif_service
|
|
GbifService.new
|
|
end
|
|
end
|